This file is indexed.

/usr/x86_64-w64-mingw32/include/vss.h is in mingw-w64-x86-64-dev 2.0.3-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef _INC_VSS
#define _INC_VSS

#ifndef __IVssAdmin_FWD_DEFINED__
#define __IVssAdmin_FWD_DEFINED__
typedef struct IVssAdmin IVssAdmin;
#endif /* __IVssAdmin_FWD_DEFINED__ */

#ifndef __IVssBackupComponents_FWD_DEFINED__
#define __IVssBackupComponents_FWD_DEFINED__
typedef struct IVssBackupComponents IVssBackupComponents;
#endif /* __IVssBackupComponents_FWD_DEFINED__ */

#ifndef __IVssBackupComponentsEx_FWD_DEFINED__
#define __IVssBackupComponentsEx_FWD_DEFINED__
typedef struct IVssBackupComponentsEx IVssBackupComponentsEx;
#endif /* __IVssBackupComponentsEx_FWD_DEFINED__ */

#ifndef __IVssBackupComponentsEx2_FWD_DEFINED__
#define __IVssBackupComponentsEx2_FWD_DEFINED__
typedef struct IVssBackupComponentsEx2 IVssBackupComponentsEx2;
#endif /* __IVssBackupComponentsEx2_FWD_DEFINED__ */

#ifndef __IVssBackupComponentsEx3_FWD_DEFINED__
#define __IVssBackupComponentsEx3_FWD_DEFINED__
typedef struct IVssBackupComponentsEx3 IVssBackupComponentsEx3;
#endif /* __IVssBackupComponentsEx3_FWD_DEFINED__ */

#ifndef __IVssExamineWriterMetadata_FWD_DEFINED__
#define __IVssExamineWriterMetadata_FWD_DEFINED__
typedef struct IVssExamineWriterMetadata IVssExamineWriterMetadata;
#endif /* __IVssExamineWriterMetadata_FWD_DEFINED__ */

#ifndef __IVssExamineWriterMetadataEx_FWD_DEFINED__
#define __IVssExamineWriterMetadataEx_FWD_DEFINED__
typedef struct IVssExamineWriterMetadataEx IVssExamineWriterMetadataEx;
#endif /* __IVssExamineWriterMetadataEx_FWD_DEFINED__ */

#ifndef __IVssExamineWriterMetadataEx2_FWD_DEFINED__
#define __IVssExamineWriterMetadataEx2_FWD_DEFINED__
typedef struct IVssExamineWriterMetadataEx2 IVssExamineWriterMetadataEx2;
#endif /* __IVssExamineWriterMetadataEx2_FWD_DEFINED__ */

#ifndef __IVssWMComponent_FWD_DEFINED__
#define __IVssWMComponent_FWD_DEFINED__
typedef struct IVssWMComponent IVssWMComponent;
#endif /* __IVssWMComponent_FWD_DEFINED__ */

#ifndef __IVssWriterComponentsExt_FWD_DEFINED__
#define __IVssWriterComponentsExt_FWD_DEFINED__
typedef struct IVssWriterComponentsExt IVssWriterComponentsExt;
#endif /* __IVssWriterComponentsExt_FWD_DEFINED__ */

#ifndef __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__
#define __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__
typedef struct IVssDifferentialSoftwareSnapshotMgmt IVssDifferentialSoftwareSnapshotMgmt;
#endif /* __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__ */

#ifndef __IVssDifferentialSoftwareSnapshotMgmt2_FWD_DEFINED__
#define __IVssDifferentialSoftwareSnapshotMgmt2_FWD_DEFINED__
typedef struct IVssDifferentialSoftwareSnapshotMgmt2 IVssDifferentialSoftwareSnapshotMgmt2;
#endif /* __IVssDifferentialSoftwareSnapshotMgmt2_FWD_DEFINED__ */

#ifndef __IVssDifferentialSoftwareSnapshotMgmt3_FWD_DEFINED__
#define __IVssDifferentialSoftwareSnapshotMgmt3_FWD_DEFINED__
typedef struct IVssDifferentialSoftwareSnapshotMgmt3 IVssDifferentialSoftwareSnapshotMgmt3;
#endif /* __IVssDifferentialSoftwareSnapshotMgmt3_FWD_DEFINED__ */

#ifndef __IVssEnumMgmtObject_FWD_DEFINED__
#define __IVssEnumMgmtObject_FWD_DEFINED__
typedef struct IVssEnumMgmtObject IVssEnumMgmtObject;
#endif /* __IVssEnumMgmtObject_FWD_DEFINED__ */

#ifndef __IVssSnapshotMgmt_FWD_DEFINED__
#define __IVssSnapshotMgmt_FWD_DEFINED__
typedef struct IVssSnapshotMgmt IVssSnapshotMgmt;
#endif /* __IVssSnapshotMgmt_FWD_DEFINED__ */

#ifndef __IVssSnapshotMgmt2_FWD_DEFINED__
#define __IVssSnapshotMgmt2_FWD_DEFINED__
typedef struct IVssSnapshotMgmt2 IVssSnapshotMgmt2;
#endif /* __IVssSnapshotMgmt2_FWD_DEFINED__ */

#ifndef __IVssHardwareSnapshotProvider_FWD_DEFINED__
#define __IVssHardwareSnapshotProvider_FWD_DEFINED__
typedef struct IVssHardwareSnapshotProvider IVssHardwareSnapshotProvider;
#endif /* __IVssHardwareSnapshotProvider_FWD_DEFINED__ */

#ifndef __IVssHardwareSnapshotProviderEx_FWD_DEFINED__
#define __IVssHardwareSnapshotProviderEx_FWD_DEFINED__
typedef struct IVssHardwareSnapshotProviderEx IVssHardwareSnapshotProviderEx;
#endif /* __IVssHardwareSnapshotProviderEx_FWD_DEFINED__ */

#ifndef __IVssProviderCreateSnapshotSet_FWD_DEFINED__
#define __IVssProviderCreateSnapshotSet_FWD_DEFINED__
typedef struct IVssProviderCreateSnapshotSet IVssProviderCreateSnapshotSet;
#endif /* __IVssProviderCreateSnapshotSet_FWD_DEFINED__ */

#ifndef __IVssProviderNotifications_FWD_DEFINED__
#define __IVssProviderNotifications_FWD_DEFINED__
typedef struct IVssProviderNotifications IVssProviderNotifications;
#endif /* __IVssProviderNotifications_FWD_DEFINED__ */

#ifndef __IVssSoftwareSnapshotProvider_FWD_DEFINED__
#define __IVssSoftwareSnapshotProvider_FWD_DEFINED__
typedef struct IVssSoftwareSnapshotProvider IVssSoftwareSnapshotProvider;
#endif /* __IVssSoftwareSnapshotProvider_FWD_DEFINED__ */

#ifndef __IVssAsync_FWD_DEFINED__
#define __IVssAsync_FWD_DEFINED__
typedef struct IVssAsync IVssAsync;
#endif /* __IVssAsync_FWD_DEFINED__ */

#ifndef __IVssEnumObject_FWD_DEFINED__
#define __IVssEnumObject_FWD_DEFINED__
typedef struct IVssEnumObject IVssEnumObject;
#endif /* __IVssEnumObject_FWD_DEFINED__ */

#ifndef __IVssCreateExpressWriterMetadata_FWD_DEFINED__
#define __IVssCreateExpressWriterMetadata_FWD_DEFINED__
typedef struct IVssCreateExpressWriterMetadata IVssCreateExpressWriterMetadata;
#endif /* __IVssCreateExpressWriterMetadata_FWD_DEFINED__ */

#ifndef __IVssCreateWriterMetadata_FWD_DEFINED__
#define __IVssCreateWriterMetadata_FWD_DEFINED__
typedef struct IVssCreateWriterMetadata IVssCreateWriterMetadata;
#endif /* __IVssCreateWriterMetadata_FWD_DEFINED__ */

#ifndef __IVssCreateWriterMetadataEx_FWD_DEFINED__
#define __IVssCreateWriterMetadataEx_FWD_DEFINED__
typedef struct IVssCreateWriterMetadataEx IVssCreateWriterMetadataEx;
#endif /* __IVssCreateWriterMetadataEx_FWD_DEFINED__ */

#ifndef __IVssExpressWriter_FWD_DEFINED__
#define __IVssExpressWriter_FWD_DEFINED__
typedef struct IVssExpressWriter IVssExpressWriter;
#endif /* __IVssExpressWriter_FWD_DEFINED__ */

#ifndef __IVssWriterComponents_FWD_DEFINED__
#define __IVssWriterComponents_FWD_DEFINED__
typedef struct IVssWriterComponents IVssWriterComponents;
#endif /* __IVssWriterComponents_FWD_DEFINED__ */

#ifndef __IVssComponent_FWD_DEFINED__
#define __IVssComponent_FWD_DEFINED__
typedef struct IVssComponent IVssComponent;
#endif /* __IVssComponent_FWD_DEFINED__ */

#ifndef __IVssComponentEx_FWD_DEFINED__
#define __IVssComponentEx_FWD_DEFINED__
typedef struct IVssComponentEx IVssComponentEx;
#endif /* __IVssComponentEx_FWD_DEFINED__ */

#ifndef __IVssComponentEx2_FWD_DEFINED__
#define __IVssComponentEx2_FWD_DEFINED__
typedef struct IVssComponentEx2 IVssComponentEx2;
#endif /* __IVssComponentEx2_FWD_DEFINED__ */

#ifndef __IVssWMDependency_FWD_DEFINED__
#define __IVssWMDependency_FWD_DEFINED__
typedef struct IVssWMDependency IVssWMDependency;
#endif /* __IVssWMDependency_FWD_DEFINED__ */

#ifndef __IVssWMFiledesc_FWD_DEFINED__
#define __IVssWMFiledesc_FWD_DEFINED__
typedef struct IVssWMFiledesc IVssWMFiledesc;
#endif /* __IVssWMFiledesc_FWD_DEFINED__ */

/* http://msdn.microsoft.com/en-us/library/aa384641%28VS.85%29.aspx */
typedef WCHAR *VSS_PWSZ;
typedef LONGLONG VSS_TIMESTAMP;
typedef GUID VSS_ID;

#ifndef __cplusplus
typedef char bool;
#endif

typedef enum _VSS_APPLICATION_LEVEL {
  VSS_APP_UNKNOWN     = 0,
  VSS_APP_SYSTEM      = 1,
  VSS_APP_BACK_END    = 2,
  VSS_APP_FRONT_END   = 3,
  VSS_APP_AUTO        = -1 
} VSS_APPLICATION_LEVEL, *PVSS_APPLICATION_LEVEL;

typedef enum _VSS_BACKUP_TYPE {
  VSS_BT_UNDEFINED      = 0,
  VSS_BT_FULL           = 1,
  VSS_BT_INCREMENTAL    = 2,
  VSS_BT_DIFFERENTIAL   = 3,
  VSS_BT_LOG            = 4,
  VSS_BT_COPY           = 5,
  VSS_BT_OTHER          = 6 
} VSS_BACKUP_TYPE, *PVSS_BACKUP_TYPE;

/* Reserved for future use */
/*typedef enum _VSS_FASTRECOVERY_OPTIONS;*/

typedef enum _VSS_PROVIDER_TYPE {
  VSS_PROV_UNKNOWN    = 0,
  VSS_PROV_SYSTEM     = 1,
  VSS_PROV_SOFTWARE   = 2,
  VSS_PROV_HARDWARE   = 3 
} VSS_PROVIDER_TYPE, *PVSS_PROVIDER_TYPE;

typedef enum _VSS_SNAPSHOT_COMPATIBILITY {
  VSS_SC_DISABLE_DEFRAG         = 0x1,
  VSS_SC_DISABLE_CONTENTINDEX   = 0x2 
} VSS_SNAPSHOT_COMPATIBILITY;

typedef enum _VSS_SNAPSHOT_STATE {
  VSS_SS_UNKNOWN                      = 0x00,
  VSS_SS_PREPARING                    = 0x01,
  VSS_SS_PROCESSING_PREPARE           = 0x02,
  VSS_SS_PREPARED                     = 0x03,
  VSS_SS_PROCESSING_PRECOMMIT         = 0x04,
  VSS_SS_PRECOMMITTED                 = 0x05,
  VSS_SS_PROCESSING_COMMIT            = 0x06,
  VSS_SS_COMMITTED                    = 0x07,
  VSS_SS_PROCESSING_POSTCOMMIT        = 0x08,
  VSS_SS_PROCESSING_PREFINALCOMMIT    = 0x09,
  VSS_SS_PREFINALCOMMITTED            = 0x0a,
  VSS_SS_PROCESSING_POSTFINALCOMMIT   = 0x0b,
  VSS_SS_CREATED                      = 0x0c,
  VSS_SS_ABORTED                      = 0x0d,
  VSS_SS_DELETED                      = 0x0e,
  VSS_SS_POSTCOMMITTED                = 0x0f,
  VSS_SS_COUNT                        = 0x10 
} VSS_SNAPSHOT_STATE, *PVSS_SNAPSHOT_STATE;

typedef enum _VSS_VOLUME_SNAPSHOT_ATTRIBUTES {
  VSS_VOLSNAP_ATTR_PERSISTENT             = 0x00000001,
  VSS_VOLSNAP_ATTR_NO_AUTORECOVERY        = 0x00000002,
  VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE      = 0x00000004,
  VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE        = 0x00000008,
  VSS_VOLSNAP_ATTR_NO_WRITERS             = 0x00000010,
  VSS_VOLSNAP_ATTR_TRANSPORTABLE          = 0x00000020,
  VSS_VOLSNAP_ATTR_NOT_SURFACED           = 0x00000040,
  VSS_VOLSNAP_ATTR_NOT_TRANSACTED         = 0x00000080,
  VSS_VOLSNAP_ATTR_HARDWARE_ASSISTED      = 0x00010000,
  VSS_VOLSNAP_ATTR_DIFFERENTIAL           = 0x00020000,
  VSS_VOLSNAP_ATTR_PLEX                   = 0x00040000,
  VSS_VOLSNAP_ATTR_IMPORTED               = 0x00080000,
  VSS_VOLSNAP_ATTR_EXPOSED_LOCALLY        = 0x00100000,
  VSS_VOLSNAP_ATTR_EXPOSED_REMOTELY       = 0x00200000,
  VSS_VOLSNAP_ATTR_AUTORECOVER            = 0x00400000,
  VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY      = 0x00800000,
  VSS_VOLSNAP_ATTR_DELAYED_POSTSNAPSHOT   = 0x01000000,
  VSS_VOLSNAP_ATTR_TXF_RECOVERY           = 0x02000000 
} VSS_VOLUME_SNAPSHOT_ATTRIBUTES, *PVSS_VOLUME_SNAPSHOT_ATTRIBUTES;

typedef enum _VSS_SNAPSHOT_CONTEXT {
  VSS_CTX_BACKUP                      = 0,
  VSS_CTX_FILE_SHARE_BACKUP           = VSS_VOLSNAP_ATTR_NO_WRITERS,
  VSS_CTX_NAS_ROLLBACK                = ( ( VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE ) | VSS_VOLSNAP_ATTR_NO_WRITERS ),
  VSS_CTX_APP_ROLLBACK                = ( VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE ),
  VSS_CTX_CLIENT_ACCESSIBLE           = ( ( ( VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE ) | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE ) | VSS_VOLSNAP_ATTR_NO_WRITERS ),
  VSS_CTX_CLIENT_ACCESSIBLE_WRITERS   = ( ( VSS_VOLSNAP_ATTR_PERSISTENT | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE ) | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE ),
  VSS_CTX_ALL                         = 0xffffffff
} VSS_SNAPSHOT_CONTEXT, *PVSS_SNAPSHOT_CONTEXT;

typedef enum _VSS_WRITER_STATE {
  VSS_WS_UNKNOWN                       = 0,
  VSS_WS_STABLE                        = 1,
  VSS_WS_WAITING_FOR_FREEZE            = 2,
  VSS_WS_WAITING_FOR_THAW              = 3,
  VSS_WS_WAITING_FOR_POST_SNAPSHOT     = 4,
  VSS_WS_WAITING_FOR_BACKUP_COMPLETE   = 5,
  VSS_WS_FAILED_AT_IDENTIFY            = 6,
  VSS_WS_FAILED_AT_PREPARE_BACKUP      = 7,
  VSS_WS_FAILED_AT_PREPARE_SNAPSHOT    = 8,
  VSS_WS_FAILED_AT_FREEZE              = 9,
  VSS_WS_FAILED_AT_THAW                = 10,
  VSS_WS_FAILED_AT_POST_SNAPSHOT       = 11,
  VSS_WS_FAILED_AT_BACKUP_COMPLETE     = 12,
  VSS_WS_FAILED_AT_PRE_RESTORE         = 13,
  VSS_WS_FAILED_AT_POST_RESTORE        = 14,
  VSS_WS_FAILED_AT_BACKUPSHUTDOWN      = 15,
  VSS_WS_COUNT                         = 16 
} VSS_WRITER_STATE, *PVSS_WRITER_STATE;

typedef enum _VSS_SNAPSHOT_PROPERTY_ID {
  VSS_SPROPID_UNKNOWN               = 0x00000000,
  VSS_SPROPID_SNAPSHOT_ID           = 0x00000001,
  VSS_SPROPID_SNAPSHOT_SET_ID       = 0x00000002,
  VSS_SPROPID_SNAPSHOTS_COUNT       = 0x00000003,
  VSS_SPROPID_SNAPSHOT_DEVICE       = 0x00000004,
  VSS_SPROPID_ORIGINAL_VOLUME       = 0x00000005,
  VSS_SPROPID_ORIGINATING_MACHINE   = 0x00000006,
  VSS_SPROPID_SERVICE_MACHINE       = 0x00000007,
  VSS_SPROPID_EXPOSED_NAME          = 0x00000008,
  VSS_SPROPID_EXPOSED_PATH          = 0x00000009,
  VSS_SPROPID_PROVIDER_ID           = 0x0000000A,
  VSS_SPROPID_SNAPSHOT_ATTRIBUTES   = 0x0000000B,
  VSS_SPROPID_CREATION_TIMESTAMP    = 0x0000000C,
  VSS_SPROPID_STATUS                = 0x0000000D 
} VSS_SNAPSHOT_PROPERTY_ID, *PVSS_SNAPSHOT_PROPERTY_ID;

typedef enum _VSS_OBJECT_TYPE {
  VSS_OBJECT_UNKNOWN        = 0,
  VSS_OBJECT_NONE           = 1,
  VSS_OBJECT_SNAPSHOT_SET   = 2,
  VSS_OBJECT_SNAPSHOT       = 3,
  VSS_OBJECT_PROVIDER       = 4,
  VSS_OBJECT_TYPE_COUNT     = 5 
} VSS_OBJECT_TYPE, *PVSS_OBJECT_TYPE;

#if (_WIN32_WINNT >= 0x0600)

typedef enum VSS_BACKUP_SCHEMA {
  VSS_BS_UNDEFINED                            = 0x00000000,
  VSS_BS_DIFFERENTIAL                         = 0x00000001,
  VSS_BS_INCREMENTAL                          = 0x00000002,
  VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL   = 0x00000004,
  VSS_BS_LOG                                  = 0x00000008,
  VSS_BS_COPY                                 = 0x00000010,
  VSS_BS_TIMESTAMPED                          = 0x00000020,
  VSS_BS_LAST_MODIFY                          = 0x00000040,
  VSS_BS_LSN                                  = 0x00000080,
  VSS_BS_WRITER_SUPPORTS_NEW_TARGET           = 0x00000100,
  VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE    = 0x00000200,
  VSS_BS_INDEPENDENT_SYSTEM_STATE             = 0x00000400,
  VSS_BS_ROLLFORWARD_RESTORE                  = 0x00001000,
  VSS_BS_RESTORE_RENAME                       = 0x00002000,
  VSS_BS_AUTHORITATIVE_RESTORE                = 0x00004000,
  VSS_BS_WRITER_SUPPORTS_PARALLEL_RESTORES    = 0x00008000 
} VSS_BACKUP_SCHEMA, *PVSS_BACKUP_SCHEMA;

typedef enum _VSS_FILE_SPEC_BACKUP_TYPE {
  VSS_FSBT_FULL_BACKUP_REQUIRED             = 0x00000001,
  VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED     = 0x00000002,
  VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED      = 0x00000004,
  VSS_FSBT_LOG_BACKUP_REQUIRED              = 0x00000008,
  VSS_FSBT_FULL_SNAPSHOT_REQUIRED           = 0x00000100,
  VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED   = 0x00000200,
  VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED    = 0x00000400,
  VSS_FSBT_LOG_SNAPSHOT_REQUIRED            = 0x00000800,
  VSS_FSBT_ALL_BACKUP_REQUIRED              = 0x0000000F,
  VSS_FSBT_ALL_SNAPSHOT_REQUIRED            = 0x00000F00 
} VSS_FILE_SPEC_BACKUP_TYPE, *PVSS_FILE_SPEC_BACKUP_TYPE;

typedef enum _VSS_HARDWARE_OPTIONS {
  VSS_BREAKEX_FLAG_MASK_LUNS                      = 0x00000001,
  VSS_BREAKEX_FLAG_MAKE_READ_WRITE                = 0x00000002,
  VSS_BREAKEX_FLAG_REVERT_IDENTITY_ALL            = 0x00000004,
  VSS_BREAKEX_FLAG_REVERT_IDENTITY_NONE           = 0x00000008,
  VSS_ONLUNSTATECHANGE_NOTIFY_READ_WRITE          = 0x00000100,
  VSS_ONLUNSTATECHANGE_NOTIFY_LUN_PRE_RECOVERY    = 0x00000200,
  VSS_ONLUNSTATECHANGE_NOTIFY_LUN_POST_RECOVERY   = 0x00000400,
  VSS_ONLUNSTATECHANGE_DO_MASK_LUNS               = 0x00000800 
} VSS_HARDWARE_OPTIONS, *PVSS_HARDWARE_OPTIONS;

typedef enum _VSS_RESTORE_TYPE {
  VSS_RTYPE_UNDEFINED   = 0,
  VSS_RTYPE_BY_COPY     = 1,
  VSS_RTYPE_IMPORT      = 2,
  VSS_RTYPE_OTHER       = 3 
} VSS_RESTORE_TYPE, *PVSS_RESTORE_TYPE;

typedef enum _VSS_ROLLFORWARD_TYPE {
  VSS_RF_UNDEFINED   = 0,
  VSS_RF_NONE        = 1,
  VSS_RF_ALL         = 2,
  VSS_RF_PARTIAL     = 3 
} VSS_ROLLFORWARD_TYPE, *PVSS_ROLLFORWARD_TYPE;

#endif /*(_WIN32_WINNT >= 0x0600)*/

#if (_WIN32_WINNT >= 0x0601)
typedef enum _VSS_RECOVERY_OPTIONS {
  VSS_RECOVERY_REVERT_IDENTITY_ALL   = 0x00000100,
  VSS_RECOVERY_NO_VOLUME_CHECK       = 0x00000200 
} VSS_RECOVERY_OPTIONS;
#endif /*(_WIN32_WINNT >= 0x0601)*/

typedef struct _VSS_SNAPSHOT_PROP {
  VSS_ID             m_SnapshotId;
  VSS_ID             m_SnapshotSetId;
  LONG               m_lSnapshotsCount;
  VSS_PWSZ           m_pwszSnapshotDeviceObject;
  VSS_PWSZ           m_pwszOriginalVolumeName;
  VSS_PWSZ           m_pwszOriginatingMachine;
  VSS_PWSZ           m_pwszServiceMachine;
  VSS_PWSZ           m_pwszExposedName;
  VSS_PWSZ           m_pwszExposedPath;
  VSS_ID             m_ProviderId;
  LONG               m_lSnapshotAttributes;
  VSS_TIMESTAMP      m_tsCreationTimestamp;
  VSS_SNAPSHOT_STATE m_eStatus;
} VSS_SNAPSHOT_PROP, *PVSS_SNAPSHOT_PROP;

typedef struct _VSS_PROVIDER_PROP {
  VSS_ID            m_ProviderId;
  VSS_PWSZ          m_pwszProviderName;
  VSS_PROVIDER_TYPE m_eProviderType;
  VSS_PWSZ          m_pwszProviderVersion;
  VSS_ID            m_ProviderVersionId;
  CLSID             m_ClassId;
} VSS_PROVIDER_PROP, *PVSS_PROVIDER_PROP;

typedef union _VSS_OBJECT_UNION {
  /*[case(VSS_OBJECT_SNAPSHOT)]*/
    VSS_SNAPSHOT_PROP Snap;
  /*[case(VSS_OBJECT_PROVIDER)]*/
    VSS_PROVIDER_PROP Prov;
} VSS_OBJECT_UNION;

typedef struct _VSS_OBJECT_PROP {
  VSS_OBJECT_TYPE  Type;
  VSS_OBJECT_UNION Obj;
} VSS_OBJECT_PROP, *PVSS_OBJECT_PROP;

#undef  INTERFACE
#define INTERFACE IVssAsync
/* IID_IVssAsync is defined as 507C37B4-CF5B-4e95-B0AF-14EB9767467E */
#ifdef __GNUC__
#warning COM interfaces layout in this header has not been verified.
#warning COM interfaces with incorrect layout may not work at all.
__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
DECLARE_INTERFACE_(IVssAsync,IUnknown)
{
    BEGIN_INTERFACE

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IVssAsync methods */
    STDMETHOD_(HRESULT,Cancel)(THIS) PURE;
    STDMETHOD_(HRESULT,Wait)(THIS_ DWORD dwMilliseconds) PURE;
    STDMETHOD_(HRESULT,QueryStatus)(THIS_ HRESULT *pHrResult,INT *pReserved) PURE;

    END_INTERFACE
};
#ifdef COBJMACROS
#define IVssAsync_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssAsync_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssAsync_Release(This) (This)->lpVtbl->Release(This)
#define IVssAsync_Cancel() (This)->lpVtbl->Cancel(This)
#define IVssAsync_Wait(This,dwMilliseconds) (This)->lpVtbl->Wait(This,dwMilliseconds)
#define IVssAsync_QueryStatus(This,pHrResult,pReserved) (This)->lpVtbl->QueryStatus(This,pHrResult,pReserved)
#endif /*COBJMACROS*/

#undef  INTERFACE
#define INTERFACE IVssEnumObject
/* IID_IVssEnumObject is defined as AE1C7110-2F60-11d3-8A39-00C04F72D8E3 */
#ifdef __GNUC__
#warning COM interfaces layout in this header has not been verified.
#warning COM interfaces with incorrect layout may not work at all.
__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
DECLARE_INTERFACE_(IVssEnumObject,IUnknown)
{
    BEGIN_INTERFACE

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IVssEnumObject methods */
    STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt,VSS_OBJECT_PROP *rgelt,ULONG *pceltFetched) PURE;
    STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE;
    STDMETHOD_(HRESULT,Reset)(THIS) PURE;
    STDMETHOD_(HRESULT,Clone)(THIS_ IVssEnumObject **ppEnum) PURE;

    END_INTERFACE
};
#ifdef COBJMACROS
#define IVssEnumObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssEnumObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssEnumObject_Release(This) (This)->lpVtbl->Release(This)
#define IVssEnumObject_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IVssEnumObject_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IVssEnumObject_Reset() (This)->lpVtbl->Reset(This)
#define IVssEnumObject_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#endif /*COBJMACROS*/

#include <vswriter.h>
#include <vsbackup.h>

#endif /*_INC_VSS*/