Freigeben über


SRBEX_DATA_NVME_COMMAND-Struktur (srb.h)

Die SRBEX_DATA_NVME_COMMAND-Struktur ermöglicht es dem Benutzer, einen Befehl im NVMe-Format zu framen und ausstellen. Diese Struktur ist derzeit für die Systemverwendung reserviert.

Syntax

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;

Member

Type

Befehlstyp. Derzeit muss dies auf SrbExDataTypeNvmeCommand festgelegt werden.

Length

Größe dieser Struktur in Bytes.

ControllerHandle

Miniport-Handle für den NVMe-Controller.

Reserved0

Reserviert; nicht verwenden.

CommandDWORD0

Befehl Dword 0 innerhalb des NVMe-Befehls (siehe NVMe-Spezifikationen).

CommandNSID

Namespacebezeichner innerhalb des NVMe-Befehls (siehe NVMe-Spezifikationen).

Reserved1[2]

CommandMPTR

Metadatenzeiger innerhalb des NVMe-Befehls (siehe NVMe-Spezifikationen).

CommandPRP1

PrP (Physical Region Page) Eintrag 1 innerhalb des NVMe-Befehls (siehe NVMe-Spezifikationen). Um anzugeben, dass PRP-Informationen vorhanden sind, muss der Benutzer das SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY Flag von SRBEX_DATA_NVME_COMMAND_FLAG festlegen.

CommandPRP2

PRP-Eintrag 2 im NVMe-Befehl (siehe NVMe-Spezifikationen). Um anzugeben, dass PRP-Informationen vorhanden sind, muss der Benutzer das SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY Flag von SRBEX_DATA_NVME_COMMAND_FLAG festlegen.

CommandSGL1[2]

CommandCDW10

Befehlsspezifisches Dword 10 (siehe NVMe-Spezifikationen).

CommandCDW11

Befehlsspezifisches Dword 11 (siehe NVMe-Spezifikationen).

CommandCDW12

Befehlsspezifisches Dword 12 (siehe NVMe-Spezifikationen).

CommandCDW13

Befehlsspezifisches Dword 13 (siehe NVMe-Spezifikationen).

CommandCDW14

Befehlsspezifisches Dword 14 (siehe NVMe-Spezifikationen).

CommandCDW15

Befehlsspezifisches Dword 15 (siehe NVMe-Spezifikationen).

FabricsCommand

NVMEOF_FABRICS_COMMAND in nvme.h

FabricsCommand.OPC

Opcode (7Fh).

FabricsCommand.PSDT

PRP oder SGL für die Datenübertragung. (Es werden nur Bits 7:6 verwendet, der Rest ist reserviert).

FabricsCommand.CID

Fabrics-Befehlsbezeichner.

FabricsCommand.FCTYPE

Fabrics-Befehlstyp.

FabricsCommand.Reserved[35]

FabricsCommand.Specific[24]

Command

Um auf den Befehl DW0 zu verweisen (siehe NVMe-Spezifikationen).

Command.OPC

Opcode (OPC).

Command.FUSE

Fusionsvorgang (FUSE).

Command.Reserved

Reserviert; nicht verwenden.

Command.PSDT

PRP oder SGL für die Datenübertragung.

Command.CID

Befehlsbezeichner.

Command.TypeSpecific[60]

CommandType

Ein SRBEX_DATA_NVME_COMMAND_TYPE Wert, der den NVMe-Befehlstyp angibt.

Reserved2

Reserviert; nicht verwenden.

CommandFlags

Ein SRBEX_DATA_NVME_COMMAND_FLAG Wert, der die Eigenschaften dieses NVMe-Befehls für SRBEX-Daten angibt.

ResponseFlags

In SRBEX_DATA_NVME_RESPONSE_FLAG definiert.

CommandStatus

Feld "Status" aus dem Eintrag "Abschlusswarteschlange" (siehe NVMe-Spezifikationen).

CommandStatus.DUMMYSTRUCTNAME

Eingebettete Struktur.

CommandStatus.DUMMYSTRUCTNAME.P

Phasentag (P).

CommandStatus.DUMMYSTRUCTNAME.SC

Statuscode (SC).

CommandStatus.DUMMYSTRUCTNAME.SCT

Statuscodetyp (SCT).

CommandStatus.DUMMYSTRUCTNAME.CRD

Wiederholungsverzögerung (Command Retry Delay, CRD).

CommandStatus.DUMMYSTRUCTNAME.M

Mehr (M).

CommandStatus.DUMMYSTRUCTNAME.DNR

Nicht wiederholen (DNR).

CommandStatus.AsUshort

QID

Vom Benutzer angegebene Warteschlangen-ID (siehe NVMe-Spezifikationen). Wenn nicht angegeben, legen Sie diesen Wert auf 0xFFFFFFFF fest.

CommandTag

Eindeutiger benutzerdefinierter Bezeichner für den Befehlsbezeichner, um einen bestimmten Befehl zu markieren. Ein Benutzer kann CommandTag verwenden, um das Ergebnis des Befehls in einer ETW-Ablaufverfolgung (Ereignisablaufverfolgung für Windows) nachzuverfolgen (z. B. im Speicherprotokoll von Ereignisanzeige).

CQEntryDW0

Vervollständigungswarteschlangeneintrag DW0.

CQEntryDW1

Abschlusswarteschlangeneintrag DW1.

Specific[8]

SQHD

SQ-Kopfzeiger im Warteschlangeneintrag für den Abschluss.

SQID

SQ-Bezeichner.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Server) Windows Server 2022
Kopfzeile srb.h

Weitere Informationen