vsbackup.idl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. /**
  7. * C++ interfaces, which are not COM interface, are declared with
  8. * uuid(00000000-0000-0000-0000-000000000000) to make widl happy
  9. */
  10. import "oaidl.idl";
  11. import "ocidl.idl";
  12. import "vss.idl";
  13. import "vswriter.idl";
  14. cpp_quote("#include <winapifamily.h>")
  15. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  16. typedef struct _VSS_COMPONENTINFO {
  17. VSS_COMPONENT_TYPE type;
  18. BSTR bstrLogicalPath;
  19. BSTR bstrComponentName;
  20. BSTR bstrCaption;
  21. BYTE *pbIcon;
  22. UINT cbIcon;
  23. boolean bRestoreMetadata;
  24. boolean bNotifyOnBackupComplete;
  25. boolean bSelectable;
  26. boolean bSelectableForRestore;
  27. DWORD dwComponentFlags;
  28. UINT cFileCount;
  29. UINT cDatabases;
  30. UINT cLogFiles;
  31. UINT cDependencies;
  32. } VSS_COMPONENTINFO;
  33. typedef const VSS_COMPONENTINFO *PVSSCOMPONENTINFO;
  34. [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)]
  35. interface IVssWMComponent : IUnknown
  36. {
  37. HRESULT GetComponentInfo(
  38. [out] PVSSCOMPONENTINFO *ppInfo);
  39. HRESULT FreeComponentInfo(
  40. [in] PVSSCOMPONENTINFO pInfo);
  41. HRESULT GetFile(
  42. [in] UINT iFile,
  43. [out] IVssWMFiledesc **ppFiledesc);
  44. HRESULT GetDatabaseFile(
  45. [in] UINT iDBFile,
  46. [out] IVssWMFiledesc **ppFiledesc);
  47. HRESULT GetDatabaseLogFile(
  48. [in] UINT iDbLogFile,
  49. [out] IVssWMFiledesc **ppFiledesc);
  50. HRESULT GetDependency(
  51. [in] UINT iDependency,
  52. [out] IVssWMDependency **ppDependency);
  53. }
  54. [object, uuid(902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd), pointer_default(unique)]
  55. interface IVssExamineWriterMetadata : IUnknown
  56. {
  57. HRESULT GetIdentity(
  58. [out] VSS_ID *pidInstance,
  59. [out] VSS_ID *pidWriter,
  60. [out] BSTR *pbstrWriterName,
  61. [out] VSS_USAGE_TYPE *pUsage,
  62. [out] VSS_SOURCE_TYPE *pSource);
  63. HRESULT GetFileCounts(
  64. [out] UINT *pcIncludeFiles,
  65. [out] UINT *pcExcludeFiles,
  66. [out] UINT *pcComponents);
  67. HRESULT GetIncludeFile(
  68. [in] UINT iFile,
  69. [out] IVssWMFiledesc **ppFiledesc);
  70. HRESULT GetExcludeFile(
  71. [in] UINT iFile,
  72. [out] IVssWMFiledesc **ppFiledesc);
  73. HRESULT GetComponent(
  74. [in] UINT iComponent,
  75. [out] IVssWMComponent **ppComponent);
  76. HRESULT GetRestoreMethod(
  77. [out] VSS_RESTOREMETHOD_ENUM *pMethod,
  78. [out] BSTR *pbstrService,
  79. [out] BSTR *pbstrUserProcedure,
  80. [out] VSS_WRITERRESTORE_ENUM *pwriterRestore,
  81. [out] boolean *pbRebootRequired,
  82. [out] UINT *pcMappings);
  83. HRESULT GetAlternateLocationMapping(
  84. [in] UINT iMapping,
  85. [out] IVssWMFiledesc **ppFiledesc);
  86. HRESULT GetBackupSchema(
  87. [out] DWORD *pdwSchemaMask);
  88. HRESULT GetDocument(
  89. [out] IXMLDOMDocument **pDoc);
  90. HRESULT SaveAsXML(
  91. [in] BSTR *pbstrXML);
  92. HRESULT LoadFromXML(
  93. [in] BSTR bstrXML);
  94. }
  95. [object, uuid(0c0e5ec0-ca44-472b-b702-e652db1c0451), pointer_default(unique)]
  96. interface IVssExamineWriterMetadataEx : IVssExamineWriterMetadata
  97. {
  98. HRESULT GetIdentityEx(
  99. [out] VSS_ID *pidInstance,
  100. [out] VSS_ID *pidWriter,
  101. [out] BSTR *pbstrWriterName,
  102. [out] BSTR* pbstrInstanceName,
  103. [out] VSS_USAGE_TYPE *pUsage,
  104. [out] VSS_SOURCE_TYPE *pSource);
  105. }
  106. [object, uuid(ce115780-a611-431b-b57f-c38303ab6aee), pointer_default(unique)]
  107. interface IVssExamineWriterMetadataEx2 : IVssExamineWriterMetadataEx
  108. {
  109. HRESULT GetVersion(
  110. [out] DWORD* pdwMajorVersion,
  111. [out] DWORD* pdwMinorVersion);
  112. HRESULT GetExcludeFromSnapshotCount(
  113. [out] UINT* pcExcludedFromSnapshot);
  114. HRESULT GetExcludeFromSnapshotFile(
  115. [in] UINT iFile,
  116. [out] IVssWMFiledesc **ppFiledesc);
  117. }
  118. [object, uuid(00000000-0000-0000-0000-000000000000), pointer_default(unique)]
  119. interface IVssWriterComponentsExt : IVssWriterComponents {} /* , IUnknown {} */
  120. [object, uuid(665c1d5f-c218-414d-a05d-7fef5f9d5c86), pointer_default(unique)]
  121. interface IVssBackupComponents : IUnknown
  122. {
  123. HRESULT GetWriterComponentsCount(
  124. [out] UINT *pcComponents);
  125. HRESULT GetWriterComponents(
  126. [in] UINT iWriter,
  127. [out] IVssWriterComponentsExt **ppWriter);
  128. HRESULT InitializeForBackup(
  129. [in, defaultvalue(NULL)] BSTR bstrXML);
  130. HRESULT SetBackupState(
  131. [in] boolean bSelectComponents,
  132. [in] boolean bBackupBootableSystemState,
  133. [in] VSS_BACKUP_TYPE backupType,
  134. [in, defaultvalue(0)] boolean bPartialFileSupport);
  135. HRESULT InitializeForRestore(
  136. [in] BSTR bstrXML);
  137. HRESULT SetRestoreState(
  138. [in] VSS_RESTORE_TYPE restoreType);
  139. HRESULT GatherWriterMetadata(
  140. [out] IVssAsync **pAsync);
  141. HRESULT GetWriterMetadataCount(
  142. [out] UINT *pcWriters);
  143. HRESULT GetWriterMetadata(
  144. [in] UINT iWriter,
  145. [out] VSS_ID *pidInstance,
  146. [out] IVssExamineWriterMetadata **ppMetadata);
  147. HRESULT FreeWriterMetadata();
  148. HRESULT AddComponent(
  149. [in] VSS_ID instanceId,
  150. [in] VSS_ID writerId,
  151. [in] VSS_COMPONENT_TYPE ct,
  152. [in] LPCWSTR wszLogicalPath,
  153. [in] LPCWSTR wszComponentName);
  154. HRESULT PrepareForBackup(
  155. [out] IVssAsync **ppAsync);
  156. HRESULT AbortBackup();
  157. HRESULT GatherWriterStatus(
  158. [out] IVssAsync **pAsync);
  159. HRESULT GetWriterStatusCount(
  160. [out] UINT *pcWriters);
  161. HRESULT FreeWriterStatus();
  162. HRESULT GetWriterStatus(
  163. [in] UINT iWriter,
  164. [out] VSS_ID *pidInstance,
  165. [out] VSS_ID *pidWriter,
  166. [out] BSTR *pbstrWriter,
  167. [out] VSS_WRITER_STATE *pnStatus,
  168. [out] HRESULT *phResultFailure);
  169. HRESULT SetBackupSucceeded(
  170. [in] VSS_ID instanceId,
  171. [in] VSS_ID writerId,
  172. [in] VSS_COMPONENT_TYPE ct,
  173. [in] LPCWSTR wszLogicalPath,
  174. [in] LPCWSTR wszComponentName,
  175. [in] boolean bSucceded);
  176. HRESULT SetBackupOptions(
  177. [in] VSS_ID writerId,
  178. [in] VSS_COMPONENT_TYPE ct,
  179. [in] LPCWSTR wszLogicalPath,
  180. [in] LPCWSTR wszComponentName,
  181. [in] LPCWSTR wszBackupOptions);
  182. HRESULT SetSelectedForRestore(
  183. [in] VSS_ID writerId,
  184. [in] VSS_COMPONENT_TYPE ct,
  185. [in] LPCWSTR wszLogicalPath,
  186. [in] LPCWSTR wszComponentName,
  187. [in] boolean bSelectedForRestore);
  188. HRESULT SetRestoreOptions(
  189. [in] VSS_ID writerId,
  190. [in] VSS_COMPONENT_TYPE ct,
  191. [in] LPCWSTR wszLogicalPath,
  192. [in] LPCWSTR wszComponentName,
  193. [in] LPCWSTR wszRestoreOptions);
  194. HRESULT SetAdditionalRestores(
  195. [in] VSS_ID writerId,
  196. [in] VSS_COMPONENT_TYPE ct,
  197. [in] LPCWSTR wszLogicalPath,
  198. [in] LPCWSTR wszComponentName,
  199. [in] boolean bAdditionalRestores);
  200. HRESULT SetPreviousBackupStamp(
  201. [in] VSS_ID writerId,
  202. [in] VSS_COMPONENT_TYPE ct,
  203. [in] LPCWSTR wszLogicalPath,
  204. [in] LPCWSTR wszComponentName,
  205. [in] LPCWSTR wszPreviousBackupStamp);
  206. HRESULT SaveAsXML(
  207. [in] BSTR *pbstrXML);
  208. HRESULT BackupComplete(
  209. [out] IVssAsync **ppAsync);
  210. HRESULT AddAlternativeLocationMapping(
  211. [in] VSS_ID writerId,
  212. [in] VSS_COMPONENT_TYPE componentType,
  213. [in] LPCWSTR wszLogicalPath,
  214. [in] LPCWSTR wszComponentName,
  215. [in] LPCWSTR wszPath,
  216. [in] LPCWSTR wszFilespec,
  217. [in] boolean bRecursive,
  218. [in] LPCWSTR wszDestination);
  219. HRESULT AddRestoreSubcomponent(
  220. [in] VSS_ID writerId,
  221. [in] VSS_COMPONENT_TYPE componentType,
  222. [in] LPCWSTR wszLogicalPath,
  223. [in] LPCWSTR wszComponentName,
  224. [in] LPCWSTR wszSubComponentLogicalPath,
  225. [in] LPCWSTR wszSubComponentName,
  226. [in] boolean bRepair);
  227. HRESULT SetFileRestoreStatus(
  228. [in] VSS_ID writerId,
  229. [in] VSS_COMPONENT_TYPE ct,
  230. [in] LPCWSTR wszLogicalPath,
  231. [in] LPCWSTR wszComponentName,
  232. [in] VSS_FILE_RESTORE_STATUS status);
  233. HRESULT AddNewTarget(
  234. [in] VSS_ID writerId,
  235. [in] VSS_COMPONENT_TYPE ct,
  236. [in] LPCWSTR wszLogicalPath,
  237. [in] LPCWSTR wszComponentName,
  238. [in] LPCWSTR wszPath,
  239. [in] LPCWSTR wszFileName,
  240. [in] boolean bRecursive,
  241. [in] LPCWSTR wszAlternatePath);
  242. HRESULT SetRangesFilePath(
  243. [in] VSS_ID writerId,
  244. [in] VSS_COMPONENT_TYPE ct,
  245. [in] LPCWSTR wszLogicalPath,
  246. [in] LPCWSTR wszComponentName,
  247. [in] UINT iPartialFile,
  248. [in] LPCWSTR wszRangesFile);
  249. HRESULT PreRestore(
  250. [out] IVssAsync **ppAsync);
  251. HRESULT PostRestore(
  252. [out] IVssAsync **ppAsync);
  253. HRESULT SetContext(
  254. [in] LONG lContext);
  255. HRESULT StartSnapshotSet(
  256. [out] VSS_ID *pSnapshotSetId);
  257. HRESULT AddToSnapshotSet(
  258. [in] VSS_PWSZ pwszVolumeName,
  259. [in] VSS_ID ProviderId,
  260. [out] VSS_ID *pidSnapshot);
  261. HRESULT DoSnapshotSet(
  262. [out] IVssAsync **ppAsync);
  263. HRESULT DeleteSnapshots(
  264. [in] VSS_ID SourceObjectId,
  265. [in] VSS_OBJECT_TYPE eSourceObjectType,
  266. [in] WINBOOL bForceDelete,
  267. [in] LONG *plDeletedSnapshots,
  268. [in] VSS_ID *pNondeletedSnapshotID);
  269. HRESULT ImportSnapshots(
  270. [out] IVssAsync **ppAsync);
  271. HRESULT BreakSnapshotSet(
  272. [in] VSS_ID SnapshotSetId);
  273. HRESULT GetSnapshotProperties(
  274. [in] VSS_ID SnapshotId,
  275. [out] VSS_SNAPSHOT_PROP *pProp);
  276. HRESULT Query(
  277. [in] VSS_ID QueriedObjectId,
  278. [in] VSS_OBJECT_TYPE eQueriedObjectType,
  279. [in] VSS_OBJECT_TYPE eReturnedObjectsType,
  280. [in] IVssEnumObject **ppEnum);
  281. HRESULT IsVolumeSupported(
  282. [in] VSS_ID ProviderId,
  283. [in] VSS_PWSZ pwszVolumeName,
  284. [in] WINBOOL *pbSupportedByThisProvider);
  285. HRESULT DisableWriterClasses(
  286. [in] const VSS_ID *rgWriterClassId,
  287. [in] UINT cClassId);
  288. HRESULT EnableWriterClasses(
  289. [in] const VSS_ID *rgWriterClassId,
  290. [in] UINT cClassId);
  291. HRESULT DisableWriterInstances(
  292. [in] const VSS_ID *rgWriterInstanceId,
  293. [in] UINT cInstanceId);
  294. HRESULT ExposeSnapshot(
  295. [in] VSS_ID SnapshotId,
  296. [in] VSS_PWSZ wszPathFromRoot,
  297. [in] LONG lAttributes,
  298. [in] VSS_PWSZ wszExpose,
  299. [out] VSS_PWSZ *pwszExposed);
  300. HRESULT RevertToSnapshot(
  301. [in] VSS_ID SnapshotId,
  302. [in] WINBOOL bForceDismount);
  303. HRESULT QueryRevertStatus(
  304. [in] VSS_PWSZ pwszVolume,
  305. [out] IVssAsync **ppAsync);
  306. }
  307. [object, uuid(963f03ad-9e4c-4a34-ac15-e4b6174e5036), pointer_default(unique)]
  308. interface IVssBackupComponentsEx : IVssBackupComponents
  309. {
  310. HRESULT GetWriterMetadataEx(
  311. [in] UINT iWriter,
  312. [out] VSS_ID *pidInstance,
  313. [out] IVssExamineWriterMetadataEx **ppMetadata);
  314. HRESULT SetSelectedForRestoreEx(
  315. [in] VSS_ID writerId,
  316. [in] VSS_COMPONENT_TYPE ct,
  317. [in] LPCWSTR wszLogicalPath,
  318. [in] LPCWSTR wszComponentName,
  319. [in] boolean bSelectedForRestore,
  320. [in] VSS_ID instanceId);
  321. }
  322. [object, uuid(acfe2b3a-22c9-4ef8-bd03-2f9ca230084e), pointer_default(unique)]
  323. interface IVssBackupComponentsEx2 : IVssBackupComponentsEx
  324. {
  325. HRESULT UnexposeSnapshot(
  326. [in] VSS_ID snapshotId);
  327. HRESULT SetAuthoritativeRestore(
  328. [in] VSS_ID writerId,
  329. [in] VSS_COMPONENT_TYPE ct,
  330. [in] LPCWSTR wszLogicalPath,
  331. [in] LPCWSTR wszComponentName,
  332. [in] boolean bAuth);
  333. HRESULT SetRollForward(
  334. [in] VSS_ID writerId,
  335. [in] VSS_COMPONENT_TYPE ct,
  336. [in] LPCWSTR wszLogicalPath,
  337. [in] LPCWSTR wszComponentName,
  338. [in] VSS_ROLLFORWARD_TYPE rollType,
  339. [in] LPCWSTR wszRollForwardPoint);
  340. HRESULT SetRestoreName(
  341. [in] VSS_ID writerId,
  342. [in] VSS_COMPONENT_TYPE ct,
  343. [in] LPCWSTR wszLogicalPath,
  344. [in] LPCWSTR wszComponentName,
  345. [in] LPCWSTR wszRestoreName);
  346. HRESULT BreakSnapshotSetEx(
  347. [in] VSS_ID SnapshotSetID,
  348. [in] DWORD dwBreakFlags,
  349. [out] IVssAsync **ppAsync);
  350. HRESULT PreFastRecovery(
  351. [in] VSS_ID SnapshotSetID,
  352. [in] DWORD dwPreFastRecoveryFlags,
  353. [out] IVssAsync **ppAsync);
  354. HRESULT FastRecovery(
  355. [in] VSS_ID SnapshotSetID,
  356. [in] DWORD dwFastRecoveryFlags,
  357. [out] IVssAsync **ppAsync);
  358. }
  359. [object, uuid(c191bfbc-b602-4675-8bd1-67d642f529d5), pointer_default(unique)]
  360. interface IVssBackupComponentsEx3 : IVssBackupComponentsEx2
  361. {
  362. HRESULT GetWriterStatusEx(
  363. [in] UINT iWriter,
  364. [out] VSS_ID *pidInstance,
  365. [out] VSS_ID *pidWriter,
  366. [out] BSTR *pbstrWriter,
  367. [out] VSS_WRITER_STATE *pnStatus,
  368. [out] HRESULT *phrFailureWriter,
  369. [out, defaultvalue(NULL)] HRESULT *phrApplication,
  370. [out, defaultvalue(NULL)] BSTR *pbstrApplicationMessage);
  371. HRESULT AddSnapshotToRecoverySet(
  372. [in] VSS_ID snapshotId,
  373. [in] DWORD dwFlags,
  374. [in, defaultvalue(NULL)] VSS_PWSZ pwszDestinationVolume);
  375. HRESULT RecoverSet(
  376. [in] DWORD dwFlags,
  377. [out] IVssAsync **ppAsync);
  378. HRESULT GetSessionId(
  379. [out] VSS_ID *idSession);
  380. }
  381. [object, uuid(f434c2fd-b553-4961-a9f9-a8e90b673e53), pointer_default(unique)]
  382. interface IVssBackupComponentsEx4 : IVssBackupComponentsEx3
  383. {
  384. HRESULT GetRootAndLogicalPrefixPaths(
  385. [in] VSS_PWSZ pwszFilePath,
  386. [out] VSS_PWSZ *ppwszRootPath,
  387. [out] VSS_PWSZ *ppwszLogicalPrefix,
  388. [in, defaultvalue(FALSE)] WINBOOL bNormalizeFQDNforRootPath);
  389. }
  390. cpp_quote("#define VSS_SW_BOOTABLE_STATE (1 << 0)")
  391. cpp_quote("HRESULT STDAPICALLTYPE CreateVssBackupComponentsInternal(IVssBackupComponents **ppBackup);")
  392. cpp_quote("HRESULT STDAPICALLTYPE CreateVssExamineWriterMetadataInternal(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata);")
  393. cpp_quote("HRESULT APIENTRY IsVolumeSnapshottedInternal(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability);")
  394. cpp_quote("void APIENTRY VssFreeSnapshotPropertiesInternal(VSS_SNAPSHOT_PROP *pProp);")
  395. cpp_quote("HRESULT APIENTRY GetProviderMgmtInterfaceInternal(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf);")
  396. cpp_quote("HRESULT APIENTRY ShouldBlockRevertInternal(LPCWSTR wszVolumeName, boolean *pbBlock);")
  397. cpp_quote("static __inline HRESULT CreateVssBackupComponents(IVssBackupComponents **ppBackup) { return CreateVssBackupComponentsInternal(ppBackup); }")
  398. cpp_quote("static __inline HRESULT CreateVssExamineWriterMetadata(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata) { return CreateVssExamineWriterMetadataInternal(bstrXML, ppMetadata); }")
  399. cpp_quote("static __inline HRESULT IsVolumeSnapshotted(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability) { return IsVolumeSnapshottedInternal(pwszVolumeName, pbSnapshotsPresent, plSnapshotCapability); }")
  400. cpp_quote("static __inline void VssFreeSnapshotProperties(VSS_SNAPSHOT_PROP *pProp) { return VssFreeSnapshotPropertiesInternal(pProp); }")
  401. cpp_quote("static __inline HRESULT GetProviderMgmtInterface(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf) { return GetProviderMgmtInterfaceInternal(ProviderId, InterfaceId, ppItf); }")
  402. cpp_quote("static __inline HRESULT ShouldBlockRevert(LPCWSTR wszVolumeName, boolean *pbBlock) { return ShouldBlockRevertInternal(wszVolumeName, pbBlock); }")
  403. cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */")