//*************************************************************************** // // Copyright (c) 1992-1999 Microsoft Corporation // // File: cwmiextcf.cpp // // Description : // ADs "Wbem Provider" class factory // // Part of : Wbem ADs Requester oledsreq.dll // // History: // corinaf 10/15/95 Created // //*************************************************************************** #include "precomp.h" extern ULONG g_ulObjCount; CWMIExtensionCF::CWMIExtensionCF() { m_cRef=0L; g_ulObjCount++; } CWMIExtensionCF::~CWMIExtensionCF() { g_ulObjCount--; } //IUnknown methods STDMETHODIMP CWMIExtensionCF::QueryInterface(REFIID riid, LPVOID FAR *ppv) { *ppv=NULL; if (riid == IID_IUnknown || riid == IID_IClassFactory) *ppv=this; if (*ppv != NULL) { ((LPUNKNOWN)*ppv)->AddRef(); return NOERROR; } return E_NOINTERFACE; } STDMETHODIMP_(ULONG) CWMIExtensionCF::AddRef(void) { return ++m_cRef; } STDMETHODIMP_(ULONG) CWMIExtensionCF::Release(void) { if (--m_cRef != 0L) return m_cRef; delete this; return 0L; } //+--------------------------------------------------------------------------- // // Function: CWMIExtensionCF::CreateInstance // // Synopsis: // // Arguments: [pUnkOuter] // [iid] // [ppv] // // Returns: HRESULT // // Modifies: // // History: 10/20/98 corinaf //---------------------------------------------------------------------------- STDMETHODIMP CWMIExtensionCF::CreateInstance(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv) { HRESULT hr; IUnknown *pExtension = NULL; //Create the extension and get the IUnknown pointer to it hr = CWMIExtension::CreateExtension(pUnkOuter, (void **)&pExtension); if FAILED(hr) return hr; if (pExtension) { hr = pExtension->QueryInterface(riid, ppv); pExtension->Release(); } else { *ppv = NULL; return E_OUTOFMEMORY; } return NOERROR; } //+--------------------------------------------------------------------------- // // Function: CWbemProviderCF::LockServer // // Synopsis: // // Arguments: [fLock] // // Returns: HRESULT // // Modifies: // // History: 10/20/98 corinaf //---------------------------------------------------------------------------- STDMETHODIMP CWMIExtensionCF::LockServer(BOOL fLock) { if (fLock) m_cRef++; else m_cRef--; return NOERROR; }