// ConnectionManager.h: interface for the CConnectionManager class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_CONNECTIONMANAGER_H__F0E5AFBD_0204_11D2_8355_0000F87A3912__INCLUDED_) #define AFX_CONNECTIONMANAGER_H__F0E5AFBD_0204_11D2_8355_0000F87A3912__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include // error reporting defines #define _ERRORDESCLEN _MAX_PATH*4 #define _ERRORNAMELEN _MAX_PATH #define _FACILITYLEN _MAX_PATH ////////////////////////////////////////////////////////////////////// // class CMarshalledConnection ////////////////////////////////////////////////////////////////////// class CMarshalledConnection { // Constructors public: CMarshalledConnection(); // Operations public: HRESULT Marshal(IConnectionManager* pIConMgr); HRESULT UnMarshal(); IConnectionManager* GetConnection(); // Attributes protected: IConnectionManager* m_pIMarshalledConnectionManager; LPSTREAM m_lpMarshalStream; }; ////////////////////////////////////////////////////////////////////// // class CConnectionManager ////////////////////////////////////////////////////////////////////// class CConnectionManager : public CObject { DECLARE_DYNCREATE(CConnectionManager) // Constructors public: CConnectionManager(); // Destructor public: virtual ~CConnectionManager(); // Create/Destroy public: BOOL Create(); void Destroy(); // Connection Operations public: HRESULT GetConnection(const CString& sMachineName, IWbemServices*& pIWbemServices, BOOL& bAvailable ); HRESULT ConnectToNamespace(const CString& sNamespace, IWbemServices*& pIWbemServices); HRESULT RemoveConnection(const CString& sMachineName, IWbemObjectSink* pSink); // Query Operations public: HRESULT ExecQueryAsync(const CString& sMachineName, const CString& sQuery, IWbemObjectSink*& pSink); // Event Operations public: HRESULT RegisterEventNotification(const CString& sMachineName, const CString& sQuery, IWbemObjectSink*& pSink); // Error Display Operations public: void DisplayErrorMsgBox(HRESULT hr, const CString& sMachineName); void GetErrorString(HRESULT hr, const CString& sMachineName, CString& sErrorText); // Marshalling Operations public: HRESULT MarshalCnxMgr(); HRESULT UnMarshalCnxMgr(); void CleanUpMarshalCnxMgr(); // Implementation Operations protected: void DecodeHResult(HRESULT hr, LPTSTR pszFacility, LPTSTR pszErrorName, LPTSTR pszErrorDesc); void HandleConnMgrException(HRESULT hr); // Implementation Attributes protected: IConnectionManager* m_pIConnectionManager; CMap m_MarshalMap; CTypedPtrList m_MarshalStack; }; extern CConnectionManager theCnxManager; inline HRESULT CnxGetConnection(const CString& sMachineName, IWbemServices*& pIWbemServices, BOOL& bAvailable) { return theCnxManager.GetConnection(sMachineName,pIWbemServices,bAvailable); } inline HRESULT CnxConnectToNamespace(const CString& sNamespace, IWbemServices*& pIWbemServices) { return theCnxManager.ConnectToNamespace(sNamespace,pIWbemServices); } inline HRESULT CnxRemoveConnection(const CString& sMachineName, IWbemObjectSink* pSink) { return theCnxManager.RemoveConnection(sMachineName,pSink); } inline BOOL CnxCreate() { return theCnxManager.Create(); } inline void CnxDestroy() { theCnxManager.Destroy(); } inline HRESULT CnxExecQueryAsync(const CString& sMachineName, const CString& sQuery, IWbemObjectSink*& pSink) { return theCnxManager.ExecQueryAsync(sMachineName,sQuery,pSink); } inline HRESULT CnxRegisterEventNotification(const CString& sMachineName, const CString& sQuery, IWbemObjectSink*& pSink) { return theCnxManager.RegisterEventNotification(sMachineName,sQuery,pSink); } inline void CnxPropertyPageInit() { theCnxManager.MarshalCnxMgr(); } inline void CnxPropertyPageCreate() { theCnxManager.UnMarshalCnxMgr(); } inline void CnxPropertyPageDestroy() { theCnxManager.CleanUpMarshalCnxMgr(); } inline void CnxDisplayErrorMsgBox(HRESULT hr, const CString& sMachineName) { theCnxManager.DisplayErrorMsgBox(hr,sMachineName); } inline void CnxGetErrorString(HRESULT hr, const CString& sMachineName, CString& sErrorText) { theCnxManager.GetErrorString(hr,sMachineName,sErrorText); } #endif // !defined(AFX_CONNECTIONMANAGER_H__F0E5AFBD_0204_11D2_8355_0000F87A3912__INCLUDED_)