共用方式為


SRBEX_DATA_NVME_COMMAND結構 (srb.h)

SRBEX_DATA_NVME_COMMAND 結構可讓使用者以 NVMe 格式框架併發出命令。 此結構目前保留供系統使用。

語法

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;

成員

Type

命令類型。 目前,這必須設定為 SrbExDataTypeNvmeCommand

Length

這個結構的大小,以位元組為單位。

ControllerHandle

NVMe 控制器的迷你埠句柄。

Reserved0

保留;請勿使用。

CommandDWORD0

NVMe 命令內的命令 Dword 0 (請參閱 NVMe 規格) 。

CommandNSID

NVMe 命令內的命名空間識別碼 (請參閱 NVMe 規格) 。

Reserved1[2]

CommandMPTR

NVMe 命令內的元資料指標 (請參閱 NVMe 規格) 。

CommandPRP1

NVMe 命令內的實體區域頁面 (PRP) Entry 1, (請參閱 NVMe 規格) 。 若要指出PRP資訊存在,用戶必須設定SRBEX_DATA_NVME_COMMAND_FLAG的SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY標。

CommandPRP2

NVMe 命令內的 PRP 專案 2 (請參閱 NVMe 規格) 。 若要指出PRP資訊存在,用戶必須設定SRBEX_DATA_NVME_COMMAND_FLAG的SRBEX_DATA_NVME_COMMAND_FLAG_PRP_SET_ALREADY標。

CommandSGL1[2]

CommandCDW10

命令特定的 Dword 10 (請參閱 NVMe 規格) 。

CommandCDW11

命令特定的 Dword 11 (請參閱 NVMe 規格) 。

CommandCDW12

命令特定的 Dword 12 (請參閱 NVMe 規格) 。

CommandCDW13

命令特定的 Dword 13 (請參閱 NVMe 規格) 。

CommandCDW14

命令特定的 Dword 14 (請參閱 NVMe 規格) 。

CommandCDW15

命令特定的 Dword 15 (請參閱 NVMe 規格) 。

FabricsCommand

在 nvme.h 中NVMEOF_FABRICS_COMMAND

FabricsCommand.OPC

Opcode (7Fh) 。

FabricsCommand.PSDT

數據傳輸的 PRP 或 SGL。 (只使用位7:6,其餘部分會保留) 。

FabricsCommand.CID

網狀架構命令標識碼。

FabricsCommand.FCTYPE

網狀架構命令類型。

FabricsCommand.Reserved[35]

FabricsCommand.Specific[24]

Command

若要參考命令 DW0 (請參閱 NVMe 規格) 。

Command.OPC

Opcode (OPC) 。

Command.FUSE

Fused 作業 (FUSE) 。

Command.Reserved

保留;請勿使用。

Command.PSDT

數據傳輸的 PRP 或 SGL。

Command.CID

命令識別碼。

Command.TypeSpecific[60]

CommandType

指定 NVMe 命令類型的 SRBEX_DATA_NVME_COMMAND_TYPE 值。

Reserved2

保留;請勿使用。

CommandFlags

指定此 SRBEX 資料 NVMe 命令屬性 的SRBEX_DATA_NVME_COMMAND_FLAG 值。

ResponseFlags

定義於 SRBEX_DATA_NVME_RESPONSE_FLAG

CommandStatus

[完成佇列] 專案的 [狀態] 字段 (請參閱 NVMe 規格) 。

CommandStatus.DUMMYSTRUCTNAME

內嵌結構。

CommandStatus.DUMMYSTRUCTNAME.P

P) 階段標籤 (。

CommandStatus.DUMMYSTRUCTNAME.SC

SC) (狀態代碼。

CommandStatus.DUMMYSTRUCTNAME.SCT

狀態代碼類型 (SCT) 。

CommandStatus.DUMMYSTRUCTNAME.CRD

命令重試延遲 (CRD) 。

CommandStatus.DUMMYSTRUCTNAME.M

(M) 。

CommandStatus.DUMMYSTRUCTNAME.DNR

請勿重試 DNR () 。

CommandStatus.AsUshort

QID

使用者指定的佇列標識碼 (請參閱 NVMe 規格) 。 如果未指定,請將此值設定為 0xFFFFFFFF。

CommandTag

命令標識碼的唯一使用者指定識別碼,以標示特定命令。 使用者可以使用 CommandTag 來追蹤 Windows (ETW 事件追蹤) 追蹤 (中命令的結果,例如 事件檢視器 記憶體記錄) 。

CQEntryDW0

完成佇列專案 DW0。

CQEntryDW1

完成佇列專案 DW1。

Specific[8]

SQHD

完成佇列專案中的 SQ 前端指標。

SQID

SQ 識別碼。

規格需求

需求
最低支援的伺服器 Windows Server 2022
標頭 srb.h

另請參閱