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
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
|