Partager via


SRBEX_DATA_NVME_COMMAND structure (srb.h)

La structure SRBEX_DATA_NVME_COMMAND permet à l’utilisateur de cadrer 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é ; ne pas utiliser.

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

Page de région physique (PRP) Entrée 1 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 (voir 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 (voir 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, les autres sont réservés).

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

Fused Operation (FUSE).

Command.Reserved

Réservé ; ne pas utiliser.

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é ; ne pas utiliser.

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 File d’attente d’achèvement (voir 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 (voir 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 ETW (Event Tracing for Windows) (par exemple, dans le journal de stockage de 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 la file d’attente d’achèvement.

SQID

Identificateur SQ.

Configuration requise

Condition requise Valeur
Serveur minimal pris en charge Windows Server 2022
En-tête srb.h

Voir aussi