271 lines
6.7 KiB
C
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_
|