Partager via


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