|
|
/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
ftasr.cpp
Abstract:
Declaration of class CFtasrDlg
This class provides a GUI interface for the FTASR process. It also implements the 3 main FTASR operations: "register" - register FTASR as a BackupRestore command "backup" - save the current FT hierarchy state in dr_state.sif file "restore" - restore the FT hierarchy as it is in dr_state.sif file
Author:
Cristian Teodorescu 3-March-1999
Notes:
Revision History:
--*/
#if !defined(AFX_FTASRDLG_H__A507D049_3854_11D2_87D7_006008A71E8F__INCLUDED_)
#define AFX_FTASRDLG_H__A507D049_3854_11D2_87D7_006008A71E8F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <ftapi.h>
#include <winioctl.h>
#define DISPLAY_HELP 0
#define BACKUP_STATE 1
#define RESTORE_STATE 2
#define REGISTER_STATE 3
#define MAX_STACK_DEPTH 100
/////////////////////////////////////////////////////////////////////////////
// CFtasrDlg dialog
class CFtasrDlg : public CDialog {
enum { WM_WORKER_THREAD_DONE = WM_USER + 1, WM_UPDATE_STATUS_TEXT, } ;
// Construction
public: CFtasrDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CFtasrDlg)
enum { IDD = IDD_FTASR_DIALOG }; CProgressCtrl m_Progress; //}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFtasrDlg)
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected: // Generated message map functions
//{{AFX_MSG(CFtasrDlg)
virtual BOOL OnInitDialog(); //}}AFX_MSG
static long DoWork(CFtasrDlg *_this) ; UINT ParseCommandLine();
// Main operations
long DoBackup(); long DoRestore() ; long DoRegister(); // Methods used in the Backup process:
long AddToCommands( IN FILE* Output ); long PrintOutVolumeNames( IN FILE* Output, IN FT_LOGICAL_DISK_ID RootLogicalDiskId );
long PrintOutDiskInfo( IN FILE* Output, IN FT_LOGICAL_DISK_ID LogicalDiskId );
#ifdef CHECK_UNSUPPORTED_CONFIG
// Methods used to check for FT configurations not supported by FTASR
long CheckForUnsupportedConfig( IN DWORD NumDisks, IN PFT_LOGICAL_DISK_ID DiskId );
long IsSystemOrBootVolume( IN FT_LOGICAL_DISK_ID DiskId, OUT PBOOL IsSystem, OUT PBOOL IsBoot );
long GetDiskGeometry( ULONG DiskNumber, PDISK_GEOMETRY Geometry );
#endif // #ifdef CHECK_UNSUPPORTED_CONFIG
// Methods used in the Restore process:
long Restore( IN FILE* Input );
VOID LinkVolumeNamesToLogicalDisk( IN PWCHAR* VolumeNames, IN DWORD NumNames, IN FT_LOGICAL_DISK_ID LogicalDiskId );
FT_LOGICAL_DISK_ID BuildFtDisk( IN FILE* Input, IN OUT PFT_LOGICAL_DISK_ID ExpectedPath, IN WORD ExpectedPathSize, IN BOOL AllowBreak, OUT PBOOL Existing, /* OPTIONAL */ OUT PBOOL Overwriteable /* OPTIONAL */ );
FT_LOGICAL_DISK_ID CreateFtPartition( IN ULONG Signature, IN LONGLONG Offset, IN LONGLONG Length, OUT PBOOL Overwriteable );
BOOL QueryPartitionInformation( IN HANDLE Handle, OUT PDWORD Signature, OUT PLONGLONG Offset, OUT PLONGLONG Length ); BOOL GetPathFromLogicalDiskToRoot( IN FT_LOGICAL_DISK_ID LogicalDiskId, OUT PFT_LOGICAL_DISK_ID Path, OUT PWORD PathSize );
BOOL GetParentLogicalDiskInVolume( IN FT_LOGICAL_DISK_ID VolumeId, IN FT_LOGICAL_DISK_ID LogicalDiskId, OUT PFT_LOGICAL_DISK_ID ParentId );
BOOL FtGetParentLogicalDisk( IN FT_LOGICAL_DISK_ID LogicalDiskId, OUT PFT_LOGICAL_DISK_ID ParentId );
// Display error messages
void DisplayError (const CString& ErrorMsg); void DisplaySystemError (DWORD ErrorCode); void DisplayResourceError (DWORD ErrorId); void DisplayResourceSystemError (DWORD ErrorId, DWORD ErrorCode); void DisplayResourceResourceError (DWORD ErrorId1, DWORD ErrorId2);
protected: HICON m_hIcon;
HANDLE m_Thread ; DWORD m_EndStatusCode; CString m_StatusText;
DECLARE_MESSAGE_MAP()
// manually added message-handler
afx_msg LRESULT OnWorkerThreadDone( WPARAM wparam, LPARAM lparam ) ; afx_msg LRESULT OnUpdateStatusText( WPARAM wparam, LPARAM lparam ) ; };
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_FTASRDLG_H__A507D049_3854_11D2_87D7_006008A71E8F__INCLUDED_)
|