Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

196 lines
7.6 KiB

//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999-2002 Microsoft Corporation
//
// Module Name:
// ClusCfg.h
//
// Description:
// Declaration of the CClusCfgWizard class.
//
// Maintained By:
// David Potter (DavidP) 15-JUN-2001
// Geoffrey Pease (GPease) 11-MAY-2000
//
//////////////////////////////////////////////////////////////////////////////
#pragma once
#include "NamedCookie.h"
//
// Creating / Adding enum
//
enum ECreateAddMode {
camUNKNOWN = 0,
camCREATING,
camADDING
};
/*
#define USER_REGISTRY_SETTINGS_KEY L"Software\\Microsoft\\Cluster Configuration Wizard\\Settings"
#define CONFIGURATION_TYPE L"ConfigurationType"
typedef enum EConfigurationSettings
{
csUnknown = 0,
csFullConfig, // Full analysis and configuration
csMinConfig, // Minimal analysis and configuraion
csMax
} EConfigurationSettings;
*/
//////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusCfgWizard
//
// Description:
// The Cluster Configuration Wizard object.
//
//--
//////////////////////////////////////////////////////////////////////////////
class CClusCfgWizard
: INotifyUI
{
private:
// IUnknown
LONG m_cRef; // Reference count
// IClusCfgWizard
IClusCfgCredentials * m_pccc; // Cluster Service Account Credentials
ULONG m_ulIPAddress; // IP Address for the cluster
ULONG m_ulIPSubnet; // Subnet mask for the cluster
BSTR m_bstrNetworkName; // Name of network for IP address
HANDLE m_hCancelCleanupEvent; // Used to signal when the cancel cleanup task is complete
IServiceProvider * m_psp; // Middle Tier Service Manager
HMODULE m_hRichEdit; // RichEdit's module handle
SNamedCookie m_ncCluster;
BSTR m_bstrClusterDomain;
BOOL m_fDefaultedDomain;
NamedCookieArray m_ncaNodes;
OBJECTCOOKIE m_cookieCompletion;
BOOL m_fMinimalConfig; // Minimal analysis and config chosen?
IConnectionPointContainer * m_pcpc;
ITaskManager * m_ptm;
IObjectManager * m_pom;
// INotifyUI
DWORD m_dwCookieNotify; // Notification registration cookie
private:
CClusCfgWizard( void );
~CClusCfgWizard( void );
HRESULT HrInit( void );
// Private copy constructor to prevent copying.
CClusCfgWizard( const CClusCfgWizard & );
// Private assignment operator to prevent copying.
CClusCfgWizard & operator=( const CClusCfgWizard & );
HRESULT
HrAddWizardPage( LPPROPSHEETHEADER ppshInout,
UINT idTemplateIn,
DLGPROC pfnDlgProcIn,
UINT idTitleIn,
UINT idSubtitleIn,
LPARAM lParam
);
public:
static HRESULT S_HrCreateInstance( CClusCfgWizard ** ppccwOut );
HRESULT HrLaunchCleanupTask( void );
BOOL FHasClusterName( void ) const;
BOOL FDefaultedClusterDomain( void ) const;
//
// IUnknown
//
STDMETHOD( QueryInterface )( REFIID riidIn, PVOID * ppvOut );
STDMETHOD_( ULONG, AddRef )( void );
STDMETHOD_( ULONG, Release )( void );
//
// IClusCfgWizard methods
//
STDMETHOD( CreateCluster )( HWND lParentWndIn, BOOL * pfDoneOut );
STDMETHOD( AddClusterNodes )( HWND lParentWndIn, BOOL * pfDoneOut );
STDMETHOD( get_ClusterName )( BSTR * pbstrClusterNameOut );
STDMETHOD( put_ClusterName )( BSTR bstrClusterNameIn );
STDMETHOD( get_ServiceAccountUserName )( BSTR * pbstrAccountNameOut );
STDMETHOD( put_ServiceAccountUserName )( BSTR bstrAccountNameIn );
STDMETHOD( put_ServiceAccountPassword )( BSTR bstrPasswordIn );
STDMETHOD( get_ServiceAccountDomainName )( BSTR * pbstrDomainOut );
STDMETHOD( put_ServiceAccountDomainName )( BSTR bstrDomainIn );
STDMETHOD( get_ClusterIPAddress )( BSTR * pbstrIPAddressOut );
STDMETHOD( put_ClusterIPAddress )( BSTR bstrIPAddressIn );
STDMETHOD( get_ClusterIPSubnet )( BSTR * pbstrIPSubnetOut );
STDMETHOD( put_ClusterIPSubnet )( BSTR bstrIPSubnetIn );
STDMETHOD( get_ClusterIPAddressNetwork )( BSTR * pbstrNetworkNameOut );
STDMETHOD( put_ClusterIPAddressNetwork )( BSTR bstrNetworkNameIn );
STDMETHOD( AddComputer )( BSTR bstrComputerNameIn );
STDMETHOD( RemoveComputer )( BSTR bstrComputerNameIn );
STDMETHOD( ClearComputerList )( void );
STDMETHOD( get_MinimumConfiguration )( BOOL * pfMinimumConfigurationOut );
STDMETHOD( put_MinimumConfiguration )( BOOL fMinimumConfigurationIn );
//
// Non-COM public methods: cluster access
//
STDMETHOD( HrSetClusterName )( LPCWSTR pwcszClusterNameIn, bool fAcceptNonRFCCharsIn );
STDMETHOD( HrGetClusterDomain )( BSTR* pbstrDomainOut );
STDMETHOD( HrGetClusterObject )( IClusCfgClusterInfo ** ppClusterOut );
STDMETHOD( HrGetClusterCookie )( OBJECTCOOKIE * pocClusterOut );
STDMETHOD( HrGetClusterChild )( REFCLSID rclsidChildIn, REFGUID rguidFormatIn, IUnknown ** ppunkChildOut );
STDMETHOD( HrReleaseClusterObject )( void );
//
// Non-COM public methods: node access
//
STDMETHOD( HrAddNode )( LPCWSTR pwcszNodeNameIn, bool fAcceptNonRFCCharsIn );
STDMETHOD( HrGetNodeCount )( size_t* pcNodesOut );
STDMETHOD( HrGetNodeObject )( size_t idxNodeIn, IClusCfgNodeInfo ** ppNodeOut );
STDMETHOD( HrGetNodeCookie )( size_t idxNodeIn, OBJECTCOOKIE * pocNodeOut );
STDMETHOD( HrGetNodeName )( size_t idxNodeIn, BSTR * pbstrNodeNameOut );
STDMETHOD( HrGetNodeChild )( size_t idxNodeIn, REFCLSID rclsidChildIn, REFGUID rguidFormatIn, IUnknown** ppunkChildOut );
STDMETHOD( HrReleaseNodeObjects )( void );
//
// Non-COM public methods: task access
//
STDMETHOD( HrCreateTask )( REFGUID rguidTaskIn, IUnknown** ppunkOut );
STDMETHOD( HrSubmitTask)( IDoTask* pTaskIn );
//
// Non-COM public methods: completion task access
//
STDMETHOD( HrGetCompletionCookie )( REFGUID rguidTaskIn, OBJECTCOOKIE * pocTaskOut );
STDMETHOD( HrGetCompletionStatus )( OBJECTCOOKIE ocTaskIn, HRESULT * phrStatusOut );
STDMETHOD( HrReleaseCompletionObject )( OBJECTCOOKIE ocTaskIn );
//
// Non-COM public methods: connection point access
//
STDMETHOD( HrAdvise )( REFIID riidConnectionIn, IUnknown * punkConnectionIn, DWORD * pdwCookieOut );
STDMETHOD( HrUnadvise )( REFIID riidConnectionIn, DWORD dwCookieIn );
//
// Non-COM public methods: miscellaneous
//
STDMETHOD( HrIsCompatibleNodeDomain )( LPCWSTR pcwszDomainIn );
STDMETHOD( HrCreateMiddleTierObjects )( void );
STDMETHOD( HrFilterNodesWithBadDomains )( BSTR * pbstrBadNodesOut );
// STDMETHOD( HrReadSettings )( EConfigurationSettings * pecsSettingIn, BOOL * pfValuePresentOut = NULL );
// STDMETHOD( HrWriteSettings )( EConfigurationSettings ecsSettingIn, BOOL fDeleteValueIn = FALSE );
//
// INotifyUI
//
STDMETHOD( ObjectChanged )( OBJECTCOOKIE cookieIn );
}; //*** class CClusCfgWizard