Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*****************************************************************************
* * ftpglob.h - HGLOBAL babysitting * * Included from ftpview.h * *****************************************************************************/
#ifndef _FTPGLOB_H
#define _FTPGLOB_H
/*****************************************************************************
* * This is the generic IUnknown wrapper that GlobalFree's its * charge when released. * *****************************************************************************/
/*****************************************************************************
* * CFtpGlob * * CFtpGlob is used as the punkForRelease when we hand a shared HGLOBAL * out to somebody else. We can't simply use the DataObject itself, * because that would result in havoc if the DataObject itself decided * to free the HGLOBAL while there were still outstanding references to it. * * It's also used when we need a refcounted string. Just put the * string into the hglob and have fun. * *****************************************************************************/
class CFtpGlob : public IUnknown { public: //////////////////////////////////////////////////////
// Public Interfaces
//////////////////////////////////////////////////////
// *** IUnknown ***
virtual STDMETHODIMP_(ULONG) AddRef(void); virtual STDMETHODIMP_(ULONG) Release(void); virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
public: CFtpGlob(); ~CFtpGlob(void);
// Public Member Functions
HRESULT SetHGlob(HGLOBAL hglob) {m_hglob = hglob; return S_OK;}; HGLOBAL GetHGlob(void) {return m_hglob;}; LPCTSTR GetHGlobAsTCHAR(void) {return (LPCTSTR) m_hglob;};
// Friend Functions
friend IUnknown * CFtpGlob_Create(HGLOBAL hglob); friend CFtpGlob * CFtpGlob_CreateStr(LPCTSTR pszStr);
protected: // Private Member Variables
int m_cRef;
HGLOBAL m_hglob; // The HGLOBAL we are babysitting
};
#endif // _FTPGLOB_H
|