|
|
//***************************************************************************
//
// File:
//
// Module: MS SNMP Provider
//
// Purpose:
//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
//***************************************************************************
#ifndef _HELPER_H_
#define _HELPER_H_
/*helper classes
*/
class SmirClassFactoryHelper; extern SmirClassFactoryHelper *g_pClassFactoryHelper;
HRESULT CopyBSTR(BSTR *pDst, BSTR *pSrc); void FormatProviderErrorMsg(char*,int,HRESULT);
class CNotificationMapper { public:
CNotificationMapper(){} ~CNotificationMapper(){} static STDMETHODIMP Map(CSmir *a_Smir,IWbemClassObject *pObj, enum NotificationMapperType type);
private: //private copy constructors to prevent bcopy
CNotificationMapper(CNotificationMapper&); const CNotificationMapper& operator=(CNotificationMapper &); };
class CXToClassAssociator { public:
CXToClassAssociator(){} ~CXToClassAssociator(){}
private:
//private copy constructors to prevent bcopy
CXToClassAssociator(CXToClassAssociator&); const CXToClassAssociator& operator=(CXToClassAssociator &); };
class CGroupToClassAssociator : public CXToClassAssociator { public:
CGroupToClassAssociator(){} ~CGroupToClassAssociator(){} static STDMETHODIMP Associate(CSmir *a_Smir,BSTR szModule, BSTR szGroup, ISmirClassHandle *hClass);
private:
//private copy constructors to prevent bcopy
CGroupToClassAssociator(CXToClassAssociator&); const CGroupToClassAssociator& operator=(CGroupToClassAssociator &); };
class CModuleToClassAssociator : public CXToClassAssociator { public:
CModuleToClassAssociator(){} ~CModuleToClassAssociator(){} static STDMETHODIMP Associate(CSmir *a_Smir,BSTR szModule, ISmirClassHandle *hClass);
private:
//private copy constructors to prevent bcopy
CModuleToClassAssociator(CXToClassAssociator&); const CModuleToClassAssociator& operator=(CModuleToClassAssociator &); };
class CModuleToNotificationClassAssociator : public CXToClassAssociator { public:
CModuleToNotificationClassAssociator(){} ~CModuleToNotificationClassAssociator(){} static STDMETHODIMP Associate(CSmir *a_Smir,BSTR szModule, ISmirNotificationClassHandle *hClass);
private:
//private copy constructors to prevent bcopy
CModuleToNotificationClassAssociator(CXToClassAssociator&); const CModuleToNotificationClassAssociator& operator=(CModuleToNotificationClassAssociator &); };
class CModuleToExtNotificationClassAssociator : public CXToClassAssociator { public:
CModuleToExtNotificationClassAssociator(){} ~CModuleToExtNotificationClassAssociator(){} static STDMETHODIMP Associate(CSmir *a_Smir,BSTR szModule, ISmirExtNotificationClassHandle *hClass);
private:
//private copy constructors to prevent bcopy
CModuleToExtNotificationClassAssociator(CXToClassAssociator&); const CModuleToExtNotificationClassAssociator& operator=(CModuleToExtNotificationClassAssociator &); };
class CSMIRToClassAssociator : public CXToClassAssociator { public:
CSMIRToClassAssociator(){} ~CSMIRToClassAssociator(){} static STDMETHODIMP Associate(CSmir *a_Smir,ISmirClassHandle *hClass);
private:
//private copy constructors to prevent bcopy
CSMIRToClassAssociator(CSMIRToClassAssociator&); const CSMIRToClassAssociator& operator=(CSMIRToClassAssociator &); };
class CSmirAccess { private:
static STDMETHODIMP Connect (
CSmir *a_Smir , OUT IWbemServices **server, IN BSTR ObjectPath, IN BOOL relativeToSMIR );
public:
enum eOpenType {
eModule=1, eGroup };
//undefined constructor and destructor
//so object should never be instantiated
CSmirAccess(); virtual ~CSmirAccess(); static STDMETHODIMP Init(); static void ShutDown();
static STDMETHODIMP Open (
CSmir *a_Smir , IWbemServices **server, BSTR ObjectPath=NULL, BOOL relativeToSMIR = FALSE );
static STDMETHODIMP Open (
CSmir *a_Smir , IWbemServices **server, ISmirClassHandle *hClass, eOpenType eType=eGroup );
static STDMETHODIMP Open (
CSmir *a_Smir , IWbemServices **server, ISmirGroupHandle *hGroup, eOpenType eType=eGroup );
static STDMETHODIMP Open (
CSmir *a_Smir , IWbemServices **server, ISmirModHandle *hMod );
static STDMETHODIMP GetContext (
CSmir *a_Smir , IWbemContext **a_Context ) ; };
class SmirClassFactoryHelper { private:
CGroupHandleClassFactory *pGroupHandleClassFactory; CClassHandleClassFactory *pClassHandleClassFactory; CNotificationClassHandleClassFactory *pNotificationClassHandleClassFactory; CExtNotificationClassHandleClassFactory *pExtNotificationClassHandleClassFactory; CModHandleClassFactory *pModHandleClassFactory; CSMIRClassFactory *pSMIRClassFactory;
public:
SmirClassFactoryHelper(); virtual ~SmirClassFactoryHelper(); HRESULT CreateInstance(REFCLSID rclsid, REFIID riid, LPVOID * ppv); };
#endif
|