#ifndef _WLBSCLASSES_INCLUDED_ #define _WLBSCLASSES_INCLUDED_ #include #include #include "debug.h" //forward declarations struct ParsedObjectPath; //////////////////////////////////////////////////////////////////////////////// // // class CWlbs_Root // // Purpose: This class servers as the base for all classes that implement // specific Wbem classes. A pointer to this class is utilized // polymorphically within CWLBSProvider. // //////////////////////////////////////////////////////////////////////////////// class CWlbs_Root { public: CWlbs_Root(CWbemServices* a_pNameSpace, IWbemObjectSink* a_pResponseHandler); virtual ~CWlbs_Root(); static void CreateExtendedStatus( CWbemServices* a_pNameSpace, IWbemClassObject** a_ppWbemInstance, DWORD a_dwErrorCode = 0, LPCWSTR a_szDescription = NULL ); HRESULT virtual GetInstance( const ParsedObjectPath* a_pParsedPath, long a_lFlags = 0, IWbemContext* a_pIContex = NULL) = 0; HRESULT virtual DeleteInstance( const ParsedObjectPath* a_pParsedPath, long a_lFlags = 0, IWbemContext* a_pIContex = NULL ) { throw _com_error( WBEM_E_NOT_SUPPORTED ); return WBEM_E_FAILED; } HRESULT virtual PutInstance( IWbemClassObject* a_pInstance, long a_lFlags = 0, IWbemContext* a_pIContex = NULL ) { throw _com_error( WBEM_E_NOT_SUPPORTED ); return WBEM_E_FAILED; } HRESULT virtual EnumInstances( BSTR a_bstrClass = NULL, long a_lFlags = 0, IWbemContext* a_pIContex = NULL ) = 0; HRESULT virtual ExecMethod( const ParsedObjectPath* a_pParsedPath , const BSTR& a_strMethodName, long a_lFlags = 0, IWbemContext* a_pIContex = NULL, IWbemClassObject* a_pIInParams = NULL ) { throw _com_error(WBEM_E_NOT_SUPPORTED); return WBEM_E_NOT_SUPPORTED; } void SpawnInstance ( LPCWSTR a_szClassName, IWbemClassObject** a_ppWbemInstance ); protected: CWbemServices* m_pNameSpace; IWbemObjectSink* m_pResponseHandler; void virtual GetMethodOutputInstance( LPCWSTR a_szMethodClass, const BSTR a_strMethodName, IWbemClassObject** a_ppOutputInstance); void UpdateConfigProp( wstring& a_szDest, const wstring& a_szSrc, LPCWSTR a_szPropName, IWbemClassObject* a_pNodeInstance ); void UpdateConfigProp( bool& a_bDest, bool a_bSrc, LPCWSTR a_szPropName, IWbemClassObject* a_pNodeInstance ); void UpdateConfigProp( DWORD& a_bDest, DWORD a_bSrc, LPCWSTR a_szPropName, IWbemClassObject* a_pNodeInstance ); static void ConstructHostName( wstring& a_wstrHostName, DWORD a_dwClusIP, DWORD a_dwHostID ); public: static DWORD ExtractHostID (const wstring& a_wstrName); static DWORD ExtractClusterIP(const wstring& a_wstrName); private: //This constructor must not be used. CWlbs_Root(); }; class CWlbsClusterWrapper; class CWlbsControlWrapper; CWlbsClusterWrapper* GetClusterFromHostName(CWlbsControlWrapper* pControl, wstring wstrHostName); #endif //_WLBSCLASSES_INCLUDED_