SRBEX_DATA_NVME_COMMAND structure (srb.h)

The SRBEX_DATA_NVME_COMMAND structure enables the user to frame and issue a command in NVMe format. This structure is currently reserved for system use.

Syntax

typedef struct _SRBEX_DATA_NVME_COMMAND {
  SRBEXDATATYPE Type;
  ULONG         Length;
  ULONG         CommandDWORD0;
  ULONG         CommandNSID;
  ULONG         Reserved0[2];
  ULONGLONG     CommandMPTR;
  ULONGLONG     CommandPRP1;
  ULONGLONG     CommandPRP2;
  ULONG         CommandCDW10;
  ULONG         CommandCDW11;
  ULONG         CommandCDW12;
  ULONG         CommandCDW13;
  ULONG         CommandCDW14;
  ULONG         CommandCDW15;
  UCHAR         CommandType;
  UCHAR         CommandFlags;
  union {
    struct {
      USHORT P : 1;
      USHORT SC : 8;
      USHORT SCT : 3;
      USHORT Reserved : 2;
      USHORT M : 1;
      USHORT DNR : 1;
    } DUMMYSTRUCTNAME;
    USHORT AsUshort;
  } CommandStatus;
  ULONG         QID;
  ULONG         CommandTag;
  ULONG         CQEntryDW0;
} SRBEX_DATA_NVME_COMMAND, *PSRBEX_DATA_NVME_COMMAND;

Members

Type

Command type. Currently this must be set to SrbExDataTypeNvmeCommand.

Length

Size of this structure, in bytes.

CommandDWORD0

Command Dword 0 within the NVMe command (see the NVMe specification).

CommandNSID

Namespace identifier within the NVMe command (see the NVMe specification).

Reserved0[2]

Reserved; do not use.

CommandMPTR

Metadata pointer within the NVMe command (see the NVMe specification).

CommandPRP1

Physical region page (PRP) Entry 1 within the NVMe command (see the NVMe spec). To indicate that PRP information is present, the user must set the SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY flag of SRBEX_DATA_NVME_COMMAND_FLAG.

CommandPRP2

PRP Entry 2 within the NVMe command (see the NVMe spec). To indicate that PRP information is present, the user must set the SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY flag of SRBEX_DATA_NVME_COMMAND_FLAG.

CommandCDW10

Command-specific Dword 10 (see the NVMe spec).

CommandCDW11

Command-specific Dword 11 (see the NVMe spec).

CommandCDW12

Command-specific Dword 12 (see the NVMe spec).

CommandCDW13

Command-specific Dword 13 (see the NVMe spec).

CommandCDW14

Command-specific Dword 14 (see the NVMe spec).

CommandCDW15

Command-specific Dword 15 (see the NVMe spec).

CommandType

A SRBEX_DATA_NVME_COMMAND_TYPE value that specifies the NVMe command type.

CommandFlags

A SRBEX_DATA_NVME_COMMAND_FLAG value that specifies the properties of this SRBEX data NVMe command.

CommandStatus

Status field from the Completion Queue entry (see the NVMe spec).

CommandStatus.DUMMYSTRUCTNAME

CommandStatus.DUMMYSTRUCTNAME.P

Phase tag (P).

CommandStatus.DUMMYSTRUCTNAME.SC

Status code (SC).

CommandStatus.DUMMYSTRUCTNAME.SCT

Status code type (SCT).

CommandStatus.DUMMYSTRUCTNAME.Reserved

Reserved.

CommandStatus.DUMMYSTRUCTNAME.M

More (M).

CommandStatus.DUMMYSTRUCTNAME.DNR

Do not retry (DNR).

CommandStatus.AsUshort

QID

User-specified queue ID (see the NVMe spec). If unspecified, set this value to 0xFFFFFFFF.

CommandTag

Unique, user-specified identifier for the command identifier to mark a specific command. A user can use CommandTag to trace the result of the command in an Event Tracing for Windows (ETW) trace (for example, in Event Viewer's Storage log).

CQEntryDW0

Completion queue entry DW0.

Requirements

Requirement Value
Minimum supported server Windows Server 2022
Header srb.h

See also

SRBEX_DATA_NVME_COMMAND_FLAG

SRBEX_DATA_NVME_COMMAND_FLAG