windows-nt/Source/XPSP1/NT/admin/pchealth/sr/shell/rstrmgr.h
2020-09-26 16:20:57 +08:00

271 lines
6.7 KiB
C++

/******************************************************************************
Copyright (c) 1999-2000 Microsoft Corporation
Module Name:
rstrmgr.h
Abstract:
This file contains the declaration of the CRestoreManager class, which
controls overall restoration process and provides methods to control &
help user experience flow.
Revision History:
Seong Kook Khang (SKKhang) 05/10/00
created
******************************************************************************/
#ifndef _RSTRMGR_H__INCLUDED_
#define _RSTRMGR_H__INCLUDED_
#pragma once
/////////////////////////////////////////////////////////////////////////////
//
// Constant Definitions
//
/////////////////////////////////////////////////////////////////////////////
// SR Restore Start Mode
enum
{
SRRSM_NORMAL = 0,
SRRSM_SUCCESS,
SRRSM_FAIL,
SRRSM_FAILLOWDISK
};
// SR Restore Manager Status
enum
{
SRRMS_NONE = 0,
SRRMS_STARTED,
SRRMS_INITIALIZING,
SRRMS_CREATING_MAP,
SRRMS_RESTORING,
SRRMS_FINISHED
};
// Functionality Chosen in the Main Page
enum
{
RMO_RESTORE = 0,
RMO_CREATERP,
RMO_UNDO,
RMO_MAX
};
// SR Restore Manager Flags
#define SRRMF_CANNAVIGATEPAGE 0x00000001
#define SRRMF_ISUNDO 0x00000002
#define SRRMF_ISRPSELECTED 0x00000004
/////////////////////////////////////////////////////////////////////////////
//
// CSRTime Definitions
//
/////////////////////////////////////////////////////////////////////////////
class CSRTime
{
public:
CSRTime();
public:
const CSRTime& operator=( const CSRTime &cSrc );
public:
int GetYear() { return( m_st.wYear ); }
int GetMonth() { return( m_st.wMonth ); }
int GetDay() { return( m_st.wDay ); }
operator PSYSTEMTIME() const;
//operator (FILETIME*)();
PSYSTEMTIME GetTime();
void GetTime( PSYSTEMTIME pst );
BOOL GetTime( PFILETIME pft );
public:
int Compare( CSRTime &time );
int CompareDate( CSRTime &time );
BOOL SetTime( PFILETIME ft, BOOL fLocal=TRUE );
void SetTime( PSYSTEMTIME st );
void SetToCurrent();
protected:
SYSTEMTIME m_st; // Date/Time in UTC
};
/////////////////////////////////////////////////////////////////////////////
//
// Structure Definitions
//
/////////////////////////////////////////////////////////////////////////////
struct SRestorePointInfo
{
DWORD dwType;
DWORD dwNum;
CSRStr strDir;
CSRStr strName;
CSRTime stTimeStamp;
DWORD dwFlags;
};
typedef SRestorePointInfo *PSRPI;
typedef CSRDynPtrArray<PSRPI, 32> CDPA_RPI;
struct SRenamedFolderInfo
{
CSRStr strOld;
CSRStr strNew;
CSRStr strLoc;
};
typedef SRenamedFolderInfo *PSRFI;
typedef CSRDynPtrArray<PSRFI, 16> CDPA_RFI;
/////////////////////////////////////////////////////////////////////////////
//
// CRestoreManager
//
/////////////////////////////////////////////////////////////////////////////
class CRestoreManager
{
public:
CRestoreManager();
~CRestoreManager();
void Release();
// Properties - main flow
public:
BOOL CanRunRestore( BOOL fThawIfFrozen );
int GetFirstDayOfWeek();
BOOL GetIsRPSelected();
BOOL GetIsSafeMode();
BOOL GetIsSmgrAvailable();
BOOL GetIsUndo();
int GetLastRestore();
int GetMainOption();
LPCWSTR GetManualRPName();
void GetMaxDate( PSYSTEMTIME pstMax );
void GetMinDate( PSYSTEMTIME pstMin );
int GetRealPoint();
PSRFI GetRFI( int nIndex );
int GetRFICount();
PSRPI GetRPI( int nIndex );
int GetRPICount();
void GetSelectedDate( PSYSTEMTIME pstSel );
LPCWSTR GetSelectedName();
int GetSelectedPoint();
int GetStartMode();
void GetToday( PSYSTEMTIME pstToday );
void SetIsRPSelected( BOOL fSel );
void SetIsUndo( BOOL fUndo );
BOOL SetMainOption( int nOpt );
void SetManualRPName( LPCWSTR cszRPName );
void SetSelectedDate( PSYSTEMTIME pstSel );
BOOL SetSelectedPoint( int nRP );
BOOL SetStartMode( int nMode );
void GetUsedDate( PSYSTEMTIME pstDate );
LPCWSTR GetUsedName();
DWORD GetUsedType();
// Properties - HTML UI specific
public:
BOOL GetCanNavigatePage();
void SetCanNavigatePage( BOOL fCanNav );
// Properties
public:
PSRPI GetUsedRP();
int GetNewRP();
// Operations - main flow
public:
BOOL CheckRestore( BOOL fSilent );
BOOL BeginRestore();
BOOL Cancel();
BOOL CancelRestorePoint();
BOOL CreateRestorePoint();
BOOL DisableFIFO();
BOOL EnableFIFO();
BOOL FormatDate( PSYSTEMTIME pst, CSRStr &str, BOOL fLongFmt );
BOOL FormatLowDiskMsg( LPCWSTR cszFmt, CSRStr &str );
BOOL FormatTime( PSYSTEMTIME pst, CSRStr &str );
BOOL GetLocaleDateFormat( PSYSTEMTIME pst, LPCWSTR cszFmt, CSRStr &str );
BOOL GetYearMonthStr( int nYear, int nMonth, CSRStr &str );
BOOL InitializeAll();
BOOL Restore( HWND hwndProgress );
// Operations
public:
BOOL AddRenamedFolder( PSRFI pRFI );
BOOL SetRPsUsed( int nRPUsed, int nRPNew );
BOOL SilentRestore( DWORD dwRP );
// Operations - internal
protected:
void Cleanup();
BOOL GetDateStr( PSYSTEMTIME pst, CSRStr &str, DWORD dwFlags, LPCWSTR cszFmt );
BOOL GetTimeStr( PSYSTEMTIME pst, CSRStr &str, DWORD dwFlags );
void UpdateRestorePoint();
BOOL UpdateRestorePointList();
BOOL CheckForDomainChange (WCHAR *pwszFilename, WCHAR *pszMsg);
// Attributes
public:
HWND GetFrameHwnd();
//int GetStatus();
BOOL DenyClose();
BOOL NeedReboot();
void SetFrameHwnd( HWND hWnd );
void SetIdealSize( int cx, int cy );
protected:
int m_nStartMode;
BOOL m_fNeedReboot;
HWND m_hwndFrame;
CSRTime m_stToday; // Current local date/time
int m_nMainOption; // Option on main screen
//int m_nStatus;
BOOL m_fDenyClose;
DWORD m_dwFlags;
DWORD m_dwFlagsEx;
int m_nSelectedRP;
CSRTime m_stSelected;
CSRStr m_strSelected;
int m_nRealPoint;
INT64 m_ullManualRP;
CSRStr m_strManualRP;
int m_nRPUsed; // RP used for the last restore
int m_nRPNew; // New "Restore" RP created by the last restore
// Restore Point specific informations
CDPA_RPI m_aryRPI;
//int m_nRPI;
//PSRPI *m_aryRPI;
int m_nLastRestore;
CSRTime m_stRPMin;
CSRTime m_stRPMax;
CDPA_RFI m_aryRFI;
//int m_nRFI;
//PSRFI *m_aryRFI;
IRestoreContext *m_pCtx;
};
extern CRestoreManager *g_pRstrMgr;
BOOL CreateRestoreManagerInstance( CRestoreManager **ppMgr );
#endif //_RSTRMGR_H__INCLUDED_