srb.h) (SRBEX_DATA_NVME_COMMAND 结构

SRBEX_DATA_NVME_COMMAND结构使用户能够以 NVMe 格式构建和发出命令。 此结构目前保留供系统使用。

语法

typedef struct _SRBEX_DATA_NVME_COMMAND {
  SRBEXDATATYPE Type;
  ULONG         Length;
  union {
    PVOID     ControllerHandle;
    ULONGLONG Reserved0;
  };
  union {
    struct {
      ULONG     CommandDWORD0;
      ULONG     CommandNSID;
      ULONG     Reserved1[2];
      ULONGLONG CommandMPTR;
      union {
        struct {
          ULONGLONG CommandPRP1;
          ULONGLONG CommandPRP2;
        };
        ULONGLONG CommandSGL1[2];
      };
      ULONG     CommandCDW10;
      ULONG     CommandCDW11;
      ULONG     CommandCDW12;
      ULONG     CommandCDW13;
      ULONG     CommandCDW14;
      ULONG     CommandCDW15;
    };
    struct {
      UCHAR  OPC;
      UCHAR  PSDT;
      USHORT CID;
      UCHAR  FCTYPE;
      UCHAR  Reserved[35];
      UCHAR  Specific[24];
    } FabricsCommand;
    struct {
      ULONG OPC : 8;
      ULONG FUSE : 2;
      ULONG Reserved : 4;
      ULONG PSDT : 2;
      ULONG CID : 16;
      UCHAR TypeSpecific[60];
    } Command;
  };
  UCHAR         CommandType;
  UCHAR         Reserved2;
  USHORT        CommandFlags;
  USHORT        ResponseFlags;
  union {
    struct {
      USHORT P : 1;
      USHORT SC : 8;
      USHORT SCT : 3;
      USHORT CRD : 2;
      USHORT M : 1;
      USHORT DNR : 1;
    } DUMMYSTRUCTNAME;
    USHORT AsUshort;
  } CommandStatus;
  ULONG         QID;
  ULONG         CommandTag;
  union {
    struct {
      ULONG CQEntryDW0;
      ULONG CQEntryDW1;
    };
    UCHAR Specific[8];
  };
  USHORT        SQHD;
  USHORT        SQID;
} SRBEX_DATA_NVME_COMMAND, *PSRBEX_DATA_NVME_COMMAND;

成员

Type

命令类型。 目前,必须将其设置为 SrbExDataTypeNvmeCommand

Length

此结构的大小(以字节为单位)。

ControllerHandle

NVMe 控制器的微型端口句柄。

Reserved0

保留值;请勿使用。

CommandDWORD0

NVMe 命令中的命令 Dword 0 (请参阅 NVMe 规范) 。

CommandNSID

NVMe 命令中的命名空间标识符 (请参阅 NVMe 规范) 。

Reserved1[2]

CommandMPTR

NVMe 命令中的元数据指针 (查看 NVMe 规范) 。

CommandPRP1

NVMe 命令中 (PRP) 条目 1 的物理区域页 (请参阅 NVMe 规范) 。 若要指示 PRP 信息存在,用户必须设置 SRBEX_DATA_NVME_COMMAND_FLAGSRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY标志。

CommandPRP2

NVMe 命令中的 PRP 条目 2 (请参阅 NVMe 规范) 。 若要指示 PRP 信息存在,用户必须设置 SRBEX_DATA_NVME_COMMAND_FLAGSRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY标志。

CommandSGL1[2]

CommandCDW10

命令特定的 Dword 10 (请参阅 NVMe 规范) 。

CommandCDW11

命令特定的 Dword 11 (请参阅 NVMe 规范) 。

CommandCDW12

特定于命令的 Dword 12 (请参阅 NVMe 规范) 。

CommandCDW13

特定于命令的 Dword 13 (请参阅 NVMe 规范) 。

CommandCDW14

特定于命令的 Dword 14 (请参阅 NVMe 规范) 。

CommandCDW15

命令特定的 Dword 15 (请参阅 NVMe 规范) 。

FabricsCommand

nvme.h 中的NVMEOF_FABRICS_COMMAND

FabricsCommand.OPC

opcode (7Fh) 。

FabricsCommand.PSDT

用于数据传输的 PRP 或 SGL。 (仅使用位 7:6,其余部分保留) 。

FabricsCommand.CID

Fabrics 命令标识符。

FabricsCommand.FCTYPE

Fabrics 命令类型。

FabricsCommand.Reserved[35]

FabricsCommand.Specific[24]

Command

若要引用命令 DW0 (请参阅 NVMe 规范) 。

Command.OPC

Opcode (OPC) 。

Command.FUSE

融合操作 (FUSE) 。

Command.Reserved

保留值;请勿使用。

Command.PSDT

用于数据传输的 PRP 或 SGL。

Command.CID

命令标识符。

Command.TypeSpecific[60]

CommandType

指定 NVMe 命令类型的 SRBEX_DATA_NVME_COMMAND_TYPE 值。

Reserved2

保留值;请勿使用。

CommandFlags

一个SRBEX_DATA_NVME_COMMAND_FLAG值,该值指定此 SRBEX 数据 NVMe 命令的属性。

ResponseFlags

SRBEX_DATA_NVME_RESPONSE_FLAG 中定义。

CommandStatus

“完成队列”条目中的“状态”字段 (查看 NVMe 规范) 。

CommandStatus.DUMMYSTRUCTNAME

嵌入结构。

CommandStatus.DUMMYSTRUCTNAME.P

阶段标记 (P) 。

CommandStatus.DUMMYSTRUCTNAME.SC

SC) (状态代码。

CommandStatus.DUMMYSTRUCTNAME.SCT

状态代码类型 (SCT) 。

CommandStatus.DUMMYSTRUCTNAME.CRD

命令重试延迟 (CRD) 。

CommandStatus.DUMMYSTRUCTNAME.M

更多 (M) 。

CommandStatus.DUMMYSTRUCTNAME.DNR

请勿重试 (DNR) 。

CommandStatus.AsUshort

QID

用户指定的队列 ID (查看 NVMe 规范) 。 如果未指定,请将此值设置为 0xFFFFFFFF。

CommandTag

用于标记特定命令的命令标识符的唯一用户指定的标识符。 例如,用户可以使用 CommandTag 在 Windows (ETW 事件跟踪) 跟踪 (跟踪中跟踪命令的结果,例如,在 事件查看器 的存储日志) 。

CQEntryDW0

完成队列条目 DW0。

CQEntryDW1

完成队列条目 DW1。

Specific[8]

SQHD

完成队列条目中的 SQ 头指针。

SQID

SQ 标识符。

要求

要求
最低受支持的服务器 Windows Server 2022
标头 srb.h

另请参阅