166 lines
4.3 KiB
C++
166 lines
4.3 KiB
C++
// 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 <ConnMgr.h>
|
|
|
|
// 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<DWORD,DWORD,CMarshalledConnection*,CMarshalledConnection*> m_MarshalMap;
|
|
CTypedPtrList<CPtrList,CMarshalledConnection*> 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_)
|