|
|
/*++
Copyright (c) 1998-1999 Microsoft Corporation
Module Name:
ulperf.h
Abstract:
This is the main header for the ul.sys performance counter support object
Author:
Paul McDaniel (paulmcd) 10-May-1999
Revision History:
--*/
#ifndef __ULPERF_H_
#define __ULPERF_H_
#include <afxtempl.h>
#include "resource.h"
DEFINE_GUID(CLSID_UlPerfCounters, 0xe8833ce8,0x0722,0x11d3,0xa4,0x41,0x00,0x80,0xc7,0xe1,0x1d,0x99);
//
// CritSecLocker
//
class CritSecLocker { public: CritSecLocker(CComAutoCriticalSection *pCritSect) { this->pCritSect = pCritSect; if (pCritSect) pCritSect->Lock(); } ~CritSecLocker() { if (this->pCritSect) this->pCritSect->Unlock(); } private: CComAutoCriticalSection *pCritSect; };
//
// CUlPerfCounters
//
class ATL_NO_VTABLE CUlPerfCounters : public CComObjectRoot, public CComCoClass<CUlPerfCounters, &CLSID_UlPerfCounters>, public IWbemServices, public IWbemProviderInit { public: CUlPerfCounters(); ~CUlPerfCounters();
DECLARE_REGISTRY_RESOURCEID(IDR_ULPERF) DECLARE_NOT_AGGREGATABLE(CUlPerfCounters)
BEGIN_COM_MAP(CUlPerfCounters) COM_INTERFACE_ENTRY(IWbemServices) COM_INTERFACE_ENTRY(IWbemProviderInit) END_COM_MAP()
public:
//
// IWbemProviderInit
//
STDMETHOD(Initialize)(LPWSTR wszUser,LONG lFlags,LPWSTR wszNamespace,LPWSTR wszLocale,IWbemServices* pNamespace,IWbemContext* pCtx,IWbemProviderInitSink* pInitSink);
//
// IWbemServices
//
// Context.
// ========
STDMETHOD(OpenNamespace)(BSTR strNamespace, long lFlags, IWbemContext* pCtx, IWbemServices** ppWorkingNamespace, IWbemCallResult** ppResult); STDMETHOD(CancelAsyncCall)(IWbemObjectSink* pSink);
STDMETHOD(QueryObjectSink)(long lFlags,IWbemObjectSink** ppResponseHandler);
// Classes and instances.
// ======================
STDMETHOD(GetObject)(BSTR strObjectPath,long lFlags,IWbemContext* pCtx,IWbemClassObject** ppObject,IWbemCallResult** ppCallResult); STDMETHOD(GetObjectAsync)(BSTR strObjectPath,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
// Class manipulation.
// ===================
STDMETHOD(PutClass)(IWbemClassObject* pObject,long lFlags,IWbemContext* pCtx,IWbemCallResult** ppCallResult); STDMETHOD(PutClassAsync)(IWbemClassObject* pObject,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
STDMETHOD(DeleteClass)(BSTR strClass,long lFlags,IWbemContext* pCtx,IWbemCallResult** ppCallResult); STDMETHOD(DeleteClassAsync)(BSTR strClass,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
STDMETHOD(CreateClassEnum)(BSTR strSuperclass,long lFlags,IWbemContext* pCtx,IEnumWbemClassObject** ppEnum); STDMETHOD(CreateClassEnumAsync)(BSTR strSuperclass,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
// Instances.
// ==========
STDMETHOD(PutInstance)(IWbemClassObject* pInst,long lFlags,IWbemContext* pCtx,IWbemCallResult** ppCallResult); STDMETHOD(PutInstanceAsync)(IWbemClassObject* pInst,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
STDMETHOD(DeleteInstance)(BSTR strObjectPath,long lFlags,IWbemContext* pCtx,IWbemCallResult** ppCallResult); STDMETHOD(DeleteInstanceAsync)(BSTR strObjectPath,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
STDMETHOD(CreateInstanceEnum)(BSTR strClass,long lFlags,IWbemContext* pCtx,IEnumWbemClassObject** ppEnum); STDMETHOD(CreateInstanceEnumAsync)(BSTR strClass,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
// Queries.
// ========
STDMETHOD(ExecQuery)(BSTR strQueryLanguage,BSTR strQuery,long lFlags,IWbemContext* pCtx,IEnumWbemClassObject** ppEnum); STDMETHOD(ExecQueryAsync)(BSTR strQueryLanguage,BSTR strQuery,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler); STDMETHOD(ExecNotificationQuery)(BSTR strQueryLanguage,BSTR strQuery,long lFlags,IWbemContext* pCtx,IEnumWbemClassObject** ppEnum); STDMETHOD(ExecNotificationQueryAsync)(BSTR strQueryLanguage,BSTR strQuery,long lFlags,IWbemContext* pCtx,IWbemObjectSink* pResponseHandler);
// Methods
// =======
STDMETHOD(ExecMethod)(BSTR strObjectPath,BSTR strMethodName,long lFlags,IWbemContext* pCtx,IWbemClassObject* pInParams,IWbemClassObject** ppOutParams,IWbemCallResult** ppCallResult); STDMETHOD(ExecMethodAsync)(BSTR strObjectPath,BSTR strMethodName,long lFlags,IWbemContext* pCtx,IWbemClassObject* pInParams,IWbemObjectSink* pResponseHandler);
public:
CComAutoCriticalSection CritSect;
};
//
// Globals
//
extern LONG g_lInit; extern HINSTANCE g_hInstance;
typedef struct _UL_PERF_OBJECT_DEFINITION { PERF_OBJECT_TYPE ObjectType; PERF_COUNTER_DEFINITION BytesSent; PERF_COUNTER_DEFINITION BytesReceived;
PERF_COUNTER_DEFINITION CurrentConnections; PERF_COUNTER_DEFINITION CurrentRequests;
PERF_COUNTER_DEFINITION QueuedRequests; PERF_COUNTER_DEFINITION AttachedProcesses;
} UL_PERF_OBJECT_DEFINITION;
typedef struct _UL_COUNTER_BLOCK {
PERF_COUNTER_BLOCK PerfCounterBlock;
DWORD BytesSent; DWORD BytesReceived;
DWORD CurrentConnections; DWORD CurrentRequests;
DWORD QueuedRequests; DWORD AttachedProcesses; } UL_COUNTER_BLOCK;
extern UL_PERF_OBJECT_DEFINITION PerfObjectDefinition;
#endif // __ULPERF_H_
|