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 14 extern "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 1269 extern "C" { 1270 #endif 1271 typedef 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 1279 typedef 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 1286 typedef 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 1305 typedef 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 1313 typedef 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 1320 typedef 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 1342 typedef 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 1348 typedef 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 1363 typedef 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 1372 typedef 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 1378 typedef 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 1405 typedef 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 1420 typedef 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 1454 typedef struct _VDS_POOL_CUSTOM_ATTRIBUTES { 1455 LPWSTR pwszName; 1456 LPWSTR pwszValue; 1457 } VDS_POOL_CUSTOM_ATTRIBUTES, *PVDS_POOL_CUSTOM_ATTRIBUTES; 1458 1459 typedef 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 1500 typedef 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 1506 typedef 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 1518 typedef 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 1534 typedef 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 1547 typedef 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*/ 1567