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


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

См. также