Freigeben über


SRBEX_DATA_NVME_COMMAND Struktur (srb.h)

Mit der SRBEX_DATA_NVME_COMMAND-Struktur kann der Benutzer einen Befehl im NVMe-Format framen und ausgeben. Diese Struktur ist zurzeit 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;

Angehörige

Type

Befehlstyp. Derzeit muss dies auf SrbExDataTypeNvmeCommandfestgelegt werden.

Length

Größe dieser Struktur in Byte.

ControllerHandle

Miniport-Handle für den NVMe-Controller.

Reserved0

Reserviert; nicht verwenden.

CommandDWORD0

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

CommandNSID

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

Reserved1[2]

CommandMPTR

Metadatenzeiger im NVMe-Befehl (siehe NVMe-Spezifikationen).

CommandPRP1

Seite für physische Region (PRP) Eintrag 1 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 Kennzeichen SRBEX_DATA_NVME_COMMAND_FLAGfestlegen.

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 Kennzeichen SRBEX_DATA_NVME_COMMAND_FLAGfestlegen.

CommandSGL1[2]

CommandCDW10

Befehlsspezifische Dword 10 (siehe NVMe-Spezifikationen).

CommandCDW11

Befehlsspezifische Dword 11 (siehe NVMe-Spezifikationen).

CommandCDW12

Befehlsspezifische Dword 12 (siehe NVMe-Spezifikationen).

CommandCDW13

Befehlsspezifische Dword 13 (siehe NVMe-Spezifikationen).

CommandCDW14

Befehlsspezifische dword 14 (siehe NVMe-Spezifikationen).

CommandCDW15

Befehlsspezifische 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. (Nur Bits 7:6 werden verwendet, der Rest ist reserviert).

FabricsCommand.CID

Fabrics-Befehlsbezeichner.

FabricsCommand.FCTYPE

Fabrics-Befehlstyp.

FabricsCommand.Reserved[35]

FabricsCommand.Specific[24]

Command

Informationen zum Verweisen auf Befehl DW0 (siehe NVMe-Spezifikationen).

Command.OPC

Opcode (OPC).

Command.FUSE

Fused Operation (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 SRBEX-Daten-NVMe-Befehls angibt.

ResponseFlags

Definiert in SRBEX_DATA_NVME_RESPONSE_FLAG.

CommandStatus

Statusfeld aus dem Eintrag "Vervollständigungswarteschlange" (siehe NVMe-Spezifikationen).

CommandStatus.DUMMYSTRUCTNAME

Eingebettete Struktur.

CommandStatus.DUMMYSTRUCTNAME.P

Phase-Tag (P).

CommandStatus.DUMMYSTRUCTNAME.SC

Statuscode (SC).

CommandStatus.DUMMYSTRUCTNAME.SCT

Statuscodetyp (SCT).

CommandStatus.DUMMYSTRUCTNAME.CRD

Befehlsrücklaufverzögerung (CRD).

CommandStatus.DUMMYSTRUCTNAME.M

Mehr (M).

CommandStatus.DUMMYSTRUCTNAME.DNR

Wiederholen Sie den Vorgang nicht (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 Ereignisablaufverfolgung für Windows (ETW)-Ablaufverfolgung (z. B. im Speicherprotokoll der Ereignisanzeige) nachzuverfolgen.

CQEntryDW0

Vervollständigungswarteschlangeneintrag DW0.

CQEntryDW1

Vervollständigungswarteschlangeneintrag DW1.

Specific[8]

SQHD

SQ-Kopfzeiger im Vervollständigungswarteschlangeneintrag.

SQID

SQ-ID.

Anforderungen

Anforderung Wert
mindestens unterstützte Server- Windows Server 2022
Header- srb.h

Siehe auch