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_FLAG 的 SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY标志。
CommandPRP2
NVMe 命令中的 PRP 条目 2 (请参阅 NVMe 规范) 。 若要指示 PRP 信息存在,用户必须设置 SRBEX_DATA_NVME_COMMAND_FLAG 的 SRBEX_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 |