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

241 lines
6.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// Module Name:
// ClusApp.h
//
// Description:
// Definition of CClusApplication and it's supporting classes.
//
// Implementation File:
// ClusApp.cpp
//
// Author:
// Galen Barbee (GalenB) 10-Dec-1998
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _CLUSAPPLICATION_H_
#define _CLUSAPPLICATION_H_
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusApplication;
class CClusterNames;
class CDomainNames;
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusterNames
//
// Description:
// Cluster Names Collection Automation Class.
//
// Inheritance:
// IDispatchImpl< ISClusterNames, &IID_ISClusterNames, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< CClusterNames, &CLSID_ClusterNames >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusterNames :
public IDispatchImpl< ISClusterNames, &IID_ISClusterNames, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CComCoClass< CClusterNames, &CLSID_ClusterNames >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CClusterNames( void );
~CClusterNames( void );
BEGIN_COM_MAP(CClusterNames)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusterNames)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusterNames)
DECLARE_NO_REGISTRY()
HRESULT Create( IN BSTR bstrDomainName );
private:
typedef std::vector< CComBSTR * > ClusterNameList;
ClusterNameList m_Clusters;
CComBSTR m_bstrDomainName;
void Clear( void );
public:
STDMETHODIMP get_DomainName( OUT BSTR * pbstrDomainName );
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT BSTR * bstrClusterName );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP Refresh( void );
// STDMETHODIMP get_Application( OUT ISClusApplication ** ppParentApplication );
// STDMETHODIMP get_Parent( OUT ISClusApplication ** ppParent )
// {
// return get_Application( ppParent );
// }
protected:
HRESULT GetIndex( IN VARIANT varIndex, OUT UINT * pnIndex );
}; //*** CClusterNames
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CDomainNames
//
// Description:
// Cluster Domain Names Collection Automation Class.
//
// Inheritance:
// IDispatchImpl< ISDomainNames, &IID_ISDomainNames, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< CDomainNames, &CLSID_DomainNames >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CDomainNames :
public IDispatchImpl< ISDomainNames, &IID_ISDomainNames, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CComCoClass< CDomainNames, &CLSID_DomainNames >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
public:
CDomainNames( void );
~CDomainNames( void );
BEGIN_COM_MAP(CDomainNames)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISDomainNames)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CDomainNames)
DECLARE_NO_REGISTRY()
private:
typedef std::vector< CComBSTR * > DomainList;
DomainList m_DomainList;
STDMETHODIMP ScBuildTrustList( IN LPWSTR pszTarget );
DWORD ScOpenPolicy( IN LPWSTR ServerName, IN DWORD DesiredAccess, OUT PLSA_HANDLE PolicyHandle );
void InitLsaString( OUT PLSA_UNICODE_STRING LsaString, IN LPWSTR String );
DWORD ScIsDomainController( IN LPWSTR pszServer, OUT LPBOOL pbIsDC );
DWORD ScEnumTrustedDomains( IN LSA_HANDLE PolicyHandle );
DWORD ScAddTrustToList( IN PLSA_UNICODE_STRING UnicodeString );
void Clear( void );
public:
STDMETHODIMP get_Count( OUT long * plCount );
STDMETHODIMP get_Item( IN VARIANT varIndex, OUT BSTR * bstrDomainName );
STDMETHODIMP get__NewEnum( OUT IUnknown ** ppunk );
STDMETHODIMP Refresh( void );
// STDMETHODIMP get_Application( OUT ISClusApplication ** ppParentApplication );
// STDMETHODIMP get_Parent( OUT ISClusApplication ** ppParent )
// {
// return get_Application( ppParent );
// }
protected:
HRESULT GetIndex( IN VARIANT varIndex, OUT UINT * pnIndex );
}; //*** Class CDomainNames
/////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusApplication
//
// Description:
// Cluster Application Automation Class.
//
// Inheritance:
// IDispatchImpl< ISClusApplication, &IID_ISClusApplication, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
// CSupportErrorInfo
// CComObjectRootEx< CComSingleThreadModel >
// CComCoClass< CClusApplication, &CLSID_ClusApplication >
//
//--
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CClusApplication :
public IDispatchImpl< ISClusApplication, &IID_ISClusApplication, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER >,
public CSupportErrorInfo,
public CComObjectRootEx< CComSingleThreadModel >,
public CComCoClass< CClusApplication, &CLSID_ClusApplication >
{
typedef CComObjectRootEx< CComSingleThreadModel > BaseComClass;
typedef CComCoClass< CClusApplication, &CLSID_ClusApplication > BaseCoClass;
typedef IDispatchImpl< ISClusApplication, &IID_ISClusApplication, &LIBID_MSClusterLib, MAJORINTERFACEVER, MINORINTERFACEVER > BaseDispatchClass;
public:
CClusApplication( void );
~CClusApplication( void );
BEGIN_COM_MAP(CClusApplication)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISClusApplication)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_NOT_AGGREGATABLE(CClusApplication)
DECLARE_REGISTRY_RESOURCEID(IDR_MSCLUS)
public:
STDMETHODIMP get_DomainNames( OUT ISDomainNames ** ppDomainNames );
STDMETHODIMP OpenCluster( IN BSTR bstrClusterName, OUT ISCluster ** ppCluster );
STDMETHODIMP get_ClusterNames( IN BSTR bstrDomainName, OUT ISClusterNames ** ppClusterNames );
// STDMETHODIMP get_Application( OUT ISClusApplication ** ppParentApplication );
// STDMETHODIMP get_Parent( OUT ISClusApplication ** ppParent )
// {
// return get_Application( ppParent );
// }
private:
CComObject< CDomainNames > * m_pDomainNames;
}; //*** Class CClusApplication
#endif // _CLUSAPPLICATION_H_