source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/vds.h@ 1170

Last change on this file since 1170 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 48.9 KB
Line 
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_VDS
7#define _INC_VDS
8
9#if (_WIN32_WINNT >= 0x0600)
10#include <diskguid.h>
11#include <winioctl.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#define GPT_PARTITION_NAME_LENGTH 36
18
19 typedef GUID VDS_OBJECT_ID;
20 typedef UINT64 VDS_PATH_ID;
21
22 typedef enum _VDS_PARTITION_STYLE {
23 VDS_PST_UNKNOWN = 0,
24 VDS_PST_MBR = 1,
25 VDS_PST_GPT = 2
26 } VDS_PARTITION_STYLE;
27
28 typedef enum tag_VDS_PARTITION_STYLE {
29 VDS_PARTITION_STYLE_MBR,
30 VDS_PARTITION_STYLE_GPT,
31 VDS_PARTITION_STYLE_RAW
32 } __VDS_PARTITION_STYLE;
33
34 typedef enum _VDS_ASYNC_OUTPUT_TYPE {
35 VDS_ASYNCOUT_UNKNOWN = 0,
36 VDS_ASYNCOUT_CREATEVOLUME = 1,
37 VDS_ASYNCOUT_EXTENDVOLUME = 2,
38 VDS_ASYNCOUT_SHRINKVOLUME = 3,
39 VDS_ASYNCOUT_ADDVOLUMEPLEX = 4,
40 VDS_ASYNCOUT_BREAKVOLUMEPLEX = 5,
41 VDS_ASYNCOUT_REMOVEVOLUMEPLEX = 6,
42 VDS_ASYNCOUT_REPAIRVOLUMEPLEX = 7,
43 VDS_ASYNCOUT_RECOVERPACK = 8,
44 VDS_ASYNCOUT_REPLACEDISK = 9,
45 VDS_ASYNCOUT_CREATEPARTITION = 10,
46 VDS_ASYNCOUT_CLEAN = 11,
47 VDS_ASYNCOUT_CREATELUN = 50,
48 VDS_ASYNCOUT_ADDLUNPLEX = 52,
49 VDS_ASYNCOUT_REMOVELUNPLEX = 53,
50 VDS_ASYNCOUT_EXTENDLUN = 54,
51 VDS_ASYNCOUT_SHRINKLUN = 55,
52 VDS_ASYNCOUT_RECOVERLUN = 56,
53 VDS_ASYNCOUT_LOGINTOTARGET = 60,
54 VDS_ASYNCOUT_LOGOUTFROMTARGET = 61,
55 VDS_ASYNCOUT_CREATETARGET = 62,
56 VDS_ASYNCOUT_CREATEPORTALGROUP = 63,
57 VDS_ASYNCOUT_DELETETARGET = 64,
58 VDS_ASYNCOUT_ADDPORTAL = 65,
59 VDS_ASYNCOUT_REMOVEPORTAL = 66,
60 VDS_ASYNCOUT_DELETEPORTALGROUP = 67,
61 VDS_ASYNCOUT_FORMAT = 101,
62 VDS_ASYNCOUT_CREATE_VDISK = 200,
63 VDS_ASYNCOUT_ATTACH_VDISK = 201,
64 VDS_ASYNCOUT_COMPACT_VDISK = 202,
65 VDS_ASYNCOUT_MERGE_VDISK = 203,
66 VDS_ASYNCOUT_EXPAND_VDISK = 204
67 } VDS_ASYNC_OUTPUT_TYPE;
68
69 typedef enum _VDS_HEALTH {
70 VDS_H_UNKNOWN = 0,
71 VDS_H_HEALTHY = 1,
72 VDS_H_REBUILDING = 2,
73 VDS_H_STALE = 3,
74 VDS_H_FAILING = 4,
75 VDS_H_FAILING_REDUNDANCY = 5,
76 VDS_H_FAILED_REDUNDANCY = 6,
77 VDS_H_FAILED_REDUNDANCY_FAILING = 7,
78 VDS_H_FAILED = 8,
79 VDS_H_REPLACED = 9,
80 VDS_H_PENDING_FAILURE = 10,
81 VDS_H_DEGRADED = 11
82 } VDS_HEALTH;
83
84 typedef enum _VDS_CONTROLLER_STATUS {
85 VDS_CS_UNKNOWN = 0,
86 VDS_CS_ONLINE = 1,
87 VDS_CS_NOT_READY = 2,
88 VDS_CS_OFFLINE = 4,
89 VDS_CS_FAILED = 5,
90 VDS_CS_REMOVED = 8
91 } VDS_CONTROLLER_STATUS;
92
93 typedef enum _VDS_DISK_EXTENT_TYPE {
94 VDS_DET_UNKNOWN = 0,
95 VDS_DET_FREE = 1,
96 VDS_DET_DATA = 2,
97 VDS_DET_OEM = 3,
98 VDS_DET_ESP = 4,
99 VDS_DET_MSR = 5,
100 VDS_DET_LDM = 6,
101 VDS_DET_CLUSTER = 7,
102 VDS_DET_UNUSABLE = 0x7FFF
103 } VDS_DISK_EXTENT_TYPE;
104
105 typedef enum _VDS_DISK_FLAG {
106 VDS_DF_AUDIO_CD = 0x1,
107 VDS_DF_HOTSPARE = 0x2,
108 VDS_DF_RESERVE_CAPABLE = 0x4,
109 VDS_DF_MASKED = 0x8,
110 VDS_DF_STYLE_CONVERTIBLE = 0x10,
111 VDS_DF_CLUSTERED = 0x20,
112 VDS_DF_READ_ONLY = 0x40,
113 VDS_DF_SYSTEM_DISK = 0x80,
114 VDS_DF_BOOT_DISK = 0x100,
115 VDS_DF_PAGEFILE_DISK = 0x200,
116 VDS_DF_HIBERNATIONFILE_DISK = 0x400,
117 VDS_DF_CRASHDUMP_DISK = 0x800,
118 VDS_DF_HAS_ARC_PATH = 0x1000,
119 VDS_DF_DYNAMIC = 0x2000,
120 VDS_DF_BOOT_FROM_DISK = 0x4000,
121 VDS_DF_CURRENT_READ_ONLY = 0x8000
122 } VDS_DISK_FLAG;
123
124 typedef enum _VDS_NOTIFICATION_TARGET_TYPE {
125 VDS_NTT_UNKNOWN = 0,
126 VDS_NTT_PACK = 10,
127 VDS_NTT_VOLUME = 11,
128 VDS_NTT_DISK = 13,
129 VDS_NTT_PARTITION = 60,
130 VDS_NTT_DRIVE_LETTER = 61,
131 VDS_NTT_FILE_SYSTEM = 62,
132 VDS_NTT_MOUNT_POINT = 63,
133 VDS_NTT_SUB_SYSTEM = 30,
134 VDS_NTT_CONTROLLER = 31,
135 VDS_NTT_DRIVE = 32,
136 VDS_NTT_LUN = 33,
137 VDS_NTT_PORT = 35,
138 VDS_NTT_PORTAL = 36,
139 VDS_NTT_TARGET = 37,
140 VDS_NTT_PORTAL_GROUP = 38,
141 VDS_NTT_SERVICE = 200
142 } VDS_NOTIFICATION_TARGET_TYPE;
143
144 typedef enum _VDS_OBJECT_TYPE {
145 VDS_OT_UNKNOWN = 0,
146 VDS_OT_PROVIDER = 1,
147 VDS_OT_PACK = 10,
148 VDS_OT_VOLUME = 11,
149 VDS_OT_VOLUME_PLEX = 12,
150 VDS_OT_DISK = 13,
151 VDS_OT_SUB_SYSTEM = 30,
152 VDS_OT_CONTROLLER = 31,
153 VDS_OT_DRIVE = 32,
154 VDS_OT_LUN = 33,
155 VDS_OT_LUN_PLEX = 34,
156 VDS_OT_PORT = 35,
157 VDS_OT_PORTAL = 36,
158 VDS_OT_TARGET = 37,
159 VDS_OT_PORTAL_GROUP = 38,
160 VDS_OT_STORAGE_POOL = 39,
161 VDS_OT_HBAPORT = 90,
162 VDS_OT_INIT_ADAPTER = 91,
163 VDS_OT_INIT_PORTAL = 92,
164 VDS_OT_ASYNC = 100,
165 VDS_OT_ENUM = 101,
166 VDS_OT_VDISK = 200,
167 VDS_OT_OPEN_VDISK = 201
168 } VDS_OBJECT_TYPE;
169
170 typedef enum _VDS_STORAGE_BUS_TYPE {
171 VDSBusTypeUnknown = 0x00,
172 VDSBusTypeScsi = 0x01,
173 VDSBusTypeAtapi = 0x02,
174 VDSBusTypeAta = 0x03,
175 VDSBusType1394 = 0x04,
176 VDSBusTypeSsa = 0x05,
177 VDSBusTypeFibre = 0x06,
178 VDSBusTypeUsb = 0x07,
179 VDSBusTypeRAID = 0x08,
180 VDSBusTypeiScsi = 0x09,
181 VDSBusTypeMaxReserved = 0x7F
182 } VDS_STORAGE_BUS_TYPE;
183
184 typedef enum _VDS_DISK_STATUS {
185 VDS_DS_UNKNOWN = 0,
186 VDS_DS_ONLINE = 1,
187 VDS_DS_NOT_READY = 2,
188 VDS_DS_NO_MEDIA = 3,
189 VDS_DS_OFFLINE = 4,
190 VDS_DS_FAILED = 5,
191 VDS_DS_MISSING = 6
192 } VDS_DISK_STATUS;
193
194 typedef enum _VDS_DRIVE_FLAG {
195 VDS_DRF_HOTSPARE = 0x1,
196 VDS_DRF_ASSIGNED = 0x2,
197 VDS_DRF_UNASSIGNED = 0x4,
198 VDS_DRF_HOTSPARE_IN_USE = 0x8,
199 VDS_DRF_HOTSPARE_STANDBY = 0x10
200 } VDS_DRIVE_FLAG;
201
202 typedef enum _VDS_DRIVE_LETTER_FLAG {
203 VDS_DLF_NON_PERSISTENT = 0x1
204 } VDS_DRIVE_LETTER_FLAG;
205
206 typedef enum _VDS_DRIVE_STATUS {
207 VDS_DRS_UNKNOWN = 0,
208 VDS_DRS_ONLINE = 1,
209 VDS_DRS_NOT_READY = 2,
210 VDS_DRS_OFFLINE = 4,
211 VDS_DRS_FAILED = 5,
212 VDS_DRS_REMOVED = 8
213 } VDS_DRIVE_STATUS;
214
215 typedef enum _VDS_FILE_SYSTEM_FLAG {
216 VDS_FSF_SUPPORT_FORMAT = 0x1,
217 VDS_FSF_SUPPORT_QUICK_FORMAT = 0x2,
218 VDS_FSF_SUPPORT_COMPRESS = 0x4,
219 VDS_FSF_SUPPORT_SPECIFY_LABEL = 0x8,
220 VDS_FSF_SUPPORT_MOUNT_POINT = 0x10,
221 VDS_FSF_SUPPORT_REMOVABLE_MEDIA = 0x20,
222 VDS_FSF_SUPPORT_EXTEND = 0x40,
223 VDS_FSF_ALLOCATION_UNIT_512 = 0x10000,
224 VDS_FSF_ALLOCATION_UNIT_1K = 0x20000,
225 VDS_FSF_ALLOCATION_UNIT_2K = 0x40000,
226 VDS_FSF_ALLOCATION_UNIT_4K = 0x80000,
227 VDS_FSF_ALLOCATION_UNIT_8K = 0x100000,
228 VDS_FSF_ALLOCATION_UNIT_16K = 0x200000,
229 VDS_FSF_ALLOCATION_UNIT_32K = 0x400000,
230 VDS_FSF_ALLOCATION_UNIT_64K = 0x800000,
231 VDS_FSF_ALLOCATION_UNIT_128K = 0x1000000,
232 VDS_FSF_ALLOCATION_UNIT_256K = 0x2000000
233 } VDS_FILE_SYSTEM_FLAG;
234
235 typedef enum _VDS_FILE_SYSTEM_FORMAT_SUPPORT_FLAG {
236 VDS_FSS_DEFAULT = 0x00000001,
237 VDS_FSS_PREVIOUS_REVISION = 0x00000002,
238 VDS_FSS_RECOMMENDED = 0x00000004
239 } VDS_FILE_SYSTEM_FORMAT_SUPPORT_FLAG;
240
241 typedef enum _VDS_FILE_SYSTEM_PROP_FLAG {
242 VDS_FPF_COMPRESSED = 0x1
243 } VDS_FILE_SYSTEM_PROP_FLAG;
244
245 typedef enum _VDS_FILE_SYSTEM_TYPE {
246 VDS_FST_UNKNOWN = 0,
247 VDS_FST_RAW = 1,
248 VDS_FST_FAT = 2,
249 VDS_FST_FAT32 = 3,
250 VDS_FST_NTFS = 4,
251 VDS_FST_CDFS = 5,
252 VDS_FST_UDF = 6,
253 VDS_FST_EXFAT = 7
254 } VDS_FILE_SYSTEM_TYPE;
255
256 typedef enum _VDS_HBAPORT_SPEED_FLAG {
257 VDS_HSF_UNKNOWN = 0,
258 VDS_HSF_1GBIT = 0x1,
259 VDS_HSF_2GBIT = 0x2,
260 VDS_HSF_10GBIT = 0x4,
261 VDS_HSF_4GBIT = 0x8,
262 VDS_HSF_NOT_NEGOTIATED = 0x8000
263 } VDS_HBAPORT_SPEED_FLAG;
264
265 typedef enum _VDS_HBAPORT_STATUS {
266 VDS_HPS_UNKNOWN = 1,
267 VDS_HPS_ONLINE = 2,
268 VDS_HPS_OFFLINE = 3,
269 VDS_HPS_BYPASSED = 4,
270 VDS_HPS_DIAGNOSTICS = 5,
271 VDS_HPS_LINKDOWN = 6,
272 VDS_HPS_ERROR = 7,
273 VDS_HPS_LOOPBACK = 8
274 } VDS_HBAPORT_STATUS;
275
276 typedef enum _VDS_HBAPORT_TYPE {
277 VDS_HPT_UNKNOWN = 1,
278 VDS_HPT_OTHER = 2,
279 VDS_HPT_NOTPRESENT = 3,
280 VDS_HPT_NPORT = 5,
281 VDS_HPT_NLPORT = 6,
282 VDS_HPT_FLPORT = 7,
283 VDS_HPT_FPORT = 8,
284 VDS_HPT_EPORT = 9,
285 VDS_HPT_GPORT = 10,
286 VDS_HPT_LPORT = 20,
287 VDS_HPT_PTP = 21
288 } VDS_HBAPORT_TYPE;
289
290 typedef enum _VDS_HWPROVIDER_TYPE {
291 VDS_HWT_UNKNOWN = 0,
292 VDS_HWT_PCI_RAID = 1,
293 VDS_HWT_FIBRE_CHANNEL = 2,
294 VDS_HWT_ISCSI = 3,
295 VDS_HWT_SAS = 4,
296 VDS_HWT_HYBRID = 5
297 } VDS_HWPROVIDER_TYPE;
298
299 typedef enum _VDS_INTERCONNECT_ADDRESS_TYPE {
300 VDS_IA_UNKNOWN = 0,
301 VDS_IA_FCFS = 1,
302 VDS_IA_FCPH = 2,
303 VDS_IA_FCPH3 = 3,
304 VDS_IA_MAC = 4,
305 VDS_IA_SCSI = 5
306 } VDS_INTERCONNECT_ADDRESS_TYPE;
307
308 typedef enum VDS_IPADDRESS_TYPE {
309 VDS_IPT_TEXT = 0,
310 VDS_IPT_IPV4 = 1,
311 VDS_IPT_IPV6 = 2,
312 VDS_IPT_EMPTY = 3
313 } VDS_IPADDRESS_TYPE;
314
315 typedef enum _VDS_ISCSI_AUTH_TYPE {
316 VDS_IAT_NONE = 0,
317 VDS_IAT_CHAP = 1,
318 VDS_IAT_MUTUAL_CHAP = 2
319 } VDS_ISCSI_AUTH_TYPE;
320
321 typedef enum _VDS_ISCSI_LOGIN_FLAG {
322 VDS_ILF_REQUIRE_IPSEC = 0x1,
323 VDS_ILF_MULTIPATH_ENABLED = 0x2
324 } VDS_ISCSI_LOGIN_FLAG;
325
326 typedef enum _VDS_ISCSI_LOGIN_TYPE {
327 VDS_ILT_MANUAL = 0,
328 VDS_ILT_PERSISTENT = 1,
329 VDS_ILT_BOOT = 2
330 } VDS_ISCSI_LOGIN_TYPE;
331
332 typedef enum _VDS_ISCSI_PORTAL_STATUS {
333 VDS_IPS_UNKNOWN = 0,
334 VDS_IPS_ONLINE = 1,
335 VDS_IPS_NOT_READY = 2,
336 VDS_IPS_OFFLINE = 4,
337 VDS_IPS_FAILED = 5
338 } VDS_ISCSI_PORTAL_STATUS;
339
340 typedef enum _VDS_LOADBALANCE_POLICY_ENUM {
341 VDS_LBP_UNKNOWN = 0,
342 VDS_LBP_FAILOVER = 1,
343 VDS_LBP_ROUND_ROBIN = 2,
344 VDS_LBP_ROUND_ROBIN_WITH_SUBSET = 3,
345 VDS_LBP_DYN_LEAST_QUEUE_DEPTH = 4,
346 VDS_LBP_WEIGHTED_PATHS = 5,
347 VDS_LBP_LEAST_BLOCKS = 6,
348 VDS_LBP_VENDOR_SPECIFIC = 7
349 } VDS_LOADBALANCE_POLICY_ENUM;
350
351 typedef enum _VDS_LUN_FLAG {
352 VDS_LF_LBN_REMAP_ENABLED = 0x01,
353 VDS_LF_READ_BACK_VERIFY_ENABLED = 0x02,
354 VDS_LF_WRITE_THROUGH_CACHING_ENABLED = 0x04,
355 VDS_LF_HARDWARE_CHECKSUM_ENABLED = 0x08,
356 VDS_LF_READ_CACHE_ENABLED = 0x10,
357 VDS_LF_WRITE_CACHE_ENABLED = 0x20,
358 VDS_LF_MEDIA_SCAN_ENABLED = 0x40,
359 VDS_LF_CONSISTENCY_CHECK_ENABLED = 0x80,
360 VDS_LF_SNAPSHOT = 0x100
361 } VDS_LUN_FLAG;
362
363 typedef enum _VDS_LUN_PLEX_FLAG {
364 VDS_LPF_LBN_REMAP_ENABLED = 0x1
365 } VDS_LUN_PLEX_FLAG;
366
367 typedef enum _VDS_TRANSITION_STATE {
368 VDS_TS_UNKNOWN = 0,
369 VDS_TS_STABLE = 1,
370 VDS_TS_EXTENDING = 2,
371 VDS_TS_SHRINKING = 3,
372 VDS_TS_RECONFIGING = 4,
373 VDS_TS_RESTRIPING = 8
374 } VDS_TRANSITION_STATE;
375
376 typedef enum _VDS_LUN_PLEX_STATUS {
377 VDS_LPS_UNKNOWN = 0,
378 VDS_LPS_ONLINE = 1,
379 VDS_LPS_NOT_READY = 2,
380 VDS_LPS_OFFLINE = 4,
381 VDS_LPS_FAILED = 5
382 } VDS_LUN_PLEX_STATUS;
383
384 typedef enum _VDS_LUN_PLEX_TYPE {
385 VDS_LPT_UNKNOWN = 0,
386 VDS_LPT_SIMPLE = 10,
387 VDS_LPT_SPAN = 11,
388 VDS_LPT_STRIPE = 12,
389 VDS_LPT_PARITY = 14,
390 VDS_LPT_RAID2 = 15,
391 VDS_LPT_RAID3 = 16,
392 VDS_LPT_RAID4 = 17,
393 VDS_LPT_RAID5 = 18,
394 VDS_LPT_RAID6 = 19,
395 VDS_LPT_RAID03 = 21,
396 VDS_LPT_RAID05 = 22,
397 VDS_LPT_RAID10 = 23,
398 VDS_LPT_RAID15 = 24,
399 VDS_LPT_RAID30 = 25,
400 VDS_LPT_RAID50 = 26,
401 VDS_LPT_RAID53 = 28,
402 VDS_LPT_RAID60 = 29
403 } VDS_LUN_PLEX_TYPE;
404
405 typedef enum _VDS_LUN_STATUS {
406 VDS_LS_UNKNOWN = 0,
407 VDS_LS_ONLINE = 1,
408 VDS_LS_NOT_READY = 2,
409 VDS_LS_OFFLINE = 4,
410 VDS_LS_FAILED = 5
411 } VDS_LUN_STATUS;
412
413 typedef enum _VDS_LUN_TYPE {
414 VDS_LT_UNKNOWN = 0,
415 VDS_LT_DEFAULT = 1,
416 VDS_LT_FAULT_TOLERANT = 2,
417 VDS_LT_NON_FAULT_TOLERANT = 3,
418 VDS_LT_SIMPLE = 10,
419 VDS_LT_SPAN = 11,
420 VDS_LT_STRIPE = 12,
421 VDS_LT_MIRROR = 13,
422 VDS_LT_PARITY = 14,
423 VDS_LT_RAID2 = 15,
424 VDS_LT_RAID3 = 16,
425 VDS_LT_RAID4 = 17,
426 VDS_LT_RAID5 = 18,
427 VDS_LT_RAID6 = 19,
428 VDS_LT_RAID01 = 20,
429 VDS_LT_RAID03 = 21,
430 VDS_LT_RAID05 = 22,
431 VDS_LT_RAID10 = 23,
432 VDS_LT_RAID15 = 24,
433 VDS_LT_RAID30 = 25,
434 VDS_LT_RAID50 = 26,
435 VDS_LT_RAID51 = 27,
436 VDS_LT_RAID53 = 28,
437 VDS_LT_RAID60 = 29,
438 VDS_LT_RAID61 = 30
439 } VDS_LUN_TYPE;
440
441 typedef enum _VDS_MAINTENANCE_OPERATION {
442 BlinkLight = 1,
443 BeepAlarm = 2,
444 SpinDown = 3,
445 SpinUp = 4,
446 Ping = 5
447 } VDS_MAINTENANCE_OPERATION;
448
449 typedef enum _VDS_PACK_FLAG {
450 VDS_PKF_FOREIGN = 0x1,
451 VDS_PKF_NOQUORUM = 0x2,
452 VDS_PKF_POLICY = 0x4,
453 VDS_PKF_CORRUPTED = 0x8,
454 VDS_PKF_ONLINE_ERROR = 0x10
455 } VDS_PACK_FLAG;
456
457 typedef enum _VDS_PACK_STATUS {
458 VDS_PS_UNKNOWN = 0,
459 VDS_PS_ONLINE = 1,
460 VDS_PS_OFFLINE = 4
461 } VDS_PACK_STATUS;
462
463 typedef enum _VDS_PARTITION_FLAG {
464 VDS_PTF_SYSTEM = 0x1
465 } VDS_PARTITION_FLAG;
466
467 typedef enum _VDS_PATH_STATUS {
468 VDS_MPS_UNKNOWN = 0,
469 VDS_MPS_ONLINE = 1,
470 VDS_MPS_FAILED = 5,
471 VDS_MPS_STANDBY = 7
472 } VDS_PATH_STATUS;
473
474 typedef enum _VDS_PORT_STATUS {
475 VDS_PRS_UNKNOWN = 0,
476 VDS_PRS_ONLINE = 1,
477 VDS_PRS_NOT_READY = 2,
478 VDS_PRS_OFFLINE = 4,
479 VDS_PRS_FAILED = 5,
480 VDS_PRS_REMOVED = 8
481 } VDS_PORT_STATUS;
482
483 typedef enum _VDS_PROVIDER_FLAG {
484 VDS_PF_DYNAMIC = 0x00000001,
485 VDS_PF_INTERNAL_HARDWARE_PROVIDER = 0x00000002,
486 VDS_PF_ONE_DISK_ONLY_PER_PACK = 0x00000004,
487 VDS_PF_ONE_PACK_ONLINE_ONLY = 0x00000008,
488 VDS_PF_VOLUME_SPACE_MUST_BE_CONTIGUOUS = 0x00000010,
489 VDS_PF_SUPPORT_DYNAMIC = 0x80000000,
490 VDS_PF_SUPPORT_FAULT_TOLERANT = 0x40000000,
491 VDS_PF_SUPPORT_DYNAMIC_1394 = 0x20000000,
492 VDS_PF_SUPPORT_MIRROR = 0x00000020,
493 VDS_PF_SUPPORT_RAID5 = 0x00000040
494 } VDS_PROVIDER_FLAG;
495
496 typedef enum _VDS_PROVIDER_LBSUPPORT_FLAG {
497 VDS_LBF_FAILOVER = 0x1,
498 VDS_LBF_ROUND_ROBIN = 0x2,
499 VDS_LBF_ROUND_ROBIN_WITH_SUBSET = 0x4,
500 VDS_LBF_DYN_LEAST_QUEUE_DEPTH = 0x8,
501 VDS_LBF_WEIGHTED_PATHS = 0x10,
502 VDS_LBF_LEAST_BLOCKS = 0x20,
503 VDS_LBF_VENDOR_SPECIFIC = 0x40
504 } VDS_PROVIDER_LBSUPPORT_FLAG;
505
506 typedef enum _VDS_PROVIDER_TYPE {
507 VDS_PT_UNKNOWN = 0,
508 VDS_PT_SOFTWARE = 1,
509 VDS_PT_HARDWARE = 2,
510 VDS_PT_VIRTUALDISK = 3,
511 VDS_PT_MAX = 4
512 } VDS_PROVIDER_TYPE;
513
514 typedef enum _VDS_QUERY_PROVIDER_FLAG {
515 VDS_QUERY_SOFTWARE_PROVIDERS = 0x1,
516 VDS_QUERY_HARDWARE_PROVIDERS = 0x2
517 } VDS_QUERY_PROVIDER_FLAG;
518
519 typedef enum _VDS_SAN_POLICY {
520 VDS_SP_UNKNOWN = 0x0,
521 VDS_SP_ONLINE = 0x1,
522 VDS_SP_OFFLINE_SHARED = 0x2,
523 VDS_SP_OFFLINE = 0x3
524 } VDS_SAN_POLICY;
525
526 typedef enum _VDS_SERVICE_FLAG {
527 VDS_SVF_SUPPORT_DYNAMIC = 0x1,
528 VDS_SVF_SUPPORT_FAULT_TOLERANT = 0x2,
529 VDS_SVF_SUPPORT_GPT = 0x4,
530 VDS_SVF_SUPPORT_DYNAMIC_1394 = 0x8,
531 VDS_SVF_CLUSTER_SERVICE_CONFIGURED = 0x10,
532 VDS_SVF_AUTO_MOUNT_OFF = 0x20,
533 VDS_SVF_OS_UNINSTALL_VALID = 0x40,
534 VDS_SVF_EFI = 0x80,
535 VDS_SVF_SUPPORT_MIRROR = 0x100,
536 VDS_SVF_SUPPORT_RAID5 = 0x200
537 } VDS_SERVICE_FLAG;
538
539 typedef enum _VDS_STORAGE_IDENTIFIER_CODE_SET {
540 VDSStorageIdCodeSetReserved = 0,
541 VDSStorageIdCodeSetBinary = 1,
542 VDSStorageIdCodeSetAscii = 2
543 } VDS_STORAGE_IDENTIFIER_CODE_SET;
544
545 typedef enum VDS_STORAGE_IDENTIFIER_TYPE {
546 VDSStorageIdTypeVendorSpecific = 0,
547 VDSStorageIdTypeVendorId = 1,
548 VDSStorageIdTypeEUI64 = 2,
549 VDSStorageIdTypeFCPHName = 3,
550 VDSStorageIdTypeSCSINameString = 8
551 } VDS_STORAGE_IDENTIFIER_TYPE;
552
553 typedef enum _VDS_SUB_SYSTEM_FLAG {
554 VDS_SF_LUN_MASKING_CAPABLE = 0x1,
555 VDS_SF_LUN_PLEXING_CAPABLE = 0x2,
556 VDS_SF_LUN_REMAPPING_CAPABLE = 0x4,
557 VDS_SF_DRIVE_EXTENT_CAPABLE = 0x8,
558 VDS_SF_HARDWARE_CHECKSUM_CAPABLE = 0x10,
559 VDS_SF_RADIUS_CAPABLE = 0x20,
560 VDS_SF_READ_BACK_VERIFY_CAPABLE = 0x40,
561 VDS_SF_WRITE_THROUGH_CACHING_CAPABLE = 0x80,
562 VDS_SF_SUPPORTS_FAULT_TOLERANT_LUNS = 0x200,
563 VDS_SF_SUPPORTS_NON_FAULT_TOLERANT_LUNS = 0x400,
564 VDS_SF_SUPPORTS_SIMPLE_LUNS = 0x800,
565 VDS_SF_SUPPORTS_SPAN_LUNS = 0x1000,
566 VDS_SF_SUPPORTS_STRIPE_LUNS = 0x2000,
567 VDS_SF_SUPPORTS_MIRROR_LUNS = 0x4000,
568 VDS_SF_SUPPORTS_PARITY_LUNS = 0x8000,
569 VDS_SF_SUPPORTS_AUTH_CHAP = 0x10000,
570 VDS_SF_SUPPORTS_AUTH_MUTUAL_CHAP = 0x20000,
571 VDS_SF_SUPPORTS_SIMPLE_TARGET_CONFIG = 0x40000,
572 VDS_SF_SUPPORTS_LUN_NUMBER = 0x80000,
573 VDS_SF_SUPPORTS_MIRRORED_CACHE = 0x100000,
574 VDS_SF_READ_CACHING_CAPABLE = 0x200000,
575 VDS_SF_WRITE_CACHING_CAPABLE = 0x400000,
576 VDS_SF_MEDIA_SCAN_CAPABLE = 0x800000,
577 VDS_SF_CONSISTENCY_CHECK_CAPABLE = 0x1000000
578 } VDS_SUB_SYSTEM_FLAG;
579
580 typedef enum _VDS_SUB_SYSTEM_STATUS {
581 VDS_SSS_UNKNOWN = 0,
582 VDS_SSS_ONLINE = 1,
583 VDS_SSS_NOT_READY = 2,
584 VDS_SSS_OFFLINE = 4,
585 VDS_SSS_FAILED = 5,
586 VDS_SSS_PARTIALLY_MANAGED = 9
587 } VDS_SUB_SYSTEM_STATUS;
588
589 typedef enum _VDS_VERSION_SUPPORT_FLAG {
590 VDS_VSF_1_0 = 0x1,
591 VDS_VSF_1_1 = 0x2,
592 VDS_VSF_2_0 = 0x4,
593 VDS_VSF_2_1 = 0x8,
594 VDS_VSF_3_0 = 0x10
595 } VDS_VERSION_SUPPORT_FLAG;
596
597 typedef enum _VDS_VOLUME_FLAG {
598 VDS_VF_SYSTEM_VOLUME = 0x1,
599 VDS_VF_BOOT_VOLUME = 0x2,
600 VDS_VF_ACTIVE = 0x4,
601 VDS_VF_READONLY = 0x8,
602 VDS_VF_HIDDEN = 0x10,
603 VDS_VF_CAN_EXTEND = 0x20,
604 VDS_VF_CAN_SHRINK = 0x40,
605 VDS_VF_PAGEFILE = 0x80,
606 VDS_VF_HIBERNATION = 0x100,
607 VDS_VF_CRASHDUMP = 0x200,
608 VDS_VF_INSTALLABLE = 0x400,
609 VDS_VF_LBN_REMAP_ENABLED = 0x800,
610 VDS_VF_FORMATTING = 0x1000,
611 VDS_VF_NOT_FORMATTABLE = 0x2000,
612 VDS_VF_NTFS_NOT_SUPPORTED = 0x4000,
613 VDS_VF_FAT32_NOT_SUPPORTED = 0x8000,
614 VDS_VF_FAT_NOT_SUPPORTED = 0x10000,
615 VDS_VF_NO_DEFAULT_DRIVE_LETTER = 0x20000,
616 VDS_VF_PERMANENTLY_DISMOUNTED = 0x40000,
617 VDS_VF_PERMANENT_DISMOUNT_SUPPORTED = 0x80000,
618 VDS_VF_SHADOW_COPY = 0x100000,
619 VDS_VF_FVE_ENABLED = 0x200000,
620 VDS_VF_DIRTY = 0x400000
621 } VDS_VOLUME_FLAG;
622
623 typedef enum _VDS_VOLUME_PLEX_STATUS {
624 VDS_VPS_UNKNOWN = 0,
625 VDS_VPS_ONLINE = 1,
626 VDS_VPS_NO_MEDIA = 3,
627 VDS_VPS_FAILED = 5
628 } VDS_VOLUME_PLEX_STATUS;
629
630 typedef enum _VDS_VOLUME_PLEX_TYPE {
631 VDS_VPT_UNKNOWN = 0,
632 VDS_VPT_SIMPLE = 10,
633 VDS_VPT_SPAN = 11,
634 VDS_VPT_STRIPE = 12,
635 VDS_VPT_PARITY = 14
636 } VDS_VOLUME_PLEX_TYPE;
637
638 typedef enum _VDS_VOLUME_STATUS {
639 VDS_VS_UNKNOWN = 0,
640 VDS_VS_ONLINE = 1,
641 VDS_VS_NO_MEDIA = 3,
642 VDS_VS_FAILED = 5,
643 VDS_VS_OFFLINE = 4
644 } VDS_VOLUME_STATUS;
645
646 typedef enum _VDS_VOLUME_TYPE {
647 VDS_VT_UNKNOWN = 0,
648 VDS_VT_SIMPLE = 10,
649 VDS_VT_SPAN = 11,
650 VDS_VT_STRIPE = 12,
651 VDS_VT_MIRROR = 13,
652 VDS_VT_PARITY = 14
653 } VDS_VOLUME_TYPE;
654
655 typedef struct _VDS_PARTITION_INFO_GPT {
656 GUID partitionType;
657 GUID partitionId;
658 ULONGLONG attributes;
659 WCHAR name[GPT_PARTITION_NAME_LENGTH];
660 } VDS_PARTITION_INFO_GPT;
661
662 typedef struct _CHANGE_ATTRIBUTES_PARAMETERS {
663 VDS_PARTITION_STYLE style;
664 __C89_NAMELESS union {
665 struct {
666 BOOLEAN bootIndicator;
667 } MbrPartInfo;
668 struct {
669 ULONGLONG attributes;
670 } GptPartInfo;
671 };
672 } CHANGE_ATTRIBUTES_PARAMETERS;
673
674 typedef struct _CHANGE_PARTITION_TYPE_PARAMETERS {
675 VDS_PARTITION_STYLE style;
676 __C89_NAMELESS union {
677 struct {
678 BYTE partitionType;
679 } MbrPartInfo;
680 struct {
681 GUID partitionType;
682 } GptPartInfo;
683 } ;
684 } CHANGE_PARTITION_TYPE_PARAMETERS, *PCHANGE_PARTITION_TYPE_PARAMETERS;
685
686
687 typedef struct _CREATE_PARTITION_PARAMETERS {
688 VDS_PARTITION_STYLE style;
689 __C89_NAMELESS union {
690 struct {
691 BYTE partitionType;
692 BOOLEAN bootIndicator;
693 } MbrPartInfo;
694 struct {
695 GUID partitionType;
696 GUID partitionId;
697 ULONGLONG attributes;
698 WCHAR name[GPT_PARTITION_NAME_LENGTH];
699 } GptPartInfo;
700 };
701 } CREATE_PARTITION_PARAMETERS;
702
703 typedef struct _VDS_ASYNC_OUTPUT {
704 VDS_ASYNC_OUTPUT_TYPE type;
705 /*[switch(type)] */__C89_NAMELESS union {
706 /*[case(VDS_ASYNCOUT_CREATEPARTITION)]*/
707 struct {
708 ULONGLONG ullOffset;
709 VDS_OBJECT_ID volumeId;
710 } cp;
711 /*[case(VDS_ASYNCOUT_CREATEVOLUME)]*/
712 struct {
713 IUnknown *pVolumeUnk;
714 } cv;
715 /*[case(VDS_ASYNCOUT_BREAKVOLUMEPLEX)]*/
716 struct {
717 IUnknown *pVolumeUnk;
718 } bvp;
719 /*[case(VDS_ASYNCOUT_CREATELUN)]*/
720 struct {
721 IUnknown *pLunUnk;
722 } cl;
723 /*[case(VDS_ASYNCOUT_CREATETARGET)]*/
724 struct {
725 IUnknown *pTargetUnk;
726 } ct;
727 /*[case(VDS_ASYNCOUT_CREATEPORTALGROUP)]*/
728 struct {
729 IUnknown *pPortalGroupUnk;
730 } cpg;
731 /*[case(VDS_ASYNCOUT_CREATE_VDISK)]*/
732 struct {
733 IUnknown *pVDiskUnk;
734 } cvd;
735 };
736 } VDS_ASYNC_OUTPUT;
737
738#define VDS_NF_CONTROLLER_ARRIVE 103
739#define VDS_NF_CONTROLLER_DEPART 104
740#define VDS_NF_CONTROLLER_MODIFY 350
741#define VDS_NF_CONTROLLER_REMOVED 351
742
743 typedef struct _VDS_CONTROLLER_NOTIFICATION {
744 ULONG ulEvent;
745 VDS_OBJECT_ID controllerId;
746 } VDS_CONTROLLER_NOTIFICATION;
747
748 typedef struct _VDS_CONTROLLER_PROP {
749 VDS_OBJECT_ID id;
750 LPWSTR pwszFriendlyName;
751 LPWSTR pwszIdentification;
752 VDS_CONTROLLER_STATUS status;
753 VDS_HEALTH health;
754 SHORT sNumberOfPorts;
755 } VDS_CONTROLLER_PROP;
756
757 typedef struct _VDS_DISK_EXTENT {
758 VDS_OBJECT_ID diskId;
759 VDS_DISK_EXTENT_TYPE type;
760 ULONGLONG ullOffset;
761 ULONGLONG ullSize;
762 VDS_OBJECT_ID volumeId;
763 VDS_OBJECT_ID plexId;
764 ULONG memberIdx;
765 } VDS_DISK_EXTENT, *PVDS_DISK_EXTENT;
766
767 typedef struct _VDS_DISK_NOTIFICATION {
768 ULONG ulEvent;
769 VDS_OBJECT_ID diskId;
770 } VDS_DISK_NOTIFICATION;
771
772 typedef struct _VDS_PACK_NOTIFICATION {
773 ULONG ulEvent;
774 VDS_OBJECT_ID packId;
775 } VDS_PACK_NOTIFICATION;
776
777 typedef struct _VDS_VOLUME_NOTIFICATION {
778 ULONG ulEvent;
779 VDS_OBJECT_ID volumeId;
780 VDS_OBJECT_ID plexId;
781 ULONG ulPercentCompleted;
782 } VDS_VOLUME_NOTIFICATION;
783
784 typedef struct _VDS_PARTITION_NOTIFICATION {
785 ULONG ulEvent;
786 VDS_OBJECT_ID diskId;
787 ULONGLONG ullOffset;
788 } VDS_PARTITION_NOTIFICATION;
789
790 typedef struct _VDS_DRIVE_LETTER_NOTIFICATION {
791 ULONG ulEvent;
792 WCHAR wcLetter;
793 VDS_OBJECT_ID volumeId;
794 } VDS_DRIVE_LETTER_NOTIFICATION;
795
796 typedef struct _VDS_FILE_SYSTEM_NOTIFICATION {
797 ULONG ulEvent;
798 VDS_OBJECT_ID volumeId;
799 DWORD dwPercentCompleted;
800 } VDS_FILE_SYSTEM_NOTIFICATION;
801
802 typedef struct _VDS_MOUNT_POINT_NOTIFICATION {
803 ULONG ulEvent;
804 VDS_OBJECT_ID volumeId;
805 } VDS_MOUNT_POINT_NOTIFICATION;
806
807 typedef struct _VDS_SUB_SYSTEM_NOTIFICATION {
808 ULONG ulEvent;
809 VDS_OBJECT_ID subSystemId;
810 } VDS_SUB_SYSTEM_NOTIFICATION;
811
812 typedef struct _VDS_DRIVE_NOTIFICATION {
813 ULONG ulEvent;
814 VDS_OBJECT_ID driveId;
815 } VDS_DRIVE_NOTIFICATION;
816
817 typedef struct _VDS_LUN_NOTIFICATION {
818 ULONG ulEvent;
819 VDS_OBJECT_ID LunId;
820 } VDS_LUN_NOTIFICATION;
821
822 typedef struct _VDS_PORT_NOTIFICATION {
823 ULONG ulEvent;
824 VDS_OBJECT_ID portId;
825 } VDS_PORT_NOTIFICATION;
826
827 typedef struct _VDS_PORTAL_NOTIFICATION {
828 ULONG ulEvent;
829 VDS_OBJECT_ID portalId;
830 } VDS_PORTAL_NOTIFICATION;
831
832 typedef struct _VDS_TARGET_NOTIFICATION {
833 ULONG ulEvent;
834 VDS_OBJECT_ID targetId;
835 } VDS_TARGET_NOTIFICATION;
836
837 typedef struct _VDS_PORTAL_GROUP_NOTIFICATION {
838 ULONG ulEvent;
839 VDS_OBJECT_ID portalGroupId;
840 } VDS_PORTAL_GROUP_NOTIFICATION;
841
842 typedef struct _VDS_NOTIFICATION {
843 VDS_NOTIFICATION_TARGET_TYPE objectType;
844 __C89_NAMELESS union {
845 VDS_PACK_NOTIFICATION Pack;
846 VDS_DISK_NOTIFICATION Disk;
847 VDS_VOLUME_NOTIFICATION Volume;
848 VDS_PARTITION_NOTIFICATION Partition;
849 VDS_DRIVE_LETTER_NOTIFICATION Letter;
850 VDS_FILE_SYSTEM_NOTIFICATION FileSystem;
851 VDS_MOUNT_POINT_NOTIFICATION MountPoint;
852 VDS_SUB_SYSTEM_NOTIFICATION SubSystem;
853 VDS_CONTROLLER_NOTIFICATION Controller;
854 VDS_DRIVE_NOTIFICATION Drive;
855 VDS_LUN_NOTIFICATION Lun;
856 VDS_PORT_NOTIFICATION Port;
857 VDS_PORTAL_NOTIFICATION Portal;
858 VDS_TARGET_NOTIFICATION Target;
859 VDS_PORTAL_GROUP_NOTIFICATION PortalGroup;
860 };
861 } VDS_NOTIFICATION;
862
863 typedef enum _VDS_LUN_RESERVE_MODE {
864 VDS_LRM_NONE = 0x00000000,
865 VDS_LRM_EXCLUSIVE_RW = 0x00000001,
866 VDS_LRM_EXCLUSIVE_RO = 0x00000002,
867 VDS_LRM_SHARED_RO = 0x00000003,
868 VDS_LRM_SHARED_RW = 0x00000004
869 } VDS_LUN_RESERVE_MODE;
870
871 typedef struct _VDS_DISK_PROP {
872 VDS_OBJECT_ID id;
873 VDS_DISK_STATUS status;
874 VDS_LUN_RESERVE_MODE ReserveMode;
875 VDS_HEALTH health;
876 DWORD dwDeviceType;
877 DWORD dwMediaType;
878 ULONGLONG ullSize;
879 ULONG ulBytesPerSector;
880 ULONG ulSectorsPerTrack;
881 ULONG ulTracksPerCylinder;
882 ULONG ulFlags;
883 VDS_STORAGE_BUS_TYPE BusType;
884 VDS_PARTITION_STYLE PartitionStyle;
885 __C89_NAMELESS union {
886 DWORD dwSignature;
887 GUID DiskGuid;
888 };
889 LPWSTR pwszDiskAddress;
890 LPWSTR pwszName;
891 LPWSTR pwszFriendlyName;
892 LPWSTR pwszAdaptorName;
893 LPWSTR pwszDevicePath;
894 } VDS_DISK_PROP, *PVDS_DISK_PROP;
895
896 typedef struct _VDS_DRIVE_EXTENT {
897 VDS_OBJECT_ID id;
898 VDS_OBJECT_ID LunId;
899 ULONGLONG ullSize;
900 WINBOOL bUsed;
901 } VDS_DRIVE_EXTENT;
902
903#define VDS_NF_DRIVE_LETTER_FREE 201
904#define VDS_NF_DRIVE_LETTER_ASSIGN 202
905
906 typedef struct _VDS_DRIVE_LETTER_PROP {
907 WCHAR wcLetter;
908 VDS_OBJECT_ID volumeId;
909 ULONG ulFlags;
910 WINBOOL bUsed;
911 } VDS_DRIVE_LETTER_PROP, *PVDS_DRIVE_LETTER_PROP;
912
913#define VDS_NF_DRIVE_ARRIVE 105
914#define VDS_NF_DRIVE_DEPART 106
915#define VDS_NF_DRIVE_MODIFY 107
916#define VDS_NF_DRIVE_REMOVED 354
917
918 typedef struct _VDS_DRIVE_PROP {
919 VDS_OBJECT_ID id;
920 ULONGLONG ullSize;
921 LPWSTR pwszFriendlyName;
922 LPWSTR pwszIdentification;
923 ULONG ulFlags;
924 VDS_DRIVE_STATUS status;
925 VDS_HEALTH health;
926 SHORT sInternalBusNumber;
927 SHORT sSlotNumber;
928 } VDS_DRIVE_PROP;
929
930 typedef struct _VDS_FILE_SYSTEM_FORMAT_SUPPORT_PROP {
931 ULONG ulFlags;
932 USHORT usRevision;
933 ULONG ulDefaultUnitAllocationSize;
934 ULONG rgulAllowedUnitAllocationSizes;
935 WCHAR wszName;
936 } VDS_FILE_SYSTEM_FORMAT_SUPPORT_PROP, *PVDS_FILE_SYSTEM_FORMAT_SUPPORT_PROP;
937
938#define VDS_NF_FILE_SYSTEM_MODIFY 203
939#define VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204
940
941 typedef struct _VDS_FILE_SYSTEM_PROP {
942 VDS_FILE_SYSTEM_TYPE type;
943 VDS_OBJECT_ID volumeId;
944 ULONG ulFlags;
945 ULONGLONG ullTotalAllocationUnits;
946 ULONGLONG ullAvailableAllocationUnits;
947 ULONG ulAllocationUnitSize;
948 LPWSTR pwszLabel;
949 } VDS_FILE_SYSTEM_PROP, *PVDS_FILE_SYSTEM_PROP;
950
951#define MAX_FS_NAME_SIZE 8
952
953 typedef struct _VDS_FILE_SYSTEM_TYPE_PROP {
954 VDS_FILE_SYSTEM_TYPE type;
955 WCHAR wszName[MAX_FS_NAME_SIZE];
956 ULONG ulFlags;
957 ULONG ulCompressionFlags;
958 ULONG ulMaxLableLength;
959 LPWSTR pwszIllegalLabelCharSet;
960 } VDS_FILE_SYSTEM_TYPE_PROP, *PVDS_FILE_SYSTEM_TYPE_PROP;
961
962 typedef struct _VDS_WWN {
963 UCHAR rguchWwn[8];
964 } VDS_WWN;
965
966 typedef struct _VDS_HBAPORT_PROP {
967 VDS_OBJECT_ID id;
968 VDS_WWN wwnNode;
969 VDS_WWN wwnPort;
970 VDS_HBAPORT_TYPE type;
971 VDS_HBAPORT_STATUS status;
972 ULONG ulPortSpeed;
973 ULONG ulSupportedPortSpeed;
974 } VDS_HBAPORT_PROP;
975
976#define VDS_HINT_FASTCRASHRECOVERYREQUIRED 0x0000000000000001ULL
977#define VDS_HINT_MOSTLYREADS 0x0000000000000002ULL
978#define VDS_HINT_OPTIMIZEFORSEQUENTIALREADS 0x0000000000000004ULL
979#define VDS_HINT_OPTIMIZEFORSEQUENTIALWRITES 0x0000000000000008ULL
980#define VDS_HINT_READBACKVERIFYENABLED 0x0000000000000010ULL
981#define VDS_HINT_REMAPENABLED 0x0000000000000020ULL
982#define VDS_HINT_WRITETHROUGHCACHINGENABLED 0x0000000000000040ULL
983#define VDS_HINT_HARDWARECHECKSUMENABLED 0x0000000000000080ULL
984#define VDS_HINT_ISYANKABLE 0x0000000000000100ULL
985#define VDS_HINT_ALLOCATEHOTSPARE 0x0000000000000200ULL
986#define VDS_HINT_BUSTYPE 0x0000000000000400ULL
987#define VDS_HINT_USEMIRROREDCACHE 0x0000000000000800ULL
988#define VDS_HINT_READCACHINGENABLED 0x0000000000001000ULL
989#define VDS_HINT_WRITECACHINGENABLED 0x0000000000002000ULL
990#define VDS_HINT_MEDIASCANENABLED 0x0000000000004000ULL
991#define VDS_HINT_CONSISTENCYCHECKENABLED 0x0000000000008000ULL
992
993 typedef struct _VDS_HINTS {
994 ULONGLONG ullHintMask;
995 ULONGLONG ullExpectedMaximumSize;
996 ULONG ulOptimalReadSize;
997 ULONG ulOptimalReadAlignment;
998 ULONG ulOptimalWriteSize;
999 ULONG ulOptimalWriteAlignment;
1000 ULONG ulMaximumDriveCount;
1001 ULONG ulStripeSize;
1002 WINBOOL bFastCrashRecoveryRequired;
1003 WINBOOL bMostlyReads;
1004 WINBOOL bOptimizeForSequentialReads;
1005 WINBOOL bOptimizeForSequentialWrites;
1006 WINBOOL bRemapEnabled;
1007 WINBOOL bReadBackVerifyEnabled;
1008 WINBOOL bWriteThroughCachingEnabled;
1009 WINBOOL bHardwareChecksumEnabled;
1010 WINBOOL bIsYankable;
1011 SHORT sRebuildPriority;
1012 } VDS_HINTS, *PVDS_HINTS;
1013
1014 typedef struct _VDS_INPUT_DISK {
1015 VDS_OBJECT_ID diskId;
1016 ULONGLONG ullSize;
1017 VDS_OBJECT_ID plexId;
1018 ULONG memberIdx;
1019 } VDS_INPUT_DISK;
1020
1021 typedef struct _VDS_IPADDRESS {
1022 VDS_IPADDRESS_TYPE type;
1023 ULONG ipv4Address;
1024 UCHAR ipv6Address[16];
1025 ULONG ulIpv6FlowInfo;
1026 ULONG ulIpv6ScopeId;
1027 WCHAR wszTextAddress[256 + 1];
1028 ULONG ulPort;
1029 } VDS_IPADDRESS;
1030
1031 typedef struct _VDS_ISCSI_INITIATOR_ADAPTER_PROP {
1032 VDS_OBJECT_ID id;
1033 LPWSTR pwszName;
1034 } VDS_ISCSI_INITIATOR_ADAPTER_PROP;
1035
1036 typedef struct _VDS_ISCSI_INITIATOR_PORTAL_PROP {
1037 VDS_OBJECT_ID id;
1038 VDS_IPADDRESS address;
1039 ULONG ulPortIndex;
1040 } VDS_ISCSI_INITIATOR_PORTAL_PROP;
1041
1042 typedef struct _VDS_ISCSI_PORTAL_PROP {
1043 VDS_OBJECT_ID id;
1044 VDS_IPADDRESS address;
1045 VDS_ISCSI_PORTAL_STATUS status;
1046 } VDS_ISCSI_PORTAL_PROP;
1047
1048 typedef USHORT VDS_ISCSI_PORTALGROUP_TAG;
1049
1050 typedef struct _VDS_ISCSI_PORTALGROUP_PROP {
1051 VDS_OBJECT_ID id;
1052 VDS_ISCSI_PORTALGROUP_TAG tag;
1053 } VDS_ISCSI_PORTALGROUP_PROP;
1054
1055 typedef struct _VDS_ISCSI_SHARED_SECRET {
1056 UCHAR *pSharedSecret;
1057 ULONG ulSharedSecretSize;
1058 } VDS_ISCSI_SHARED_SECRET;
1059
1060 typedef struct _VDS_ISCSI_TARGET_PROP {
1061 VDS_OBJECT_ID id;
1062 LPWSTR pwszIscsiName;
1063 LPWSTR pwszFriendlyName;
1064 WINBOOL bChapEnabled;
1065 } VDS_ISCSI_TARGET_PROP;
1066
1067 typedef struct _VDS_STORAGE_IDENTIFIER {
1068 VDS_STORAGE_IDENTIFIER_CODE_SET m_CodeSet;
1069 VDS_STORAGE_IDENTIFIER_TYPE m_Type;
1070 ULONG m_cbIdentifier;
1071 BYTE* m_rgbIdentifier;
1072 } VDS_STORAGE_IDENTIFIER;
1073
1074 typedef struct _VDS_STORAGE_DEVICE_ID_DESCRIPTOR {
1075 ULONG m_version;
1076 ULONG m_cIdentifiers;
1077 VDS_STORAGE_IDENTIFIER* m_rgIdentifiers;
1078 } VDS_STORAGE_DEVICE_ID_DESCRIPTOR;
1079
1080#define VDS_NF_LUN_ARRIVE 108
1081#define VDS_NF_LUN_DEPART 109
1082#define VDS_NF_LUN_MODIFY 110
1083
1084 typedef struct _VDS_LUN_PLEX_PROP {
1085 VDS_OBJECT_ID id;
1086 ULONGLONG ullSize;
1087 VDS_LUN_PLEX_TYPE type;
1088 VDS_LUN_PLEX_STATUS status;
1089 VDS_HEALTH health;
1090 VDS_TRANSITION_STATE TransitionState;
1091 ULONG ulFlags;
1092 ULONG ulStripeSize;
1093 SHORT sRebuildPriority;
1094 } VDS_LUN_PLEX_PROP;
1095
1096 typedef struct _VDS_LUN_PROP {
1097 VDS_OBJECT_ID id;
1098 ULONGLONG ullSize;
1099 LPWSTR pwszFriendlyName;
1100 LPWSTR pwszIdentification;
1101 LPWSTR pwszUnmaskingList;
1102 ULONG ulFlags;
1103 VDS_LUN_TYPE type;
1104 VDS_LUN_STATUS status;
1105 VDS_HEALTH health;
1106 VDS_TRANSITION_STATE TransitionState;
1107 SHORT sRebuildPriority;
1108 } VDS_LUN_PROP, *PVDS_LUN_PROP;
1109
1110#define VDS_NF_MOUNT_POINTS_CHANGE 205
1111
1112#define VDS_NF_PACK_ARRIVE 1
1113#define VDS_NF_PACK_DEPART 2
1114#define VDS_NF_PACK_MODIFY 3
1115
1116 typedef struct _VDS_PACK_PROP {
1117 VDS_OBJECT_ID id;
1118 LPWSTR pwszName;
1119 VDS_PACK_STATUS status;
1120 ULONG ulFlags;
1121 } VDS_PACK_PROP, *PVDS_PACK_PROP;
1122
1123 typedef struct _VDS_PARTITION_INFO_MBR {
1124 BYTE partitionType;
1125 BOOLEAN bootIndicator;
1126 BOOLEAN recognizedPartition;
1127 DWORD hiddenSectors;
1128 } VDS_PARTITION_INFO_MBR;
1129
1130#define VDS_NF_PARTITION_ARRIVE 11
1131#define VDS_NF_PARTITION_DEPART 12
1132#define VDS_NF_PARTITION_MODIFY 13
1133
1134 typedef struct _VDS_PARTITION_PROP {
1135 VDS_PARTITION_STYLE PartitionStyle;
1136 ULONG ulFlags;
1137 ULONG ulPartitionNumber;
1138 ULONGLONG ullOffset;
1139 ULONGLONG ullSize;
1140 __C89_NAMELESS union {
1141 VDS_PARTITION_INFO_MBR Mbr;
1142 VDS_PARTITION_INFO_GPT Gpt;
1143 };
1144 } VDS_PARTITION_PROP;
1145
1146 typedef struct _VDS_PATH_INFO {
1147 VDS_PATH_ID pathId;
1148 VDS_HWPROVIDER_TYPE type;
1149 VDS_PATH_STATUS status;
1150 __C89_NAMELESS union {
1151 VDS_OBJECT_ID controllerPortId;
1152 VDS_OBJECT_ID targetPortalId;
1153 };
1154 __C89_NAMELESS union {
1155 VDS_OBJECT_ID hbaPortId;
1156 VDS_OBJECT_ID initiatorAdapterId;
1157 };
1158 __C89_NAMELESS union {
1159 VDS_HBAPORT_PROP *pHbaPortProp;
1160 VDS_IPADDRESS *pInitiatorPortalIpAddr;
1161 };
1162 } VDS_PATH_INFO;
1163
1164 typedef struct _VDS_PATH_POLICY {
1165 VDS_PATH_ID pathId;
1166 BOOL bPrimaryPath;
1167 ULONG ulWeight;
1168 } VDS_PATH_POLICY;
1169
1170#define VDS_NF_PORT_ARRIVE 121
1171#define VDS_NF_PORT_DEPART 122
1172#define VDS_NF_PORT_MODIFY 352
1173#define VDS_NF_PORT_REMOVED 353
1174
1175 typedef struct _VDS_PORT_PROP {
1176 VDS_OBJECT_ID id;
1177 LPWSTR pwszFriendlyName;
1178 LPWSTR pwszIdentification;
1179 VDS_PORT_STATUS status;
1180 } VDS_PORT_PROP;
1181
1182#define VDS_NF_PORTAL_GROUP_ARRIVE 129
1183#define VDS_NF_PORTAL_GROUP_DEPART 130
1184#define VDS_NF_PORTAL_GROUP_MODIFY 131
1185#define VDS_NF_PORTAL_ARRIVE 123
1186#define VDS_NF_PORTAL_DEPART 124
1187#define VDS_NF_PORTAL_MODIFY 125
1188
1189 typedef struct _VDS_PROVIDER_PROP {
1190 VDS_OBJECT_ID id;
1191 LPWSTR pwszName;
1192 GUID guidVersionId;
1193 LPWSTR pwszVersion;
1194 VDS_PROVIDER_TYPE type;
1195 ULONG ulFlags;
1196 ULONG ulStripeSizeFlags;
1197 SHORT sRebuildPriority;
1198 } VDS_PROVIDER_PROP;
1199
1200 typedef struct VDS_REPARSE_POINT_PROP {
1201 VDS_OBJECT_ID SourceVolumeId;
1202 LPWSTR pwszPath;
1203 } VDS_REPARSE_POINT_PROP, *PVDS_REPARSE_POINT_PROP;
1204
1205 typedef struct _VDS_SERVICE_PROP {
1206 LPWSTR pwszVersion;
1207 ULONG ulFlags;
1208 } VDS_SERVICE_PROP;
1209
1210#define VDS_NF_SUB_SYSTEM_ARRIVE 101
1211#define VDS_NF_SUB_SYSTEM_DEPART 102
1212#define VDS_NF_SUB_SYSTEM_MODIFY 151
1213
1214 typedef struct _VDS_SUB_SYSTEM_PROP {
1215 VDS_OBJECT_ID id;
1216 LPWSTR pwszFriendlyName;
1217 LPWSTR pwszIdentification;
1218 ULONG ulFlags;
1219 ULONG ulStripeSizeFlags;
1220 VDS_SUB_SYSTEM_STATUS status;
1221 VDS_HEALTH health;
1222 SHORT sNumberOfInternalBuses;
1223 SHORT sMaxNumberOfSlotsEachBus;
1224 SHORT sMaxNumberOfControllers;
1225 SHORT sRebuildPriority;
1226 } VDS_SUB_SYSTEM_PROP;
1227
1228#define VDS_NF_TARGET_ARRIVE 126
1229#define VDS_NF_TARGET_DEPART 127
1230#define VDS_NF_TARGET_MODIFY 128
1231#define VDS_NF_VOLUME_ARRIVE 4
1232#define VDS_NF_VOLUME_DEPART 5
1233#define VDS_NF_VOLUME_MODIFY 6
1234#define VDS_NF_VOLUME_REBUILDING 7
1235
1236 typedef struct _VDS_VOLUME_PLEX_PROP {
1237 VDS_OBJECT_ID id;
1238 VDS_VOLUME_PLEX_TYPE type;
1239 VDS_VOLUME_PLEX_STATUS status;
1240 VDS_HEALTH health;
1241 VDS_TRANSITION_STATE TransitionState;
1242 ULONGLONG ullSize;
1243 ULONG ulStripeSize;
1244 ULONG ulNumberOfMembers;
1245 } VDS_VOLUME_PLEX_PROP, *PVDS_VOLUME_PLEX_PROP;
1246
1247 typedef struct _VDS_VOLUME_PROP {
1248 VDS_OBJECT_ID id;
1249 VDS_VOLUME_TYPE type;
1250 VDS_VOLUME_STATUS status;
1251 VDS_HEALTH health;
1252 VDS_TRANSITION_STATE TransitionState;
1253 ULONGLONG ullSize;
1254 ULONG ulFlags;
1255 VDS_FILE_SYSTEM_TYPE RecommendedFileSystemType;
1256 LPWSTR pwszName;
1257 } VDS_VOLUME_PROP, *PVDS_VOLUME_PROP;
1258
1259#ifdef __cplusplus
1260}
1261#endif
1262
1263#endif /*(_WIN32_WINNT >= 0x0600)*/
1264
1265#include <vdslun.h>
1266
1267#if (_WIN32_WINNT >= 0x0601)
1268#ifdef __cplusplus
1269extern "C" {
1270#endif
1271typedef enum _VDS_DISK_OFFLINE_REASON {
1272 VDSDiskOfflineReasonNone = 0,
1273 VDSDiskOfflineReasonPolicy = 1,
1274 VDSDiskOfflineReasonRedundantPath = 2,
1275 VDSDiskOfflineReasonSnapshot = 3,
1276 VDSDiskOfflineReasonCollision = 4
1277} VDS_DISK_OFFLINE_REASON;
1278
1279typedef enum _VDS_STORAGE_POOL_STATUS {
1280 VDS_SPS_UNKNOWN = 0,
1281 VDS_SPS_ONLINE = 1,
1282 VDS_SPS_NOT_READY = 2,
1283 VDS_SPS_OFFLINE = 4
1284} VDS_STORAGE_POOL_STATUS;
1285
1286typedef enum _VDS_SUB_SYSTEM_SUPPORTED_RAID_TYPE_FLAG {
1287 VDS_SF_SUPPORTS_RAID2_LUNS = 0x1,
1288 VDS_SF_SUPPORTS_RAID3_LUNS = 0x2,
1289 VDS_SF_SUPPORTS_RAID4_LUNS = 0x4,
1290 VDS_SF_SUPPORTS_RAID5_LUNS = 0x8,
1291 VDS_SF_SUPPORTS_RAID6_LUNS = 0x10,
1292 VDS_SF_SUPPORTS_RAID01_LUNS = 0x20,
1293 VDS_SF_SUPPORTS_RAID03_LUNS = 0x40,
1294 VDS_SF_SUPPORTS_RAID05_LUNS = 0x80,
1295 VDS_SF_SUPPORTS_RAID10_LUNS = 0x100,
1296 VDS_SF_SUPPORTS_RAID15_LUNS = 0x200,
1297 VDS_SF_SUPPORTS_RAID30_LUNS = 0x400,
1298 VDS_SF_SUPPORTS_RAID50_LUNS = 0x800,
1299 VDS_SF_SUPPORTS_RAID51_LUNS = 0x1000,
1300 VDS_SF_SUPPORTS_RAID53_LUNS = 0x2000,
1301 VDS_SF_SUPPORTS_RAID60_LUNS = 0x4000,
1302 VDS_SF_SUPPORTS_RAID61_LUNS = 0x8000
1303} VDS_SUB_SYSTEM_SUPPORTED_RAID_TYPE_FLAG;
1304
1305typedef enum VDS_FORMAT_OPTION_FLAGS {
1306 VDS_FSOF_NONE = 0x00000000,
1307 VDS_FSOF_FORCE = 0x00000001,
1308 VDS_FSOF_QUICK = 0x00000002,
1309 VDS_FSOF_COMPRESSION = 0x00000004,
1310 VDS_FSOF_DUPLICATE_METADATA = 0x00000008
1311} VDS_FORMAT_OPTION_FLAGS;
1312
1313typedef enum _VDS_INTERCONNECT_FLAG {
1314 VDS_ITF_PCI_RAID = 0x1,
1315 VDS_ITF_FIBRE_CHANNEL = 0x2,
1316 VDS_ITF_ISCSI = 0x4,
1317 VDS_ITF_SAS = 0x8
1318} VDS_INTERCONNECT_FLAG;
1319
1320typedef enum _VDS_RAID_TYPE {
1321 VDS_RT_UNKNOWN = 0,
1322 VDS_RT_RAID0 = 10,
1323 VDS_RT_RAID1 = 11,
1324 VDS_RT_RAID2 = 12,
1325 VDS_RT_RAID3 = 13,
1326 VDS_RT_RAID4 = 14,
1327 VDS_RT_RAID5 = 15,
1328 VDS_RT_RAID6 = 16,
1329 VDS_RT_RAID01 = 17,
1330 VDS_RT_RAID03 = 18,
1331 VDS_RT_RAID05 = 19,
1332 VDS_RT_RAID10 = 20,
1333 VDS_RT_RAID15 = 21,
1334 VDS_RT_RAID30 = 22,
1335 VDS_RT_RAID50 = 23,
1336 VDS_RT_RAID51 = 24,
1337 VDS_RT_RAID53 = 25,
1338 VDS_RT_RAID60 = 26,
1339 VDS_RT_RAID61 = 27
1340} VDS_RAID_TYPE;
1341
1342typedef enum _VDS_STORAGE_POOL_TYPE {
1343 VDS_SPT_UNKNOWN = 0,
1344 VDS_SPT_PRIMORDIAL = 0x1,
1345 VDS_SPT_CONCRETE = 0x2
1346} VDS_STORAGE_POOL_TYPE;
1347
1348typedef enum _VDS_VDISK_STATE {
1349 VDS_VST_UNKNOWN = 0,
1350 VDS_VST_ADDED = 1,
1351 VDS_VST_OPEN = 2,
1352 VDS_VST_ATTACH_PENDING = 3,
1353 VDS_VST_ATTACHED_NOT_OPEN = 4,
1354 VDS_VST_ATTACHED = 5,
1355 VDS_VST_DETACH_PENDING = 6,
1356 VDS_VST_COMPACTING = 7,
1357 VDS_VST_MERGING = 8,
1358 VDS_VST_EXPANDING = 9,
1359 VDS_VST_DELETED = 10,
1360 VDS_VST_MAX = 11
1361} VDS_VDISK_STATE;
1362
1363typedef struct _VDS_CREATE_VDISK_PARAMETERS {
1364 GUID UniqueId;
1365 ULONGLONG MaximumSize;
1366 ULONG BlockSizeInBytes;
1367 ULONG SectorSizeInBytes;
1368 LPWSTR pParentPath;
1369 LPWSTR pSourcePath;
1370} VDS_CREATE_VDISK_PARAMETERS, *PVDS_CREATE_VDISK_PARAMETERS;
1371
1372typedef struct _VDS_DISK_FREE_EXTENT {
1373 VDS_OBJECT_ID diskId;
1374 ULONGLONG ullOffset;
1375 ULONGLONG ullSize;
1376} VDS_DISK_FREE_EXTENT, *PVDS_DISK_FREE_EXTENT;
1377
1378typedef struct _VDS_DISK_PROP2 {
1379 VDS_OBJECT_ID id;
1380 VDS_DISK_STATUS status;
1381 VDS_DISK_OFFLINE_REASON OfflineReason;
1382 VDS_LUN_RESERVE_MODE ReserveMode;
1383 VDS_HEALTH health;
1384 DWORD dwDeviceType;
1385 DWORD dwMediaType;
1386 ULONGLONG ullSize;
1387 ULONG ulBytesPerSector;
1388 ULONG ulSectorsPerTrack;
1389 ULONG ulTracksPerCylinder;
1390 ULONG ulFlags;
1391 VDS_STORAGE_BUS_TYPE BusType;
1392 VDS_PARTITION_STYLE PartitionStyle;
1393 __C89_NAMELESS union {
1394 DWORD dwSignature;
1395 GUID DiskGuid;
1396 };
1397 LPWSTR pwszDiskAddress;
1398 LPWSTR pwszName;
1399 LPWSTR pwszFriendlyName;
1400 LPWSTR pwszAdaptorName;
1401 LPWSTR pwszDevicePath;
1402 LPWSTR pwszLocationPath;
1403} VDS_DISK_PROP2, *PVDS_DISK_PROP2;
1404
1405typedef struct _VDS_DRIVE_PROP2 {
1406 VDS_OBJECT_ID id;
1407 ULONGLONG ullSize;
1408 LPWSTR pwszFriendlyName;
1409 LPWSTR pwszIdentification;
1410 ULONG ulFlags;
1411 VDS_DRIVE_STATUS status;
1412 VDS_HEALTH health;
1413 SHORT sInternalBusNumber;
1414 SHORT sSlotNumber;
1415 ULONG ulEnclosureNumber;
1416 VDS_STORAGE_BUS_TYPE busType;
1417 ULONG ulSpindleSpeed;
1418} VDS_DRIVE_PROP2, *PVDS_DRIVE_PROP2;
1419
1420typedef struct _VDS_HINTS2 {
1421 ULONGLONG ullHintMask;
1422 ULONGLONG ullExpectedMaximumSize;
1423 ULONG ulOptimalReadSize;
1424 ULONG ulOptimalReadAlignment;
1425 ULONG ulOptimalWriteSize;
1426 ULONG ulOptimalWriteAlignment;
1427 ULONG ulMaximumDriveCount;
1428 ULONG ulStripeSize;
1429 ULONG ulReserved1;
1430 ULONG ulReserved2;
1431 ULONG ulReserved3;
1432 WINBOOL bFastCrashRecoveryRequired;
1433 WINBOOL bMostlyReads;
1434 WINBOOL bOptimizeForSequentialReads;
1435 WINBOOL bOptimizeForSequentialWrites;
1436 WINBOOL bRemapEnabled;
1437 WINBOOL bReadBackVerifyEnabled;
1438 WINBOOL bWriteThroughCachingEnabled;
1439 WINBOOL bHardwareChecksumEnabled;
1440 WINBOOL bIsYankable;
1441 WINBOOL bAllocateHotSpare;
1442 WINBOOL bUseMirroredCache;
1443 WINBOOL bReadCachingEnabled;
1444 WINBOOL bWriteCachingEnabled;
1445 WINBOOL bMediaScanEnabled;
1446 WINBOOL bConsistencyCheckEnabled;
1447 VDS_STORAGE_BUS_TYPE BusType;
1448 WINBOOL bReserved1;
1449 WINBOOL bReserved2;
1450 WINBOOL bReserved3;
1451 SHORT sRebuildPriority;
1452} VDS_HINTS2, *PVDS_HINTS2;
1453
1454typedef struct _VDS_POOL_CUSTOM_ATTRIBUTES {
1455 LPWSTR pwszName;
1456 LPWSTR pwszValue;
1457} VDS_POOL_CUSTOM_ATTRIBUTES, *PVDS_POOL_CUSTOM_ATTRIBUTES;
1458
1459typedef struct _VDS_POOL_ATTRIBUTES {
1460 ULONGLONG ullAttributeMask;
1461 VDS_RAID_TYPE raidType;
1462 VDS_STORAGE_BUS_TYPE busType;
1463 LPWSTR pwszIntendedUsage;
1464 WINBOOL bSpinDown;
1465 WINBOOL bIsThinProvisioned;
1466 ULONGLONG ullProvisionedSpace;
1467 WINBOOL bNoSinglePointOfFailure;
1468 ULONG ulDataRedundancyMax;
1469 ULONG ulDataRedundancyMin;
1470 ULONG ulDataRedundancyDefault;
1471 ULONG ulPackageRedundancyMax;
1472 ULONG ulPackageRedundancyMin;
1473 ULONG ulPackageRedundancyDefault;
1474 ULONG ulStripeSize;
1475 ULONG ulStripeSizeMax;
1476 ULONG ulStripeSizeMin;
1477 ULONG ulDefaultStripeSize;
1478 ULONG ulNumberOfColumns;
1479 ULONG ulNumberOfColumnsMax;
1480 ULONG ulNumberOfColumnsMin;
1481 ULONG ulDefaultNumberofColumns;
1482 ULONG ulDataAvailabilityHint;
1483 ULONG ulAccessRandomnessHint;
1484 ULONG ulAccessDirectionHint;
1485 ULONG ulAccessSizeHint;
1486 ULONG ulAccessLatencyHint;
1487 ULONG ulAccessBandwidthWeightHint;
1488 ULONG ulStorageCostHint;
1489 ULONG ulStorageEfficiencyHint;
1490 ULONG ulNumOfCustomAttributes;
1491 VDS_POOL_CUSTOM_ATTRIBUTES *pPoolCustomAttributes;
1492 WINBOOL bReserved1;
1493 WINBOOL bReserved2;
1494 ULONG ulReserved1;
1495 ULONG ulReserved2;
1496 ULONGLONG ullReserved1;
1497 ULONGLONG ullReserved2;
1498} VDS_POOL_ATTRIBUTES, *PVDS_POOL_ATTRIBUTES;
1499
1500typedef struct _VDS_STORAGE_POOL_DRIVE_EXTENT {
1501 VDS_OBJECT_ID id;
1502 ULONGLONG ullSize;
1503 WINBOOL bUsed;
1504} VDS_STORAGE_POOL_DRIVE_EXTENT, *PVDS_STORAGE_POOL_DRIVE_EXTENT;
1505
1506typedef struct _VDS_STORAGE_POOL_PROP {
1507 VDS_OBJECT_ID id;
1508 VDS_STORAGE_POOL_STATUS status;
1509 VDS_HEALTH health;
1510 VDS_STORAGE_POOL_TYPE type;
1511 LPWSTR pwszName;
1512 LPWSTR pwszDescription;
1513 ULONGLONG ullTotalConsumedSpace;
1514 ULONGLONG ullTotalManagedSpace;
1515 ULONGLONG ullRemainingFreeSpace;
1516} VDS_STORAGE_POOL_PROP, *PVDS_STORAGE_POOL_PROP;
1517
1518typedef struct _VDS_SUB_SYSTEM_PROP2 {
1519 VDS_OBJECT_ID id;
1520 LPWSTR pwszFriendlyName;
1521 LPWSTR pwszIdentification;
1522 ULONG ulFlags;
1523 ULONG ulStripeSizeFlags;
1524 ULONG ulSupportedRaidTypeFlags;
1525 VDS_SUB_SYSTEM_STATUS status;
1526 VDS_HEALTH health;
1527 SHORT sNumberOfInternalBuses;
1528 SHORT sMaxNumberOfSlotsEachBus;
1529 SHORT sMaxNumberOfControllers;
1530 SHORT sRebuildPriority;
1531 ULONG ulNumberOfEnclosures;
1532} VDS_SUB_SYSTEM_PROP2, *PVDS_SUB_SYSTEM_PROP2;
1533
1534typedef struct _VDS_VDISK_PROPERTIES {
1535 VDS_OBJECT_ID Id;
1536 VDS_VDISK_STATE State;
1537 VIRTUAL_STORAGE_TYPE VirtualDeviceType;
1538 ULONGLONG VirtualSize;
1539 ULONGLONG PhysicalSize;
1540 LPWSTR pPath;
1541 LPWSTR pDeviceName;
1542 DEPENDENT_DISK_FLAG DiskFlag;
1543 WINBOOL bIsChild;
1544 LPWSTR pParentPath;
1545} VDS_VDISK_PROPERTIES, *PVDS_VDISK_PROPERTIES;
1546
1547typedef struct _VDS_VOLUME_PROP2 {
1548 VDS_OBJECT_ID id;
1549 VDS_VOLUME_TYPE type;
1550 VDS_VOLUME_STATUS status;
1551 VDS_HEALTH health;
1552 VDS_TRANSITION_STATE TransitionState;
1553 ULONGLONG ullSize;
1554 ULONG ulFlags;
1555 VDS_FILE_SYSTEM_TYPE RecommendedFileSystemType;
1556 ULONG cbUniqueId;
1557 LPWSTR pwszName;
1558 BYTE *pUniqueId;
1559} VDS_VOLUME_PROP2, *PVDS_VOLUME_PROP2;
1560
1561#ifdef __cplusplus
1562}
1563#endif
1564#endif /*(_WIN32_WINNT >= 0x0601)*/
1565
1566#endif /*_INC_VDS*/
Note: See TracBrowser for help on using the repository browser.