windows-nt/Source/XPSP1/NT/public/sdk/inc/srrestoreptapi.h
2020-09-26 16:20:57 +08:00

154 lines
4.4 KiB
C

/******************************************************************************
Copyright (c) 2000 Microsoft Corporation
Module Name:
SRRestorePtAPI.h
Abstract:
This file contains the declarations for the SRRESTOREPT_API
******************************************************************************/
#if !defined( _SRRESTOREPTAPI_H )
#define _SRRESTOREPTAPI_H
//
// Type of Event
//
#define MIN_EVENT 100
#define BEGIN_SYSTEM_CHANGE 100
#define END_SYSTEM_CHANGE 101
#define BEGIN_NESTED_SYSTEM_CHANGE 102 // for Whistler only - use this to prevent nested restore pts
#define END_NESTED_SYSTEM_CHANGE 103 // for Whistler only - use this to prevent nested restore pts
#define MAX_EVENT 103
//
// Type of Restore Points
//
#define MIN_RPT 0
#define APPLICATION_INSTALL 0
#define APPLICATION_UNINSTALL 1
#define DESKTOP_SETTING 2 /* Not implemented */
#define ACCESSIBILITY_SETTING 3 /* Not implemented */
#define OE_SETTING 4 /* Not implemented */
#define APPLICATION_RUN 5 /* Not implemented */
#define RESTORE 6
#define CHECKPOINT 7
#define WINDOWS_SHUTDOWN 8 /* Not implemented */
#define WINDOWS_BOOT 9 /* Not implemented */
#define DEVICE_DRIVER_INSTALL 10
#define FIRSTRUN 11
#define MODIFY_SETTINGS 12
#define CANCELLED_OPERATION 13 /* Only valid for END_SYSTEM_CHANGE */
#define BACKUP_RECOVERY 14
#define MAX_RPT 14
#define MAX_DESC 64
#define MAX_DESC_W 256 // longer for Whistler
//
// for Millennium compatibility
//
#pragma pack(push, srrestoreptapi_include)
#pragma pack(1)
//
// Restore point information
//
typedef struct _RESTOREPTINFOA {
DWORD dwEventType; // Type of Event - Begin or End
DWORD dwRestorePtType; // Type of Restore Point - App install/uninstall
INT64 llSequenceNumber; // Sequence Number - 0 for begin
CHAR szDescription[MAX_DESC]; // Description - Name of Application / Operation
} RESTOREPOINTINFOA, *PRESTOREPOINTINFOA;
typedef struct _RESTOREPTINFOW {
DWORD dwEventType;
DWORD dwRestorePtType;
INT64 llSequenceNumber;
WCHAR szDescription[MAX_DESC_W];
} RESTOREPOINTINFOW, *PRESTOREPOINTINFOW;
//
// Status returned by System Restore
//
typedef struct _SMGRSTATUS {
DWORD nStatus; // Status returned by State Manager Process
INT64 llSequenceNumber; // Sequence Number for the restore point
} STATEMGRSTATUS, *PSTATEMGRSTATUS;
#pragma pack(pop, srrestoreptapi_include)
#ifdef __cplusplus
extern "C" {
#endif
//
// RPC call to set a restore point
//
// Return value TRUE if the call was a success
// FALSE if the call failed
//
// If pSmgrStatus nStatus field is set as follows
//
// ERROR_SUCCESS If the call succeeded (return value will be TRUE)
//
// ERROR_TIMEOUT If the call timed out due to a wait on a mutex for
// for setting restore points.
//
// ERROR_INVALID_DATA If the cancel restore point is called with an invalid
// sequence number
//
// ERROR_INTERNAL_ERROR If there are internal failures.
//
// ERROR_BAD_ENVIRONMENT If the API is called in SafeMode
//
// ERROR_SERVICE_DISABLED If SystemRestore is Disabled.
//
// ERROR_DISK_FULL If System Restore is frozen (Windows Whistler only)
//
// ERROR_ALREADY_EXISTS If this is a nested restore point
BOOL __stdcall
SRSetRestorePointA(
PRESTOREPOINTINFOA pRestorePtSpec, // [in] Restore Point specification
PSTATEMGRSTATUS pSMgrStatus // [out] Status returned
);
BOOL __stdcall
SRSetRestorePointW(
PRESTOREPOINTINFOW pRestorePtSpec,
PSTATEMGRSTATUS pSMgrStatus
);
DWORD __stdcall
SRRemoveRestorePoint(DWORD dwRPNum);
#ifdef __cplusplus
}
#endif
#ifdef UNICODE
#define RESTOREPOINTINFO RESTOREPOINTINFOW
#define PRESTOREPOINTINFO PRESTOREPOINTINFOW
#define SRSetRestorePoint SRSetRestorePointW
#else
#define RESTOREPOINTINFO RESTOREPOINTINFOA
#define PRESTOREPOINTINFO PRESTOREPOINTINFOA
#define SRSetRestorePoint SRSetRestorePointA
#endif
#endif // !defined( _RESTOREPTAPI_H )