|
|
/******************************************************************************
Copyright (c) 1999-2000 Microsoft Corporation
Module Name: rstrshl.h
Abstract: This file contains the declaration of the CRestoreShell class, which provide several methods to be used by HTML scripts. This class wrappes the new CRestoreManager class.
Revision History: Seong Kook Khang (SKKhang) 10/08/99 created Seong Kook Khang (SKKhang) 05/10/00 new architecture for Whistler, now CRestoreShell is merely a dummy ActiveX control, wrapping the new CRestoreManager class. Most of the real functionalities were moved into CRestoreManager.
******************************************************************************/
#ifndef _RSTRSHL_H__INCLUDED_
#define _RSTRSHL_H__INCLUDED_
#pragma once
/////////////////////////////////////////////////////////////////////////////
//
// CRestorePointInfo
//
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CRestorePointInfo : public CComObjectRootEx<CComMultiThreadModel>, public IDispatchImpl<IRestorePoint, &IID_IRestorePoint, &LIBID_RestoreUILib> { public: CRestorePointInfo();
DECLARE_NO_REGISTRY() DECLARE_NOT_AGGREGATABLE(CRestorePointInfo)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CRestorePointInfo) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IRestorePoint) END_COM_MAP()
// Attributes
public: SRestorePointInfo *m_pRPI;
// Methods
public: STDMETHOD(HrInit)( SRestorePointInfo *pRPI );
// IRestorePoint methods
public: STDMETHOD(get_Name)( BSTR *pbstrName ); STDMETHOD(get_Type)( INT *pnType ); STDMETHOD(get_SequenceNumber)( INT *pnSeq ); STDMETHOD(get_TimeStamp)( INT nOffDate, VARIANT *pvarTime ); STDMETHOD(get_Year)( INT *pnYear ); STDMETHOD(get_Month)( INT *pnMonth ); STDMETHOD(get_Day)( INT *pnDate ); STDMETHOD(get_IsAdvanced)( VARIANT_BOOL *pfIsAdvanced );
STDMETHOD(CompareSequence)( IRestorePoint *pRP, INT *pnCmp ); };
typedef CComObject<CRestorePointInfo> CRPIObj;
/////////////////////////////////////////////////////////////////////////////
//
// CRenamedFolders
//
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CRenamedFolders : public CComObjectRootEx<CComMultiThreadModel>, public IDispatchImpl<IRenamedFolders, &IID_IRenamedFolders, &LIBID_RestoreUILib> { public: CRenamedFolders();
DECLARE_NO_REGISTRY() DECLARE_NOT_AGGREGATABLE(CRenamedFolders)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CRenamedFolders) COM_INTERFACE_ENTRY(IRenamedFolders) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP()
// IRestorePoint methods
public: STDMETHOD(get_Count) ( long *plCount ); STDMETHOD(get_OldName) ( long lIndex, BSTR *pbstrName ); STDMETHOD(get_NewName) ( long lIndex, BSTR *pbstrName ); STDMETHOD(get_Location)( long lIndex, BSTR *pbstrName ); };
typedef CComObject<CRenamedFolders> CRFObj;
/////////////////////////////////////////////////////////////////////////////
//
// CRestoreShell
//
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CRestoreShell : public CComObjectRootEx<CComSingleThreadModel>, public IDispatchImpl<IRestoreShell, &IID_IRestoreShell, &LIBID_RestoreUILib>, public CComCoClass<CRestoreShell, &CLSID_RestoreShellExternal> { public: CRestoreShell();
DECLARE_NO_REGISTRY() DECLARE_NOT_AGGREGATABLE(CRestoreShell) DECLARE_CLASSFACTORY_SINGLETON(CRestoreShell)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CRestoreShell) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IRestoreShell) END_COM_MAP()
//HRESULT FinalConstruct();
//void FinalRelease();
// Attributes
protected: BOOL m_fFormInitialized;
// IRestoreShell Restore Points Enumerator
public: STDMETHOD(Item)( INT nIndex, IRestorePoint** ppRP ); STDMETHOD(get_Count)( INT *pnCount );
// IRestoreShell Properties
public: STDMETHOD(get_CurrentDate) ( VARIANT *pvarDate ); STDMETHOD(get_FirstDayOfWeek) ( INT *pnFirstDay ); STDMETHOD(get_IsSafeMode) ( VARIANT_BOOL *pfIsSafeMode ); STDMETHOD(get_IsUndo) ( VARIANT_BOOL *pfIsUndo ); STDMETHOD(put_IsUndo) ( VARIANT_BOOL fIsUndo ); STDMETHOD(get_LastRestore) ( INT *pnLastRestore ); STDMETHOD(get_MainOption) ( INT *pnMainOption ); STDMETHOD(put_MainOption) ( INT nMainOption ); STDMETHOD(get_ManualRPName) ( BSTR *pbstrManualRP ); STDMETHOD(put_ManualRPName) ( BSTR bstrManualRP ); STDMETHOD(get_MaxDate) ( VARIANT *pvarDate ); STDMETHOD(get_MinDate) ( VARIANT *pvarDate ); STDMETHOD(get_RealPoint) ( INT *pnPoint ); STDMETHOD(get_RenamedFolders) ( IRenamedFolders **ppList ); STDMETHOD(get_RestorePtSelected)( VARIANT_BOOL *pfRPSel ); STDMETHOD(put_RestorePtSelected)( VARIANT_BOOL fRPSel ); STDMETHOD(get_SelectedDate) ( VARIANT *pvarDate ); STDMETHOD(put_SelectedDate) ( VARIANT varDate ); STDMETHOD(get_SelectedName) ( BSTR *pbstrName ); STDMETHOD(get_SelectedPoint) ( INT *pnPoint ); STDMETHOD(put_SelectedPoint) ( INT nPoint ); STDMETHOD(get_SmgrUnavailable) ( VARIANT_BOOL *pfSmgr ); STDMETHOD(get_StartMode) ( INT *pnMode ); STDMETHOD(get_UsedDate) ( VARIANT *pvarDate ); STDMETHOD(get_UsedName) ( BSTR *pbstrName );
// IRestoreShell Properties - HTML UI specific
public: STDMETHOD(get_CanNavigatePage) ( VARIANT_BOOL *pfCanNavigatePage ); STDMETHOD(put_CanNavigatePage) ( VARIANT_BOOL fCanNavigatePage );
// IRestoreShell Methods
public: STDMETHOD(BeginRestore) ( VARIANT_BOOL *pfBeginRestore ); STDMETHOD(CheckRestore) ( VARIANT_BOOL *pfCheckRestore ); STDMETHOD(Cancel) ( VARIANT_BOOL *pfAbort ); STDMETHOD(CancelRestorePoint) (); STDMETHOD(CompareDate) (/*[in]*/ VARIANT varDate1, /*[in]*/ VARIANT varDate2,/*[out, retval]*/ INT *pnCmp); STDMETHOD(CreateRestorePoint) (/*[out,retval]*/ VARIANT_BOOL *pfSucceeded); STDMETHOD(DisableFIFO) (); STDMETHOD(EnableFIFO) (); STDMETHOD(FormatDate) (/*[in]*/ VARIANT varDate, /*[in]*/ VARIANT_BOOL fLongFmt, /*[out, retval]*/ BSTR *pbstrDate); STDMETHOD(FormatLowDiskMsg) (BSTR bstrFmt, BSTR *pbstrMsg); STDMETHOD(FormatTime) (/*[in]*/ VARIANT varTime, /*[out, retval]*/ BSTR *pbstrTime); STDMETHOD(GetLocaleDateFormat) (/*[in]*/ VARIANT varDate, BSTR bstrFormat, BSTR *pbstrDate ); STDMETHOD(GetYearMonthStr) (/*[in]*/ INT nYear, /*[in]*/ INT nMonth, /*[out, retval]*/ BSTR *pbstrDate); STDMETHOD(InitializeAll) (); STDMETHOD(Restore) ( OLE_HANDLE hwndProgress); STDMETHOD(SetFormSize) (/*[in]*/ INT nWidth, /*[in]*/ INT nHeight); STDMETHOD(ShowMessage) (BSTR bstrMsg); STDMETHOD(CanRunRestore) (/*[out,retval]*/ VARIANT_BOOL *pfSucceeded); STDMETHOD(DisplayOtherUsersWarning) (); STDMETHOD(DisplayMoveFileExWarning) (/*[out,retval]*/ VARIANT_BOOL *pfSucceeded); STDMETHOD(WasLastRestoreFromSafeMode) (/*[out,retval]*/ VARIANT_BOOL *pfSucceeded); };
//extern CComPtr<CRestoreShell> g_pRestoreShell;
//
// END OF NEW CODE
//
/////////////////////////////////////////////////////////////////////////////
#if OLD_CODE
enum { RESTORE_STATUS_NONE = 0, RESTORE_STATUS_STARTED, RESTORE_STATUS_INITIALIZING, RESTORE_STATUS_CREATING_MAP, RESTORE_STATUS_RESTORING, RESTORE_STATUS_FINISHED
};
/////////////////////////////////////////////////////////////////////////////
//
// CRestoreShell
//
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CRestoreShell : public CComObjectRootEx<CComSingleThreadModel>, public IDispatchImpl<IRestoreShell, &IID_IRestoreShell, &LIBID_RestoreUILib> public CComCoClass<CRestoreShell, &CLSID_RestoreShellExternal> { public: CRestoreShell();
DECLARE_NO_REGISTRY() DECLARE_NOT_AGGREGATABLE(CRestoreShell) DECLARE_CLASSFACTORY_SINGLETON(CRestoreShell)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CRestoreShell) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IRestoreShell) END_COM_MAP()
HRESULT FinalConstruct(); void FinalRelease();
//
// Attributes
//
protected: DATE m_dateToday; VARIANT m_varSelectedDate; VARIANT m_varCurrentDate; long m_lStartMode; //long m_lRestoreType; // 0 means EOD, 1 means Restore Point
DWORD m_dwSelectedPoint; DWORD m_dwRealPoint; BOOL m_fRestorePtSelected ; long m_lLastRestore; BOOL m_fIsUndo; BOOL m_fCanNavigatePage ; BOOL m_fWindowCreated ; CComBSTR m_bstrEndOfDay; CComBSTR m_bstrRestorePoint;
#ifndef TEST_UI_ONLY
CRestoreMapManager m_cMapMgr; #endif
int m_nRPI; RPI **m_aryRPI;
UINT64 m_ullSeqNum; LONG m_lCurrentBarSize; // to update progress bar
INT64 m_llDCurTempDiskUsage ; // Current size of files in DS-TEMP
INT64 m_llDMaxTempDiskUsage ; // Max size of DS-TEMP before starting restore
INT m_nRestoreStatus ; // Restore status
HANDLE m_RSThread ; // Thread to carry out restore
HWND m_hwndProgress; HWND m_hWndShell ; INT m_nMainOption ; // Option on main screen
UINT64 m_ullManualRP; CSRStr m_strManualRP;
//
// Operations
//
public:
BOOL Initialize(); void MonitorDataStoreProc(); DWORD RestoreThread(void); void SetProgressPos( long lPos ); BOOL SetStartMode( long lMode ); BOOL CreateRestoreSigFile(); BOOL DeleteRestoreSigFile(); void ShutdownWindow(); void UpdateRestorePoint(); INT CurrentRestoreStatus(void); BOOL CanNavigatePage(void); HWND GetWindowHandle( void ); void SetWindowHandle( HWND hWnd );
DWORD m_dwCurrentWidth ; DWORD m_dwCurrentHeight ;
//
// Operations -- internal methods
//
private: BOOL GetDSTempDiskUsage(INT64 *pllD_DiskUsage); BOOL LoadSettings(); void StoreSettings();
//
// IRestoreShell Restore Points Enumerator
//
public: STDMETHOD(Item)( long lIndex, IRestorePoint** ppRP ); STDMETHOD(get_Count)( long *plCount );
//
// IRestoreShell Methods
//
public: }; #endif //OLD_CODE
#endif //_RSTRSHL_H__INCLUDED_
|