windows-nt/Source/XPSP1/NT/base/cluster/admin/msclus/clusneti.h
2020-09-26 16:20:57 +08:00

319 lines
9.7 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// Module Name:
// ClusNetI.h
//
// Description:
// Definition of the network interface classes for the MSCLUS automation
// classes.
//
// Implementation File:
// ClusNetI.cpp
//
// Author:
// Ramakrishna Rosanuru via David Potter (davidp) 5-Sep-1997
// Galen Barbee (galenb) July 1998
//
// Revision History:
// July 1998 GalenB Maaaaaajjjjjjjjjoooooorrrr clean up
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _CLUSNETI_H_
#define _CLUSNETI_H_
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusNetInterface;
class CNetInterfaces;
class CClusNetInterfaces;
class CClusNetworkNetInterfaces;
class CClusNodeNetInterfaces;
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusNetInterface
//
// Description:
// Cluster Net Interface Automation Class.
//
// Inheritance:
// IDispatchImpl< ISClusNetInterface, &IID_ISClusNetInterface, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< CClusNetInterface, &CLSID_ClusNetInterface >
// CClusterObject
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusNetInterface :
public IDispatchImpl< ISClusNetInterface, &IID_ISClusNetInterface, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CComCoClass< CClusNetInterface, &CLSID_ClusNetInterface >,
public CClusterObject
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusNetInterface( void );
~CClusNetInterface( void );
BEGIN_COM_MAP(CClusNetInterface)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusNetInterface)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusNetInterface)
DECLARE_NO_REGISTRY()
private:
ISClusRefObject * m_pClusRefObject;
HNETINTERFACE m_hNetInterface;
CComObject< CClusProperties > * m_pCommonProperties;
CComObject< CClusProperties > * m_pPrivateProperties;
CComObject< CClusProperties > * m_pCommonROProperties;
CComObject< CClusProperties > * m_pPrivateROProperties;
CComBSTR m_bstrNetInterfaceName;
HRESULT GetProperties( OUT ISClusProperties ** ppProperties, IN BOOL bPrivate, IN BOOL bReadOnly );
protected:
virtual DWORD ScWriteProperties( IN const CClusPropList & rcplPropList, IN BOOL bPrivate );
public:
HRESULT Open( IN ISClusRefObject* pClusRefObject, IN BSTR bstrNetInterfaceName );
STDMETHODIMP get_Handle( OUT ULONG_PTR * phandle );
STDMETHODIMP get_Name( OUT BSTR * pbstrNetInterfaceName );
STDMETHODIMP get_State( OUT CLUSTER_NETINTERFACE_STATE * dwState );
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_Cluster( OUT ISCluster ** ppCluster );
virtual HRESULT HrLoadProperties( IN OUT CClusPropList & rcplPropList, IN BOOL bReadOnly, IN BOOL bPrivate );
const CComBSTR Name( void ) const { return m_bstrNetInterfaceName ; };
}; //*** Class CClusNetInterface
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CNetInterfaces
//
// Description:
// Cluster Net Interfaces Collection Implementation Class.
//
// Inheritance:
//
//--
/////////////////////////////////////////////////////////////////////////////
class CNetInterfaces
{
public:
CNetInterfaces( void );
~CNetInterfaces( void );
HRESULT Create( IN ISClusRefObject * pClusRefObject );
protected:
typedef std::vector< CComObject< CClusNetInterface > * > NetInterfacesList;
ISClusRefObject * m_pClusRefObject;
NetInterfacesList m_NetInterfaceList;
void Clear( void );
HRESULT FindItem( IN LPWSTR lpszNetInterfaceName, OUT UINT * pnIndex );
HRESULT FindItem( IN ISClusNetInterface * pClusterNetInterface, OUT UINT * pnIndex );
HRESULT GetIndex( IN VARIANT varIndex, OUT UINT * pnIndex );
HRESULT GetItem( IN LPWSTR lpszNetInterfaceName, OUT ISClusNetInterface ** ppClusterNetInterface );
HRESULT GetItem( IN UINT nIndex, OUT ISClusNetInterface ** ppClusterNetInterface );
HRESULT GetNetInterfaceItem( IN VARIANT varIndex, OUT ISClusNetInterface ** ppClusterNetInterface );
}; //*** Class CNetInterfaces
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusNetInterfaces
//
// Description:
// Cluster Net Interfaces Collection Automation Class.
//
// Inheritance:
// IDispatchImpl< ISClusNetInterfaces, &IID_ISClusNetInterfaces, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CNetInterfaces
// CComCoClass< CClusNetInterfaces, &CLSID_ClusNetInterfaces >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusNetInterfaces :
public IDispatchImpl< ISClusNetInterfaces, &IID_ISClusNetInterfaces, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CNetInterfaces,
public CComCoClass< CClusNetInterfaces, &CLSID_ClusNetInterfaces >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusNetInterfaces( void );
~CClusNetInterfaces( void );
BEGIN_COM_MAP(CClusNetInterfaces)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusNetInterfaces)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusNetInterfaces)
DECLARE_NO_REGISTRY()
public:
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT ISClusNetInterface ** ppClusterNetInterface );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP Refresh( void );
}; //*** Class CClusNetInterfaces
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusNetworkNetInterfaces
//
// Description:
// Cluster Network Net Interfaces collection Automation Class.
//
// Inheritance:
// IDispatchImpl< ISClusNetworkNetInterfaces, &IID_ISClusNetworkNetInterfaces, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >,
// CNetInterfaces
// CComCoClass< CClusNetworkNetInterfaces, &CLSID_ClusNetworkNetInterfaces >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusNetworkNetInterfaces :
public IDispatchImpl< ISClusNetworkNetInterfaces, &IID_ISClusNetworkNetInterfaces, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CNetInterfaces,
public CComCoClass< CClusNetworkNetInterfaces, &CLSID_ClusNetworkNetInterfaces >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusNetworkNetInterfaces( void );
~CClusNetworkNetInterfaces( void );
BEGIN_COM_MAP(CClusNetworkNetInterfaces)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusNetworkNetInterfaces)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusNetworkNetInterfaces)
DECLARE_NO_REGISTRY()
HRESULT Create( IN ISClusRefObject * pClusRefObject, IN HNETWORK hNetwork );
private:
HNETWORK m_hNetwork;
public:
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT ISClusNetInterface ** ppClusterNetInterface );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP Refresh( void );
}; //*** Class CClusNetworkNetInterfaces
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusNodeNetInterfaces
//
// Description:
// Cluster Node Net Interfaces collection Automation Class.
//
// Inheritance:
// IDispatchImpl< ISClusNodeNetInterfaces, &IID_ISClusNodeNetInterfaces, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >,
// CNetInterfaces
// CComCoClass< CClusNodeNetInterfaces, &CLSID_ClusNodeNetInterfaces >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusNodeNetInterfaces :
public IDispatchImpl< ISClusNodeNetInterfaces, &IID_ISClusNodeNetInterfaces, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CNetInterfaces,
public CComCoClass< CClusNodeNetInterfaces, &CLSID_ClusNodeNetInterfaces >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusNodeNetInterfaces( void );
~CClusNodeNetInterfaces( void );
BEGIN_COM_MAP(CClusNodeNetInterfaces)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusNodeNetInterfaces)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusNodeNetInterfaces)
DECLARE_NO_REGISTRY()
HRESULT Create( IN ISClusRefObject * pClusRefObject, IN HNODE hNode );
private:
HNODE m_hNode;
public:
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT ISClusNetInterface ** ppClusterNetInterface );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP Refresh( void );
}; //*** Class CClusNodeNetInterfaces
#endif // _CLUSNETI_H_