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 컨트롤러에 대한 Miniport의 핸들입니다.

Reserved0

예약되어 있으므로 사용하지 마세요.

CommandDWORD0

NVMe 명령 내의 명령 Dword 0( NVMe 사양 참조).

CommandNSID

NVMe 명령 내의 네임스페이스 식별자입니다( NVMe 사양 참조).

Reserved1[2]

CommandMPTR

NVMe 명령 내의 메타데이터 포인터입니다( NVMe 사양 참조).

CommandPRP1

NVMe 명령 내의 PRP(물리적 지역 페이지) 항목 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

Fabrics 명령 식별자입니다.

FabricsCommand.FCTYPE

Fabrics 명령 유형입니다.

FabricsCommand.Reserved[35]

FabricsCommand.Specific[24]

Command

DW0 명령을 참조하려면( NVMe 사양 참조)

Command.OPC

OPC(Opcode).

Command.FUSE

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

사용자가 지정한 큐 ID( NVMe 사양 참조). 지정되지 않은 경우 이 값을 0xFFFFFFFF 설정합니다.

CommandTag

특정 명령을 표시할 명령 식별자에 대해 사용자가 지정한 고유 식별자입니다. 사용자는 CommandTag를 사용하여 ETW(Windows용 이벤트 추적) 추적에서 명령의 결과를 추적할 수 있습니다(예: 이벤트 뷰어 스토리지 로그).

CQEntryDW0

완료 큐 항목 DW0.

CQEntryDW1

완료 큐 항목 DW1.

Specific[8]

SQHD

완료 큐 항목의 SQ 헤드 포인터입니다.

SQID

SQ 식별자입니다.

요구 사항

요구 사항
지원되는 최소 서버 Windows Server 2022
머리글 srb.h

추가 정보