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 |