|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  |  | 
|  | cpp_quote("#include <winapifamily.h>") | 
|  | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
|  |  | 
|  | import "oaidl.idl"; | 
|  | import "ocidl.idl"; | 
|  |  | 
|  | typedef enum _VDS_STORAGE_IDENTIFIER_CODE_SET { | 
|  | VDSStorageIdCodeSetReserved = 0, | 
|  | VDSStorageIdCodeSetBinary = 1, | 
|  | VDSStorageIdCodeSetAscii = 2, | 
|  | VDSStorageIdCodeSetUtf8 = 3 | 
|  | } VDS_STORAGE_IDENTIFIER_CODE_SET; | 
|  |  | 
|  | typedef enum _VDS_STORAGE_IDENTIFIER_TYPE { | 
|  | VDSStorageIdTypeVendorSpecific = 0, | 
|  | VDSStorageIdTypeVendorId = 1, | 
|  | VDSStorageIdTypeEUI64 = 2, | 
|  | VDSStorageIdTypeFCPHName = 3, | 
|  | VDSStorageIdTypePortRelative = 4, | 
|  | VDSStorageIdTypeTargetPortGroup = 5, | 
|  | VDSStorageIdTypeLogicalUnitGroup = 6, | 
|  | VDSStorageIdTypeMD5LogicalUnitIdentifier = 7, | 
|  | VDSStorageIdTypeScsiNameString = 8 | 
|  | } VDS_STORAGE_IDENTIFIER_TYPE; | 
|  |  | 
|  | typedef enum _VDS_STORAGE_BUS_TYPE { | 
|  | VDSBusTypeUnknown = 0x00, | 
|  | VDSBusTypeScsi = 0x01, | 
|  | VDSBusTypeAtapi = 0x02, | 
|  | VDSBusTypeAta = 0x03, | 
|  | VDSBusType1394 = 0x04, | 
|  | VDSBusTypeSsa = 0x05, | 
|  | VDSBusTypeFibre = 0x06, | 
|  | VDSBusTypeUsb = 0x07, | 
|  | VDSBusTypeRAID = 0x08, | 
|  | VDSBusTypeiScsi = 0x09, | 
|  | VDSBusTypeSas = 0x0A, | 
|  | VDSBusTypeSata = 0x0B, | 
|  | VDSBusTypeSd = 0x0C, | 
|  | VDSBusTypeMmc = 0x0D, | 
|  | VDSBusTypeMax = 0x0E, | 
|  | VDSBusTypeVirtual = 0x0E, | 
|  | VDSBusTypeFileBackedVirtual = 0x0F, | 
|  | VDSBusTypeSpaces = 0x10, | 
|  | VDSBusTypeNVMe = 0x11, | 
|  | VDSBusTypeScm = 0x12, | 
|  | VDSBusTypeUfs = 0x13, | 
|  | VDSBusTypeMaxReserved = 0x7F | 
|  | } VDS_STORAGE_BUS_TYPE; | 
|  |  | 
|  | typedef struct _VDS_STORAGE_IDENTIFIER { | 
|  | VDS_STORAGE_IDENTIFIER_CODE_SET m_CodeSet; | 
|  | VDS_STORAGE_IDENTIFIER_TYPE m_Type; | 
|  | ULONG m_cbIdentifier; | 
|  | [size_is(m_cbIdentifier)] BYTE *m_rgbIdentifier; | 
|  | } VDS_STORAGE_IDENTIFIER; | 
|  |  | 
|  | typedef struct _VDS_STORAGE_DEVICE_ID_DESCRIPTOR { | 
|  | ULONG m_version; | 
|  | ULONG m_cIdentifiers; | 
|  | [size_is(m_cIdentifiers)] VDS_STORAGE_IDENTIFIER *m_rgIdentifiers; | 
|  | } VDS_STORAGE_DEVICE_ID_DESCRIPTOR; | 
|  |  | 
|  | typedef enum _VDS_INTERCONNECT_ADDRESS_TYPE { | 
|  | VDS_IA_UNKNOWN = 0, | 
|  | VDS_IA_FCFS = 1, | 
|  | VDS_IA_FCPH = 2, | 
|  | VDS_IA_FCPH3 = 3, | 
|  | VDS_IA_MAC = 4, | 
|  | VDS_IA_SCSI = 5 | 
|  | } VDS_INTERCONNECT_ADDRESS_TYPE; | 
|  |  | 
|  | typedef struct _VDS_INTERCONNECT { | 
|  | VDS_INTERCONNECT_ADDRESS_TYPE m_addressType; | 
|  | ULONG m_cbPort; | 
|  | [size_is(m_cbPort)] BYTE *m_pbPort; | 
|  | ULONG m_cbAddress; | 
|  | [size_is(m_cbAddress)] BYTE *m_pbAddress; | 
|  | } VDS_INTERCONNECT; | 
|  |  | 
|  | typedef struct _VDS_LUN_INFORMATION { | 
|  | ULONG m_version; | 
|  | BYTE m_DeviceType; | 
|  | BYTE m_DeviceTypeModifier; | 
|  | WINBOOL m_bCommandQueueing; | 
|  | VDS_STORAGE_BUS_TYPE m_BusType; | 
|  | [string] char *m_szVendorId; | 
|  | [string] char *m_szProductId; | 
|  | [string] char *m_szProductRevision; | 
|  | [string] char *m_szSerialNumber; | 
|  | GUID m_diskSignature; | 
|  | VDS_STORAGE_DEVICE_ID_DESCRIPTOR m_deviceIdDescriptor; | 
|  | ULONG m_cInterconnects; | 
|  | [size_is(m_cInterconnects)] VDS_INTERCONNECT *m_rgInterconnects; | 
|  | } VDS_LUN_INFORMATION; | 
|  |  | 
|  | const ULONG VER_VDS_LUN_INFORMATION = 1; | 
|  |  | 
|  | cpp_quote("#endif /* WINAPI_PARTITION_DESKTOP */") |