esebcli2.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:10k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*
  2.  * ESEBCLI2.H
  3.  *
  4.  * Microsoft Exchange
  5.  * Copyright (C) 1986-1996, Microsoft Corporation
  6.  *
  7.  * Contains declarations of additional definitions and interfaces
  8.  * for the ESE Online Backup Client APIs.
  9.  */
  10. #ifndef _ESEBCLI2_
  11. #define _ESEBCLI2_
  12. #include <stdio.h>
  13. #include <time.h>
  14. #include "esebkmsg.h" // included for the definition of errors
  15. // Common types
  16. typedef long ERR;
  17. typedef void *HCCX; // client context handle
  18. #ifdef MIDL_PASS
  19. #define RPC_STRING  [unique, string] WCHAR *
  20. #define RPC_SIZE(X) [size_is(X)]
  21. #else // ! MIDL_PASS
  22. #include <objbase.h>
  23. #include <initguid.h>
  24. #include <mapiguid.h>
  25. typedef long HRESULT;
  26. typedef unsigned short WCHAR;
  27. #define RPC_STRING WCHAR *
  28. #define RPC_SIZE(X)
  29. #define IN
  30. #define OUT
  31. #endif // MIDL_PASS
  32. #define ESEBACK_API __stdcall
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. typedef struct _ESE_ICON_DESCRIPTION
  37. {
  38. unsigned long  ulSize;
  39. RPC_SIZE(ulSize) char *  pvData;
  40. } ESE_ICON_DESCRIPTION;
  41. #define DATABASE_MOUNTED  0x00000010
  42. typedef struct _DATABASE_BACKUP_INFO
  43. {
  44. RPC_STRING  wszDatabaseDisplayName;
  45. unsigned long  cwDatabaseStreams;
  46. RPC_SIZE(cwDatabaseStreams)  WCHAR *  wszDatabaseStreams;
  47. GUID   guidDatabase;
  48. unsigned long   ulIconIndexDatabase;
  49. unsigned long  fDatabaseFlags;
  50. } DATABASE_BACKUP_INFO;
  51. typedef struct _INSTANCE_BACKUP_INFO
  52. {
  53. __int64  hInstanceId;
  54. RPC_STRING   wszInstanceName;
  55. unsigned long  ulIconIndexInstance;
  56. unsigned long  cDatabase;
  57. RPC_SIZE(cDatabase) DATABASE_BACKUP_INFO *  rgDatabase;
  58. unsigned long   cIconDescription;
  59. RPC_SIZE(cIconDescription) ESE_ICON_DESCRIPTION *  rgIconDescription;
  60. } INSTANCE_BACKUP_INFO;
  61. //
  62. // Type of backup passed into HrESEBackupSetup()
  63. //
  64. #define BACKUP_TYPE_FULL 0x01
  65. #define BACKUP_TYPE_LOGS_ONLY 0x02
  66. #define BACKUP_TYPE_FULL_WITH_ALL_LOGS 0x03
  67. #define BACKUP_TYPE_SNAPSHOT 0x04
  68. typedef struct _ESE_REGISTERED_INFO
  69. {
  70. RPC_STRING   wszDisplayName;
  71. RPC_STRING   wszEndpointAnnotation;
  72. unsigned long  fFlags;
  73. ESE_ICON_DESCRIPTION  iconDescription;
  74. } ESE_REGISTERED_INFO;
  75. #define ESE_REGISTER_BACKUP  0x00000001
  76. #define ESE_REGISTER_ONLINE_RESTORE  0x00000002
  77. #define ESE_REGISTER_OFFLINE_RESTORE  0x00000004
  78. #define ESE_REGISTER_SNAPSHOT_BACKUP  0x00000010
  79. HRESULT ESEBACK_API HrESEBackupRestoreGetRegistered(
  80. IN  WCHAR *   wszServerName,
  81. IN  WCHAR *   wszDisplayName,
  82. IN  unsigned long   fFlags,
  83. OUT unsigned long *  pcRegisteredInfo,
  84. OUT ESE_REGISTERED_INFO **  paRegisteredInfo
  85. );
  86. void ESEBACK_API ESEBackupRestoreFreeRegisteredInfo(
  87. IN  unsigned long  cRegisteredInfo,
  88. IN  ESE_REGISTERED_INFO *  aRegisteredInfo);
  89. HRESULT ESEBACK_API HrESEBackupPrepare(
  90. IN  WCHAR *   wszBackupServer,
  91. IN  WCHAR *   wszBackupAnnotation,
  92. OUT unsigned long * pcInstanceInfo,
  93. OUT INSTANCE_BACKUP_INFO **  paInstanceInfo,
  94. OUT HCCX *  phccxBackupContext
  95. );
  96. HRESULT ESEBACK_API HrESEBackupSetup(
  97. IN  HCCX  hccxBackupContext,
  98. IN  __int64  hInstanceId,
  99. IN  unsigned long  btBackupType
  100. );
  101. HRESULT ESEBACK_API HrESEBackupTruncateLogs(
  102. IN  HCCX  hccxBackupContext
  103. );
  104. HRESULT ESEBACK_API HrESEBackupGetDependencyInfo(
  105. IN  HCCX  hccxBackupContext,
  106. OUT WCHAR ** pwszInfo,
  107. OUT unsigned long * pcwInfo,
  108. OUT WCHAR ** pwszAnnotation
  109. );
  110. HRESULT ESEBACK_API HrESEBackupOpenFile (
  111. IN  HCCX  hccxBackupContext,
  112. IN  WCHAR * wszFileName,
  113. IN  unsigned long  cbReadHintSize,
  114. IN  unsigned long  cSections,
  115. OUT void ** rghFile,
  116. OUT __int64 * rgliSectionSize
  117. );
  118. HRESULT ESEBACK_API HrESEBackupReadFile(
  119. IN  HCCX  hccxBackupContext,
  120. IN  void *  hFile,
  121. IN  void *  pvBuffer,
  122. IN  unsigned long  cbBuffer,
  123. OUT unsigned long * pcbRead
  124. );
  125. HRESULT ESEBACK_API HrESEBackupCloseFile(
  126. IN  HCCX  hccxBackupContext,
  127. IN  void *  hFile
  128. );
  129. HRESULT ESEBACK_API HrESEBackupGetLogAndPatchFiles(
  130. IN  HCCX  hccxBackupContext,
  131. IN  WCHAR ** pwszFiles
  132. );
  133. HRESULT ESEBACK_API HrESEBackupGetTruncateLogFiles(
  134. IN  HCCX  hccxBackupContext,
  135. IN  WCHAR ** pwszFiles
  136. );
  137. void ESEBACK_API ESEBackupFreeInstanceInfo(
  138. IN unsigned long  cInstanceInfo,
  139. IN INSTANCE_BACKUP_INFO *  aInstanceInfo
  140. );
  141. void ESEBACK_API ESEBackupFree(
  142. IN  void * pvBuffer
  143. );
  144. #define ESE_BACKUP_INSTANCE_END_ERROR 0x00000000
  145. #define ESE_BACKUP_INSTANCE_END_SUCCESS 0x00000001
  146. HRESULT ESEBACK_API HrESEBackupInstanceEnd(
  147. IN  HCCX  hccxBackupContext,
  148. IN  unsigned long  fFlags
  149. );
  150. HRESULT ESEBACK_API HrESEBackupEnd(
  151. IN  HCCX  hccxBackupContext
  152. );
  153. // Restore client APIs
  154. typedef enum 
  155. {
  156. recoverInvalid  = 0,
  157. recoverNotStarted  = 1,
  158. recoverStarted  = 2,
  159. recoverEnded  = 3,
  160. recoverStatusMax
  161. }
  162. RECOVER_STATUS;
  163. typedef struct _RESTORE_ENVIRONMENT
  164. {
  165. WCHAR *  m_wszRestoreLogPath;
  166. WCHAR *  m_wszSrcInstanceName;
  167. unsigned long  m_cDatabases;
  168. WCHAR **  m_wszDatabaseDisplayName;
  169. GUID *  m_rguidDatabase;
  170. WCHAR *  m_wszRestoreInstanceSystemPath;
  171. WCHAR *  m_wszRestoreInstanceLogPath;
  172. WCHAR *  m_wszTargetInstanceName;
  173. WCHAR **  m_wszDatabaseStreamsS;
  174. WCHAR **  m_wszDatabaseStreamsD;
  175. unsigned long  m_ulGenLow;
  176. unsigned long  m_ulGenHigh;
  177. WCHAR *   m_wszLogBaseName;
  178. time_t  m_timeLastRestore;
  179. RECOVER_STATUS  m_statusLastRecover;
  180. HRESULT  m_hrLastRecover;
  181. time_t  m_timeLastRecover;
  182. WCHAR *  m_wszAnnotation;
  183. } RESTORE_ENVIRONMENT;
  184. HRESULT ESEBACK_API HrESERestoreLoadEnvironment(
  185. IN WCHAR * wszServerName,
  186. IN WCHAR * wszRestoreLogPath,
  187. OUT RESTORE_ENVIRONMENT **  ppRestoreEnvironment);
  188. void ESEBACK_API ESERestoreFreeEnvironment(
  189. IN  RESTORE_ENVIRONMENT *  pRestoreEnvironment);
  190. HRESULT ESEBACK_API HrESERestoreOpen(
  191. IN  WCHAR * wszServerName,
  192. IN  WCHAR * wszServiceAnnotation,
  193. IN  WCHAR *   wszSrcInstanceName,
  194. IN  WCHAR *  wszRestoreLogPath,
  195. OUT HCCX * phccxRestoreContext);
  196. HRESULT ESEBACK_API HrESERestoreReopen(
  197. IN  WCHAR * wszServerName,
  198. IN  WCHAR * wszServiceAnnotation,
  199. IN  WCHAR *   wszRestoreLogPath,
  200. OUT HCCX * phccxRestoreContext);
  201. void ESEBACK_API ESERestoreFree( IN void *pvBuffer );
  202. #define RESTORE_CLOSE_ABORT 0x1
  203. #define RESTORE_CLOSE_NORMAL 0x0
  204. HRESULT ESEBACK_API HrESERestoreClose(
  205. IN  HCCX  hccxRestoreContext,
  206. IN  unsigned long  fRestoreAbort);
  207. HRESULT ESEBACK_API HrESERestoreAddDatabase(
  208. IN  HCCX  hccxRestoreContext,
  209. IN  WCHAR * wszDatabaseDisplayName,
  210. IN  GUID guidDatabase,
  211. IN  WCHAR *   wszDatabaseStreamsS,
  212. OUT WCHAR **   pwszDatabaseStreamsD);
  213. HRESULT ESEBACK_API HrESERestoreGetEnvironment(
  214. IN  HCCX  hccxRestoreContext,
  215. OUT RESTORE_ENVIRONMENT **  ppRestoreEnvironment);
  216. HRESULT ESEBACK_API HrESERestoreSaveEnvironment(
  217. IN  HCCX  hccxRestoreContext);
  218. #define ESE_RESTORE_COMPLETE_ATTACH_DBS 0x00000001
  219. #define ESE_RESTORE_COMPLETE_START_SERVICE ESE_RESTORE_COMPLETE_ATTACH_DBS
  220. #define ESE_RESTORE_COMPLETE_NOWAIT 0x00010000
  221. #define ESE_RESTORE_KEEP_LOG_FILES 0x00020000
  222. HRESULT ESEBACK_API HrESERestoreComplete(
  223. IN  HCCX  hccxRestoreContext,
  224. IN  WCHAR * wszRestoreInstanceSystemPath,
  225. IN  WCHAR * wszRestoreInstanceLogPath,
  226. IN  WCHAR * wszTargetInstanceName,
  227. IN  unsigned long  fFlags);
  228. HRESULT ESEBACK_API HrESERestoreAddDatabaseNS(
  229. IN  HCCX  hccxRestoreContext,
  230. IN  WCHAR * wszDatabaseDisplayName,
  231. IN  GUID guidDatabase,
  232. IN  WCHAR *   wszDatabaseStreamsS,
  233. IN  WCHAR *   wszDatabaseStreamsD);
  234. HRESULT ESEBACK_API HrESERestoreOpenFile (
  235. IN  HCCX  hccxRestoreContext,
  236. IN  WCHAR * wszFileName,
  237. IN  unsigned long  cSections,
  238. OUT void ** rghFile
  239. );
  240. HRESULT ESEBACK_API HrESERestoreWriteFile(
  241. IN  HCCX  hccxRestoreContext,
  242. IN  void *  hFile,
  243. IN  void *  pvBuffer,
  244. IN  unsigned long  cbBuffer
  245. );
  246. HRESULT ESEBACK_API HrESERestoreCloseFile(
  247. IN  HCCX  hccxRestoreContext,
  248. IN  void *  hFile
  249. );
  250. /* function used to find the computers to be queried for backup/restore */
  251. /* MAD like behaviour */
  252. #define BACKUP_NODE_TYPE_MACHINE  0x00000001
  253. #define BACKUP_NODE_TYPE_ANNOTATION  0x00000010
  254. #define BACKUP_NODE_TYPE_DISPLAY   0x00000100
  255. typedef struct _BACKUP_NODE_TREE
  256. {
  257. RPC_STRING  wszName;
  258. unsigned long  fFlags;
  259. ESE_ICON_DESCRIPTION iconDescription;
  260. struct _BACKUP_NODE_TREE *  pNextNode;
  261. struct _BACKUP_NODE_TREE *  pChildNode;
  262. } BACKUP_NODE_TREE, * PBACKUP_NODE_TREE;
  263. HRESULT ESEBACK_API HrESEBackupRestoreGetNodes(
  264. IN  WCHAR *  wszComputerName,
  265. OUT PBACKUP_NODE_TREE *  ppBackupNodeTree);
  266. void ESEBACK_API ESEBackupRestoreFreeNodes(
  267. IN PBACKUP_NODE_TREE   pBackupNodeTree);
  268. // Specific errors that can be returned by callback functions
  269. // Database to be restored is in use
  270. #define hrFromCB_DatabaseInUse  hrCBDatabaseInUse 
  271. // Database not found
  272. #define hrFromCB_DatabaseNotFound  hrCBDatabaseNotFound
  273. // Display name for the database not found
  274. #define hrFromCB_DatabaseDisplayNameNotFound  hrCBDatabaseDisplayNameNotFound
  275. // Requested path for restore log files not provided
  276. #define hrFromCB_RestorePathNotProvided  hrCBRestorePathNotProvided
  277. // Instance to backup not found
  278. #define hrFromCB_InstanceNotFound  hrCBInstanceNotFound
  279. // Database can not be overwritten by a restore
  280. #define hrFromCB_DatabaseCantBeOverwritten  hrCBDatabaseCantBeOverwritten
  281. // snapshot API
  282. HRESULT ESEBACK_API HrESESnapshotStart( 
  283. IN  HCCX  hccxBackupContext,
  284. IN  WCHAR *   wszDatabases,
  285. IN  unsigned long  fFlags );
  286. HRESULT ESEBACK_API HrESESnapshotStop( IN  HCCX  hccxBackupContext,
  287. IN  unsigned long  fFlags );
  288. #ifdef __cplusplus
  289. }
  290. #endif
  291. #endif // _EDBBCLI2_