376 lines
11 KiB
C++
376 lines
11 KiB
C++
//***************************************************************************
|
|
|
|
//
|
|
|
|
// PropertyProvider.H
|
|
|
|
//
|
|
|
|
// Module:
|
|
|
|
//
|
|
|
|
// Purpose: Genral purpose include file.
|
|
|
|
//
|
|
|
|
// Copyright (c) 1996-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
//***************************************************************************
|
|
|
|
#ifndef _SNMPPropertyProvider_H_
|
|
#define _SNMPPropertyProvider_H_
|
|
|
|
class SnmpDefaultThreadObject : public SnmpThreadObject
|
|
{
|
|
private:
|
|
|
|
BOOL m_Active ;
|
|
|
|
protected:
|
|
public:
|
|
|
|
SnmpDefaultThreadObject ( const char *a_ThreadName = NULL ) : SnmpThreadObject ( a_ThreadName ) , m_Active ( FALSE ) {} ;
|
|
~SnmpDefaultThreadObject () {} ;
|
|
|
|
void Initialise () { CoInitialize ( NULL ) ; }
|
|
void Uninitialise () { CoUninitialize () ; }
|
|
|
|
BOOL GetActive () { return m_Active ; }
|
|
void SetActive ( BOOL a_Active = TRUE ) { m_Active = a_Active ; }
|
|
} ;
|
|
|
|
class CImpTraceRouteProv : public IWbemServices
|
|
{
|
|
private:
|
|
|
|
BOOL m_Initialised ;
|
|
LONG m_ReferenceCount ; //Object reference count
|
|
|
|
CCriticalSection m_CriticalSection ;
|
|
|
|
WbemNamespacePath m_NamespacePath ;
|
|
wchar_t *m_Namespace ;
|
|
|
|
IWbemServices *m_Server ;
|
|
IWbemServices *m_Parent ;
|
|
|
|
wchar_t *m_localeId ;
|
|
|
|
BOOL m_GetNotifyCalled ;
|
|
BOOL m_GetExtendedNotifyCalled ;
|
|
IWbemClassObject *m_NotificationClassObject ;
|
|
IWbemClassObject *m_ExtendedNotificationClassObject ;
|
|
|
|
static ProviderStore s_ProviderStore ;
|
|
TopNTableProv *m_TopNTableProv ;
|
|
|
|
private:
|
|
|
|
BOOL AttachParentServer (
|
|
|
|
WbemSnmpErrorObject &a_errorObject ,
|
|
BSTR Namespace,
|
|
IWbemContext *pCtx,
|
|
long lFlags,
|
|
IWbemServices FAR* FAR* ppNewContext,
|
|
IWbemCallResult FAR* FAR* ppErrorObject
|
|
|
|
) ;
|
|
|
|
BOOL AttachServer (
|
|
|
|
WbemSnmpErrorObject &a_errorObject ,
|
|
BSTR Namespace,
|
|
IWbemContext *pCtx,
|
|
long lFlags,
|
|
IWbemServices FAR* FAR* ppNewContext,
|
|
IWbemCallResult FAR* FAR* ppErrorObject
|
|
|
|
) ;
|
|
|
|
protected:
|
|
public:
|
|
|
|
CImpTraceRouteProv () ;
|
|
~CImpTraceRouteProv () ;
|
|
|
|
static SnmpDefaultThreadObject *s_DefaultThreadObject ;
|
|
static SnmpDefaultThreadObject *s_BackupThreadObject ;
|
|
|
|
// Implementation
|
|
|
|
IWbemServices *GetServer () ;
|
|
IWbemServices *GetParent () ;
|
|
|
|
void SetParent ( IWbemServices *a_Parent ) ;
|
|
void SetServer ( IWbemServices *a_Server ) ;
|
|
|
|
TopNTableProv *GetTopNTableProv () { return m_TopNTableProv ; }
|
|
|
|
void EnableRmonPolling () ;
|
|
|
|
WbemNamespacePath *GetNamespacePath () { return & m_NamespacePath ; }
|
|
|
|
wchar_t *GetNamespace () ;
|
|
void SetNamespace ( wchar_t *a_Namespace ) ;
|
|
|
|
void SetLocaleId ( wchar_t *a_localeId ) ;
|
|
wchar_t *GetLocaleId () { return m_localeId ; }
|
|
|
|
BOOL CreateExtendedNotificationObject (
|
|
|
|
WbemSnmpErrorObject &a_errorObject
|
|
) ;
|
|
|
|
BOOL CreateNotificationObject (
|
|
|
|
WbemSnmpErrorObject &a_errorObject
|
|
) ;
|
|
|
|
IWbemClassObject *GetNotificationObject ( WbemSnmpErrorObject &a_errorObject ) ;
|
|
IWbemClassObject *GetExtendedNotificationObject ( WbemSnmpErrorObject &a_errorObject ) ;
|
|
|
|
//Non-delegating object IUnknown
|
|
|
|
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ;
|
|
STDMETHODIMP_( ULONG ) AddRef () ;
|
|
STDMETHODIMP_( ULONG ) Release () ;
|
|
|
|
|
|
/* IWbemServices methods */
|
|
|
|
HRESULT STDMETHODCALLTYPE OpenNamespace(
|
|
/* [in] */ BSTR Namespace,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [unique][in][out] */ IWbemServices __RPC_FAR *__RPC_FAR *ppWorkingNamespace,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE CancelAsyncCall(
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pSink) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE QueryObjectSink(
|
|
/* [in] */ long lFlags,
|
|
/* [out] */ IWbemObjectSink __RPC_FAR *__RPC_FAR *ppResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE GetObject(
|
|
/* [in] */ BSTR ObjectPath,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [unique][in][out] */ IWbemClassObject __RPC_FAR *__RPC_FAR *ppObject,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE GetObjectAsync(
|
|
/* [in] */ BSTR ObjectPath,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE PutClass(
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pObject,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE PutClassAsync(
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pObject,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE DeleteClass(
|
|
/* [in] */ BSTR Class,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE DeleteClassAsync(
|
|
/* [in] */ BSTR Class,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE CreateClassEnum(
|
|
/* [in] */ BSTR Superclass,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE CreateClassEnumAsync(
|
|
/* [in] */ BSTR Superclass,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE PutInstance(
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pInst,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE PutInstanceAsync(
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pInst,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE DeleteInstance(
|
|
/* [in] */ BSTR ObjectPath,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE DeleteInstanceAsync(
|
|
/* [in] */ BSTR ObjectPath,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE CreateInstanceEnum(
|
|
/* [in] */ BSTR Class,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE CreateInstanceEnumAsync(
|
|
/* [in] */ BSTR Class,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE ExecQuery(
|
|
/* [in] */ BSTR QueryLanguage,
|
|
/* [in] */ BSTR Query,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE ExecQueryAsync(
|
|
/* [in] */ BSTR QueryLanguage,
|
|
/* [in] */ BSTR Query,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE ExecNotificationQuery(
|
|
/* [in] */ BSTR QueryLanguage,
|
|
/* [in] */ BSTR Query,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [out] */ IEnumWbemClassObject __RPC_FAR *__RPC_FAR *ppEnum) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE ExecNotificationQueryAsync(
|
|
/* [in] */ BSTR QueryLanguage,
|
|
/* [in] */ BSTR Query,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE ExecMethod(
|
|
/* [in] */ BSTR ObjectPath,
|
|
/* [in] */ BSTR MethodName,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pInParams,
|
|
/* [unique][in][out] */ IWbemClassObject __RPC_FAR *__RPC_FAR *ppOutParams,
|
|
/* [unique][in][out] */ IWbemCallResult __RPC_FAR *__RPC_FAR *ppCallResult) ;
|
|
|
|
HRESULT STDMETHODCALLTYPE ExecMethodAsync(
|
|
/* [in] */ BSTR ObjectPath,
|
|
/* [in] */ BSTR MethodName,
|
|
/* [in] */ long lFlags,
|
|
/* [in] */ IWbemContext __RPC_FAR *pCtx,
|
|
/* [in] */ IWbemClassObject __RPC_FAR *pInParams,
|
|
/* [in] */ IWbemObjectSink __RPC_FAR *pResponseHandler) ;
|
|
|
|
} ;
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
// This class is used to enumerate instances
|
|
|
|
class CEnumInst : public IEnumWbemClassObject
|
|
{
|
|
private:
|
|
|
|
LONG m_ReferenceCount ;
|
|
|
|
protected:
|
|
public:
|
|
|
|
CEnumInst (
|
|
|
|
HANDLE hContext ,
|
|
WCHAR * pClass ,
|
|
IWbemServices FAR* pOLEMSGateway ,
|
|
CImpTraceRouteProv *pProvider
|
|
) ;
|
|
|
|
~CEnumInst () ;
|
|
|
|
// IUnknown members
|
|
|
|
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ;
|
|
STDMETHODIMP_( ULONG ) AddRef () ;
|
|
STDMETHODIMP_( ULONG ) Release () ;
|
|
|
|
// IEnumMosClassObject methods
|
|
|
|
STDMETHODIMP Reset () ;
|
|
|
|
STDMETHODIMP Next (
|
|
|
|
ULONG uCount ,
|
|
IWbemClassObject FAR* FAR* pProp ,
|
|
ULONG FAR* puReturned
|
|
) ;
|
|
|
|
STDMETHODIMP Clone (
|
|
|
|
IEnumWbemClassObject FAR* FAR* pEnum
|
|
) ;
|
|
|
|
STDMETHODIMP Skip (
|
|
|
|
ULONG nNum
|
|
) ;
|
|
|
|
} ;
|
|
|
|
class CImpTraceRouteLocator : public IWbemLocator
|
|
{
|
|
private:
|
|
|
|
LONG m_ReferenceCount ; //Object reference count
|
|
|
|
protected:
|
|
public:
|
|
|
|
CImpTraceRouteLocator () ;
|
|
~CImpTraceRouteLocator () ;
|
|
|
|
//Non-delegating object IUnknown
|
|
|
|
STDMETHODIMP QueryInterface ( REFIID , LPVOID FAR * ) ;
|
|
STDMETHODIMP_( ULONG ) AddRef () ;
|
|
STDMETHODIMP_( ULONG ) Release () ;
|
|
|
|
|
|
/* IWbemLocator methods */
|
|
|
|
STDMETHODIMP ConnectServer (
|
|
|
|
BSTR NetworkResource,
|
|
BSTR User,
|
|
BSTR Password,
|
|
BSTR lLocaleId,
|
|
long lFlags,
|
|
BSTR Authority,
|
|
IWbemContext FAR *pCtx ,
|
|
IWbemServices FAR* FAR* ppNamespace
|
|
) ;
|
|
|
|
};
|
|
|
|
#endif
|