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 |