ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/virtdisk.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 22412 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
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 #ifndef _INC_VIRTDISK
7 #define _INC_VIRTDISK
8
9 #if (_WIN32_WINNT >= 0x0601)
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 #define VIRTDISKAPI DECLSPEC_IMPORT
15
16 #define VIRTUAL_STORAGE_TYPE_DEVICE_UNKNOWN 0
17 #define VIRTUAL_STORAGE_TYPE_DEVICE_ISO 1
18 #define VIRTUAL_STORAGE_TYPE_DEVICE_VHD 2
19 #if (_WIN32_WINNT >= 0x0A00)
20 #define VIRTUAL_STORAGE_TYPE_DEVICE_VHDX 3
21 #endif /* _WIN32_WINNT >= 0x0A00 */
22
23 typedef enum _ATTACH_VIRTUAL_DISK_FLAG {
24 ATTACH_VIRTUAL_DISK_FLAG_NONE = 0x00000000,
25 ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY = 0x00000001,
26 ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER = 0x00000002,
27 ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME = 0x00000004,
28 ATTACH_VIRTUAL_DISK_FLAG_NO_LOCAL_HOST = 0x00000008
29 } ATTACH_VIRTUAL_DISK_FLAG;
30
31 typedef enum _ATTACH_VIRTUAL_DISK_VERSION {
32 ATTACH_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
33 ATTACH_VIRTUAL_DISK_VERSION_1 = 1
34 } ATTACH_VIRTUAL_DISK_VERSION;
35
36 typedef enum _COMPACT_VIRTUAL_DISK_FLAG {
37 COMPACT_VIRTUAL_DISK_FLAG_NONE = 0x00000000
38 } COMPACT_VIRTUAL_DISK_FLAG;
39
40 typedef enum _COMPACT_VIRTUAL_DISK_VERSION {
41 COMPACT_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
42 COMPACT_VIRTUAL_DISK_VERSION_1 = 1
43 } COMPACT_VIRTUAL_DISK_VERSION;
44
45 typedef enum _CREATE_VIRTUAL_DISK_FLAG {
46 CREATE_VIRTUAL_DISK_FLAG_NONE = 0x00000000,
47 CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION = 0x00000001
48 #if (_WIN32_WINNT >= 0x0602)
49 ,
50 CREATE_VIRTUAL_DISK_FLAG_PREVENT_WRITES_TO_SOURCE_DISK = 0x2,
51 CREATE_VIRTUAL_DISK_FLAG_DO_NOT_COPY_METADATA_FROM_PARENT = 0x4
52 #endif /* _WIN32_WINNT >= 0x0602 */
53 } CREATE_VIRTUAL_DISK_FLAG;
54
55 typedef enum _CREATE_VIRTUAL_DISK_VERSION {
56 CREATE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
57 CREATE_VIRTUAL_DISK_VERSION_1 = 1
58 #if (_WIN32_WINNT >= 0x0602)
59 ,
60 CREATE_VIRTUAL_DISK_VERSION_2 = 2
61 #endif /* _WIN32_WINNT >= 0x0602 */
62 } CREATE_VIRTUAL_DISK_VERSION;
63
64 typedef enum _DEPENDENT_DISK_FLAG {
65 DEPENDENT_DISK_FLAG_NONE = 0x00000000,
66 DEPENDENT_DISK_FLAG_MULT_BACKING_FILES = 0x00000001,
67 DEPENDENT_DISK_FLAG_FULLY_ALLOCATED = 0x00000002,
68 DEPENDENT_DISK_FLAG_READ_ONLY = 0x00000004,
69 DEPENDENT_DISK_FLAG_REMOTE = 0x00000008,
70 DEPENDENT_DISK_FLAG_SYSTEM_VOLUME = 0x00000010,
71 DEPENDENT_DISK_FLAG_SYSTEM_VOLUME_PARENT = 0x00000020,
72 DEPENDENT_DISK_FLAG_REMOVABLE = 0x00000040,
73 DEPENDENT_DISK_FLAG_NO_DRIVE_LETTER = 0x00000080,
74 DEPENDENT_DISK_FLAG_PARENT = 0x00000100,
75 DEPENDENT_DISK_FLAG_NO_HOST_DISK = 0x00000200,
76 DEPENDENT_DISK_FLAG_PERMANENT_LIFETIME = 0x00000400
77 } DEPENDENT_DISK_FLAG;
78
79 typedef enum _EXPAND_VIRTUAL_DISK_VERSION {
80 EXPAND_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
81 EXPAND_VIRTUAL_DISK_VERSION_1 = 1
82 } EXPAND_VIRTUAL_DISK_VERSION;
83
84 typedef enum _DETACH_VIRTUAL_DISK_FLAG {
85 DETACH_VIRTUAL_DISK_FLAG_NONE = 0x00000000
86 } DETACH_VIRTUAL_DISK_FLAG;
87
88 typedef enum _EXPAND_VIRTUAL_DISK_FLAG {
89 EXPAND_VIRTUAL_DISK_FLAG_NONE = 0x00000000
90 } EXPAND_VIRTUAL_DISK_FLAG;
91
92 typedef enum _GET_STORAGE_DEPENDENCY_FLAG {
93 GET_STORAGE_DEPENDENCY_FLAG_NONE = 0x00000000,
94 GET_STORAGE_DEPENDENCY_FLAG_HOST_VOLUMES = 0x00000001,
95 GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE = 0x00000002
96 } GET_STORAGE_DEPENDENCY_FLAG;
97
98 typedef enum _GET_VIRTUAL_DISK_INFO_VERSION {
99 GET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0,
100 GET_VIRTUAL_DISK_INFO_SIZE = 1,
101 GET_VIRTUAL_DISK_INFO_IDENTIFIER = 2,
102 GET_VIRTUAL_DISK_INFO_PARENT_LOCATION = 3,
103 GET_VIRTUAL_DISK_INFO_PARENT_IDENTIFIER = 4,
104 GET_VIRTUAL_DISK_INFO_PARENT_TIMESTAMP = 5,
105 GET_VIRTUAL_DISK_INFO_VIRTUAL_STORAGE_TYPE = 6,
106 GET_VIRTUAL_DISK_INFO_PROVIDER_SUBTYPE = 7
107 #if (_WIN32_WINNT >= 0x0602)
108 ,
109 GET_VIRTUAL_DISK_INFO_IS_4K_ALIGNED = 8,
110 GET_VIRTUAL_DISK_INFO_PHYSICAL_DISK = 9,
111 GET_VIRTUAL_DISK_INFO_VHD_PHYSICAL_SECTOR_SIZE = 10,
112 GET_VIRTUAL_DISK_INFO_SMALLEST_SAFE_VIRTUAL_SIZE = 11,
113 GET_VIRTUAL_DISK_INFO_FRAGMENTATION = 12
114 #endif /* _WIN32_WINNT >= 0x0602 */
115 #if (_WIN32_WINNT >= 0x0603)
116 ,
117 GET_VIRTUAL_DISK_INFO_IS_LOADED = 13,
118 GET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 14
119 #endif /* _WIN32_WINNT >= 0x0603 */
120 #if (_WIN32_WINNT >= 0x0A00)
121 ,
122 GET_VIRTUAL_DISK_INFO_CHANGE_TRACKING_STATE = 15
123 #endif /* _WIN32_WINNT >= 0x0A00 */
124 } GET_VIRTUAL_DISK_INFO_VERSION;
125
126 typedef enum _MIRROR_VIRTUAL_DISK_FLAG {
127 MIRROR_VIRTUAL_DISK_FLAG_NONE = 0x00000000,
128 MIRROR_VIRTUAL_DISK_FLAG_EXISTING_FILE = 0x00000001
129 } MIRROR_VIRTUAL_DISK_FLAG;
130
131 typedef enum _MIRROR_VIRTUAL_DISK_VERSION {
132 MIRROR_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
133 MIRROR_VIRTUAL_DISK_VERSION_1 = 1
134 } MIRROR_VIRTUAL_DISK_VERSION;
135
136 typedef enum _MERGE_VIRTUAL_DISK_FLAG {
137 MERGE_VIRTUAL_DISK_FLAG_NONE = 0x00000000
138 } MERGE_VIRTUAL_DISK_FLAG;
139
140 typedef enum _MERGE_VIRTUAL_DISK_VERSION {
141 MERGE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
142 MERGE_VIRTUAL_DISK_VERSION_1 = 1
143 #if (_WIN32_WINNT >= 0x0602)
144 ,
145 MERGE_VIRTUAL_DISK_VERSION_2 = 2
146 #endif /* _WIN32_WINNT >= 0x0A00 */
147 } MERGE_VIRTUAL_DISK_VERSION;
148
149 typedef enum _OPEN_VIRTUAL_DISK_FLAG {
150 OPEN_VIRTUAL_DISK_FLAG_NONE = 0x00000000,
151 OPEN_VIRTUAL_DISK_FLAG_NO_PARENTS = 0x00000001,
152 OPEN_VIRTUAL_DISK_FLAG_BLANK_FILE = 0x00000002,
153 OPEN_VIRTUAL_DISK_FLAG_BOOT_DRIVE = 0x00000004
154 #if (_WIN32_WINNT >= 0x0602)
155 ,
156 OPEN_VIRTUAL_DISK_FLAG_CACHED_IO = 0x00000008,
157 OPEN_VIRTUAL_DISK_FLAG_CUSTOM_DIFF_CHAIN = 0x00000010
158 #endif /* _WIN32_WINNT >= 0x0602 */
159 } OPEN_VIRTUAL_DISK_FLAG;
160
161 typedef enum _OPEN_VIRTUAL_DISK_VERSION {
162 OPEN_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
163 OPEN_VIRTUAL_DISK_VERSION_1 = 1
164 #if (_WIN32_WINNT >= 0x0602)
165 ,
166 OPEN_VIRTUAL_DISK_VERSION_2 = 2
167 #endif /* _WIN32_WINNT >= 0x0602 */
168 } OPEN_VIRTUAL_DISK_VERSION;
169
170 typedef enum _SET_VIRTUAL_DISK_INFO_VERSION {
171 SET_VIRTUAL_DISK_INFO_UNSPECIFIED = 0,
172 SET_VIRTUAL_DISK_INFO_PARENT_PATH = 1,
173 SET_VIRTUAL_DISK_INFO_IDENTIFIER = 2
174 #if (_WIN32_WINNT >= 0x0602)
175 ,
176 SET_VIRTUAL_DISK_INFO_PARENT_PATH_WITH_DEPTH = 3,
177 SET_VIRTUAL_DISK_INFO_PHYSICAL_SECTOR_SIZE = 4
178 #endif /* (_WIN32_WINNT >= 0x0602) */
179 #if (_WIN32_WINNT >= 0x0603)
180 ,
181 SET_VIRTUAL_DISK_INFO_VIRTUAL_DISK_ID = 5
182 #endif /* (_WIN32_WINNT >= 0x0603) */
183 #if (_WIN32_WINNT >= 0x0A00)
184 ,
185 SET_VIRTUAL_DISK_INFO_CHANGE_TRACKING_STATE = 6,
186 SET_VIRTUAL_DISK_INFO_PARENT_LOCATOR = 7
187 #endif /* (_WIN32_WINNT >= 0x0A00) */
188 } SET_VIRTUAL_DISK_INFO_VERSION;
189
190 typedef enum _STORAGE_DEPENDENCY_INFO_VERSION {
191 STORAGE_DEPENDENCY_INFO_VERSION_UNSPECIFIED = 0,
192 STORAGE_DEPENDENCY_INFO_VERSION_1 = 1,
193 STORAGE_DEPENDENCY_INFO_VERSION_2 = 2
194 } STORAGE_DEPENDENCY_INFO_VERSION;
195
196 typedef enum _VIRTUAL_DISK_ACCESS_MASK {
197 VIRTUAL_DISK_ACCESS_NONE = 0x00000000,
198 VIRTUAL_DISK_ACCESS_ATTACH_RO = 0x00010000,
199 VIRTUAL_DISK_ACCESS_ATTACH_RW = 0x00020000,
200 VIRTUAL_DISK_ACCESS_DETACH = 0x00040000,
201 VIRTUAL_DISK_ACCESS_GET_INFO = 0x00080000,
202 VIRTUAL_DISK_ACCESS_CREATE = 0x00100000,
203 VIRTUAL_DISK_ACCESS_METAOPS = 0x00200000,
204 VIRTUAL_DISK_ACCESS_READ = 0x000d0000,
205 VIRTUAL_DISK_ACCESS_ALL = 0x003f0000,
206 VIRTUAL_DISK_ACCESS_WRITABLE = 0x00320000
207 } VIRTUAL_DISK_ACCESS_MASK;
208
209 #if (_WIN32_WINNT >= 0x0602)
210
211 typedef enum _RESIZE_VIRTUAL_DISK_FLAG {
212 RESIZE_VIRTUAL_DISK_FLAG_NONE = 0x0,
213 RESIZE_VIRTUAL_DISK_FLAG_ALLOW_UNSAFE_VIRTUAL_SIZE = 0x1,
214 RESIZE_VIRTUAL_DISK_FLAG_RESIZE_TO_SMALLEST_SAFE_VIRTUAL_SIZE = 0x2
215 } RESIZE_VIRTUAL_DISK_FLAG;
216
217 typedef enum _RESIZE_VIRTUAL_DISK_VERSION {
218 RESIZE_VIRTUAL_DISK_VERSION_UNSPECIFIED = 0,
219 RESIZE_VIRTUAL_DISK_VERSION_1 = 1
220 } RESIZE_VIRTUAL_DISK_VERSION;
221
222 #endif /* (_WIN32_WINNT >= 0x0602) */
223 #if (_WIN32_WINNT >= 0x0A00)
224
225 typedef enum _APPLY_SNAPSHOT_VHDSET_FLAG {
226 APPLY_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000,
227 APPLY_SNAPSHOT_VHDSET_FLAG_WRITEABLE = 0x00000001
228 } APPLY_SNAPSHOT_VHDSET_FLAG, *PAPPLY_SNAPSHOT_VHDSET_FLAG;
229
230 typedef enum _APPLY_SNAPSHOT_VHDSET_VERSION {
231 APPLY_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0,
232 APPLY_SNAPSHOT_VHDSET_VERSION_1 = 1
233 } APPLY_SNAPSHOT_VHDSET_VERSION;
234
235 typedef enum _DELETE_SNAPSHOT_VHDSET_FLAG {
236 DELETE_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000,
237 DELETE_SNAPSHOT_VHDSET_FLAG_PERSIST_RCT = 0x00000001
238 } DELETE_SNAPSHOT_VHDSET_FLAG, *PDELETE_SNAPSHOT_VHDSET_FLAG;
239
240 typedef enum _DELETE_SNAPSHOT_VHDSET_VERSION {
241 DELETE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0x00000000,
242 DELETE_SNAPSHOT_VHDSET_VERSION_1 = 0x00000001
243 } DELETE_SNAPSHOT_VHDSET_VERSION, *PDELETE_SNAPSHOT_VHDSET_VERSION;
244
245 typedef enum _MODIFY_VHDSET_FLAG {
246 MODIFY_VHDSET_FLAG_NONE = 0x00000000
247 } MODIFY_VHDSET_FLAG, *PMODIFY_VHDSET_FLAG;
248
249 typedef enum _MODIFY_VHDSET_VERSION {
250 MODIFY_VHDSET_UNSPECIFIED = 0,
251 MODIFY_VHDSET_SNAPSHOT_PATH = 1,
252 MODIFY_VHDSET_REMOVE_SNAPSHOT = 2,
253 MODIFY_VHDSET_DEFAULT_SNAPSHOT_PATH = 3
254 } MODIFY_VHDSET_VERSION, *PMODIFY_VHDSET_VERSION;
255
256 typedef enum _QUERY_CHANGES_VIRTUAL_DISK_FLAG {
257 QUERY_CHANGES_VIRTUAL_DISK_FLAG_NONE = 0x00000000
258 } QUERY_CHANGES_VIRTUAL_DISK_FLAG;
259
260 typedef enum _TAKE_SNAPSHOT_VHDSET_FLAG {
261 TAKE_SNAPSHOT_VHDSET_FLAG_NONE = 0x00000000
262 } TAKE_SNAPSHOT_VHDSET_FLAG, *PTAKE_SNAPSHOT_VHDSET_FLAG;
263
264 typedef enum _TAKE_SNAPSHOT_VHDSET_VERSION {
265 TAKE_SNAPSHOT_VHDSET_VERSION_UNSPECIFIED = 0,
266 TAKE_SNAPSHOT_VHDSET_VERSION_1 = 1
267 } TAKE_SNAPSHOT_VHDSET_VERSION;
268
269 #endif /* _WIN32_WINNT >= 0x0A00 */
270
271 typedef struct _VIRTUAL_STORAGE_TYPE {
272 ULONG DeviceId;
273 GUID VendorId;
274 } VIRTUAL_STORAGE_TYPE, *PVIRTUAL_STORAGE_TYPE;
275
276 typedef struct _ATTACH_VIRTUAL_DISK_PARAMETERS {
277 ATTACH_VIRTUAL_DISK_VERSION Version;
278 __C89_NAMELESS union {
279 struct {
280 ULONG Reserved;
281 } Version1;
282 } DUMMYUNIONNAME;
283 } ATTACH_VIRTUAL_DISK_PARAMETERS, *PATTACH_VIRTUAL_DISK_PARAMETERS;
284
285 typedef struct _COMPACT_VIRTUAL_DISK_PARAMETERS {
286 COMPACT_VIRTUAL_DISK_VERSION Version;
287 __C89_NAMELESS union {
288 struct {
289 ULONG Reserved;
290 } Version1;
291 } DUMMYUNIONNAME;
292 } COMPACT_VIRTUAL_DISK_PARAMETERS, *PCOMPACT_VIRTUAL_DISK_PARAMETERS;
293
294 typedef struct _CREATE_VIRTUAL_DISK_PARAMETERS {
295 CREATE_VIRTUAL_DISK_VERSION Version;
296 __C89_NAMELESS union {
297 struct {
298 GUID UniqueId;
299 ULONGLONG MaximumSize;
300 ULONG BlockSizeInBytes;
301 ULONG SectorSizeInBytes;
302 PCWSTR ParentPath;
303 PCWSTR SourcePath;
304 } Version1;
305 #if (_WIN32_WINNT >= 0x0602)
306 struct {
307 GUID UniqueId;
308 ULONGLONG MaximumSize;
309 ULONG BlockSizeInBytes;
310 ULONG SectorSizeInBytes;
311 PCWSTR ParentPath;
312 PCWSTR SourcePath;
313 OPEN_VIRTUAL_DISK_FLAG OpenFlags;
314 VIRTUAL_STORAGE_TYPE ParentVirtualStorageType;
315 VIRTUAL_STORAGE_TYPE SourceVirtualStorageType;
316 GUID ResiliencyGuid;
317 } Version2;
318 #endif /* _WIN32_WINNT >= 0x0602 */
319 } DUMMYUNIONNAME;
320 } CREATE_VIRTUAL_DISK_PARAMETERS, *PCREATE_VIRTUAL_DISK_PARAMETERS;
321
322 typedef struct _EXPAND_VIRTUAL_DISK_PARAMETERS {
323 EXPAND_VIRTUAL_DISK_VERSION Version;
324 __C89_NAMELESS union {
325 struct {
326 ULONGLONG NewSize;
327 } Version1;
328 } DUMMYUNIONNAME;
329 } EXPAND_VIRTUAL_DISK_PARAMETERS, *PEXPAND_VIRTUAL_DISK_PARAMETERS;
330
331 typedef struct _GET_VIRTUAL_DISK_INFO {
332 GET_VIRTUAL_DISK_INFO_VERSION Version;
333 __C89_NAMELESS union {
334 struct {
335 ULONGLONG VirtualSize;
336 ULONGLONG PhysicalSize;
337 ULONG BlockSize;
338 ULONG SectorSize;
339 } Size;
340 GUID Identifier;
341 struct {
342 WINBOOL ParentResolved;
343 WCHAR ParentLocationBuffer[1];
344 } ParentLocation;
345 GUID ParentIdentifier;
346 ULONG ParentTimestamp;
347 VIRTUAL_STORAGE_TYPE VirtualStorageType;
348 ULONG ProviderSubtype;
349 #if (_WIN32_WINNT >= 0x0602)
350 WINBOOL Is4kAligned;
351 WINBOOL IsLoaded;
352 struct {
353 ULONG LogicalSectorSize;
354 ULONG PhysicalSectorSize;
355 WINBOOL IsRemote;
356 } PhysicalDisk;
357 ULONG VhdPhysicalSectorSize;
358 ULONGLONG SmallestSafeVirtualSize;
359 ULONG FragmentationPercentage;
360 #endif /* _WIN32_WINNT >= 0x0602 */
361 #if (_WIN32_WINNT >= 0x0603)
362 GUID VirtualDiskId;
363 struct {
364 WINBOOL Enabled;
365 WINBOOL NewerChanges;
366 WCHAR MostRecentId[1];
367 } ChangeTrackingState;
368 #endif /* _WIN32_WINNT >= 0x0603 */
369 } DUMMYUNIONNAME;
370 } GET_VIRTUAL_DISK_INFO, *PGET_VIRTUAL_DISK_INFO;
371
372 typedef struct _MERGE_VIRTUAL_DISK_PARAMETERS {
373 MERGE_VIRTUAL_DISK_VERSION Version;
374 __C89_NAMELESS union {
375 struct {
376 ULONG MergeDepth;
377 } Version1;
378 #if (_WIN32_WINNT >= 0x0602)
379 struct {
380 ULONG MergeSourceDepth;
381 ULONG MergeTargetDepth;
382 } Version2;
383 #endif /* _WIN32_WINNT >= 0x0602 */
384 } DUMMYUNIONNAME;
385 } MERGE_VIRTUAL_DISK_PARAMETERS, *PMERGE_VIRTUAL_DISK_PARAMETERS;
386
387 typedef struct _OPEN_VIRTUAL_DISK_PARAMETERS {
388 OPEN_VIRTUAL_DISK_VERSION Version;
389 __C89_NAMELESS union {
390 struct {
391 ULONG RWDepth;
392 } Version1;
393 #if (_WIN32_WINNT >= 0x0602)
394 struct {
395 WINBOOL GetInfoOnly;
396 WINBOOL ReadOnly;
397 GUID ResiliencyGuid;
398 } Version2;
399 #endif /* _WIN32_WINNT >= 0x0602 */
400 } DUMMYUNIONNAME;
401 } OPEN_VIRTUAL_DISK_PARAMETERS, *POPEN_VIRTUAL_DISK_PARAMETERS;
402
403 typedef struct _SET_VIRTUAL_DISK_INFO {
404 SET_VIRTUAL_DISK_INFO_VERSION Version;
405 __C89_NAMELESS union {
406 PCWSTR ParentFilePath;
407 GUID UniqueIdentifier;
408 #if (_WIN32_WINNT >= 0x0602)
409 struct {
410 ULONG ChildDepth;
411 PCWSTR ParentFilePath;
412 } ParentPathWithDepthInfo;
413 ULONG VhdPhysicalSectorSize;
414 GUID VirtualDiskId;
415 #endif /* _WIN32_WINNT >= 0x0602 */
416 #if (_WIN32_WINNT >= 0x0603)
417 WINBOOL ChangeTrackingEnabled;
418 struct {
419 GUID LinkageId;
420 PCWSTR ParentFilePath;
421 } ParentLocator;
422 #endif /* _WIN32_WINNT >= 0x0603 */
423 } DUMMYUNIONNAME;
424 } SET_VIRTUAL_DISK_INFO, *PSET_VIRTUAL_DISK_INFO;
425
426 typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_1 {
427 DEPENDENT_DISK_FLAG DependencyTypeFlags;
428 ULONG ProviderSpecificFlags;
429 VIRTUAL_STORAGE_TYPE VirtualStorageType;
430 } STORAGE_DEPENDENCY_INFO_TYPE_1, *PSTORAGE_DEPENDENCY_INFO_TYPE_1;
431
432 typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_2 {
433 DEPENDENT_DISK_FLAG DependencyTypeFlags;
434 ULONG ProviderSpecificFlags;
435 VIRTUAL_STORAGE_TYPE VirtualStorageType;
436 ULONG AncestorLevel;
437 PWSTR DependencyDeviceName;
438 PWSTR HostVolumeName;
439 PWSTR DependentVolumeName;
440 PWSTR DependentVolumeRelativePath;
441 } STORAGE_DEPENDENCY_INFO_TYPE_2, *PSTORAGE_DEPENDENCY_INFO_TYPE_2;
442
443 /* Fixme: Suppress GCC errors about "error: flexible array member in union" */
444
445 typedef struct _STORAGE_DEPENDENCY_INFO {
446 STORAGE_DEPENDENCY_INFO_VERSION Version;
447 ULONG NumberEntries;
448 __C89_NAMELESS union {
449 STORAGE_DEPENDENCY_INFO_TYPE_1 Version1Entries[1];
450 STORAGE_DEPENDENCY_INFO_TYPE_2 Version2Entries[1];
451 } DUMMYUNIONNAME;
452 } STORAGE_DEPENDENCY_INFO, *PSTORAGE_DEPENDENCY_INFO;
453
454 typedef struct _VIRTUAL_DISK_PROGRESS {
455 DWORD OperationStatus;
456 ULONGLONG CurrentValue;
457 ULONGLONG CompletionValue;
458 } VIRTUAL_DISK_PROGRESS, *PVIRTUAL_DISK_PROGRESS;
459
460 #if (_WIN32_WINNT >= 0x0602)
461
462 typedef struct _MIRROR_VIRTUAL_DISK_PARAMETERS {
463 MIRROR_VIRTUAL_DISK_VERSION Version;
464 __C89_NAMELESS union {
465 struct {
466 PCWSTR MirrorVirtualDiskPath;
467 } Version1;
468 } DUMMYUNIONNAME;
469 } MIRROR_VIRTUAL_DISK_PARAMETERS, *PMIRROR_VIRTUAL_DISK_PARAMETERS;
470
471 typedef struct _RESIZE_VIRTUAL_DISK_PARAMETERS {
472 RESIZE_VIRTUAL_DISK_VERSION Version;
473 __C89_NAMELESS union {
474 struct {
475 ULONGLONG NewSize;
476 } Version1;
477 } DUMMYUNIONNAME;
478 } RESIZE_VIRTUAL_DISK_PARAMETERS, *PRESIZE_VIRTUAL_DISK_PARAMETERS;
479
480 #endif /* _WIN32_WINNT >= 0x0602 */
481
482 #if (_WIN32_WINNT >= 0x0A00)
483
484 typedef struct _APPLY_SNAPSHOT_VHDSET_PARAMETERS {
485 APPLY_SNAPSHOT_VHDSET_VERSION Version;
486 __C89_NAMELESS union {
487 struct {
488 GUID SnapshotId;
489 GUID LeafSnapshotId;
490 } Version1;
491 } DUMMYUNIONNAME;
492 } APPLY_SNAPSHOT_VHDSET_PARAMETERS, *PAPPLY_SNAPSHOT_VHDSET_PARAMETERS;
493
494 typedef struct _DELETE_SNAPSHOT_VHDSET_PARAMETERS {
495 DELETE_SNAPSHOT_VHDSET_VERSION Version;
496 __C89_NAMELESS union {
497 struct {
498 GUID SnapshotId;
499 } Version1;
500 } DUMMYUNIONNAME;
501 } DELETE_SNAPSHOT_VHDSET_PARAMETERS, *PDELETE_SNAPSHOT_VHDSET_PARAMETERS;
502
503 typedef struct _MODIFY_VHDSET_PARAMETERS {
504 MODIFY_VHDSET_VERSION Version;
505 __C89_NAMELESS union {
506 struct {
507 GUID SnapshotId;
508 PCWSTR SnapshotFilePath;
509 } SnapshotPath;
510 GUID SnapshotId;
511 PCWSTR DefaultFilePath;
512 } DUMMYUNIONNAME;
513 } MODIFY_VHDSET_PARAMETERS, *PMODIFY_VHDSET_PARAMETERS;
514
515 typedef struct _QUERY_CHANGES_VIRTUAL_DISK_RANGE {
516 ULONG64 ByteOffset;
517 ULONG64 ByteLength;
518 ULONG64 Reserved;
519 } QUERY_CHANGES_VIRTUAL_DISK_RANGE, *PQUERY_CHANGES_VIRTUAL_DISK_RANGE;
520
521 typedef struct _TAKE_SNAPSHOT_VHDSET_PARAMETERS {
522 TAKE_SNAPSHOT_VHDSET_VERSION Version;
523 __C89_NAMELESS union {
524 struct {
525 GUID SnapshotId;
526 } Version1;
527 } DUMMYUNIONNAME;
528 } TAKE_SNAPSHOT_VHDSET_PARAMETERS, *PTAKE_SNAPSHOT_VHDSET_PARAMETERS;
529
530 #endif /* _WIN32_WINNT >= 0x0A00 */
531
532 DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_UNKNOWN,0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
533 DEFINE_GUID(VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT,0xEC984AEC,0xA0F9,0x47e9,0x90,0x1F,0x71,0x41,0x5A,0x66,0x34,0x5B);
534
535 VIRTDISKAPI DWORD WINAPI AttachVirtualDisk(HANDLE VirtualDiskHandle, PSECURITY_DESCRIPTOR SecurityDescriptor, ATTACH_VIRTUAL_DISK_FLAG Flags, ULONG ProviderSpecificFlags, PATTACH_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped);
536 VIRTDISKAPI DWORD WINAPI CompactVirtualDisk(HANDLE VirtualDiskHandle, COMPACT_VIRTUAL_DISK_FLAG Flags, PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped);
537 VIRTDISKAPI DWORD WINAPI CreateVirtualDisk(PVIRTUAL_STORAGE_TYPE VirtualStorageType, PCWSTR Path, VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, PSECURITY_DESCRIPTOR SecurityDescriptor, CREATE_VIRTUAL_DISK_FLAG Flags, ULONG ProviderSpecificFlags, PCREATE_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped, PHANDLE Handle);
538 VIRTDISKAPI DWORD WINAPI DetachVirtualDisk(HANDLE VirtualDiskHandle, DETACH_VIRTUAL_DISK_FLAG Flags, ULONG ProviderSpecificFlags);
539 VIRTDISKAPI DWORD WINAPI ExpandVirtualDisk(HANDLE VirtualDiskHandle, EXPAND_VIRTUAL_DISK_FLAG Flags, PEXPAND_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped);
540 VIRTDISKAPI DWORD WINAPI GetStorageDependencyInformation(HANDLE ObjectHandle, GET_STORAGE_DEPENDENCY_FLAG Flags, ULONG StorageDependencyInfoSize, PSTORAGE_DEPENDENCY_INFO StorageDependencyInfo, PULONG SizeUsed);
541 VIRTDISKAPI DWORD WINAPI GetVirtualDiskInformation(HANDLE VirtualDiskHandle, PULONG VirtualDiskInfoSize, PGET_VIRTUAL_DISK_INFO VirtualDiskInfo, PULONG SizeUsed);
542 VIRTDISKAPI DWORD WINAPI GetVirtualDiskOperationProgress(HANDLE VirtualDiskHandle, LPOVERLAPPED Overlapped, PVIRTUAL_DISK_PROGRESS Progress);
543 VIRTDISKAPI DWORD WINAPI GetVirtualDiskPhysicalPath(HANDLE VirtualDiskHandle, PULONG DiskPathSizeInBytes, PWSTR DiskPath);
544 VIRTDISKAPI DWORD WINAPI MergeVirtualDisk(HANDLE VirtualDiskHandle, MERGE_VIRTUAL_DISK_FLAG Flags, PMERGE_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped);
545 VIRTDISKAPI DWORD WINAPI OpenVirtualDisk(PVIRTUAL_STORAGE_TYPE VirtualStorageType, PCWSTR Path, VIRTUAL_DISK_ACCESS_MASK VirtualDiskAccessMask, OPEN_VIRTUAL_DISK_FLAG Flags, POPEN_VIRTUAL_DISK_PARAMETERS Parameters, PHANDLE Handle);
546 VIRTDISKAPI DWORD WINAPI SetVirtualDiskInformation(HANDLE VirtualDiskHandle, PSET_VIRTUAL_DISK_INFO VirtualDiskInfo);
547
548 #if (_WIN32_WINNT >= 0x0602)
549
550 VIRTDISKAPI DWORD WINAPI AddVirtualDiskParent(HANDLE VirtualDiskHandle, PCWSTR ParentPath);
551 VIRTDISKAPI DWORD WINAPI BreakMirrorVirtualDisk(HANDLE VirtualDiskHandle);
552 VIRTDISKAPI DWORD WINAPI DeleteVirtualDiskMetadata(HANDLE VirtualDiskHandle, LPGUID Item);
553 VIRTDISKAPI DWORD WINAPI EnumerateVirtualDiskMetadata(HANDLE VirtualDiskHandle, PULONG NumberOfItems, GUID *Items);
554 VIRTDISKAPI DWORD WINAPI GetVirtualDiskMetadata(HANDLE VirtualDiskHandle, LPGUID Item, PULONG MetaDataSize, PVOID MetaData);
555 VIRTDISKAPI DWORD WINAPI MirrorVirtualDisk(HANDLE VirtualDiskHandle, MIRROR_VIRTUAL_DISK_FLAG Flags, PMIRROR_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped);
556 VIRTDISKAPI DWORD WINAPI ResizeVirtualDisk(HANDLE VirtualDiskHandle, RESIZE_VIRTUAL_DISK_FLAG Flags, PRESIZE_VIRTUAL_DISK_PARAMETERS Parameters, LPOVERLAPPED Overlapped);
557 VIRTDISKAPI DWORD WINAPI SetVirtualDiskMetadata(HANDLE VirtualDiskHandle, LPGUID Item, ULONG MetaDataSize, PVOID MetaData);
558
559 #endif /* _WIN32_WINNT >= 0x0602 */
560
561 #if (_WIN32_WINNT >= 0x0A00)
562
563 VIRTDISKAPI DWORD WINAPI ApplySnapshotVhdSet(HANDLE VirtualDiskHandle, const PAPPLY_SNAPSHOT_VHDSET_PARAMETERS Parameters, APPLY_SNAPSHOT_VHDSET_FLAG Flags);
564 VIRTDISKAPI DWORD WINAPI DeleteSnapshotVhdSet(HANDLE VirtualDiskHandle, const PDELETE_SNAPSHOT_VHDSET_PARAMETERS Parameters, DELETE_SNAPSHOT_VHDSET_FLAG Flags);
565 VIRTDISKAPI DWORD WINAPI ModifyVhdSet(HANDLE VirtualDiskHandle, const PMODIFY_VHDSET_PARAMETERS Parameters, MODIFY_VHDSET_FLAG Flags);
566 VIRTDISKAPI DWORD WINAPI QueryChangesVirtualDisk(HANDLE VirtualDiskHandle, PCWSTR ChangeTrackingId, ULONG64 ByteOffset, ULONG64 ByteLength, QUERY_CHANGES_VIRTUAL_DISK_FLAG Flags, PQUERY_CHANGES_VIRTUAL_DISK_RANGE Ranges, PULONG RangeCount, PULONG64 ProcessedLength);
567 VIRTDISKAPI WINAPI DWORD TakeSnapshotVhdSet(HANDLE VirtualDiskHandle, const PTAKE_SNAPSHOT_VHDSET_PARAMETERS Parameters, TAKE_SNAPSHOT_VHDSET_FLAG Flags);
568
569 #endif /* _WIN32_WINNT >= 0x0A00 */
570 #ifdef __cplusplus
571 }
572 #endif
573 #endif /*(_WIN32_WINNT >= 0x0601)*/
574 #endif /*_INC_VIRTDISK*/