vsprov.idl 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  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. cpp_quote("#include <winapifamily.h>")
  7. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
  8. import "oaidl.idl";
  9. import "ocidl.idl";
  10. import "vss.idl";
  11. import "vdslun.idl";
  12. interface IVssSnapshotProvider;
  13. interface IVssProviderNotifications;
  14. typedef VSS_PWSZ *PVSS_PWSZ;
  15. [
  16. object,
  17. uuid(609e123e-2c5a-44d3-8f01-0b1d9a47d1ff),
  18. pointer_default(unique)
  19. ]
  20. interface IVssSoftwareSnapshotProvider : IUnknown
  21. {
  22. HRESULT SetContext(
  23. [in] LONG lContext);
  24. HRESULT GetSnapshotProperties(
  25. [in] VSS_ID SnapshotId,
  26. [out] VSS_SNAPSHOT_PROP *pProp);
  27. HRESULT Query(
  28. [in] VSS_ID QueriedObjectId,
  29. [in] VSS_OBJECT_TYPE eQueriedObjectType,
  30. [in] VSS_OBJECT_TYPE eReturnedObjectsType,
  31. [out] IVssEnumObject **ppEnum);
  32. HRESULT DeleteSnapshots(
  33. [in] VSS_ID SourceObjectId,
  34. [in] VSS_OBJECT_TYPE eSourceObjectType,
  35. [in] WINBOOL bForceDelete,
  36. [out] LONG *plDeletedSnapshots,
  37. [out] VSS_ID *pNondeletedSnapshotID);
  38. HRESULT BeginPrepareSnapshot(
  39. [in] VSS_ID SnapshotSetId,
  40. [in] VSS_ID SnapshotId,
  41. [in] VSS_PWSZ pwszVolumeName,
  42. [in] LONG lNewContext);
  43. HRESULT IsVolumeSupported(
  44. [in] VSS_PWSZ pwszVolumeName,
  45. [out] WINBOOL *pbSupportedByThisProvider);
  46. HRESULT IsVolumeSnapshotted(
  47. [in] VSS_PWSZ pwszVolumeName,
  48. [out] WINBOOL *pbSnapshotsPresent,
  49. [out] LONG *plSnapshotCompatibility);
  50. HRESULT SetSnapshotProperty(
  51. [in] VSS_ID SnapshotId,
  52. [in] VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
  53. [in] VARIANT vProperty);
  54. HRESULT RevertToSnapshot(
  55. [in] VSS_ID SnapshotId);
  56. HRESULT QueryRevertStatus(
  57. [in] VSS_PWSZ pwszVolume,
  58. [out] IVssAsync **ppAsync);
  59. }
  60. [
  61. object,
  62. uuid(5f894e5b-1e39-4778-8e23-9abad9f0e08c),
  63. pointer_default(unique)
  64. ]
  65. interface IVssProviderCreateSnapshotSet : IUnknown
  66. {
  67. HRESULT EndPrepareSnapshots(
  68. [in] VSS_ID SnapshotSetId);
  69. HRESULT PreCommitSnapshots(
  70. [in] VSS_ID SnapshotSetId);
  71. HRESULT CommitSnapshots(
  72. [in] VSS_ID SnapshotSetId);
  73. HRESULT PostCommitSnapshots(
  74. [in] VSS_ID SnapshotSetId,
  75. [in] LONG lSnapshotsCount);
  76. HRESULT PreFinalCommitSnapshots(
  77. [in] VSS_ID SnapshotSetId);
  78. HRESULT PostFinalCommitSnapshots(
  79. [in] VSS_ID SnapshotSetId);
  80. HRESULT AbortSnapshots(
  81. [in] VSS_ID SnapshotSetId);
  82. }
  83. [
  84. object,
  85. uuid(e561901f-03a5-4afe-86d0-72baeece7004),
  86. pointer_default(unique)
  87. ]
  88. interface IVssProviderNotifications : IUnknown
  89. {
  90. HRESULT OnLoad(
  91. [in,unique] IUnknown *pCallback);
  92. HRESULT OnUnload(
  93. [in] WINBOOL bForceUnload);
  94. }
  95. [
  96. object,
  97. uuid(9593a157-44e9-4344-bbeb-44fbf9b06b10),
  98. pointer_default(unique)
  99. ]
  100. interface IVssHardwareSnapshotProvider : IUnknown
  101. {
  102. HRESULT AreLunsSupported(
  103. [in] LONG lLunCount,
  104. [in] LONG lContext,
  105. [in, unique, size_is(lLunCount)] VSS_PWSZ *rgwszDevices,
  106. [in, out, size_is(lLunCount)] VDS_LUN_INFORMATION *pLunInformation,
  107. [out] WINBOOL *pbIsSupported);
  108. HRESULT FillInLunInfo(
  109. [in] VSS_PWSZ wszDeviceName,
  110. [in, out] VDS_LUN_INFORMATION *pLunInfo,
  111. [out] WINBOOL *pbIsSupported);
  112. HRESULT BeginPrepareSnapshot(
  113. [in] VSS_ID SnapshotSetId,
  114. [in] VSS_ID SnapshotId,
  115. [in] LONG lContext,
  116. [in] LONG lLunCount,
  117. [in, unique, size_is(lLunCount)] VSS_PWSZ *rgDeviceNames,
  118. [in, out, size_is(lLunCount)] VDS_LUN_INFORMATION *rgLunInformation);
  119. HRESULT GetTargetLuns(
  120. [in] LONG lLunCount,
  121. [in, unique, size_is(lLunCount)] VSS_PWSZ *rgDeviceNames,
  122. [in, unique, size_is(lLunCount)] VDS_LUN_INFORMATION *rgSourceLuns,
  123. [in, out, size_is(lLunCount)] VDS_LUN_INFORMATION *rgDestinationLuns);
  124. HRESULT LocateLuns(
  125. [in] LONG lLunCount,
  126. [in, unique, size_is(lLunCount)] VDS_LUN_INFORMATION *rgSourceLuns);
  127. HRESULT OnLunEmpty(
  128. [in, unique] VSS_PWSZ wszDeviceName,
  129. [in, unique] VDS_LUN_INFORMATION *pInformation);
  130. }
  131. [
  132. object,
  133. uuid(7f5ba925-cdb1-4d11-a71f-339eb7e709fd),
  134. pointer_default(unique)
  135. ]
  136. interface IVssHardwareSnapshotProviderEx : IVssHardwareSnapshotProvider
  137. {
  138. HRESULT GetProviderCapabilities(
  139. [out] ULONGLONG *pllOriginalCapabilityMask);
  140. HRESULT OnLunStateChange(
  141. [in, unique, size_is(dwCount)] VDS_LUN_INFORMATION *pSnapshotLuns,
  142. [in, unique, size_is(dwCount)] VDS_LUN_INFORMATION *pOriginalLuns,
  143. [in] DWORD dwCount,
  144. [in] DWORD dwFlags);
  145. HRESULT ResyncLuns(
  146. [in, unique, size_is(dwCount)] VDS_LUN_INFORMATION *pSourceLuns,
  147. [in, unique, size_is(dwCount)] VDS_LUN_INFORMATION *pTargetLuns,
  148. [in] DWORD dwCount,
  149. [out] IVssAsync ** ppAsync);
  150. HRESULT OnReuseLuns(
  151. [in, unique, size_is(dwCount)] VDS_LUN_INFORMATION *pSnapshotLuns,
  152. [in, unique, size_is(dwCount)] VDS_LUN_INFORMATION *pOriginalLuns,
  153. [in] DWORD dwCount);
  154. }
  155. [
  156. object,
  157. uuid(c8636060-7c2e-11df-8c4a-0800200c9a66),
  158. pointer_default(unique)
  159. ]
  160. interface IVssFileShareSnapshotProvider : IUnknown
  161. {
  162. HRESULT SetContext(
  163. [in] LONG lContext);
  164. HRESULT GetSnapshotProperties(
  165. [in] VSS_ID SnapshotId,
  166. [out] VSS_SNAPSHOT_PROP *pProp);
  167. HRESULT Query(
  168. [in] VSS_ID QueriedObjectId,
  169. [in] VSS_OBJECT_TYPE eQueriedObjectType,
  170. [in] VSS_OBJECT_TYPE eReturnedObjectsType,
  171. [out] IVssEnumObject **ppEnum);
  172. HRESULT DeleteSnapshots(
  173. [in] VSS_ID SourceObjectId,
  174. [in] VSS_OBJECT_TYPE eSourceObjectType,
  175. [in] WINBOOL bForceDelete,
  176. [out] LONG *plDeletedSnapshots,
  177. [out] VSS_ID *pNondeletedSnapshotID);
  178. HRESULT BeginPrepareSnapshot(
  179. [in] VSS_ID SnapshotSetId,
  180. [in] VSS_ID SnapshotId,
  181. [in] VSS_PWSZ pwszSharePath,
  182. [in] LONG lNewContext,
  183. [in] VSS_ID ProviderId);
  184. HRESULT IsPathSupported(
  185. [in] VSS_PWSZ pwszSharePath,
  186. [out] WINBOOL *pbSupportedByThisProvider);
  187. HRESULT IsPathSnapshotted(
  188. [in] VSS_PWSZ pwszSharePath,
  189. [out] WINBOOL *pbSnapshotsPresent,
  190. [out] LONG *plSnapshotCompatibility);
  191. HRESULT SetSnapshotProperty(
  192. [in] VSS_ID SnapshotId,
  193. [in] VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
  194. [in] VARIANT vProperty);
  195. }
  196. [
  197. uuid(73c8b4c1-6e9d-4fc2-b304-030ec763fe81),
  198. version(1.0)
  199. ]
  200. library VSSProvider
  201. {
  202. importlib("stdole2.tlb");
  203. }
  204. cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */")