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.
|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000 Microsoft Corporation
//
// Module Name:
// CClusOCMApp.h
//
// Description:
// ClusOCM.DLL is an Optional Components Manager DLL for installation of
// Microsoft Cluster Server. This file contains the declaration of the
// class ClusOCMApp, which is the main class of the ClusOCM DLL.
//
// Implementation Files:
// CClusOCMApp.cpp
// CClusOCMApp.inl
//
// Maintained By:
// Vij Vasu (Vvasu) 03-MAR-2000
//
//////////////////////////////////////////////////////////////////////////////
#pragma once
//////////////////////////////////////////////////////////////////////////////
// Include Files
//////////////////////////////////////////////////////////////////////////////
// Contains setup API function declarations
#include <setupapi.h>
// For OC Manager definitions, macros, etc.
#include <ocmanage.h>
// For the class CClusOCMTask
#include "CClusOCMTask.h"
// For the smart classes
#include "SmartClasses.h"
//////////////////////////////////////////////////////////////////////////////
//++
//
// class CClusOCMApp
//
// Description:
// This is the main class of the ClusOCM DLL. This class receives messages
// from the OC Manager, takes high level decisions about the installation
// and passes control appropriately to subobjects.
//
//--
//////////////////////////////////////////////////////////////////////////////
class CClusOCMApp { public: //////////////////////////////////////////////////////////////////////////
// Constructors and Destructors
//////////////////////////////////////////////////////////////////////////
CClusOCMApp( void ); ~CClusOCMApp( void );
// Receives messages from the OC Manager and dispatches them.
DWORD DwClusOcmSetupProc( IN LPCVOID pvComponentId , IN LPCVOID pvSubComponentId , IN UINT uiFunctionCode , IN UINT uiParam1 , IN OUT PVOID pvParam2 );
//////////////////////////////////////////////////////////////////////////
// Public Accessors
//////////////////////////////////////////////////////////////////////////
// Get the SETUP_INIT_COMPONENT passed in by OC Manager
const SETUP_INIT_COMPONENT & RsicGetSetupInitComponent( void ) const { return m_sicSetupInitComponent; }
//
// Setup state functions
//
// Is this an unattended setup?
bool FIsUnattendedSetup( void ) const { return m_fIsUnattendedSetup; }
// Is this an upgrade?
bool FIsUpgrade( void ) const { return m_fIsUpgrade; }
// Is this GUI mode setup?
bool FIsGUIModeSetup( void ) const { return m_fIsGUIModeSetup; }
// Get the current installation state.
eClusterInstallState CisGetClusterInstallState( void ) const { return m_cisCurrentInstallState; }
// Get the error code of the first error that occurred
DWORD DwGetError( void ) const { return m_dwFirstError; }
// Report that an error occurred. If an error had already occurred, the new error code is not stored.
DWORD DwSetError( DWORD dwError ) { if ( m_dwFirstError == NO_ERROR ) { m_dwFirstError = dwError; }
return m_dwFirstError; }
private: //////////////////////////////////////////////////////////////////////////
// Forbidden methods
//////////////////////////////////////////////////////////////////////////
//
// Copying an object of this class is not allowed.
//
// Private copy constructor.
CClusOCMApp( const CClusOCMApp & );
// Private assignment operator.
const CClusOCMApp & operator =( const CClusOCMApp & );
//////////////////////////////////////////////////////////////////////////
// Private Utility Functions.
//////////////////////////////////////////////////////////////////////////
// Check if the cluster service exists as a registered service.
DWORD DwIsClusterServiceRegistered( bool * pfIsRegisteredOut ) const;
// Set the setup init component data and other setup state variables
void SetSetupState( const SETUP_INIT_COMPONENT & sicSourceIn );
// Store the current installation state.
eClusterInstallState CisStoreClusterInstallState( eClusterInstallState cisNewStateIn );
// Get a pointer to the current task object. Create it if necessary.
DWORD DwGetCurrentTask( CClusOCMTask *& rpTaskOut );
// Free the current task object.
void ResetCurrentTask( void ) { m_sptaskCurrentTask.Assign( NULL ); }
// Get the major version of the cluster service that we are upgrading.
// This function call only be called during an upgrade.
DWORD DwGetNodeClusterMajorVersion( DWORD & rdwNodeClusterMajorVersionOut );
//////////////////////////////////////////////////////////////////////////
// Private Message Handlers
//////////////////////////////////////////////////////////////////////////
// Handler for the OC_INIT_COMPONENT message.
DWORD DwOcInitComponentHandler( PSETUP_INIT_COMPONENT pSetupInitComponentInout );
// Handler for the OC_QUERY_STATE message.
DWORD DwOcQueryStateHandler( UINT uiSelStateQueryTypeIn );
//////////////////////////////////////////////////////////////////////////
// Private Data
//////////////////////////////////////////////////////////////////////////
private:
// Contains information about this setup session.
SETUP_INIT_COMPONENT m_sicSetupInitComponent;
// Setup state variables.
bool m_fIsUnattendedSetup; bool m_fIsUpgrade; bool m_fIsGUIModeSetup;
// The current installation state of the cluster service
eClusterInstallState m_cisCurrentInstallState;
// This variable stores the error code of the first error that occurred.
DWORD m_dwFirstError;
// A smart pointer holding a pointer to the current task being performed.
CSmartGenericPtr< CPtrTrait< CClusOCMTask > > m_sptaskCurrentTask;
// Indicates if the task object has been created or not.
bool m_fAttemptedTaskCreation;
}; //*** class CClusOCMApp
//////////////////////////////////////////////////////////////////////////////
// Inline Files
//////////////////////////////////////////////////////////////////////////////
#include "CClusOCMApp.inl"
|