123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- /*
- * ESEBCLI2.H
- *
- * Microsoft Exchange
- * Copyright (C) 1986-1996, Microsoft Corporation
- *
- * Contains declarations of additional definitions and interfaces
- * for the ESE Online Backup Client APIs.
- */
- #ifndef _ESEBCLI2_
- #define _ESEBCLI2_
- #include <stdio.h>
- #include <time.h>
- #include "esebkmsg.h" // included for the definition of errors
- // Common types
- typedef long ERR;
- typedef void *HCCX; // client context handle
- #ifdef MIDL_PASS
- #define RPC_STRING [unique, string] WCHAR *
- #define RPC_SIZE(X) [size_is(X)]
- #else // ! MIDL_PASS
- #include <objbase.h>
- #include <initguid.h>
- #include <mapiguid.h>
- typedef long HRESULT;
- #if !defined(_NATIVE_WCHAR_T_DEFINED)
- typedef unsigned short WCHAR;
- #else
- typedef wchar_t WCHAR;
- #endif
- #define RPC_STRING WCHAR *
- #define RPC_SIZE(X)
- #define IN
- #define OUT
- #endif // MIDL_PASS
- #define ESEBACK_API __stdcall
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef struct _ESE_ICON_DESCRIPTION
- {
- unsigned long ulSize;
- RPC_SIZE(ulSize) char * pvData;
- } ESE_ICON_DESCRIPTION;
- #define DATABASE_MOUNTED 0x00000010
- typedef struct _DATABASE_BACKUP_INFO
- {
- RPC_STRING wszDatabaseDisplayName;
- unsigned long cwDatabaseStreams;
- RPC_SIZE(cwDatabaseStreams) WCHAR * wszDatabaseStreams;
-
- GUID guidDatabase;
- unsigned long ulIconIndexDatabase;
- unsigned long fDatabaseFlags;
-
- } DATABASE_BACKUP_INFO;
-
- typedef struct _INSTANCE_BACKUP_INFO
- {
- __int64 hInstanceId;
- RPC_STRING wszInstanceName;
- unsigned long ulIconIndexInstance;
-
- unsigned long cDatabase;
- RPC_SIZE(cDatabase) DATABASE_BACKUP_INFO * rgDatabase;
-
- unsigned long cIconDescription;
- RPC_SIZE(cIconDescription) ESE_ICON_DESCRIPTION * rgIconDescription;
-
- } INSTANCE_BACKUP_INFO;
-
- //
- // Type of backup passed into HrESEBackupSetup()
- //
- #define BACKUP_TYPE_FULL 0x01
- #define BACKUP_TYPE_LOGS_ONLY 0x02
- #define BACKUP_TYPE_FULL_WITH_ALL_LOGS 0x03
- #define BACKUP_TYPE_SNAPSHOT 0x04
- typedef struct _ESE_REGISTERED_INFO
- {
- RPC_STRING wszDisplayName;
- RPC_STRING wszEndpointAnnotation;
- unsigned long fFlags;
- ESE_ICON_DESCRIPTION iconDescription;
- } ESE_REGISTERED_INFO;
- #define ESE_REGISTER_BACKUP 0x00000001
- #define ESE_REGISTER_ONLINE_RESTORE 0x00000002
- #define ESE_REGISTER_OFFLINE_RESTORE 0x00000004
- #define ESE_REGISTER_SNAPSHOT_BACKUP 0x00000010
- HRESULT ESEBACK_API HrESEBackupRestoreGetRegistered(
- IN WCHAR * wszServerName,
- IN WCHAR * wszDisplayName,
- IN unsigned long fFlags,
- OUT unsigned long * pcRegisteredInfo,
- OUT ESE_REGISTERED_INFO ** paRegisteredInfo
- );
-
- void ESEBACK_API ESEBackupRestoreFreeRegisteredInfo(
- IN unsigned long cRegisteredInfo,
- IN ESE_REGISTERED_INFO * aRegisteredInfo);
- HRESULT ESEBACK_API HrESEBackupPrepare(
- IN WCHAR * wszBackupServer,
- IN WCHAR * wszBackupAnnotation,
- OUT unsigned long * pcInstanceInfo,
- OUT INSTANCE_BACKUP_INFO ** paInstanceInfo,
- OUT HCCX * phccxBackupContext
- );
- HRESULT ESEBACK_API HrESEBackupSetup(
- IN HCCX hccxBackupContext,
- IN __int64 hInstanceId,
- IN unsigned long btBackupType
- );
- HRESULT ESEBACK_API HrESEBackupTruncateLogs(
- IN HCCX hccxBackupContext
- );
-
- HRESULT ESEBACK_API HrESEBackupGetDependencyInfo(
- IN HCCX hccxBackupContext,
- OUT WCHAR ** pwszInfo,
- OUT unsigned long * pcwInfo,
- OUT WCHAR ** pwszAnnotation
- );
-
- HRESULT ESEBACK_API HrESEBackupOpenFile (
- IN HCCX hccxBackupContext,
- IN WCHAR * wszFileName,
- IN unsigned long cbReadHintSize,
- IN unsigned long cSections,
- OUT void ** rghFile,
- OUT __int64 * rgliSectionSize
- );
- HRESULT ESEBACK_API HrESEBackupReadFile(
- IN HCCX hccxBackupContext,
- IN void * hFile,
- IN void * pvBuffer,
- IN unsigned long cbBuffer,
- OUT unsigned long * pcbRead
- );
- HRESULT ESEBACK_API HrESEBackupCloseFile(
- IN HCCX hccxBackupContext,
- IN void * hFile
- );
- HRESULT ESEBACK_API HrESEBackupGetLogAndPatchFiles(
- IN HCCX hccxBackupContext,
- IN WCHAR ** pwszFiles
- );
- HRESULT ESEBACK_API HrESEBackupGetTruncateLogFiles(
- IN HCCX hccxBackupContext,
- IN WCHAR ** pwszFiles
- );
- void ESEBACK_API ESEBackupFreeInstanceInfo(
- IN unsigned long cInstanceInfo,
- IN INSTANCE_BACKUP_INFO * aInstanceInfo
- );
- void ESEBACK_API ESEBackupFree(
- IN void * pvBuffer
- );
- #define ESE_BACKUP_INSTANCE_END_ERROR 0x00000000
- #define ESE_BACKUP_INSTANCE_END_SUCCESS 0x00000001
- HRESULT ESEBACK_API HrESEBackupInstanceEnd(
- IN HCCX hccxBackupContext,
- IN unsigned long fFlags
- );
- HRESULT ESEBACK_API HrESEBackupEnd(
- IN HCCX hccxBackupContext
- );
-
- // Restore client APIs
- typedef enum
- {
- recoverInvalid = 0,
- recoverNotStarted = 1,
- recoverStarted = 2,
- recoverEnded = 3,
- recoverStatusMax
- }
- RECOVER_STATUS;
- typedef struct _RESTORE_ENVIRONMENT
- {
- WCHAR * m_wszRestoreLogPath;
-
- WCHAR * m_wszSrcInstanceName;
- unsigned long m_cDatabases;
- WCHAR ** m_wszDatabaseDisplayName;
- GUID * m_rguidDatabase;
- WCHAR * m_wszRestoreInstanceSystemPath;
- WCHAR * m_wszRestoreInstanceLogPath;
- WCHAR * m_wszTargetInstanceName;
-
- WCHAR ** m_wszDatabaseStreamsS;
- WCHAR ** m_wszDatabaseStreamsD;
-
- unsigned long m_ulGenLow;
- unsigned long m_ulGenHigh;
- WCHAR * m_wszLogBaseName;
- time_t m_timeLastRestore;
- RECOVER_STATUS m_statusLastRecover;
- HRESULT m_hrLastRecover;
- time_t m_timeLastRecover;
- WCHAR * m_wszAnnotation;
-
- } RESTORE_ENVIRONMENT;
- HRESULT ESEBACK_API HrESERestoreLoadEnvironment(
- IN WCHAR * wszServerName,
- IN WCHAR * wszRestoreLogPath,
- OUT RESTORE_ENVIRONMENT ** ppRestoreEnvironment);
- void ESEBACK_API ESERestoreFreeEnvironment(
- IN RESTORE_ENVIRONMENT * pRestoreEnvironment);
-
- HRESULT ESEBACK_API HrESERestoreOpen(
- IN WCHAR * wszServerName,
- IN WCHAR * wszServiceAnnotation,
- IN WCHAR * wszSrcInstanceName,
- IN WCHAR * wszRestoreLogPath,
- OUT HCCX * phccxRestoreContext);
- HRESULT ESEBACK_API HrESERestoreReopen(
- IN WCHAR * wszServerName,
- IN WCHAR * wszServiceAnnotation,
- IN WCHAR * wszRestoreLogPath,
- OUT HCCX * phccxRestoreContext);
-
- void ESEBACK_API ESERestoreFree( IN void *pvBuffer );
- #define RESTORE_CLOSE_ABORT 0x1
- #define RESTORE_CLOSE_NORMAL 0x0
- HRESULT ESEBACK_API HrESERestoreClose(
- IN HCCX hccxRestoreContext,
- IN unsigned long fRestoreAbort);
- HRESULT ESEBACK_API HrESERestoreAddDatabase(
- IN HCCX hccxRestoreContext,
- IN WCHAR * wszDatabaseDisplayName,
- IN GUID guidDatabase,
- IN WCHAR * wszDatabaseStreamsS,
- OUT WCHAR ** pwszDatabaseStreamsD);
- HRESULT ESEBACK_API HrESERestoreGetEnvironment(
- IN HCCX hccxRestoreContext,
- OUT RESTORE_ENVIRONMENT ** ppRestoreEnvironment);
- HRESULT ESEBACK_API HrESERestoreSaveEnvironment(
- IN HCCX hccxRestoreContext);
- #define ESE_RESTORE_COMPLETE_ATTACH_DBS 0x00000001
- #define ESE_RESTORE_COMPLETE_START_SERVICE ESE_RESTORE_COMPLETE_ATTACH_DBS
- #define ESE_RESTORE_COMPLETE_NOWAIT 0x00010000
- #define ESE_RESTORE_KEEP_LOG_FILES 0x00020000
- HRESULT ESEBACK_API HrESERestoreComplete(
- IN HCCX hccxRestoreContext,
- IN WCHAR * wszRestoreInstanceSystemPath,
- IN WCHAR * wszRestoreInstanceLogPath,
- IN WCHAR * wszTargetInstanceName,
- IN unsigned long fFlags);
- HRESULT ESEBACK_API HrESERestoreAddDatabaseNS(
- IN HCCX hccxRestoreContext,
- IN WCHAR * wszDatabaseDisplayName,
- IN GUID guidDatabase,
- IN WCHAR * wszDatabaseStreamsS,
- IN WCHAR * wszDatabaseStreamsD);
-
- HRESULT ESEBACK_API HrESERestoreOpenFile (
- IN HCCX hccxRestoreContext,
- IN WCHAR * wszFileName,
- IN unsigned long cSections,
- OUT void ** rghFile
- );
- HRESULT ESEBACK_API HrESERestoreWriteFile(
- IN HCCX hccxRestoreContext,
- IN void * hFile,
- IN void * pvBuffer,
- IN unsigned long cbBuffer
- );
- HRESULT ESEBACK_API HrESERestoreCloseFile(
- IN HCCX hccxRestoreContext,
- IN void * hFile
- );
- /* function used to find the computers to be queried for backup/restore */
- /* MAD like behaviour */
- #define BACKUP_NODE_TYPE_MACHINE 0x00000001
- #define BACKUP_NODE_TYPE_ANNOTATION 0x00000010
- #define BACKUP_NODE_TYPE_DISPLAY 0x00000100
- typedef struct _BACKUP_NODE_TREE
- {
- RPC_STRING wszName;
- unsigned long fFlags;
- ESE_ICON_DESCRIPTION iconDescription;
-
- struct _BACKUP_NODE_TREE * pNextNode;
- struct _BACKUP_NODE_TREE * pChildNode;
- } BACKUP_NODE_TREE, * PBACKUP_NODE_TREE;
- HRESULT ESEBACK_API HrESEBackupRestoreGetNodes(
- IN WCHAR * wszComputerName,
- OUT PBACKUP_NODE_TREE * ppBackupNodeTree);
- void ESEBACK_API ESEBackupRestoreFreeNodes(
- IN PBACKUP_NODE_TREE pBackupNodeTree);
- // Specific errors that can be returned by callback functions
- // Database to be restored is in use
- #define hrFromCB_DatabaseInUse hrCBDatabaseInUse
- // Database not found
- #define hrFromCB_DatabaseNotFound hrCBDatabaseNotFound
- // Display name for the database not found
- #define hrFromCB_DatabaseDisplayNameNotFound hrCBDatabaseDisplayNameNotFound
- // Requested path for restore log files not provided
- #define hrFromCB_RestorePathNotProvided hrCBRestorePathNotProvided
- // Instance to backup not found
- #define hrFromCB_InstanceNotFound hrCBInstanceNotFound
- // Database can not be overwritten by a restore
- #define hrFromCB_DatabaseCantBeOverwritten hrCBDatabaseCantBeOverwritten
- // snapshot API
- HRESULT ESEBACK_API HrESESnapshotStart(
- IN HCCX hccxBackupContext,
- IN WCHAR * wszDatabases,
- IN unsigned long fFlags );
-
- HRESULT ESEBACK_API HrESESnapshotStop( IN HCCX hccxBackupContext,
- IN unsigned long fFlags );
- #ifdef __cplusplus
- }
- #endif
- #endif // _EDBBCLI2_
|