319 lines
9.7 KiB
C
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_
|