vss.idl 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  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. cpp_quote("#include \"vsserror.h\" ")
  11. cpp_quote("")
  12. typedef WCHAR *VSS_PWSZ;
  13. typedef LONGLONG VSS_TIMESTAMP;
  14. typedef GUID VSS_ID;
  15. cpp_quote("")
  16. typedef enum _VSS_OBJECT_TYPE {
  17. VSS_OBJECT_UNKNOWN = 0,
  18. VSS_OBJECT_NONE,
  19. VSS_OBJECT_SNAPSHOT_SET,
  20. VSS_OBJECT_SNAPSHOT,
  21. VSS_OBJECT_PROVIDER,
  22. VSS_OBJECT_TYPE_COUNT
  23. } VSS_OBJECT_TYPE, *PVSS_OBJECT_TYPE;
  24. cpp_quote("")
  25. typedef enum _VSS_SNAPSHOT_STATE {
  26. VSS_SS_UNKNOWN = 0,
  27. VSS_SS_PREPARING,
  28. VSS_SS_PROCESSING_PREPARE,
  29. VSS_SS_PREPARED,
  30. VSS_SS_PROCESSING_PRECOMMIT,
  31. VSS_SS_PRECOMMITTED,
  32. VSS_SS_PROCESSING_COMMIT,
  33. VSS_SS_COMMITTED,
  34. VSS_SS_PROCESSING_POSTCOMMIT,
  35. VSS_SS_PROCESSING_PREFINALCOMMIT,
  36. VSS_SS_PREFINALCOMMITTED,
  37. VSS_SS_PROCESSING_POSTFINALCOMMIT,
  38. VSS_SS_CREATED,
  39. VSS_SS_ABORTED,
  40. VSS_SS_DELETED,
  41. VSS_SS_POSTCOMMITTED,
  42. VSS_SS_COUNT
  43. } VSS_SNAPSHOT_STATE, *PVSS_SNAPSHOT_STATE;
  44. cpp_quote("")
  45. typedef enum _VSS_VOLUME_SNAPSHOT_ATTRIBUTES {
  46. VSS_VOLSNAP_ATTR_PERSISTENT = 0x00000001,
  47. VSS_VOLSNAP_ATTR_NO_AUTORECOVERY = 0x00000002,
  48. VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE = 0x00000004,
  49. VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE = 0x00000008,
  50. VSS_VOLSNAP_ATTR_NO_WRITERS = 0x00000010,
  51. VSS_VOLSNAP_ATTR_TRANSPORTABLE = 0x00000020,
  52. VSS_VOLSNAP_ATTR_NOT_SURFACED = 0x00000040,
  53. VSS_VOLSNAP_ATTR_NOT_TRANSACTED = 0x00000080,
  54. VSS_VOLSNAP_ATTR_HARDWARE_ASSISTED = 0x00010000,
  55. VSS_VOLSNAP_ATTR_DIFFERENTIAL = 0x00020000,
  56. VSS_VOLSNAP_ATTR_PLEX = 0x00040000,
  57. VSS_VOLSNAP_ATTR_IMPORTED = 0x00080000,
  58. VSS_VOLSNAP_ATTR_EXPOSED_LOCALLY = 0x00100000,
  59. VSS_VOLSNAP_ATTR_EXPOSED_REMOTELY = 0x00200000,
  60. VSS_VOLSNAP_ATTR_AUTORECOVER = 0x00400000,
  61. VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY = 0x00800000,
  62. VSS_VOLSNAP_ATTR_DELAYED_POSTSNAPSHOT = 0x01000000,
  63. VSS_VOLSNAP_ATTR_TXF_RECOVERY = 0x02000000,
  64. VSS_VOLSNAP_ATTR_FILE_SHARE = 0x04000000
  65. } VSS_VOLUME_SNAPSHOT_ATTRIBUTES, *PVSS_VOLUME_SNAPSHOT_ATTRIBUTES;
  66. cpp_quote("")
  67. typedef enum _VSS_SNAPSHOT_CONTEXT {
  68. VSS_CTX_BACKUP = 0x00000000,
  69. VSS_CTX_FILE_SHARE_BACKUP = VSS_VOLSNAP_ATTR_NO_WRITERS,
  70. VSS_CTX_NAS_ROLLBACK = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE | VSS_VOLSNAP_ATTR_NO_WRITERS,
  71. VSS_CTX_APP_ROLLBACK = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE,
  72. VSS_CTX_CLIENT_ACCESSIBLE = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE | VSS_VOLSNAP_ATTR_NO_WRITERS,
  73. VSS_CTX_CLIENT_ACCESSIBLE_WRITERS = VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE,
  74. VSS_CTX_ALL = 0xFFFFFFFF
  75. } VSS_SNAPSHOT_CONTEXT, *PVSS_SNAPSHOT_CONTEXT;
  76. cpp_quote("")
  77. typedef enum _VSS_PROVIDER_CAPABILITIES {
  78. VSS_PRV_CAPABILITY_LEGACY = 0x00000001,
  79. VSS_PRV_CAPABILITY_COMPLIANT = 0x00000002,
  80. VSS_PRV_CAPABILITY_LUN_REPOINT = 0x00000004,
  81. VSS_PRV_CAPABILITY_LUN_RESYNC = 0x00000008,
  82. VSS_PRV_CAPABILITY_OFFLINE_CREATION = 0x00000010,
  83. VSS_PRV_CAPABILITY_MULTIPLE_IMPORT = 0x00000020,
  84. VSS_PRV_CAPABILITY_RECYCLING = 0x00000040,
  85. VSS_PRV_CAPABILITY_PLEX = 0x00000080,
  86. VSS_PRV_CAPABILITY_DIFFERENTIAL = 0x00000100,
  87. VSS_PRV_CAPABILITY_CLUSTERED = 0x00000200
  88. } VSS_PROVIDER_CAPABILITIES, *PVSS_PROVIDER_CAPABILITIES;
  89. cpp_quote("")
  90. typedef enum _VSS_HARDWARE_OPTIONS {
  91. VSS_BREAKEX_FLAG_MASK_LUNS = 0x00000001,
  92. VSS_BREAKEX_FLAG_MAKE_READ_WRITE = 0x00000002,
  93. VSS_BREAKEX_FLAG_REVERT_IDENTITY_ALL = 0x00000004,
  94. VSS_BREAKEX_FLAG_REVERT_IDENTITY_NONE = 0x00000008,
  95. VSS_ONLUNSTATECHANGE_NOTIFY_READ_WRITE = 0x00000100,
  96. VSS_ONLUNSTATECHANGE_NOTIFY_LUN_PRE_RECOVERY = 0x00000200,
  97. VSS_ONLUNSTATECHANGE_NOTIFY_LUN_POST_RECOVERY = 0x00000400,
  98. VSS_ONLUNSTATECHANGE_DO_MASK_LUNS = 0x00000800
  99. } VSS_HARDWARE_OPTIONS, *PVSS_HARDWARE_OPTIONS;
  100. cpp_quote("")
  101. typedef enum _VSS_RECOVERY_OPTIONS {
  102. VSS_RECOVERY_REVERT_IDENTITY_ALL = 0x00000100,
  103. VSS_RECOVERY_NO_VOLUME_CHECK = 0x00000200
  104. } VSS_RECOVERY_OPTIONS, *PVSS_RECOVERY_OPTIONS;
  105. cpp_quote("")
  106. typedef enum _VSS_WRITER_STATE {
  107. VSS_WS_UNKNOWN = 0,
  108. VSS_WS_STABLE,
  109. VSS_WS_WAITING_FOR_FREEZE,
  110. VSS_WS_WAITING_FOR_THAW,
  111. VSS_WS_WAITING_FOR_POST_SNAPSHOT,
  112. VSS_WS_WAITING_FOR_BACKUP_COMPLETE,
  113. VSS_WS_FAILED_AT_IDENTIFY,
  114. VSS_WS_FAILED_AT_PREPARE_BACKUP,
  115. VSS_WS_FAILED_AT_PREPARE_SNAPSHOT,
  116. VSS_WS_FAILED_AT_FREEZE,
  117. VSS_WS_FAILED_AT_THAW,
  118. VSS_WS_FAILED_AT_POST_SNAPSHOT,
  119. VSS_WS_FAILED_AT_BACKUP_COMPLETE,
  120. VSS_WS_FAILED_AT_PRE_RESTORE,
  121. VSS_WS_FAILED_AT_POST_RESTORE,
  122. VSS_WS_FAILED_AT_BACKUPSHUTDOWN,
  123. VSS_WS_COUNT
  124. } VSS_WRITER_STATE, *PVSS_WRITER_STATE;
  125. cpp_quote("")
  126. typedef enum _VSS_BACKUP_TYPE {
  127. VSS_BT_UNDEFINED,
  128. VSS_BT_FULL,
  129. VSS_BT_INCREMENTAL,
  130. VSS_BT_DIFFERENTIAL,
  131. VSS_BT_LOG,
  132. VSS_BT_COPY,
  133. VSS_BT_OTHER
  134. } VSS_BACKUP_TYPE, *PVSS_BACKUP_TYPE;
  135. cpp_quote("")
  136. typedef enum _VSS_RESTORE_TYPE {
  137. VSS_RTYPE_UNDEFINED,
  138. VSS_RTYPE_BY_COPY,
  139. VSS_RTYPE_IMPORT,
  140. VSS_RTYPE_OTHER
  141. } VSS_RESTORE_TYPE, *PVSS_RESTORE_TYPE;
  142. cpp_quote("")
  143. typedef enum _VSS_ROLLFORWARD_TYPE {
  144. VSS_RF_UNDEFINED,
  145. VSS_RF_NONE,
  146. VSS_RF_ALL,
  147. VSS_RF_PARTIAL
  148. } VSS_ROLLFORWARD_TYPE, *PVSS_ROLLFORWARD_TYPE;
  149. cpp_quote("")
  150. typedef enum _VSS_PROVIDER_TYPE {
  151. VSS_PROV_UNKNOWN = 0,
  152. VSS_PROV_SYSTEM = 1,
  153. VSS_PROV_SOFTWARE = 2,
  154. VSS_PROV_HARDWARE = 3,
  155. VSS_PROV_FILESHARE = 4
  156. } VSS_PROVIDER_TYPE, *PVSS_PROVIDER_TYPE;
  157. cpp_quote("")
  158. typedef enum _VSS_APPLICATION_LEVEL {
  159. VSS_APP_UNKNOWN = 0,
  160. VSS_APP_SYSTEM = 1,
  161. VSS_APP_BACK_END = 2,
  162. VSS_APP_FRONT_END = 3,
  163. VSS_APP_SYSTEM_RM = 4,
  164. VSS_APP_AUTO = -1
  165. } VSS_APPLICATION_LEVEL, *PVSS_APPLICATION_LEVEL;
  166. cpp_quote("")
  167. typedef enum _VSS_SNAPSHOT_COMPATIBILITY {
  168. VSS_SC_DISABLE_DEFRAG = 0x1,
  169. VSS_SC_DISABLE_CONTENTINDEX = 0x2
  170. } VSS_SNAPSHOT_COMPATIBILITY;
  171. cpp_quote("")
  172. typedef enum _VSS_SNAPSHOT_PROPERTY_ID {
  173. VSS_SPROPID_UNKNOWN = 0x00000000,
  174. VSS_SPROPID_SNAPSHOT_ID = 0x00000001,
  175. VSS_SPROPID_SNAPSHOT_SET_ID = 0x00000002,
  176. VSS_SPROPID_SNAPSHOTS_COUNT = 0x00000003,
  177. VSS_SPROPID_SNAPSHOT_DEVICE = 0x00000004,
  178. VSS_SPROPID_ORIGINAL_VOLUME = 0x00000005,
  179. VSS_SPROPID_ORIGINATING_MACHINE = 0x00000006,
  180. VSS_SPROPID_SERVICE_MACHINE = 0x00000007,
  181. VSS_SPROPID_EXPOSED_NAME = 0x00000008,
  182. VSS_SPROPID_EXPOSED_PATH = 0x00000009,
  183. VSS_SPROPID_PROVIDER_ID = 0x0000000A,
  184. VSS_SPROPID_SNAPSHOT_ATTRIBUTES = 0x0000000B,
  185. VSS_SPROPID_CREATION_TIMESTAMP = 0x0000000C,
  186. VSS_SPROPID_STATUS = 0x0000000D
  187. } VSS_SNAPSHOT_PROPERTY_ID, *PVSS_SNAPSHOT_PROPERTY_ID;
  188. cpp_quote("")
  189. typedef enum _VSS_FILE_SPEC_BACKUP_TYPE {
  190. VSS_FSBT_FULL_BACKUP_REQUIRED = 0x00000001,
  191. VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED = 0x00000002,
  192. VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED = 0x00000004,
  193. VSS_FSBT_LOG_BACKUP_REQUIRED = 0x00000008,
  194. VSS_FSBT_FULL_SNAPSHOT_REQUIRED = 0x00000100,
  195. VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED = 0x00000200,
  196. VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED = 0x00000400,
  197. VSS_FSBT_LOG_SNAPSHOT_REQUIRED = 0x00000800,
  198. VSS_FSBT_CREATED_DURING_BACKUP = 0x00010000,
  199. VSS_FSBT_ALL_BACKUP_REQUIRED = 0x0000000F,
  200. VSS_FSBT_ALL_SNAPSHOT_REQUIRED = 0x00000F00
  201. } VSS_FILE_SPEC_BACKUP_TYPE, *PVSS_FILE_SPEC_BACKUP_TYPE;
  202. cpp_quote("")
  203. typedef enum _VSS_BACKUP_SCHEMA {
  204. VSS_BS_UNDEFINED = 0x00000000,
  205. VSS_BS_DIFFERENTIAL = 0x00000001,
  206. VSS_BS_INCREMENTAL = 0x00000002,
  207. VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL = 0x00000004,
  208. VSS_BS_LOG = 0x00000008,
  209. VSS_BS_COPY = 0x00000010,
  210. VSS_BS_TIMESTAMPED = 0x00000020,
  211. VSS_BS_LAST_MODIFY = 0x00000040,
  212. VSS_BS_LSN = 0x00000080,
  213. VSS_BS_WRITER_SUPPORTS_NEW_TARGET = 0x00000100,
  214. VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE = 0x00000200,
  215. VSS_BS_INDEPENDENT_SYSTEM_STATE = 0x00000400,
  216. VSS_BS_ROLLFORWARD_RESTORE = 0x00001000,
  217. VSS_BS_RESTORE_RENAME = 0x00002000,
  218. VSS_BS_AUTHORITATIVE_RESTORE = 0x00004000,
  219. VSS_BS_WRITER_SUPPORTS_PARALLEL_RESTORES = 0x00008000
  220. } VSS_BACKUP_SCHEMA, *PVSS_BACKUP_SCHEMA;
  221. cpp_quote("")
  222. typedef struct _VSS_SNAPSHOT_PROP {
  223. VSS_ID m_SnapshotId;
  224. VSS_ID m_SnapshotSetId;
  225. LONG m_lSnapshotsCount;
  226. VSS_PWSZ m_pwszSnapshotDeviceObject;
  227. VSS_PWSZ m_pwszOriginalVolumeName;
  228. VSS_PWSZ m_pwszOriginatingMachine;
  229. VSS_PWSZ m_pwszServiceMachine;
  230. VSS_PWSZ m_pwszExposedName;
  231. VSS_PWSZ m_pwszExposedPath;
  232. VSS_ID m_ProviderId;
  233. LONG m_lSnapshotAttributes;
  234. VSS_TIMESTAMP m_tsCreationTimestamp;
  235. VSS_SNAPSHOT_STATE m_eStatus;
  236. } VSS_SNAPSHOT_PROP, *PVSS_SNAPSHOT_PROP;
  237. cpp_quote("")
  238. typedef struct _VSS_PROVIDER_PROP {
  239. VSS_ID m_ProviderId;
  240. VSS_PWSZ m_pwszProviderName;
  241. VSS_PROVIDER_TYPE m_eProviderType;
  242. VSS_PWSZ m_pwszProviderVersion;
  243. VSS_ID m_ProviderVersionId;
  244. CLSID m_ClassId;
  245. } VSS_PROVIDER_PROP, *PVSS_PROVIDER_PROP;
  246. cpp_quote("")
  247. [switch_type(VSS_OBJECT_TYPE)]
  248. typedef union {
  249. [case(VSS_OBJECT_SNAPSHOT)] VSS_SNAPSHOT_PROP Snap;
  250. [case(VSS_OBJECT_PROVIDER)] VSS_PROVIDER_PROP Prov;
  251. [default];
  252. } VSS_OBJECT_UNION;
  253. cpp_quote("")
  254. typedef struct _VSS_OBJECT_PROP {
  255. VSS_OBJECT_TYPE Type;
  256. [switch_is(Type)] VSS_OBJECT_UNION Obj;
  257. } VSS_OBJECT_PROP, *PVSS_OBJECT_PROP;
  258. cpp_quote("")
  259. [
  260. object,
  261. uuid(ae1c7110-2f60-11d3-8a39-00c04f72d8e3),
  262. pointer_default(unique)
  263. ]
  264. interface IVssEnumObject : IUnknown {
  265. HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] VSS_OBJECT_PROP *rgelt, [out] ULONG *pceltFetched);
  266. HRESULT Skip([in] ULONG celt);
  267. HRESULT Reset();
  268. HRESULT Clone([in, out] IVssEnumObject **ppenum);
  269. };
  270. cpp_quote("")
  271. [
  272. object,
  273. uuid(507c37b4-cf5b-4e95-b0af-14eb9767467e),
  274. pointer_default(unique)
  275. ]
  276. interface IVssAsync : IUnknown {
  277. HRESULT Cancel();
  278. HRESULT Wait([in, defaultvalue(0xFFFFFFFF)] DWORD dwMilliseconds);
  279. HRESULT QueryStatus([out] HRESULT *pHrResult, [in, out, unique] INT *pReserved);
  280. };
  281. cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")