// ntddstor.h
typedef enum _STORAGE_PROPERTY_ID {
StorageDeviceProperty,
StorageAdapterProperty,
StorageDeviceIdProperty,
StorageDeviceUniqueIdProperty,
StorageDeviceWriteCacheProperty,
StorageMiniportProperty,
StorageAccessAlignmentProperty,
StorageDeviceSeekPenaltyProperty,
StorageDeviceTrimProperty,
StorageDeviceWriteAggregationProperty,
StorageDeviceDeviceTelemetryProperty,
StorageDeviceLBProvisioningProperty,
StorageDevicePowerProperty,
StorageDeviceCopyOffloadProperty,
StorageDeviceResiliencyProperty,
StorageDeviceMediumProductType,
StorageAdapterRpmbProperty,
StorageAdapterCryptoProperty,
StorageDeviceTieringProperty,
StorageDeviceFaultDomainProperty,
StorageDeviceClusportProperty,
StorageDeviceDependantDevicesProperty,
StorageDeviceIoCapabilityProperty,
StorageAdapterProtocolSpecificProperty,
StorageDeviceProtocolSpecificProperty,
StorageAdapterTemperatureProperty,
StorageDeviceTemperatureProperty,
StorageAdapterPhysicalTopologyProperty,
StorageDevicePhysicalTopologyProperty,
StorageDeviceAttributesProperty,
StorageDeviceManagementStatus,
StorageAdapterSerialNumberProperty,
StorageDeviceLocationProperty,
StorageDeviceNumaProperty,
StorageDeviceZonedDeviceProperty,
StorageDeviceUnsafeShutdownCount,
StorageDeviceEnduranceProperty,
StorageDeviceLedStateProperty,
StorageDeviceSelfEncryptionProperty,
StorageFruIdProperty,
StorageStackProperty,
StorageAdapterProtocolSpecificPropertyEx,
StorageDeviceProtocolSpecificPropertyEx,
StorageHwCryptoProperty
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
View the official Windows Driver Kit DDI reference// winioctl.h
typedef enum _STORAGE_PROPERTY_ID {
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,
StorageStackProperty,
StorageAdapterProtocolSpecificPropertyEx,
StorageDeviceProtocolSpecificPropertyEx,
StorageHwCryptoProperty
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
View the official Win32 API referenceNo description available.
STORAGE_PROPERTY_ID enumerates the possible values for the PropertyId member of the STORAGE_PROPERTY_QUERY structure.
StorageDevicePropertyThe caller is querying for the device descriptor, STORAGE_DEVICE_DESCRIPTOR.
StorageAdapterPropertyThe caller is querying for the adapter descriptor, STORAGE_ADAPTER_DESCRIPTOR.
StorageDeviceIdPropertyThe caller is querying for the device identifiers provided with the SCSI vital product data pages. Data is returned using the STORAGE_DEVICE_ID_DESCRIPTOR structure.
StorageDeviceUniqueIdPropertyThe caller is querying for the unique device identifiers. Data is returned using the STORAGE_DEVICE_UNIQUE_IDENTIFIER structure.
StorageDeviceWriteCachePropertyThe caller is querying for the write cache property. Data is returned using the STORAGE_WRITE_CACHE_PROPERTY structure.
StorageMiniportPropertyReserved for system use.
StorageAccessAlignmentPropertyThe caller is querying for the access alignment descriptor, STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR.
StorageDeviceSeekPenaltyPropertyThe caller is querying for the seek penalty descriptor, DEVICE_SEEK_PENALTY_DESCRIPTOR.
StorageDeviceTrimPropertyThe caller is querying for the trim descriptor, DEVICE_TRIM_DESCRIPTOR.
StorageDeviceWriteAggregationPropertyReserved for system use.
StorageDeviceDeviceTelemetryPropertyReserved for system use.
StorageDeviceLBProvisioningPropertyThe caller is querying for the logical block provisioning property. Data is returned using the DEVICE_LB_PROVISIONING_DESCRIPTOR structure.
StorageDevicePowerPropertyThe caller is querying for the device power descriptor. Data is returned using the DEVICE_POWER_DESCRIPTOR structure.
StorageDeviceCopyOffloadPropertyThe caller is querying for the copy offload parameters property. Data is returned using the DEVICE_COPY_OFFLOAD_DESCRIPTOR structure.
StorageDeviceResiliencyPropertyReserved for system use.
StorageDeviceMediumProductTypeThe caller is querying for the medium product type. Data is returned using the STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR structure.
StorageAdapterRpmbPropertyThe caller is querying for RPMB support and properties. Data is returned using the STORAGE_RPMB_DESCRIPTOR structure.
StorageAdapterCryptoPropertyProvides information on the storage adapter encryption capabilities. This is currently supported on UFS (Universal Flash Storage) adapters.
StorageDeviceTieringPropertyReserved for system use.
StorageDeviceFaultDomainPropertyReserved for system use.
StorageDeviceClusportPropertyReserved for system use.
StorageDeviceDependantDevicesPropertyReserved for system use.
StorageDeviceIoCapabilityPropertyThe caller is querying for the device I/O capability property. Data is returned using the STORAGE_DEVICE_IO_CAPABILITY_DESCRIPTOR structure.
StorageAdapterProtocolSpecificPropertyThe caller is querying for protocol-specific data from the adapter. Data is returned using the STORAGE_PROTOCOL_DATA_DESCRIPTOR structure. See the Remarks for more info.
StorageDeviceProtocolSpecificPropertyThe caller is querying for protocol-specific data from the device. Data is returned using the STORAGE_PROTOCOL_DATA_DESCRIPTOR structure. See the Remarks for more info.
StorageAdapterTemperaturePropertyThe caller is querying temperature data from the adapter. Data is returned using the STORAGE_TEMPERATURE_DATA_DESCRIPTOR structure.
StorageDeviceTemperaturePropertyThe caller is querying for temperature data from the device. Data is returned using the STORAGE_TEMPERATURE_DATA_DESCRIPTOR structure.
StorageAdapterPhysicalTopologyPropertyThe caller is querying for topology information from the adapter. Data is returned using the STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR structure.
StorageDevicePhysicalTopologyPropertyThe caller is querying for topology information from the device. Data is returned using the STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR structure.
StorageDeviceAttributesPropertyReserved for future use.
StorageDeviceManagementStatusThe caller is querying for health information about the storage device (specifically for the persistent memory stack).
StorageAdapterSerialNumberPropertyThe caller is querying for the adapter serial number. Data is returned using the STORAGE_ADAPTER_SERIAL_NUMBER structure.
StorageDeviceLocationPropertyReserved for system use.
StorageDeviceNumaPropertyThe caller is querying for the non-uniform memory access (NUMA) node of the storage device.
StorageDeviceZonedDevicePropertyReserved for system use.
StorageDeviceUnsafeShutdownCountProvides the unsafe shutdown count value used to determine if the device data might have been lost during a power loss event (specifically for the persistent memory stack).
StorageDeviceEndurancePropertyThe caller is querying for how many bytes have been read from or written to a solid-state drive (SSD). This property is currently supported only for Non-Volatile Memory Express (NVMe) devices that implement a certain NVMe feature.
StorageDeviceLedStatePropertyThe caller is querying for the LED state of the device. Data is returned using the STORAGE_DEVICE_LED_STATE_DESCRIPTOR structure. This property is currently supported only for certain NVMe devices. Supported in Windows Server 2022 and later.
StorageDeviceSelfEncryptionPropertyThe caller is querying to determine whether the device supports self encryption. Data is returned using the STORAGE_DEVICE_SELF_ENCRYPTION_PROPERTY structure. Supported in Windows Server 2022 and later.
StorageFruIdPropertyThe caller is querying for the ID of a fault replacement unit (FRU). Data is returned using the STORAGE_FRU_ID_DESCRIPTOR structure. Supported in Windows Server 2022 and later.
StorageStackPropertyThe caller is querying for the type of the storage stack, such as SCSI, NVMe, and so on. Data is returned using the STORAGE_STACK_DESCRIPTOR structure.
StorageAdapterProtocolSpecificPropertyExThe caller is querying for protocol-specific data from the adapter. Data is returned using the STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT structure. See the Remarks for more info.
StorageDeviceProtocolSpecificPropertyExThe caller is querying for protocol-specific data from the device. Data is returned using the STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT structure. See the Remarks for more info.
The STORAGE_PROPERTY_QUERY structure is passed as input to an IOCTL_STORAGE_QUERY_PROPERTY request to retrieve the properties of a storage device or adapter.
The optional output buffer returned from an IOCTL_STORAGE_QUERY_PROPERTY control code request can be one of several structures, depending on the value of the PropertyId member of the STORAGE_PROPERTY_QUERY structure. If the QueryType member of the STORAGE_PROPERTY_QUERY is set to PropertyExistsQuery, then no structure is returned.
Enumerates the possible values of the PropertyId member of the STORAGE_PROPERTY_QUERY structure passed as input to the IOCTL_STORAGE_QUERY_PROPERTY request to retrieve the properties of a storage device or adapter.
StorageDeviceProperty:0Indicates that the caller is querying for the device descriptor, STORAGE_DEVICE_DESCRIPTOR.
StorageAdapterPropertyIndicates that the caller is querying for the adapter descriptor, STORAGE_ADAPTER_DESCRIPTOR.
StorageDeviceIdPropertyIndicates that the caller is querying for the device identifiers provided with the SCSI vital product data pages. Data is returned using the STORAGE_DEVICE_ID_DESCRIPTOR structure.
StorageDeviceUniqueIdPropertyIntended for driver usage. Indicates that the caller is querying for the unique device identifiers. Data is returned using the STORAGE_DEVICE_UNIQUE_IDENTIFIER structure (see the storduid.h header in the DDK).
Windows Server 2003 and Windows XP: This value is not supported before Windows Vista and Windows Server 2008.
StorageDeviceWriteCachePropertyIndicates that the caller is querying for the write cache property. Data is returned using the STORAGE_WRITE_CACHE_PROPERTY structure.
Windows Server 2003 and Windows XP: This value is not supported before Windows Vista and Windows Server 2008.
StorageMiniportPropertyReserved for system use.
StorageAccessAlignmentPropertyIndicates that the caller is querying for the access alignment descriptor, STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR.
Windows Server 2003 and Windows XP: This value is not supported before Windows Vista and Windows Server 2008.
StorageDeviceSeekPenaltyPropertyIndicates that the caller is querying for the seek penalty descriptor, DEVICE_SEEK_PENALTY_DESCRIPTOR.
Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP: This value is not supported before Windows 7 and Windows Server 2008 R2.
StorageDeviceTrimPropertyIndicates that the caller is querying for the trim descriptor, DEVICE_TRIM_DESCRIPTOR.
Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP: This value is not supported before Windows 7 and Windows Server 2008 R2.
StorageDeviceWriteAggregationPropertyReserved for system use.
StorageDeviceDeviceTelemetryPropertyReserved for system use.
StorageDeviceLBProvisioningPropertyIndicates that the caller is querying for the logical block provisioning property. Data is returned using the DEVICE_LB_PROVISIONING_DESCRIPTOR structure.
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP: This value is not supported before Windows 8 and Windows Server 2012.
StorageDevicePowerPropertyIndicates that the caller is querying for the device power descriptor. Data is returned using the DEVICE_POWER_DESCRIPTOR structure.
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP: This value is not supported before Windows 8 and Windows Server 2012.
StorageDeviceCopyOffloadPropertyIndicates that the caller is querying for the copy offload parameters property. Data is returned using the DEVICE_COPY_OFFLOAD_DESCRIPTOR structure.
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP: This value is not supported before Windows 8 and Windows Server 2012.
StorageDeviceResiliencyPropertyReserved for system use.
StorageDeviceMediumProductTypeIndicates that the caller is querying for the medium product type. Data is returned using the STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR structure.
StorageAdapterRpmbPropertyIndicates that the caller is querying for RPMB support and properties. Data is returned using the STORAGE_RPMB_DESCRIPTOR structure.
StorageAdapterCryptoPropertyProvides info on the storage adapter encryption capabilities. This is currently supported on UFS (Universal Flash Storage) adapters.
StorageDeviceIoCapabilityProperty:48Indicates that the caller is querying for the device I/O capability property. Data is returned using the DEVICE_IO_CAPABILITY_DESCRIPTOR structure.
StorageAdapterProtocolSpecificPropertyIndicates that the caller is querying for protocol-specific data from the adapter. Data is returned using the STORAGE_PROTOCOL_DATA_DESCRIPTOR structure. See the remarks for more info.
StorageDeviceProtocolSpecificPropertyIndicates that the caller is querying for protocol-specific data from the device. Data is returned using the STORAGE_PROTOCOL_DATA_DESCRIPTOR structure. See the remarks for more info.
StorageAdapterTemperaturePropertyIndicates that the caller is querying temperature data from the adapter. Data is returned using the STORAGE_TEMPERATURE_DATA_DESCRIPTOR structure.
StorageDeviceTemperaturePropertyIndicates that the caller is querying for temperature data from the device. Data is returned using the STORAGE_TEMPERATURE_DATA_DESCRIPTOR structure.
StorageAdapterPhysicalTopologyPropertyIndicates that the caller is querying for topology information from the adapter. Data is returned using the STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR structure.
StorageDevicePhysicalTopologyPropertyIndicates that the caller is querying for topology information from the device. Data is returned using the STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR structure.
StorageDeviceAttributesPropertyReserved for future use.
StorageDeviceManagementStatusProvides health information about the storage device (specifically for the persistent memory stack).
StorageAdapterSerialNumberPropertyIndicates that the caller is querying for the adapter serial number. Data is returned using the STORAGE_ADAPTER_SERIAL_NUMBER structure.
StorageDeviceLocationPropertyReserved for system use.
StorageDeviceNumaPropertyProvides the non-uniform memory access (NUMA) node of the storage device.
StorageDeviceZonedDevicePropertyReserved for system use.
StorageDeviceUnsafeShutdownCountProvides the unsafe shutdown count value used to determine if the device data might have been lost during a power loss event (specifically for the persistent memory stack).
StorageDeviceEndurancePropertyProvides info on how many bytes have been read/write from a solid-state drive (SSD). This property is supported only for Non-Volatile Memory Express (NVMe) devices that implement a certain NVMe feature.
StorageDeviceLedStatePropertyProvides info on the state of the LED associated with a storage device. This is a server-oriented feature.
StorageDeviceSelfEncryptionProperty:64Reserved for system use.
StorageFruIdPropertyProvides identification info for a storage device that can be physically replaced with a Field Replacement Unit (FRU).
The optional output buffer returned through the lpOutBuffer parameter of the IOCTL_STORAGE_QUERY_PROPERTY control code request can be one of several structures depending on the value of the PropertyId member of the STORAGE_PROPERTY_QUERY structure pointed to by the lpInBuffer parameter. If the QueryType member of the STORAGE_PROPERTY_QUERY is set to PropertyExistsQuery, then no structure is returned.