STORAGE_PROTOCOL_NVME_DATA_TYPE enumeration (ntddstor.h)

Describes the type of NVMe protocol-specific data that is to be queried during an IOCTL_STORAGE_QUERY_PROPERTY request.

Syntax

typedef enum _STORAGE_PROTOCOL_NVME_DATA_TYPE {
  NVMeDataTypeUnknown,
  NVMeDataTypeIdentify,
  NVMeDataTypeLogPage,
  NVMeDataTypeFeature,
  NVMeDataTypeLogPageEx,
  NVMeDataTypeFeatureEx
} STORAGE_PROTOCOL_NVME_DATA_TYPE, *PSTORAGE_PROTOCOL_NVME_DATA_TYPE;

Constants

 
NVMeDataTypeUnknown
Unknown data type.
NVMeDataTypeIdentify
Get Identify data, which can be either Identify Controller data or Identify Namespace data.

When this type of data is being queried, fields in the STORAGE_PROTOCOL_SPECIFIC_DATA structure should have the following values:

- ProtocolDataRequestValue will be NVME_IDENTIFY_CNS_CONTROLLER for adapter or NVME_IDENTIFY_CNS_SPECIFIC_NAMESPACE for namespace.
- If the ProtocolDataRequestValue is NVME_IDENTIFY_CNS_SPECIFIC_NAMESPACE, the ProtocolDataRequestSubValue field specifies the namespace ID. (Note that NVME_IDENTIFY_CNS_ACTIVE_NAMESPACES is currently not supported.)
NVMeDataTypeLogPage
Get an NVMe log page.

When this type of data is being queried, fields in the STORAGE_PROTOCOL_SPECIFIC_DATA structure should have the following values:

- ProtocolDataRequestValue is the identifier of the log page to retrieve.
- ProtocolDataRequestSubValue is the lower 32-bit value of the offset within a log page from which to start returning data.
- ProtocolDataRequestSubValue2 is the upper 32-bit value of the offset within a log page from which to start returning data.
- ProtocolDataRequestSubValue3 is the log-specific identifier that is required for a particular log page.
- ProtocolDataRequestSubValue4 is a STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE structure that allows additional information to be specified when getting the log page.
NVMeDataTypeFeature
Retrieved by command - GET FEATURES or SET FEATURES

Corresponding values in STORAGE_PROTOCOL_SPECIFIC_DATA (get) or STORAGE_PROTOCOL_SPECIFIC_DATA_EXT (set):

- ProtocolDataRequestValue - Defined in NVME_CDW10_GET_FEATURES / NVME_CDW10_SET_FEATURES
- ProtocolDataRequestSubValue - Defined in NVME_CDW11_FEATURES
- ProtocolDataRequestSubValue2 - Defined in NVME_CDW12_FEATURES
- ProtocolDataRequestSubValue3 - Defined in NVME_CDW13_FEATURES
- ProtocolDataRequestSubValue4 - Defined in NVME_CDW14_FEATURES
- ProtocolDataRequestSubValue5 - Defined in NVME_CDW15_FEATURES
NVMeDataTypeLogPageEx
Retrieved by command - GET LOG PAGE

When this type of data is being queried, fields in the STORAGE_PROTOCOL_SPECIFIC_DATA_EXT structure should have the following values:

- ProtocolDataValue - Defined in NVME_CDW10_GET_LOG_PAGE
- ProtocolDataSubValue - Defined in NVME_CDW11_GET_LOG_PAGE
- ProtocolDataSubValue2 - Defined in NVME_CDW12_GET_LOG_PAGE
- ProtocolDataSubValue3 - Defined in NVME_CDW13_GET_LOG_PAGE
- ProtocolDataSubValue4 - Defined in NVME_CDW14_GET_LOG_PAGE
- ProtocolDataSubValue5 - Defined in NVME_CDW15_GET_LOG_PAGE (not used currently)
- ProtocolDataSubValue6 - Namespace ID
NVMeDataTypeFeatureEx
Retrieved by command - GET FEATURES or SET FEATURES

When this type of data is being queried, fields in the STORAGE_PROTOCOL_SPECIFIC_DATA_EXT structure should have the following values:

- ProtocolDataValue - Defined in NVME_CDW10_GET_FEATURES / NVME_CDW10_SET_FEATURES
- ProtocolDataSubValue - Defined in NVME_CDW11_FEATURES
- ProtocolDataSubValue2 - Defined in NVME_CDW12_FEATURES
- ProtocolDataSubValue3 - Defined in NVME_CDW13_FEATURES
- ProtocolDataSubValue4 - Defined in NVME_CDW14_FEATURES
- ProtocolDataSubValue5 - Defined in NVME_CDW15_FEATURES
- ProtocolDataSubValue6 - Namespace ID

Remarks

When using IOCTL_STORAGE_QUERY_PROPERTY to retrieve protocol-specific information in the STORAGE_PROTOCOL_DATA_DESCRIPTOR, configure the STORAGE_PROPERTY_QUERY structure as follows:

To specify a type of NVMe protocol-specific information, configure the STORAGE_PROTOCOL_SPECIFIC_DATA structure as follows:

  • Set the ProtocolType field to ProtocolTypeNVMe.

  • Set the DataType field to an enumeration value defined by STORAGE_PROTOCOL_NVME_DATA_TYPE:

    • Use NVMeDataTypeIdentify to get Identify Controller data or Identify Namespace data.
    • Use NVMeDataTypeLogPage to get log pages (including SMART/health data).
    • Use NVMeDataTypeFeature to get features of the NVMe drive.
    • Use NVMeDataTypeLogPageEx to get log pages (including SMART/health data) using extended format.
    • Use NVMeDataTypeFeatureEx to get features of the NVMe drive using extended format.

Requirements

Requirement Value
Minimum supported client Windows 10
Minimum supported server Windows Server 2016
Header ntddstor.h (include Ntddstor.h)

See also