SRBEX_DATA_NVME_COMMAND结构(srb.h)

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

NVMEOF_FABRICS_COMMAND nvme.h

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

另请参阅