StorNVMe command set support

The tables in this article list:

  • Commands and opcodes defined in the NVM Express specifications for the NVMe Admin Command Set.
  • All I/O Commands (Base Specification), I/O Commands for the NVM Command Set, and I/O Commands for the Zoned Namespace Command Set.

The tables include the following information:

  • Header Definition – Indicates that an enumeration for the command is defined in the relevant Windows header file.
  • StorNVMe Supported – Indicates that the StorNVMe device driver supports the command on Windows 10 version 1903 and later.
  • Driver Int Use (Driver Internal Use) – Indicates that the StorNVMe driver can internally generate/issue the command.
  • Comments – Any other relevant information; for example, whether the command can be issued as part of an IOCTL operation. "WinPE Only" indicates that the command is supported only on WinPE editions of Windows.

Admin commands

Opcode NVMe Admin Command Header Definition StorNVMe Supported Driver Int Use Comments
0h Delete I/O Submission Queue Yes Yes Yes
1h Create I/O Submission Queue Yes Yes Yes
2h Get Log Page Yes Yes Yes IOCTL_STORAGE_QUERY_PROPERTY
4h Delete I/O Completion Queue Yes Yes Yes
5h Create I/O Completion Queue Yes Yes Yes
6h Identify Yes Yes Yes IOCTL_STORAGE_QUERY_PROPERTY, IOCTL_STORAGE_FIRMWARE_GET_INFO
8h Abort Yes
9h Set Features Yes Yes Yes IOCTL_STORAGE_SET_PROPERTY. Currently only supports Host Controlled Thermal Management.
Ah Get Features Yes Yes Yes IOCTL_STORAGE_QUERY_PROPERTY
Ch Asynchronous Event Request Yes Yes Yes
Dh Namespace Management Yes Yes WinPE only. IOCTL_STORAGE_PROTOCOL_COMMAND
10h Firmware Commit (previously Firmware Activate) Yes Yes Yes IOCTL_STORAGE_FIRMWARE_ACTIVATE
11h Firmware Image Download Yes Yes Yes IOCTL_STORAGE_FIRMWARE_DOWNLOAD
14h Device Self-Test Yes Yes IOCTL_STORAGE_PROTOCOL_COMMAND
15h Namespace Attachment Yes Yes WinPE only. IOCTL_STORAGE_PROTOCOL_COMMAND
18h Keep Alive
19h Directive Send Yes Yes Yes
1Ah Directive Receive Yes Yes Yes
1Ch Virtualization Management Yes
1Dh NVMe-MI Send Yes Yes WinPE only. IOCTL_STORAGE_PROTOCOL_COMMAND
1Eh NVMe-MI Receive Yes Yes WinPE only. IOCTL_STORAGE_PROTOCOL_COMMAND
20h Capacity Management
24h Lockdown
7Ch Doorbell Buffer Config Yes
7Fh Fabric Commands
80h Format NVM Yes Yes Yes IOCTL_STORAGE_PROTOCOL_COMMAND for WinPE only. IOCTL_SCSI_PASS_THROUGH for SCSIOP_SANITIZE. IOCTL_STORAGE_REINITIALIZE_MEDIA for crypto erase only.
81h Security Send Yes Yes Yes IOCTL_SCSI_PASS_THROUGH for SCSIOP_SECURITY_PROTOCOL_OUT
82h Security Receive Yes Yes Yes IOCTL_SCSI_PASS_THROUGH for SCSIOP_SECURITY_PROTOCOL_IN
84h Sanitize Yes Yes Yes IOCTL_STORAGE_PROTOCOL_COMMAND. From Windows 10, Version 2004 / May 2020 Update, Windows Server Version 2004 (Server Core). WinPE only prior to Windows 11, Windows Server 2022 and only if the user uses IOCTL_STORAGE_PROTOCOL_COMMAND.
86h Get LBA Status Yes From Windows 11, Windows Server 2022
C0h-FFh Vendor Specific N/A Yes IOCTL_STORAGE_PROTOCOL_COMMAND. Vendor-specific pass-through commands require CSUPP=1 in corresponding Command Supported and Effects Log Page for each vendor-specific command opcode.

I/O commands

The next table includes the following information for NVM Express I/O commands:

  • NVMe Spec: indicates the NVM Express specification that defines the I/O command:
    • A = All I/O Command Sets, NVM Express Base Specification 2.0a, July 23, 2021
    • N = NVM Command Set, NVM Express NVM Command Set Specification 1.0a, July 23, 2021
    • Z = Zoned Namespace Command Set I/O Commands, Zoned Namespace Command Set Specification 1.1a, July 23, 2021
Opcode NVMe I/O Command Header Definition StorNVMe Supported Driver Int Use NVMe Spec Comments
0h Flush Yes Yes Yes A,N,Z SCSIOP_SYNCHRONIZE_CACHE for IOCTL_SCSI_PASS_THROUGH
1h Write Yes Yes Yes N,Z SCSIOP_WRITE/SCSIOP_WRITE16 for IOCTL_SCSI_PASS_THROUGH
2h Read Yes Yes Yes N,Z SCSIOP_READ/SCSIOP_READ16 for IOCTL_SCSI_PASS_THROUGH
4h Write Uncorrectable Yes N,Z
5h Compare Yes Yes N,Z WinPE only. IOCTL_STORAGE_PROTOCOL_COMMAND
8h Write Zeroes Yes N,Z
9h Dataset Management Yes Yes N,Z Only TRIM (Deallocate). SCSIOP_UNMAP for IOCTL_SCSI_PASS_THROUGH
Ch Verify Yes N,Z
Dh Reservation Register Yes A,N,Z From Windows 11, Windows Server 2022.
Eh Reservation Report Yes A,N,Z From Windows 11, Windows Server 2022.
11h Reservation Acquire Yes A,N,Z From Windows 11, Windows Server 2022.
15h Reservation Release Yes A,N,Z From Windows 11, Windows Server 2022.
19h Copy Yes N,Z From Windows 11, Windows Server 2022. Reserved for Microsoft internal use.
79h Zone Management Send Yes Yes Z From Windows 11, Windows Server 2022. Reserved for Microsoft internal use.
7Ah Zone Management Receive Yes Yes Z From Windows 11, Windows Server 2022. Reserved for Microsoft internal use.
7Dh Zone Append Yes Yes Z From Windows 11, Windows Server 2022. Reserved for Microsoft internal use.
80h-FFh Vendor Specific N/A Yes A,N,Z IOCTL_STORAGE_PROTOCOL_COMMAND. Vendor-specific pass-through commands require CSUPP=1 in corresponding Command Supported and Effects Log Page for each vendor-specific command opcode.

Subject to change. For more information, see Working with NVMe drives.