структура 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
Тег phase (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 |