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

245 lines
6.2 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999 Microsoft Corporation
//
// Module Name:
// ClusKeys.h
//
// Description:
// Definition of the registry and crypto key collection classes for
// the MSCLUS automation classes.
//
// Implementation File:
// ClusKeys.cpp
//
// Author:
// Galen Barbee (galenb) 12-Feb-1999
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _CLUSKEYS_H_
#define _CLUSKEYS_H_
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CKeys;
class CResourceKeys;
class CResTypeKeys;
class CClusResourceRegistryKeys;
class CClusResourceCryptoKeys;
class CClusResTypeRegistryKeys;
class CClusResTypeCryptoKeys;
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CKeys
//
// Description:
// Cluster Keys Collection Implementation Class.
//
// Inheritance:
//
//--
/////////////////////////////////////////////////////////////////////////////
class CKeys
{
public:
CKeys( void );
~CKeys( void );
protected:
typedef std::vector< CComBSTR * > KeyList;
ISClusRefObject * m_pClusRefObject;
KeyList m_klKeys;
HRESULT HrCreate( ISClusRefObject * pClusRefObject );
void Clear( void );
HRESULT FindItem( IN LPWSTR lpszNodeName, OUT ULONG * pnIndex );
HRESULT HrGetIndex( IN VARIANT varIndex, OUT ULONG * pnIndex );
HRESULT HrGetItem( IN VARIANT varIndex, OUT BSTR * ppKey );
HRESULT HrRemoveAt( IN size_t pos );
HRESULT HrFindItem( IN BSTR bstrKey, OUT ULONG * pnIndex );
HRESULT HrGetCount( OUT long * plCount );
virtual HRESULT HrRemoveItem( IN VARIANT varIndex );
virtual HRESULT HrAddItem( IN BSTR bstrKey );
}; //*** Class CKeys
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CResourceKeys
//
// Description:
// Cluster Resource Keys Collection Implementation Class.
//
// Inheritance:
// CKeys
//
//--
/////////////////////////////////////////////////////////////////////////////
class CResourceKeys: public CKeys
{
protected:
HRESOURCE m_hResource;
HRESULT HrRefresh( DWORD dwControlCode );
virtual HRESULT HrRemoveItem( IN VARIANT varIndex, IN DWORD dwControlCode );
virtual HRESULT HrAddItem( IN BSTR bstrKey, IN DWORD dwControlCode );
}; //*** Class CResourceKeys
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CResTypeKeys
//
// Description:
// Cluster Resource Keys Collection Implementation Class.
//
// Inheritance:
// CKeys
//
//--
/////////////////////////////////////////////////////////////////////////////
class CResTypeKeys: public CKeys
{
protected:
CComBSTR m_bstrResourceTypeName;
HRESULT HrRefresh( DWORD dwControlCode );
}; //*** Class CResTypeKeys
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusResourceRegistryKeys
//
// Description:
// Cluster Registry Keys Collection Automation Class.
//
// Inheritance:
// CResourceKeys
// IDispatchImpl< ISClusRegistryKeys, &IID_ISClusRegistryKeys, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< ClusRegistryKeys, &CLSID_ClusRegistryKeys >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusResourceRegistryKeys :
public CResourceKeys,
public IDispatchImpl< ISClusRegistryKeys, &IID_ISClusRegistryKeys, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CComCoClass< ClusRegistryKeys, &CLSID_ClusRegistryKeys >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusResourceRegistryKeys( void );
BEGIN_COM_MAP(CClusResourceRegistryKeys)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusRegistryKeys)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusResourceRegistryKeys)
DECLARE_NO_REGISTRY()
HRESULT Create( HRESOURCE hResource );
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT BSTR * ppbstrRegistryKey );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP AddItem( IN BSTR bstrRegistryKey );
STDMETHODIMP RemoveItem( IN VARIANT varIndex );
STDMETHODIMP Refresh( void );
}; //*** Class CClusResourceRegistryKeys
#if CLUSAPI_VERSION >= 0x0500
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusResourceCryptoKeys
//
// Description:
// Cluster Crypto Keys Collection Automation Class.
//
// Inheritance:
// CResourceKeys
// IDispatchImpl< ISClusCryptoKeys, &IID_ISClusCryptoKeys, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< ClusCryptoKeys, &CLSID_ClusCryptoKeys >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusResourceCryptoKeys :
public CResourceKeys,
public IDispatchImpl< ISClusCryptoKeys, &IID_ISClusCryptoKeys, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CComCoClass< ClusCryptoKeys, &CLSID_ClusCryptoKeys >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusResourceCryptoKeys( void );
BEGIN_COM_MAP(CClusResourceCryptoKeys)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusCryptoKeys)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusResourceCryptoKeys)
DECLARE_NO_REGISTRY()
HRESULT Create( HRESOURCE hResource );
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT BSTR * ppbstrCryptoKey );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP AddItem( IN BSTR bstrCryptoKey );
STDMETHODIMP RemoveItem( IN VARIANT varIndex );
STDMETHODIMP Refresh( void );
}; //*** Class CClusResourceCryptoKeys
#endif // CLUSAPI_VERSION >= 0x0500
#endif // _CLUSKEYS_H_