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.
|
|
// identity.cpp
//
// A dummy class whose sole purpose is to say, "Yes, I am BrowseUI"
#include "priv.h"
#include "sccls.h"
class CBrowseuiIdentity : public IUnknown { public: STDMETHOD ( QueryInterface ) ( REFIID riid, LPVOID * ppvObj ); STDMETHOD_( ULONG, AddRef ) (); STDMETHOD_( ULONG, Release ) ();
protected: friend HRESULT CBrowseuiIdentity_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi);
CBrowseuiIdentity(); ~CBrowseuiIdentity();
LONG m_cRef; };
STDAPI CBrowseuiIdentity_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi) { // class factory should've done these
ASSERT(pUnkOuter == NULL); ASSERT(*ppunk == NULL);
CBrowseuiIdentity* pid = new CBrowseuiIdentity();
if (pid) { *ppunk = SAFECAST(pid, IUnknown*); return S_OK; } else { return E_OUTOFMEMORY; } }
/////////////////////////////////////////////////////////////////////////////////////////////////////
CBrowseuiIdentity::CBrowseuiIdentity() : m_cRef(1) { }
/////////////////////////////////////////////////////////////////////////////////////////////////////
CBrowseuiIdentity::~CBrowseuiIdentity() { }
/////////////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CBrowseuiIdentity::QueryInterface ( REFIID riid, LPVOID * ppvObj ) { if ( riid == IID_IUnknown ) { *ppvObj = SAFECAST( this, IUnknown *); AddRef(); } else { return E_NOINTERFACE; }
return NOERROR; }
/////////////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP_( ULONG ) CBrowseuiIdentity:: AddRef () { InterlockedIncrement( &m_cRef ); return m_cRef; }
/////////////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP_( ULONG ) CBrowseuiIdentity:: Release () { if ( InterlockedDecrement( &m_cRef ) == 0 ) { delete this; return 0; }
return m_cRef; }
|