windows-nt/Source/XPSP1/NT/admin/pchealth/sr/inc/srshell.h

157 lines
5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/******************************************************************************
Copyright (c) 1999-2000 Microsoft Corporation
Module Name:
SRShell.h
Abstract:
This file defines external constants and structures for SR UI and any
related components.
Revision History:
Seong Kook Khang (SKKhang) 01/30/2000
created
Seong Kook Khang (SKKhang) 06/22/2000
Expanded for Whistler
******************************************************************************/
#ifndef _SRSHELL_H__INCLUDED_
#define _SRSHELL_H__INCLUDED_
/////////////////////////////////////////////////////////////////////////////
//
// Constants / Structures
//
/////////////////////////////////////////////////////////////////////////////
// Restore Drive Info Flags
#define RDIF_SYSTEM 0x00000001 // drive contains system
#define RDIF_FROZEN 0x00000002 // drive is frozen
#define RDIF_EXCLUDED 0x00000004 // drive is excluded
#define RDIF_OFFLINE 0x00000008 // drive is not connected
/////////////////////////////////////////////////////////////////////////////
//
// SR Restore Log
//
/////////////////////////////////////////////////////////////////////////////
#define RSTRLOG_SIGNATURE1 0x72747372 // "rstr"
#define RSTRLOG_SIGNATURE2 0x1A676F6C // "log" + EOF
#define RSTRLOG_VER_MAJOR 3
#define RSTRLOG_VER_MINOR 0
#define RSTRLOG_VERSION MAKELONG(RSTRLOG_VER_MINOR, RSTRLOG_VER_MAJOR)
// File headers of rstrlog.dat file.
//
struct SRstrLogHdrBase
{
DWORD dwSig1; // Signature (part 1/2)
DWORD dwSig2; // Signature (part 2/2)
DWORD dwVer; // Version
};
#define RLHF_SILENT 0x00000001
#define RLHF_UNDO 0x00000002
struct SRstrLogHdrV3
{
DWORD dwFlags; // Flags
DWORD dwRPNum; // Chosen Restore Point ID
DWORD dwRPNew; // Restore Point ID of the new "Restore" RP
DWORD dwDrives; // Number of Drives
};
// Information about each drives follows SRstrLogHdrRPInfo:
// 1. DWORD flags
// 2. Dynamic sized string of drive letter or mount point.
// 3. Dynamic sized string of unique volume name (GUID).
struct SRstrLogHdrV3Ex
{
DWORD dwRPNew; // Restore Point ID of the new "Restore" RP
DWORD dwCount; // Number of supposed-to-be entries
// used to validate if every entry is in the log file.
};
// Constants to indicate result of Restore for each restore entries.
//
enum // Result Code for Log Entries
{
RSTRRES_UNKNOWN = 0,
RSTRRES_FAIL, // 1 - Failure. (THE ONLY CONDITION TO ABORT RESTORE!)
RSTRRES_OK, // 2 - Succeeded.
//RSTRRES_WININIT, // 3 - Locked target, sent to wininit.ini.
RSTRRES_LOCKED, // 3 - Locked target, use MoveFileEx.
RSTRRES_DISKRO, // 4 - Target disk is read-only.
RSTRRES_EXISTS, // 5 - Removed existing ghost file.
RSTRRES_IGNORE, // 6 - Ignored special files, e.g. wininit.ini.
RSTRRES_NOTFOUND, // 7 - Target file/dir not exists, ignored.
RSTRRES_COLLISION, // 8 - Folder name conflict, existing dir was renamed.
RSTRRES_OPTIMIZED, // 9 - Entry has been optimized, without any temp file.
RSTRRES_LOCKED_ALT, // 10 - Locked target, but could be renamed. Use MoveFileEx to delete renamed file.
RSTRRES_SENTINEL
};
#define RSTRLOGID_COLLISION 0xFFFFFFFF
#define RSTRLOGID_ENDOFMAP 0xFFFFFFFE
#define RSTRLOGID_STARTUNDO 0xFFFFFFFD
#define RSTRLOGID_ENDOFUNDO 0xFFFFFFFC
#define RSTRLOGID_SNAPSHOTFAIL 0xFFFFFFFB
// Structure for restore entries stored in rstrlog.dat file.
//
// This structure will be followed by three entries of DWORD-aligned
// strings: (1) source path (2) destination path (3) alternative path
//
struct SRstrEntryHdr
{
DWORD dwID; // Entry ID (zero-based). 0xFFFFFFFF means a collision entry.
DWORD dwOpr; // Operation type
INT64 llSeq; // Sequence Number
//DWORD dwFlags; // Flags
DWORD dwRes; // Result code
DWORD dwErr; // WIN32 error code
};
/////////////////////////////////////////////////////////////////////////////
//
// SRRSTR.DLL (rstrcore)
//
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// IRestoreContext
struct IRestoreContext
{
virtual BOOL IsAnyDriveOfflineOrDisabled( LPWSTR szOffline ) = 0;
virtual void SetSilent() = 0;
virtual BOOL Release() = 0;
virtual void SetUndo() = 0;
};
/////////////////////////////////////////////////////////////////////////////
// External APIs
extern "C"
{
BOOL APIENTRY IsSRFrozen();
BOOL APIENTRY CheckPrivilegesForRestore();
BOOL APIENTRY InvokeDiskCleanup( LPCWSTR cszDrive );
BOOL APIENTRY PrepareRestore( int nRP, IRestoreContext **ppCtx );
BOOL APIENTRY InitiateRestore( IRestoreContext *pCtx, DWORD *pdwNewRP );
BOOL APIENTRY ResumeRestore();
typedef BOOL (APIENTRY * PREPFUNC) ( int nRP, IRestoreContext **ppCtx );
typedef BOOL (APIENTRY * INITFUNC) ( IRestoreContext *pCtx, DWORD *pdwNewRP );
}
#endif //_SRSHELL_H__INCLUDED_