/****************************************************************************** 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, public IDispatchImpl { 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 CRPIObj; ///////////////////////////////////////////////////////////////////////////// // // CRenamedFolders // ///////////////////////////////////////////////////////////////////////////// class ATL_NO_VTABLE CRenamedFolders : public CComObjectRootEx, public IDispatchImpl { 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 CRFObj; ///////////////////////////////////////////////////////////////////////////// // // CRestoreShell // ///////////////////////////////////////////////////////////////////////////// class ATL_NO_VTABLE CRestoreShell : public CComObjectRootEx, public IDispatchImpl, public CComCoClass { 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 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, public IDispatchImpl public CComCoClass { 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_