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.
|
|
//***************************************************************************
//
// 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; }
|