/*++ Copyright (C) 1999-2001 Microsoft Corporation Module Name: CLASSBROKER.H Abstract: History: --*/ #ifndef _CLASSBROKER_H_ #define _CLASSBROKER_H_ #include #include #include #include #include "perfndb.h" #define WMI_ADAP_DEFAULT_OBJECT 238; class CClassBroker { protected: PERF_OBJECT_TYPE* m_pPerfObj; BOOL m_bCostly; WString m_wstrServiceName; WString m_wstrClassName; IWbemClassObject* m_pBaseClass; CPerfNameDb* m_pDefaultNameDb; HRESULT SetClassName( DWORD dwType, IWbemClassObject* pObj ); virtual HRESULT SetClassQualifiers( IWbemClassObject* pObj, DWORD dwType, BOOL fIsDefault ) = 0; virtual HRESULT AddDefaultProperties( IWbemClassObject* pObj ) = 0; virtual HRESULT EnumProperties( DWORD dwType, IWbemClassObject* pObj ) = 0; virtual HRESULT SetPropertyQualifiers( PERF_COUNTER_DEFINITION* pCtrDefinition, DWORD dwType, BOOL fIsDefault, LPCWSTR pwcsPropertyName, IWbemClassObject* pClass, BOOL bBase ) = 0; virtual HRESULT AddProperty( PERF_COUNTER_DEFINITION* pCtrDefinition, DWORD dwType, BOOL fIsDefault, IWbemClassObject* pClass, WString &wstrLastCtrName, BOOL* pbLastCounterIsNotBase ) = 0; // Helper methods // ============== BOOL IsSingleton() { return ( PERF_NO_INSTANCES == m_pPerfObj->NumInstances ); } HRESULT RemoveWhitespaceAndNonAlphaNum( WString& wstr ); HRESULT ReplaceReserved( WString& wstr ); public: CClassBroker( IWbemClassObject* pBaseClass, WString wstrClassName, CPerfNameDb* pDefaultNameDb ); CClassBroker( PERF_OBJECT_TYPE* pPerfObj, BOOL bCostly, IWbemClassObject* pBaseClass, CPerfNameDb* pDefaultNameDb, WCHAR* pwcsServiceName ); virtual ~CClassBroker(); HRESULT Generate( DWORD dwType, IWbemClassObject** ppObj ); }; class CLocaleClassBroker : public CClassBroker { protected: CPerfNameDb* m_pLocaleNameDb; LANGID m_LangId; virtual HRESULT SetClassQualifiers( IWbemClassObject* pObj, DWORD dwType, BOOL fIsDefault ); virtual HRESULT AddDefaultProperties( IWbemClassObject* pObj ); virtual HRESULT EnumProperties( DWORD dwType, IWbemClassObject* pObj ); virtual HRESULT SetPropertyQualifiers( PERF_COUNTER_DEFINITION* pCtrDefinition, DWORD dwType, BOOL fIsDefault, LPCWSTR pwcsPropertyName, IWbemClassObject* pClass, BOOL bBase ); virtual HRESULT AddProperty( PERF_COUNTER_DEFINITION* pCtrDefinition, DWORD dwType, BOOL fIsDefault, IWbemClassObject* pClass, WString &wstrLastCtrName, BOOL* pbLastCounterIsNotBase ); public: CLocaleClassBroker( IWbemClassObject* pBaseClass, WString wstrClassName, CPerfNameDb* pDefaultNameDb, CPerfNameDb* pLocaleNameDb ); CLocaleClassBroker( PERF_OBJECT_TYPE* pPerfObj, BOOL bCostly, IWbemClassObject* pBaseClass, CPerfNameDb* pDefaultNameDb, CPerfNameDb* pLocaleNameDb, LANGID LangId, WCHAR* pwcsServiceName ); ~CLocaleClassBroker(); static HRESULT GenPerfClass( PERF_OBJECT_TYPE* pPerfObj, DWORD dwType, BOOL bCostly, IWbemClassObject* pBaseClass, CPerfNameDb* pDefaultNameDb, CPerfNameDb* pLocaleNameDb, LANGID LangId, WCHAR* pwcsServiceName, IWbemClassObject** ppObj); static HRESULT ConvertToLocale( IWbemClassObject* pDefaultObject, CLocaleDefn* pLocaleDefn, CLocaleDefn* pDefaultDefn, IWbemClassObject** ppObject ); }; class CDefaultClassBroker : public CClassBroker { protected: virtual HRESULT SetClassQualifiers( IWbemClassObject* pObj, DWORD dwType, BOOL fIsDefault ); virtual HRESULT AddDefaultProperties( IWbemClassObject* pObj ); virtual HRESULT EnumProperties( DWORD dwType, IWbemClassObject* pObj ); virtual HRESULT SetPropertyQualifiers( PERF_COUNTER_DEFINITION* pCtrDefinition, DWORD dwType, BOOL fIsDefault, LPCWSTR pwcsPropertyName, IWbemClassObject* pClass, BOOL bBase ); virtual HRESULT AddProperty( PERF_COUNTER_DEFINITION* pCtrDefinition, DWORD dwType, BOOL fIsDefault, IWbemClassObject* pClass, WString &wstrLastCtrName, BOOL* pbLastCounterIsNotBase ); public: CDefaultClassBroker( PERF_OBJECT_TYPE* pPerfObj, BOOL bCostly, IWbemClassObject* pBaseClass, CPerfNameDb* pDefaultNameDb, WCHAR* pwcsServiceName ) : CClassBroker( pPerfObj, bCostly, pBaseClass, pDefaultNameDb, pwcsServiceName ) {} static HRESULT GenPerfClass( PERF_OBJECT_TYPE* pPerfObj, DWORD dwType, BOOL bCostly, IWbemClassObject* pBaseClass, CPerfNameDb* pDefaultNameDb, WCHAR* pwcsServiceName, IWbemClassObject** ppObj); }; #endif // _BROKERS_H_