структура 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
Команда Dword 0 в команде NVMe (см. спецификации NVMe).
CommandNSID
Идентификатор пространства имен в команде NVMe (см. спецификации NVMe).
Reserved1[2]
CommandMPTR
Указатель метаданных в команде NVMe (см. спецификации NVMe).
CommandPRP1
Страница физического региона (PRP) Запись 1 в команде NVMe (см. спецификации NVMe ). Чтобы указать, что данные PRP присутствуют, пользователь должен задать флаг SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADYSRBEX_DATA_NVME_COMMAND_FLAG.
CommandPRP2
Запись PRP 2 в команде NVMe (см. спецификации NVMe). Чтобы указать, что данные PRP присутствуют, пользователь должен задать флаг SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADYSRBEX_DATA_NVME_COMMAND_FLAG.
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
Операция fused (FUSE).
Command.Reserved
Скрытный; не используйте.
Command.PSDT
PRP или SGL для передачи данных.
Command.CID
Идентификатор команды.
Command.TypeSpecific[60]
CommandType
Значение SRBEX_DATA_NVME_COMMAND_TYPE, указывающее тип команды NVMe.
Reserved2
Скрытный; не используйте.
CommandFlags
Значение SRBEX_DATA_NVME_COMMAND_FLAG, указывающее свойства этой команды NVMe данных SRBEX.
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
Идентификатор очереди, указанный пользователем (см. спецификации NVMe). Если не указано, задайте для этого значения значение 0xFFFFFFFF.
CommandTag
Уникальный идентификатор, указанный пользователем для идентификатора команды, чтобы пометить определенную команду. Пользователь может использовать CommandTag для трассировки результатов команды в трассировке событий для Windows (ETW) (например, в журнале хранилища средства просмотра событий).
CQEntryDW0
Запись очереди завершения DW0.
CQEntryDW1
Запись очереди завершения DW1.
Specific[8]
SQHD
Указатель головы SQ в записи очереди завершения.
SQID
Идентификатор SQ.
Требования
Требование | Ценность |
---|---|
минимальный поддерживаемый сервер | Windows Server 2022 |
заголовка | srb.h |