|
|
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// Module Name:
// Cluster.h
//
// Description:
// Definition of the CCluster and CClusRefObject classes.
//
// Implementation File:
// Cluster.cpp
//
// Author:
// Charles Stacy Harris (stacyh) 28-Feb-1997
// Galen Barbee (galenb) July 1998
//
// Revision History:
// July 1998 GalenB Maaaaaajjjjjjjjjoooooorrrr clean up
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _CLUSTER_H_
#define _CLUSTER_H_
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CCluster; class CClusRefObject;
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CCluster
//
// Description:
// Cluster Automation Class.
//
// Inheritance:
// IDispatchImpl< ISCluster, &IID_ISCluster, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< CCluster,&CLSID_Cluster >
// CClusterObject
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CCluster : public IDispatchImpl< ISCluster, &IID_ISCluster, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >, public CSupportErrorInfo, public CComObjectRootEx< CComSingleThreadModel >, public CComCoClass< CCluster,&CLSID_Cluster >, public CClusterObject { typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass; typedef IDispatchImpl< ISCluster, &IID_ISCluster, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER > BaseDispatchClass; typedef CComCoClass< CCluster,&CLSID_Cluster > BaseCoClass;
public: CCluster( void ); ~CCluster( void );
BEGIN_COM_MAP(CCluster) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISCluster) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CCluster) DECLARE_NO_REGISTRY()
private: CComBSTR m_bstrQuorumPath; CComBSTR m_bstrQuorumResourceName; long m_nQuorumLogSize; ISClusApplication * m_pParentApplication; ISClusRefObject * m_pClusRefObject; HCLUSTER m_hCluster;
CComObject< CClusNodes > * m_pClusterNodes; CComObject< CClusResGroups > * m_pClusterResourceGroups; CComObject< CClusResources > * m_pClusterResources; CComObject< CClusResTypes > * m_pResourceTypes; CComObject< CClusNetworks > * m_pNetworks; CComObject< CClusNetInterfaces > * m_pNetInterfaces;
CComObject< CClusProperties > * m_pCommonProperties; CComObject< CClusProperties > * m_pPrivateProperties; CComObject< CClusProperties > * m_pCommonROProperties; CComObject< CClusProperties > * m_pPrivateROProperties;
STDMETHODIMP OpenResource( IN BSTR bstrResourceName, OUT ISClusResource ** ppClusterResource );
STDMETHODIMP HrGetQuorumInfo( void );
void Clear( void );
HRESULT GetProperties( OUT ISClusProperties ** ppProperties, IN BOOL bPrivate, IN BOOL bReadOnly );
protected: virtual DWORD ScWriteProperties( IN const CClusPropList & rcplPropList, IN BOOL bPrivate );
public: STDMETHODIMP Create( IN CClusApplication * pParentApplication );
STDMETHODIMP Close( void );
STDMETHODIMP get_Handle( OUT ULONG_PTR * phandle );
STDMETHODIMP Open( IN BSTR bstrClusterName );
STDMETHODIMP put_Name( IN BSTR bstrClusterName );
STDMETHODIMP get_Name( IN BSTR * pbstrClusterName );
STDMETHODIMP get_Version( OUT ISClusVersion ** ppClusVersion );
STDMETHODIMP put_QuorumResource( IN ISClusResource * pResource );
STDMETHODIMP get_QuorumResource( OUT ISClusResource ** ppResource );
STDMETHODIMP get_Nodes( OUT ISClusNodes ** ppClusterNodes );
STDMETHODIMP get_ResourceGroups( OUT ISClusResGroups ** ppClusterResourceGroups );
STDMETHODIMP get_Resources( OUT ISClusResources ** ppClusterResources );
STDMETHODIMP get_ResourceTypes( OUT ISClusResTypes ** ppResourceTypes );
STDMETHODIMP get_CommonProperties( OUT ISClusProperties ** ppProperties );
STDMETHODIMP get_PrivateProperties( OUT ISClusProperties ** ppProperties );
STDMETHODIMP get_CommonROProperties( OUT ISClusProperties ** ppProperties );
STDMETHODIMP get_PrivateROProperties( OUT ISClusProperties ** ppProperties );
STDMETHODIMP get_QuorumLogSize( OUT long * pnQuoromLogSize );
STDMETHODIMP put_QuorumLogSize( IN long nQuoromLogSize );
STDMETHODIMP get_QuorumPath( OUT BSTR * ppPath );
STDMETHODIMP put_QuorumPath( IN BSTR pPath );
STDMETHODIMP get_Networks( OUT ISClusNetworks ** ppNetworks );
STDMETHODIMP get_NetInterfaces( OUT ISClusNetInterfaces ** ppNetInterfaces );
virtual HRESULT HrLoadProperties( IN OUT CClusPropList & rcplPropList, IN BOOL bReadOnly, IN BOOL bPrivate );
// STDMETHODIMP get_Parent( IDispatch ** ppParent );
// STDMETHODIMP get_Application( ISClusApplication ** ppParentApplication );
const ISClusRefObject * ClusRefObject( void ) const { return m_pClusRefObject; };
void ClusRefObject( IN ISClusRefObject * pClusRefObject );
void Hcluster( IN HCLUSTER hCluster );
const HCLUSTER Hcluster( void ) const { return m_hCluster; };
}; //*** CCluster
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusRefObject
//
// Description:
// Automation Class that wraps the Cluster handle.
//
// Inheritance:
// IDispatchImpl< ISClusRefObject, &IID_ISClusRefObject, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< CClusRefObject, &CLSID_ClusRefObject >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusRefObject : public IDispatchImpl< ISClusRefObject, &IID_ISClusRefObject, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >, public CSupportErrorInfo, public CComObjectRootEx< CComSingleThreadModel >, public CComCoClass< CClusRefObject, &CLSID_ClusRefObject > { typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public: CClusRefObject( void ); ~CClusRefObject( void );
BEGIN_COM_MAP(CClusRefObject) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ISClusRefObject) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusRefObject) DECLARE_NO_REGISTRY()
HRESULT SetClusHandle( IN HCLUSTER hCluster ) { m_hCluster = hCluster; return S_OK;};
private: HCLUSTER m_hCluster;
public: STDMETHODIMP get_Handle( OUT ULONG_PTR * phandle );
}; //*** Class CClusRefObject
#endif // _CLUSTER_H_
|