structure SRBEX_DATA_NVME_COMMAND (srb.h)
La structure SRBEX_DATA_NVME_COMMAND permet à l’utilisateur de tramer et d’émettre une commande au format NVMe. Cette structure est actuellement réservée à l’utilisation du système.
Syntaxe
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;
Membres
Type
Type de commande. Actuellement, cette valeur doit être définie sur SrbExDataTypeNvmeCommand.
Length
Taille de cette structure, en octets.
ControllerHandle
Poignée de miniport pour le contrôleur NVMe.
Reserved0
Réservé; n’utilisez pas.
CommandDWORD0
Commande Dword 0 dans la commande NVMe (consultez les spécifications NVMe).
CommandNSID
Identificateur d’espace de noms dans la commande NVMe (consultez les spécifications nvMe ).
Reserved1[2]
CommandMPTR
Pointeur de métadonnées dans la commande NVMe (consultez les spécifications nvMe ).
CommandPRP1
Entrée 1 de la page région physique (PRP) dans la commande NVMe (voir les spécifications NVMe). Pour indiquer que les informations PRP sont présentes, l’utilisateur doit définir l’indicateur SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY de SRBEX_DATA_NVME_COMMAND_FLAG.
CommandPRP2
Entrée PRP 2 dans la commande NVMe (consultez les spécifications NVMe). Pour indiquer que les informations PRP sont présentes, l’utilisateur doit définir l’indicateur SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY de SRBEX_DATA_NVME_COMMAND_FLAG.
CommandSGL1[2]
CommandCDW10
Dword 10 spécifique à la commande (consultez les spécifications nvMe ).
CommandCDW11
Dword 11 spécifique à la commande (voir les spécifications NVMe ).
CommandCDW12
Dword 12 spécifique à la commande (voir les spécifications NVMe ).
CommandCDW13
Dword 13 spécifique à la commande (consultez les spécifications NVMe ).
CommandCDW14
Dword 14 spécifique à la commande (voir les spécifications NVMe ).
CommandCDW15
Dword 15 spécifique à la commande (consultez les spécifications NVMe ).
FabricsCommand
NVMEOF_FABRICS_COMMAND dans nvme.h
FabricsCommand.OPC
Opcode (7Fh).
FabricsCommand.PSDT
PRP ou SGL pour le transfert de données. (seuls les bits 7:6 sont utilisés, le reste est réservé).
FabricsCommand.CID
Identificateur de commande Fabrics.
FabricsCommand.FCTYPE
Type de commande Fabrics.
FabricsCommand.Reserved[35]
FabricsCommand.Specific[24]
Command
Pour référencer la commande DW0 (consultez les spécifications NVMe ).
Command.OPC
Opcode (OPC).
Command.FUSE
Opération fusionnée (FUSE).
Command.Reserved
Réservé; n’utilisez pas.
Command.PSDT
PRP ou SGL pour le transfert de données.
Command.CID
Identificateur de commande.
Command.TypeSpecific[60]
CommandType
Valeur SRBEX_DATA_NVME_COMMAND_TYPE qui spécifie le type de commande NVMe.
Reserved2
Réservé; n’utilisez pas.
CommandFlags
Valeur SRBEX_DATA_NVME_COMMAND_FLAG qui spécifie les propriétés de cette commande NVMe de données SRBEX.
ResponseFlags
Défini dans SRBEX_DATA_NVME_RESPONSE_FLAG.
CommandStatus
Champ État de l’entrée de la file d’attente de saisie semi-automatique (consultez les spécifications nvMe ).
CommandStatus.DUMMYSTRUCTNAME
Structure incorporée.
CommandStatus.DUMMYSTRUCTNAME.P
Balise de phase (P).
CommandStatus.DUMMYSTRUCTNAME.SC
Code d’état (SC).
CommandStatus.DUMMYSTRUCTNAME.SCT
Type de code d’état (SCT).
CommandStatus.DUMMYSTRUCTNAME.CRD
Délai de nouvelle tentative de commande (CRD).
CommandStatus.DUMMYSTRUCTNAME.M
Plus (M).
CommandStatus.DUMMYSTRUCTNAME.DNR
Ne réessayez pas (DNR).
CommandStatus.AsUshort
QID
ID de file d’attente spécifié par l’utilisateur (consultez les spécifications nvMe ). Si elle n’est pas spécifiée, définissez cette valeur sur 0xFFFFFFFF.
CommandTag
Identificateur unique spécifié par l’utilisateur pour l’identificateur de commande pour marquer une commande spécifique. Un utilisateur peut utiliser CommandTag pour suivre le résultat de la commande dans une trace de suivi d’événements pour Windows (ETW) (par exemple, dans le journal de stockage de l’Observateur d’événements).
CQEntryDW0
Entrée de file d’attente d’achèvement DW0.
CQEntryDW1
Entrée de file d’attente d’achèvement DW1.
Specific[8]
SQHD
Pointeur principal SQ dans l’entrée de file d’attente d’achèvement.
SQID
Identificateur SQ.
Exigences
Exigence | Valeur |
---|---|
serveur minimum pris en charge | Windows Server 2022 |
d’en-tête | srb.h |
Voir aussi
- SRBEX_DATA_NVME_COMMAND_FLAG
- SRBEX_DATA_NVME_COMMAND_FLAG
- spécifications nvMe