|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000 Microsoft Corporation
//
// Module Name:
// CBaseInfo.h
//
// Description:
// This file contains the declaration of the CBaseInfo
// class heirarchy.
//
// The class CBaseInfo is the base class of methods that abstract the
// ClusAPI into objects with identical methods for open, close, & control.
//
// Documentation:
//
// Implementation Files:
// CBaseInfo.cpp
//
// Maintained By:
//
//////////////////////////////////////////////////////////////////////////////
#pragma once
//
// CtlCodeEnum
//
typedef enum _CtlCodeEnum { CONTROL_UNKNOWN = 0x00, CONTROL_ADD_CRYPTO_CHECKPOINT, CONTROL_ADD_REGISTRY_CHECKPOINT, CONTROL_GET_REGISTRY_CHECKPOINTS, CONTROL_GET_CRYPTO_CHECKPOINTS, CONTROL_DELETE_CRYPTO_CHECKPOINT, CONTROL_DELETE_REGISTRY_CHECKPOINT,
CONTROL_VALIDATE_COMMON_PROPERTIES, CONTROL_VALIDATE_PRIVATE_PROPERTIES, CONTROL_ENUM_COMMON_PROPERTIES, CONTROL_ENUM_PRIVATE_PROPERTIES, CONTROL_GET_RO_COMMON_PROPERTIES, CONTROL_GET_RO_PRIVATE_PROPERTIES, CONTROL_GET_COMMON_PROPERTIES, CONTROL_GET_PRIVATE_PROPERTIES, CONTROL_SET_COMMON_PROPERTIES, CONTROL_SET_PRIVATE_PROPERTIES,
CONTROL_GET_TYPE, CONTROL_GET_NAME, CONTROL_GET_ID, CONTROL_GET_FLAGS, CONTROL_GET_CLASS_INFO, CONTROL_GET_NETWORK_NAME, CONTROL_GET_CHARACTERISTICS, CONTROL_GET_REQUIRED_DEPENDENCIES,
CONTROL_STORAGE_GET_DISK_INFO, CONTROL_STORAGE_IS_PATH_VALID, CONTROL_STORAGE_GET_AVAILABLE_DISKS,
CONTROL_QUERY_DELETE,
} CtlCodeEnum;
//
// Class CBaseInfo
// This is the base class for the heirarchy.
//
class CBaseInfo { private: IClusterHandleProvider * m_pICHProvider;
public:
IClusterHandleProvider * getClusterHandleProvider() { return m_pICHProvider; };
HCLUSTER getClusterHandle( void );
HRESULT GetPropertyStringHelper( CBasePropList& cplIn, const WCHAR * pszPropertyIn, BSTR * pbstrResultOut ); HRESULT GetPropertyDwordHelper( CBasePropList& cplIn, const WCHAR * pszPropertyIn, DWORD * pdwValueOut ); HRESULT GetPropertyStringValue( CtlCodeEnum cceIn, const WCHAR * pszPropertyIn, BSTR * pbstrResultOut ); HRESULT GetPropertyDwordValue( CtlCodeEnum cceIn, const WCHAR * pszPropertyIn, DWORD * pdwValueOut ); HRESULT SetClusterHandleProvider( IClusterHandleProvider * pICHPIn );
DWORD Control( CtlCodeEnum cceIn, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ) { DWORD sc; DWORD dw = ToCode( cceIn ); if( dw == 0 ) { sc = ERROR_INVALID_PARAMETER; } else { sc = Control( dw, pvBufferIn, dwLengthIn, pvBufferOut, dwBufferLength, dwLengthOut, hHostNode ); } return sc; }
public: CBaseInfo( void ); virtual ~CBaseInfo( void );
virtual DWORD ToCode( CtlCodeEnum ) { return 0; }
virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrName ) = 0; virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ) = 0;
};
//
// CBaseClusterInfo
//
class CBaseClusterInfo : public CBaseInfo { public: virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrName ); virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ); virtual DWORD ToCode( CtlCodeEnum cceIn );
};
//
// CBaseClusterGroupInfo
//
class CBaseClusterGroupInfo : public CBaseInfo { public: HGROUP m_hGroup;
virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrGroupName ); virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ); virtual DWORD ToCode( CtlCodeEnum cceIn );
};
//
// CBaseClusterResourceInfo
//
class CBaseClusterResourceInfo : public CBaseInfo { public: HRESOURCE m_hResource;
virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrResourceName ); virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ); virtual DWORD ToCode( CtlCodeEnum cceIn ); };
//
// CBaseClusterNodeInfo
//
class CBaseClusterNodeInfo : public CBaseInfo { public: HNODE m_hNode;
virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrNodeName ); virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ); virtual DWORD ToCode( CtlCodeEnum cceIn );
};
//
// CBaseClusterNetworkInfo
//
class CBaseClusterNetworkInfo : public CBaseInfo { public: HNETWORK m_hNetwork;
virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrNetworkName ); virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ); virtual DWORD ToCode( CtlCodeEnum cceIn ); };
//
// CBaseClusterNetInterfaceInfo
//
class CBaseClusterNetInterfaceInfo : public CBaseInfo { public: HNETINTERFACE m_hNetworkInterface;
virtual HRESULT Close( void ); virtual HRESULT Open( BSTR bstrNetworkName ); virtual DWORD Control( DWORD dwEnum, VOID * pvBufferIn, DWORD dwLengthIn, VOID * pvBufferOut, DWORD dwBufferLength, DWORD * dwLengthOut, HNODE hHostNode = NULL ); virtual DWORD ToCode( CtlCodeEnum cceIn ); };
|