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_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
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 |