Поделиться через


структура 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

См. также раздел