Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

417 lines
7.4 KiB

/*
* 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
#if !defined(_NATIVE_WCHAR_T_DEFINED)
typedef unsigned short WCHAR;
#else
typedef wchar_t WCHAR;
#endif
#endif
#define EDBBACK_MDB_SERVER "Exchange MDB Database"
#define EDBBACK_DS_SERVER "Exchange DS Database"
#define EDBBACK_API __stdcall
//
// Useful types.
//
// UNDONE: HRESULT should be DWORD (unsigned)
//typedef DWORD HRESULT;
#ifndef MIDL_PASS
typedef LONG HRESULT;
#endif
typedef LONG ERR;
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 <edbmsg.h>
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
ERR
EDBBACK_API
HrBackupPrepareA(
IN char * szBackupServer,
IN char * szBackupAnnotation,
IN unsigned long grbit,
IN unsigned long btBackupType,
OUT HBC *hbcBackupContext
);
ERR
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
ERR
EDBBACK_API
HrBackupGetDatabaseNamesA(
IN HBC pvBackupContext,
OUT LPSTR *ppszAttachmentInformation,
OUT LPDWORD pcbSize
);
ERR
EDBBACK_API
HrBackupGetDatabaseNamesW(
IN HBC pvBackupContext,
OUT LPWSTR *ppszAttachmentInformation,
OUT LPDWORD pcbSize
);
#ifdef UNICODE
#define HrBackupGetDatabaseNames HrBackupGetDatabaseNamesW
#else
#define HrBackupGetDatabaseNames HrBackupGetDatabaseNamesA
#endif
ERR
EDBBACK_API
HrBackupOpenFileW(
IN HBC pvBackupContext,
IN WCHAR * wszAttachmentName,
IN DWORD cbReadHintSize,
OUT LARGE_INTEGER *pliFileSize
);
ERR
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
ERR
EDBBACK_API
HrBackupRead(
IN HBC pvBackupContext,
IN PVOID pvBuffer,
IN DWORD cbBuffer,
OUT PDWORD pcbRead
);
ERR
EDBBACK_API
HrBackupClose(
IN HBC pvBackupContext
);
ERR
EDBBACK_API
HrBackupGetBackupLogsA(
IN HBC pvBackupContext,
IN LPSTR *szBackupLogFile,
IN PDWORD pcbSize
);
ERR
EDBBACK_API
HrBackupGetBackupLogsW(
IN HBC pvBackupContext,
IN LPWSTR *szBackupLogFile,
IN PDWORD pcbSize
);
#ifdef UNICODE
#define HrBackupGetBackupLogs HrBackupGetBackupLogsW
#else
#define HrBackupGetBackupLogs HrBackupGetBackupLogsA
#endif
ERR
EDBBACK_API
HrBackupTruncateLogs(
IN HBC pvBackupContext
);
ERR
EDBBACK_API
HrBackupEnd(
IN HBC pvBackupContext
);
VOID
EDBBACK_API
BackupFree(
IN PVOID pvBuffer
);
ERR
EDBBACK_API
HrRestoreGetDatabaseLocationsA(
IN HBC hbcBackupContext,
OUT LPSTR *ppszDatabaseLocationList,
OUT LPDWORD pcbSize
);
ERR
EDBBACK_API
HrRestoreGetDatabaseLocationsW(
IN HBC pvBackupContext,
OUT LPWSTR *ppszDatabaseLocationList,
OUT LPDWORD pcbSize
);
#ifdef UNICODE
#define HrRestoreGetDatabaseLocations HrRestoreGetDatabaseLocationsW
#else
#define HrRestoreGetDatabaseLocations HrRestoreGetDatabaseLocationsA
#endif
ERR
EDBBACK_API
HrRestorePrepareA(
char * szServerName,
char * szServiceAnnotation,
HBC *phbcBackupContext
);
ERR
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.
//
ERR
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
);
ERR
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.
//
ERR
EDBBACK_API
HrRestoreRegisterComplete(
HBC hbcRestoreContext,
ERR hrRestoreState
);
ERR
EDBBACK_API
HrRestoreEnd(
HBC hbcRestoreContext
);
ERR
EDBBACK_API
HrSetCurrentBackupLogW(
WCHAR *wszServerName,
WCHAR * wszBackupAnnotation,
DWORD dwCurrentLog
);
ERR
EDBBACK_API
HrSetCurrentBackupLogA(
CHAR * szServerName,
CHAR * szBackupAnnotation,
DWORD dwCurrentLog
);
#ifdef UNICODE
#define HrSetCurrentBackupLog HrSetCurrentBackupLogW
#else
#define HrSetCurrentBackupLog HrSetCurrentBackupLogA
#endif
#ifdef __cplusplus
}
#endif
#endif // _EDBBCLI_