From 758dfab297b493e831c462d73c9709add6cc5d78 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <[email protected]> Date: Fri, 1 Oct 2021 09:59:12 +0530 Subject: [PATCH] headers: Add new names in winioctl.h
Signed-off-by: Biswapriyo Nath <[email protected]> --- mingw-w64-headers/include/winioctl.h | 469 ++++++++++++++++++++++++++- 1 file changed, 455 insertions(+), 14 deletions(-) diff --git a/mingw-w64-headers/include/winioctl.h b/mingw-w64-headers/include/winioctl.h index 68982c7..d282d25 100644 --- a/mingw-w64-headers/include/winioctl.h +++ b/mingw-w64-headers/include/winioctl.h @@ -19,7 +19,17 @@ DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER,0x53f56310,0xb6bf,0x11d0,0x94,0xf2,0 DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY,0x53f56311,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER,0x53f56312,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,0x2accfe60,0xc130,0x11d2,0xb0,0x82,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); +DEFINE_GUID(GUID_DEVINTERFACE_VMLUN,0x6f416619,0x9f29,0x42a5,0xb2,0x0b,0x37,0xe2,0x19,0xca,0x02,0xb0); +DEFINE_GUID(GUID_DEVINTERFACE_SES,0x1790c9ec,0x47d5,0x4df3,0xb5,0xaf,0x9a,0xdf,0x3c,0xf2,0x3e,0x48); +DEFINE_GUID(GUID_DEVINTERFACE_ZNSDISK,0xb87941c5,0xffdb,0x43c7,0xb6,0xb1,0x20,0xb6,0x32,0xf0,0xb1,0x09); +#define WDI_STORAGE_PREDICT_FAILURE_DPS_GUID {0xe9f2d03a,0x747c,0x41c2,{0xbb,0x9a,0x02,0xc6,0x2b,0x6d,0x5f,0xcb}}; + +DEFINE_GUID(GUID_DEVINTERFACE_SERVICE_VOLUME,0x6ead3d82,0x25ec,0x46bc,0xb7,0xfd,0xc1,0xf0,0xdf,0x8f,0x50,0x37); DEFINE_GUID(GUID_DEVINTERFACE_HIDDEN_VOLUME,0x7f108a28,0x9833,0x4b3b,0xb7,0x80,0x2c,0x6b,0x5f,0xa5,0xc0,0x62); +DEFINE_GUID(GUID_DEVINTERFACE_UNIFIED_ACCESS_RPMB,0x27447c21,0xbcc3,0x4d07,0xa0,0x5b,0xa3,0x39,0x5b,0xb4,0xee,0xe7); +DEFINE_GUID(GUID_DEVINTERFACE_SCM_PHYSICAL_DEVICE,0x4283609d,0x4dc2,0x43be,0xbb,0xb4,0x4f,0x15,0xdf,0xce,0x2c,0x61); +DEFINE_GUID(GUID_SCM_PD_HEALTH_NOTIFICATION,0x9da2d386,0x72f5,0x4ee3,0x81,0x55,0xec,0xa0,0x67,0x8e,0x3b,0x6); +DEFINE_GUID(GUID_SCM_PD_PASSTHROUGH_INVDIMM,0x4309ac30,0x0d11,0x11e4,0x91,0x91,0x08,0x00,0x20,0x0c,0x9a,0x66); DEFINE_GUID(GUID_DEVINTERFACE_COMPORT,0x86e0d1e0,0x8089,0x11d0,0x9c,0xe4,0x08,0x00,0x3e,0x30,0x1f,0x73); DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); @@ -38,6 +48,23 @@ DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978,0xE325,0x11CE,0x #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR #endif /* DEFINE_GUID */ +#ifdef DEFINE_DEVPROPKEY + +#ifndef __WRAPPED__ +#define __WRAPPED__ +#endif + +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Portable,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,2); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Removable_Media,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,3); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_System_Critical,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,4); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Disk_Number,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,5); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Partition_Number,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,6); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Mbr_Type,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,7); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Gpt_Type,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,8); +DEFINE_DEVPROPKEY(DEVPKEY_Storage_Gpt_Name,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,9); + +#endif /* DEFINE_DEVPROPKEY */ + #ifndef _WINIOCTL_ #define _WINIOCTL_ @@ -133,10 +160,15 @@ DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978,0xE325,0x11CE,0x #define FILE_DEVICE_HOLOGRAPHIC 0x0000005b #define FILE_DEVICE_SDFXHCI 0x0000005c #define FILE_DEVICE_UCMUCSI 0x0000005d +#define FILE_DEVICE_PRM 0x0000005e +#define FILE_DEVICE_EVENT_COLLECTOR 0x0000005f +#define FILE_DEVICE_USB4 0x00000060 +#define FILE_DEVICE_SOUNDWIRE 0x00000061 #define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) #define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode) (((DWORD)(ctrlCode & 0xffff0000)) >> 16) +#define METHOD_FROM_CTL_CODE(ctrlCode) ((DWORD)(ctrlCode & 3)) #define METHOD_BUFFERED 0 #define METHOD_IN_DIRECT 1 @@ -189,17 +221,59 @@ extern "C" { #define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT CTL_CODE(IOCTL_STORAGE_BASE, 0x0407, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0420,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_NUMBER_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0421,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE,0x0440,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_FAILURE_PREDICTION_CONFIG CTL_CODE(IOCTL_STORAGE_BASE,0x0441,METHOD_BUFFERED,FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_COUNTERS CTL_CODE(IOCTL_STORAGE_BASE,0x442,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_STORAGE_READ_CAPACITY CTL_CODE(IOCTL_STORAGE_BASE,0x0450,METHOD_BUFFERED,FILE_READ_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY CTL_CODE(IOCTL_STORAGE_BASE, 0x0470, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_DEVICE_TELEMETRY_NOTIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0471, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_DEVICE_TELEMETRY_QUERY_CAPS CTL_CODE(IOCTL_STORAGE_BASE, 0x0472, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY_RAW CTL_CODE(IOCTL_STORAGE_BASE, 0x0473, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD CTL_CODE(IOCTL_STORAGE_BASE, 0x0480, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_STORAGE_PROTOCOL_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x04F0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_STORAGE_SET_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x04FF, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES CTL_CODE(IOCTL_STORAGE_BASE, 0x0502, METHOD_BUFFERED, FILE_READ_ACCESS) + +#define IOCTL_STORAGE_REINITIALIZE_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0590, METHOD_BUFFERED, FILE_WRITE_ACCESS) + #define IOCTL_STORAGE_GET_BC_PROPERTIES CTL_CODE(IOCTL_STORAGE_BASE, 0x0600, METHOD_BUFFERED, FILE_READ_ACCESS) #define IOCTL_STORAGE_ALLOCATE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0601, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_STORAGE_FREE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0602, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + #define IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT CTL_CODE(IOCTL_STORAGE_BASE, 0x0620, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_START_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0621, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_STOP_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0622, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + #define OBSOLETE_IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_FIRMWARE_GET_INFO CTL_CODE(IOCTL_STORAGE_BASE, 0x0700, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_FIRMWARE_DOWNLOAD CTL_CODE(IOCTL_STORAGE_BASE, 0x0701, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_FIRMWARE_ACTIVATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0702, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) + +#define IOCTL_STORAGE_ENABLE_IDLE_POWER CTL_CODE(IOCTL_STORAGE_BASE, 0x0720, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_IDLE_POWERUP_REASON CTL_CODE(IOCTL_STORAGE_BASE, 0x0721, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_POWER_ACTIVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0722, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_POWER_IDLE CTL_CODE(IOCTL_STORAGE_BASE, 0x0723, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define IOCTL_STORAGE_EVENT_NOTIFICATION CTL_CODE(IOCTL_STORAGE_BASE, 0x0724, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_DEVICE_POWER_CAP CTL_CODE(IOCTL_STORAGE_BASE, 0x0725, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_RPMB_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x0726, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_ATTRIBUTE_MANAGEMENT CTL_CODE(IOCTL_STORAGE_BASE, 0x0727, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_STORAGE_DIAGNOSTIC CTL_CODE(IOCTL_STORAGE_BASE, 0x0728, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0729, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_REMOVE_ELEMENT_AND_TRUNCATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0730, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG CTL_CODE(IOCTL_STORAGE_BASE, 0x0731, METHOD_BUFFERED, FILE_ANY_ACCESS) + typedef struct _STORAGE_READ_CAPACITY { ULONG Version; ULONG Size; @@ -320,6 +394,27 @@ typedef struct _STORAGE_READ_CAPACITY { DWORD PartitionNumber; } STORAGE_DEVICE_NUMBER,*PSTORAGE_DEVICE_NUMBER; + typedef struct _STORAGE_DEVICE_NUMBERS { + DWORD Version; + DWORD Size; + DWORD NumberOfDevices; + STORAGE_DEVICE_NUMBER Devices[ANYSIZE_ARRAY]; + } STORAGE_DEVICE_NUMBERS,*PSTORAGE_DEVICE_NUMBERS; + +#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT 0x1 +#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID 0x2 +#define STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID 0x4 + + typedef struct _STORAGE_DEVICE_NUMBER_EX { + DWORD Version; + DWORD Size; + DWORD Flags; + DEVICE_TYPE DeviceType; + DWORD DeviceNumber; + GUID DeviceGuid; + DWORD PartitionNumber; + } STORAGE_DEVICE_NUMBER_EX,*PSTORAGE_DEVICE_NUMBER_EX; + typedef struct _STORAGE_BUS_RESET_REQUEST { BYTE PathId; } STORAGE_BUS_RESET_REQUEST,*PSTORAGE_BUS_RESET_REQUEST; @@ -368,7 +463,7 @@ typedef struct _STORAGE_READ_CAPACITY { #define TAPE_RESET_STATISTICS __MSABI_LONG(2) typedef enum _STORAGE_MEDIA_TYPE { - DDS_4mm = 0x20, + DDS_4mm = 0x20, MiniQic, Travan, QIC, @@ -470,6 +565,8 @@ typedef struct _STORAGE_READ_CAPACITY { BusTypeMaxReserved = 0x7F } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE; +#define SupportsDeviceSharing(BusType) ((BusType == BusTypeScsi) || (BusType == BusTypeFibre) || (BusType == BusTypeiScsi) || (BusType == BusTypeSas) || (BusType == BusTypeSpaces)) + typedef struct _DEVICE_MEDIA_INFO { union { struct { @@ -516,6 +613,16 @@ typedef struct _STORAGE_READ_CAPACITY { BYTE VendorSpecific[512]; } STORAGE_PREDICT_FAILURE,*PSTORAGE_PREDICT_FAILURE; + typedef struct _STORAGE_FAILURE_PREDICTION_CONFIG { + DWORD Version; + DWORD Size; + BOOLEAN Set; + BOOLEAN Enabled; + WORD Reserved; + } STORAGE_FAILURE_PREDICTION_CONFIG,*PSTORAGE_FAILURE_PREDICTION_CONFIG; + +#define STORAGE_FAILURE_PREDICTION_CONFIG_V1 1 + #ifdef __cplusplus } #endif @@ -1871,16 +1978,42 @@ typedef struct _STORAGE_DESCRIPTOR_HEADER { } STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER; typedef enum _STORAGE_PROPERTY_ID { - StorageDeviceProperty = 0, - StorageAdapterProperty = 1, - StorageDeviceIdProperty = 2, - StorageDeviceUniqueIdProperty = 3, - StorageDeviceWriteCacheProperty = 4, - StorageMiniportProperty = 5, - StorageAccessAlignmentProperty = 6, - StorageDeviceSeekPenaltyProperty = 7, - StorageDeviceTrimProperty = 8, - StorageDeviceWriteAggregationProperty = 9 + StorageDeviceProperty = 0, + StorageAdapterProperty, + StorageDeviceIdProperty, + StorageDeviceUniqueIdProperty, + StorageDeviceWriteCacheProperty, + StorageMiniportProperty, + StorageAccessAlignmentProperty, + StorageDeviceSeekPenaltyProperty, + StorageDeviceTrimProperty, + StorageDeviceWriteAggregationProperty, + StorageDeviceDeviceTelemetryProperty, + StorageDeviceLBProvisioningProperty, + StorageDevicePowerProperty, + StorageDeviceCopyOffloadProperty, + StorageDeviceResiliencyProperty, + StorageDeviceMediumProductType, + StorageAdapterRpmbProperty, + StorageAdapterCryptoProperty, + StorageDeviceIoCapabilityProperty = 48, + StorageAdapterProtocolSpecificProperty, + StorageDeviceProtocolSpecificProperty, + StorageAdapterTemperatureProperty, + StorageDeviceTemperatureProperty, + StorageAdapterPhysicalTopologyProperty, + StorageDevicePhysicalTopologyProperty, + StorageDeviceAttributesProperty, + StorageDeviceManagementStatus, + StorageAdapterSerialNumberProperty, + StorageDeviceLocationProperty, + StorageDeviceNumaProperty, + StorageDeviceZonedDeviceProperty, + StorageDeviceUnsafeShutdownCount, + StorageDeviceEnduranceProperty, + StorageDeviceLedStateProperty, + StorageDeviceSelfEncryptionProperty = 64, + StorageFruIdProperty } STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID; typedef enum _STORAGE_QUERY_TYPE { @@ -1890,12 +2023,24 @@ typedef enum _STORAGE_QUERY_TYPE { PropertyQueryMaxDefined = 3 } STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE; +typedef enum _STORAGE_SET_TYPE { + PropertyStandardSet = 0, + PropertyExistsSet, + PropertySetMaxDefined +} STORAGE_SET_TYPE, *PSTORAGE_SET_TYPE; + typedef struct _STORAGE_PROPERTY_QUERY { STORAGE_PROPERTY_ID PropertyId; STORAGE_QUERY_TYPE QueryType; BYTE AdditionalParameters[1]; } STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY; +typedef struct _STORAGE_PROPERTY_SET { + STORAGE_PROPERTY_ID PropertyId; + STORAGE_SET_TYPE SetType; + BYTE AdditionalParameters[1]; +} STORAGE_PROPERTY_SET, *PSTORAGE_PROPERTY_SET; + typedef struct _STORAGE_DEVICE_DESCRIPTOR { DWORD Version; DWORD Size; @@ -1925,8 +2070,30 @@ typedef struct _STORAGE_ADAPTER_DESCRIPTOR { BYTE BusType; WORD BusMajorVersion; WORD BusMinorVersion; +#if NTDDI_VERSION >= NTDDI_WIN8 + BYTE SrbType; + BYTE AddressType; +#endif } STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR; +#if NTDDI_VERSION >= NTDDI_WIN8 + +#define NO_SRBTYPE_ADAPTER_DESCRIPTOR_SIZE UFIELD_OFFSET(STORAGE_ADAPTER_DESCRIPTOR, SrbType) + +#ifndef SRB_TYPE_SCSI_REQUEST_BLOCK +#define SRB_TYPE_SCSI_REQUEST_BLOCK 0 +#endif + +#ifndef SRB_TYPE_STORAGE_REQUEST_BLOCK +#define SRB_TYPE_STORAGE_REQUEST_BLOCK 1 +#endif + +#ifndef STORAGE_ADDRESS_TYPE_BTL8 +#define STORAGE_ADDRESS_TYPE_BTL8 0 +#endif + +#endif + typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR { DWORD Version; DWORD Size; @@ -2308,9 +2475,14 @@ typedef struct _STORAGE_WRITE_CACHE_PROPERTY { } STORAGE_WRITE_CACHE_PROPERTY, *PSTORAGE_WRITE_CACHE_PROPERTY; typedef enum _STORAGE_PORT_CODE_SET { - StoragePortCodeSetReserved = 0, - StoragePortCodeSetStorport = 1, - StoragePortCodeSetSCSIport = 2 + StoragePortCodeSetReserved = 0, + StoragePortCodeSetStorport = 1, + StoragePortCodeSetSCSIport = 2, + StoragePortCodeSetSpaceport = 3, + StoragePortCodeSetATAport = 4, + StoragePortCodeSetUSBport = 5, + StoragePortCodeSetSBP2port = 6, + StoragePortCodeSetSDport = 7 } STORAGE_PORT_CODE_SET, *PSTORAGE_PORT_CODE_SET; typedef struct _STORAGE_MINIPORT_DESCRIPTOR { @@ -2372,6 +2544,13 @@ typedef struct _STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR { DWORD BytesPerPhysicalSector; DWORD BytesOffsetForSectorAlignment; } STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR, *PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR; + +typedef struct _STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD MediumProductType; +} STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR, *PSTORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR; + #endif /*(_WIN32_WINNT >= 0x0600)*/ typedef struct _DEVICE_SEEK_PENALTY_DESCRIPTOR { @@ -2392,6 +2571,268 @@ typedef struct _DEVICE_TRIM_DESCRIPTOR { BOOLEAN TrimEnabled; } DEVICE_TRIM_DESCRIPTOR, *PDEVICE_TRIM_DESCRIPTOR; +typedef struct _DEVICE_LB_PROVISIONING_DESCRIPTOR { + DWORD Version; + DWORD Size; + BYTE ThinProvisioningEnabled : 1; + BYTE ThinProvisioningReadZeros : 1; + BYTE AnchorSupported : 3; + BYTE UnmapGranularityAlignmentValid : 1; + BYTE GetFreeSpaceSupported : 1; + BYTE MapSupported : 1; + BYTE Reserved1[7]; + DWORDLONG OptimalUnmapGranularity; + DWORDLONG UnmapGranularityAlignment; +#if NTDDI_VERSION >= NTDDI_WINBLUE + DWORD MaxUnmapLbaCount; + DWORD MaxUnmapBlockDescriptorCount; +#endif +} DEVICE_LB_PROVISIONING_DESCRIPTOR, *PDEVICE_LB_PROVISIONING_DESCRIPTOR; + +#define DEVICE_LB_PROVISIONING_DESCRIPTOR_V1_SIZE RTL_SIZEOF_THROUGH_FIELD(DEVICE_LB_PROVISIONING_DESCRIPTOR, UnmapGranularityAlignment) + +typedef struct _STORAGE_LB_PROVISIONING_MAP_RESOURCES { + DWORD Size; + DWORD Version; + BYTE AvailableMappingResourcesValid : 1; + BYTE UsedMappingResourcesValid : 1; + BYTE Reserved0 : 6; + BYTE Reserved1[3]; + BYTE AvailableMappingResourcesScope : 2; + BYTE UsedMappingResourcesScope : 2; + BYTE Reserved2 : 4; + BYTE Reserved3[3]; + DWORDLONG AvailableMappingResources; + DWORDLONG UsedMappingResources; +} STORAGE_LB_PROVISIONING_MAP_RESOURCES, *PSTORAGE_LB_PROVISIONING_MAP_RESOURCES; + +typedef struct _DEVICE_POWER_DESCRIPTOR { + DWORD Version; + DWORD Size; + BOOLEAN DeviceAttentionSupported; + BOOLEAN AsynchronousNotificationSupported; + BOOLEAN IdlePowerManagementEnabled; + BOOLEAN D3ColdEnabled; + BOOLEAN D3ColdSupported; + BOOLEAN NoVerifyDuringIdlePower; + BYTE Reserved[2]; + DWORD IdleTimeoutInMS; +} DEVICE_POWER_DESCRIPTOR, *PDEVICE_POWER_DESCRIPTOR; + +typedef struct _DEVICE_COPY_OFFLOAD_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD MaximumTokenLifetime; + DWORD DefaultTokenLifetime; + DWORDLONG MaximumTransferSize; + DWORDLONG OptimalTransferCount; + DWORD MaximumDataDescriptors; + DWORD MaximumTransferLengthPerDescriptor; + DWORD OptimalTransferLengthPerDescriptor; + WORD OptimalTransferLengthGranularity; + BYTE Reserved[2]; +} DEVICE_COPY_OFFLOAD_DESCRIPTOR, *PDEVICE_COPY_OFFLOAD_DESCRIPTOR; + +typedef struct _STORAGE_DEVICE_RESILIENCY_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NameOffset; + DWORD NumberOfLogicalCopies; + DWORD NumberOfPhysicalCopies; + DWORD PhysicalDiskRedundancy; + DWORD NumberOfColumns; + DWORD Interleave; +} STORAGE_DEVICE_RESILIENCY_DESCRIPTOR, *PSTORAGE_DEVICE_RESILIENCY_DESCRIPTOR; + +typedef enum _STORAGE_RPMB_FRAME_TYPE { + StorageRpmbFrameTypeUnknown = 0, + StorageRpmbFrameTypeStandard, + StorageRpmbFrameTypeMax +} STORAGE_RPMB_FRAME_TYPE, *PSTORAGE_RPMB_FRAME_TYPE; + +#define STORAGE_RPMB_DESCRIPTOR_VERSION_1 1 + +#define STORAGE_RPMB_MINIMUM_RELIABLE_WRITE_SIZE 512 + +typedef struct _STORAGE_RPMB_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD SizeInBytes; + DWORD MaxReliableWriteSizeInBytes; + STORAGE_RPMB_FRAME_TYPE FrameFormat; +} STORAGE_RPMB_DESCRIPTOR, *PSTORAGE_RPMB_DESCRIPTOR; + +typedef enum _STORAGE_CRYPTO_ALGORITHM_ID { + StorageCryptoAlgorithmUnknown = 0, + StorageCryptoAlgorithmXTSAES = 1, + StorageCryptoAlgorithmBitlockerAESCBC, + StorageCryptoAlgorithmAESECB, + StorageCryptoAlgorithmESSIVAESCBC, + StorageCryptoAlgorithmMax +} STORAGE_CRYPTO_ALGORITHM_ID, *PSTORAGE_CRYPTO_ALGORITHM_ID; + +typedef enum _STORAGE_CRYPTO_KEY_SIZE { + StorageCryptoKeySizeUnknown = 0, + StorageCryptoKeySize128Bits = 1, + StorageCryptoKeySize192Bits, + StorageCryptoKeySize256Bits, + StorageCryptoKeySize512Bits +} STORAGE_CRYPTO_KEY_SIZE, *PSTORAGE_CRYPTO_KEY_SIZE; + +#define STORAGE_CRYPTO_CAPABILITY_VERSION_1 1 + +typedef struct _STORAGE_CRYPTO_CAPABILITY { + DWORD Version; + DWORD Size; + DWORD CryptoCapabilityIndex; + STORAGE_CRYPTO_ALGORITHM_ID AlgorithmId; + STORAGE_CRYPTO_KEY_SIZE KeySize; + DWORD DataUnitSizeBitmask; +} STORAGE_CRYPTO_CAPABILITY, *PSTORAGE_CRYPTO_CAPABILITY; + +#define STORAGE_CRYPTO_DESCRIPTOR_VERSION_1 1 + +typedef struct _STORAGE_CRYPTO_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NumKeysSupported; + DWORD NumCryptoCapabilities; + STORAGE_CRYPTO_CAPABILITY CryptoCapabilities[ANYSIZE_ARRAY]; +} STORAGE_CRYPTO_DESCRIPTOR, *PSTORAGE_CRYPTO_DESCRIPTOR; + +#define STORAGE_TIER_NAME_LENGTH (256) +#define STORAGE_TIER_DESCRIPTION_LENGTH (512) + +#define STORAGE_TIER_FLAG_NO_SEEK_PENALTY (0x00020000) +#define STORAGE_TIER_FLAG_WRITE_BACK_CACHE (0x00200000) +#define STORAGE_TIER_FLAG_READ_CACHE (0x00400000) +#define STORAGE_TIER_FLAG_PARITY (0x00800000) +#define STORAGE_TIER_FLAG_SMR (0x01000000) + +typedef enum _STORAGE_TIER_MEDIA_TYPE { + StorageTierMediaTypeUnspecified = 0, + StorageTierMediaTypeDisk = 1, + StorageTierMediaTypeSsd = 2, + StorageTierMediaTypeScm = 4, + StorageTierMediaTypeMax +} STORAGE_TIER_MEDIA_TYPE, *PSTORAGE_TIER_MEDIA_TYPE; + +typedef enum _STORAGE_TIER_CLASS { + StorageTierClassUnspecified = 0, + StorageTierClassCapacity, + StorageTierClassPerformance, + StorageTierClassMax +} STORAGE_TIER_CLASS, *PSTORAGE_TIER_CLASS; + +typedef struct _STORAGE_TIER { + GUID Id; + WCHAR Name[STORAGE_TIER_NAME_LENGTH]; + WCHAR Description[STORAGE_TIER_NAME_LENGTH]; + DWORDLONG Flags; + DWORDLONG ProvisionedCapacity; + STORAGE_TIER_MEDIA_TYPE MediaType; + STORAGE_TIER_CLASS Class; +} STORAGE_TIER, *PSTORAGE_TIER; + +typedef struct _STORAGE_DEVICE_TIERING_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD Flags; + DWORD TotalNumberOfTiers; + DWORD NumberOfTiersReturned; + STORAGE_TIER Tiers[ANYSIZE_ARRAY]; +} STORAGE_DEVICE_TIERING_DESCRIPTOR, *PSTORAGE_DEVICE_TIERING_DESCRIPTOR; + +typedef struct _STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR { + DWORD Version; + DWORD Size; + DWORD NumberOfFaultDomains; + GUID FaultDomainIds[ANYSIZE_ARRAY]; +} STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR, *PSTORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR; + +typedef enum _STORAGE_PROTOCOL_TYPE { + ProtocolTypeUnknown = 0x00, + ProtocolTypeScsi, + ProtocolTypeAta, + ProtocolTypeNvme, + ProtocolTypeSd, + ProtocolTypeUfs, + ProtocolTypeProprietary = 0x7E, + ProtocolTypeMaxReserved = 0x7F +} STORAGE_PROTOCOL_TYPE, *PSTORAGE_PROTOCOL_TYPE; + +typedef enum _STORAGE_PROTOCOL_NVME_DATA_TYPE { + NVMeDataTypeUnknown = 0, + NVMeDataTypeIdentify, + NVMeDataTypeLogPage, + NVMeDataTypeFeature +} STORAGE_PROTOCOL_NVME_DATA_TYPE, *PSTORAGE_PROTOCOL_NVME_DATA_TYPE; + +typedef enum _STORAGE_PROTOCOL_ATA_DATA_TYPE { + AtaDataTypeUnknown = 0, + AtaDataTypeIdentify, + AtaDataTypeLogPage +} STORAGE_PROTOCOL_ATA_DATA_TYPE, *PSTORAGE_PROTOCOL_ATA_DATA_TYPE; + +typedef enum _STORAGE_PROTOCOL_UFS_DATA_TYPE { + UfsDataTypeUnknown = 0, + UfsDataTypeQueryDescriptor, + UfsDataTypeQueryAttribute, + UfsDataTypeQueryFlag, + UfsDataTypeQueryDmeAttribute, + UfsDataTypeQueryDmePeerAttribute, + UfsDataTypeMax +} STORAGE_PROTOCOL_UFS_DATA_TYPE, *PSTORAGE_PROTOCOL_UFS_DATA_TYPE; + +typedef union _STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE { + __C89_NAMELESS struct { + DWORD RetainAsynEvent : 1; + DWORD LogSpecificField : 4; + DWORD Reserved : 27; + }; + DWORD AsUlong; +} STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE, *PSTORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE; + +typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA { + STORAGE_PROTOCOL_TYPE ProtocolType; + DWORD DataType; + DWORD ProtocolDataRequestValue; + DWORD ProtocolDataRequestSubValue; + DWORD ProtocolDataOffset; + DWORD ProtocolDataLength; + DWORD FixedProtocolReturnData; + DWORD ProtocolDataRequestSubValue2; + DWORD ProtocolDataRequestSubValue3; + DWORD ProtocolDataRequestSubValue4; +} STORAGE_PROTOCOL_SPECIFIC_DATA, *PSTORAGE_PROTOCOL_SPECIFIC_DATA; + +typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA_EXT { + STORAGE_PROTOCOL_TYPE ProtocolType; + DWORD DataType; + DWORD ProtocolDataValue; + DWORD ProtocolDataSubValue; + DWORD ProtocolDataOffset; + DWORD ProtocolDataLength; + DWORD FixedProtocolReturnData; + DWORD ProtocolDataSubValue2; + DWORD ProtocolDataSubValue3; + DWORD ProtocolDataSubValue4; + DWORD ProtocolDataSubValue5; + DWORD Reserved[5]; +} STORAGE_PROTOCOL_SPECIFIC_DATA_EXT, *PSTORAGE_PROTOCOL_SPECIFIC_DATA_EXT; + +typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR { + DWORD Version; + DWORD Size; + STORAGE_PROTOCOL_SPECIFIC_DATA ProtocolSpecificData; +} STORAGE_PROTOCOL_DATA_DESCRIPTOR, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR; + +typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT { + DWORD Version; + DWORD Size; + STORAGE_PROTOCOL_SPECIFIC_DATA_EXT ProtocolSpecificData; +} STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT; + #if (_WIN32_WINNT >= 0x0601) typedef struct _REQUEST_OPLOCK_INPUT_BUFFER { WORD StructureVersion; -- 2.33.0
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
