/* * EDBBCLI.H * * Microsoft Exchange Information Store * Copyright (C) 1986-1996, Microsoft Corporation * * Contains declarations of additional definitions and interfaces * for the Exchange Online Backup Client APIs. */ #ifndef _EDBBCLI_ #define _EDBBCLI_ #ifdef __cplusplus extern "C" { #endif #ifdef MIDL_PASS #define RPC_STRING [string] #else #define RPC_STRING typedef unsigned short WCHAR; #endif #define EDBBACK_MDB_SERVER "Exchange MDB Database" #define EDBBACK_DS_SERVER "Exchange DS Database" #ifndef EDBBACK_BUILD #define EDBBACK_API __declspec(dllimport) _stdcall #else #define EDBBACK_API #endif typedef DWORD ERR; typedef LONG HRESULT; typedef LONG C; typedef TCHAR BFT; // // Type of backup passed into HrBackupPrepare() // #define BACKUP_TYPE_FULL 0x01 #define BACKUP_TYPE_LOGS_ONLY 0x02 // // Set the current log number to this value to disable incremental or // differential backup. // #define BACKUP_DISABLE_INCREMENTAL 0xffffffff // // Backup/Restore file types // // // Please note that these file types are binary values, even though they are text (or wchar) typed. // // The code in the backup API's rely on the fact that values 0-256 in 8 bit ascii map to the values 0-256 in unicode. // // // If the BFT_DIRECTORY bit is set on the backup file type, it indicates that the path specified is a directory, // otherwise it is a file name. // #define BFT_DIRECTORY 0x80 // // If the BFT_DATABASE bit is set on the backup file type, it indicates that the file goes into the database directory. // #define BFT_DATABASE_DIRECTORY 0x40 // // If the BFT_LOG bit is set on the backup file type, it indicates that the file goes into the log directory. // #define BFT_LOG_DIRECTORY 0x20 // // Database logs. // #define BFT_LOG (BFT)(TEXT('\x01') | BFT_LOG_DIRECTORY) #define BFT_LOG_DIR (BFT)(TEXT('\x02') | BFT_DIRECTORY) // // Checkpoint file. // #define BFT_CHECKPOINT_DIR (BFT)(TEXT('\x03') | BFT_DIRECTORY) // // Database types. // #define BFT_MDB_PRIVATE_DATABASE (BFT)(TEXT('\x05') | BFT_DATABASE_DIRECTORY) #define BFT_MDB_PUBLIC_DATABASE (BFT)(TEXT('\x06') | BFT_DATABASE_DIRECTORY) #define BFT_DSA_DATABASE (BFT)(TEXT('\x07') | BFT_DATABASE_DIRECTORY) // // JET patch files // // // #define BFT_PATCH_FILE (BFT)(TEXT('\x08') | BFT_LOG_DIRECTORY) // // Catch all for unknown file types. // #define BFT_UNKNOWN (BFT)(TEXT('\x0f')) #include typedef void *HBC; typedef struct tagEDB_RSTMAPA { RPC_STRING char *szDatabaseName; RPC_STRING char *szNewDatabaseName; } EDB_RSTMAPA, *PEDB_RSTMAPA; /* restore map */ // required for Exchange unicode support. // UNDONE: NYI #define UNICODE_RSTMAP typedef struct tagEDB_RSTMAPW { RPC_STRING WCHAR *wszDatabaseName; RPC_STRING WCHAR *wszNewDatabaseName; } EDB_RSTMAPW, *PEDB_RSTMAPW; #ifdef UNICODE #define EDB_RSTMAP EDB_RSTMAPW #define PEDB_RSTMAP PEDB_RSTMAPW #else #define EDB_RSTMAP EDB_RSTMAPA #define PEDB_RSTMAP PEDB_RSTMAPA #endif HRESULT EDBBACK_API HrBackupPrepareA( IN char * szBackupServer, IN char * szBackupAnnotation, IN unsigned long grbit, IN unsigned long btBackupType, OUT HBC *hbcBackupContext ); HRESULT EDBBACK_API HrBackupPrepareW( IN WCHAR * wszBackupServer, IN WCHAR * wszBackupAnnotation, IN unsigned long grbit, IN unsigned long btBackupType, OUT HBC *hbcBackupContext ); #ifdef UNICODE #define HrBackupPrepare HrBackupPrepareW #else #define HrBackupPrepare HrBackupPrepareA #endif HRESULT EDBBACK_API HrBackupGetDatabaseNamesA( IN HBC pvBackupContext, OUT LPSTR *ppszAttachmentInformation, OUT LPDWORD pcbSize ); HRESULT EDBBACK_API HrBackupGetDatabaseNamesW( IN HBC pvBackupContext, OUT LPWSTR *ppszAttachmentInformation, OUT LPDWORD pcbSize ); #ifdef UNICODE #define HrBackupGetDatabaseNames HrBackupGetDatabaseNamesW #else #define HrBackupGetDatabaseNames HrBackupGetDatabaseNamesA #endif HRESULT EDBBACK_API HrBackupOpenFileW( IN HBC pvBackupContext, IN WCHAR * wszAttachmentName, IN DWORD cbReadHintSize, OUT LARGE_INTEGER *pliFileSize ); HRESULT EDBBACK_API HrBackupOpenFileA( IN HBC pvBackupContext, IN char * szAttachmentName, IN DWORD cbReadHintSize, OUT LARGE_INTEGER *pliFileSize ); #ifdef UNICODE #define HrBackupOpenFile HrBackupOpenFileW #else #define HrBackupOpenFile HrBackupOpenFileA #endif HRESULT EDBBACK_API HrBackupRead( IN HBC pvBackupContext, IN PVOID pvBuffer, IN DWORD cbBuffer, OUT PDWORD pcbRead ); HRESULT EDBBACK_API HrBackupClose( IN HBC pvBackupContext ); HRESULT EDBBACK_API HrBackupGetBackupLogsA( IN HBC pvBackupContext, IN LPSTR *szBackupLogFile, IN PDWORD pcbSize ); HRESULT EDBBACK_API HrBackupGetBackupLogsW( IN HBC pvBackupContext, IN LPWSTR *szBackupLogFile, IN PDWORD pcbSize ); #ifdef UNICODE #define HrBackupGetBackupLogs HrBackupGetBackupLogsW #else #define HrBackupGetBackupLogs HrBackupGetBackupLogsA #endif HRESULT EDBBACK_API HrBackupTruncateLogs( IN HBC pvBackupContext ); HRESULT EDBBACK_API HrBackupEnd( IN HBC pvBackupContext ); VOID EDBBACK_API BackupFree( IN PVOID pvBuffer ); HRESULT EDBBACK_API HrRestoreGetDatabaseLocationsA( IN HBC hbcBackupContext, OUT LPSTR *ppszDatabaseLocationList, OUT LPDWORD pcbSize ); HRESULT EDBBACK_API HrRestoreGetDatabaseLocationsW( IN HBC pvBackupContext, OUT LPWSTR *ppszDatabaseLocationList, OUT LPDWORD pcbSize ); #ifdef UNICODE #define HrRestoreGetDatabaseLocations HrRestoreGetDatabaseLocationsW #else #define HrRestoreGetDatabaseLocations HrRestoreGetDatabaseLocationsA #endif HRESULT EDBBACK_API HrRestorePrepareA( char * szServerName, char * szServiceAnnotation, HBC *phbcBackupContext ); HRESULT EDBBACK_API HrRestorePrepareW( WCHAR * szServerName, WCHAR * szServiceAnnotation, HBC *phbcBackupContext ); #ifdef UNICODE #define HrRestorePrepare HrRestorePrepareW #else #define HrRestorePrepare HrRestorePrepareA #endif // // HrRestoreRegister will register a restore // operation. It will interlock all subsequent // restore operations, and will prevent the restore target // from starting until the call to HrRestoreRegisterComplete. // HRESULT EDBBACK_API HrRestoreRegisterA( IN HBC hbcRestoreContext, IN char * szCheckpointFilePath, IN char * szLogPath, IN EDB_RSTMAPA rgrstmap[], IN C crstmap, IN char * szBackupLogPath, IN ULONG genLow, IN ULONG genHigh ); HRESULT EDBBACK_API HrRestoreRegisterW( IN HBC hbcRestoreContext, IN WCHAR * wszCheckpointFilePath, IN WCHAR * wszLogPath, IN EDB_RSTMAPW rgrstmap[], IN C crstmap, IN WCHAR * wszBackupLogPath, IN ULONG genLow, IN ULONG genHigh ); #ifdef UNICODE #define HrRestoreRegister HrRestoreRegisterW #else #define HrRestoreRegister HrRestoreRegisterA #endif // // HrRestoreRegisterComplete will complete a restore // operation. It will allow further subsequent // restore operations, and will allow the restore target // to start if hrRestoreState is success. // // If hrRestoreState is NOT hrNone, this will // prevent the restore target from restarting. // HRESULT EDBBACK_API HrRestoreRegisterComplete( HBC hbcRestoreContext, HRESULT hrRestoreState ); HRESULT EDBBACK_API HrRestoreEnd( HBC hbcRestoreContext ); HRESULT EDBBACK_API HrSetCurrentBackupLogW( WCHAR *wszServerName, WCHAR * wszBackupAnnotation, DWORD dwCurrentLog ); HRESULT EDBBACK_API HrSetCurrentBackupLogA( CHAR * szServerName, CHAR * szBackupAnnotation, DWORD dwCurrentLog ); #ifdef UNICODE #define HrSetCurrentBackupLog HrSetCurrentBackupLogW #else #define HrSetCurrentBackupLog HrSetCurrentBackupLogA #endif #ifdef __cplusplus } #endif #endif // _EDBBCLI_