STORAGE_PROTOCOL_COMMAND 구조체(ntddstor.h)
이 구조는 스토리지 디바이스에 공급업체별 프로토콜 명령을 발급하는 IOCTL_STORAGE_PROTOCOL_COMMAND 통과 메커니즘과 함께 사용됩니다.
구문
typedef struct _STORAGE_PROTOCOL_COMMAND {
ULONG Version;
ULONG Length;
STORAGE_PROTOCOL_TYPE ProtocolType;
ULONG Flags;
ULONG ReturnStatus;
ULONG ErrorCode;
ULONG CommandLength;
ULONG ErrorInfoLength;
ULONG DataToDeviceTransferLength;
ULONG DataFromDeviceTransferLength;
ULONG TimeOutValue;
ULONG ErrorInfoOffset;
ULONG DataToDeviceBufferOffset;
ULONG DataFromDeviceBufferOffset;
ULONG CommandSpecific;
ULONG Reserved0;
ULONG FixedProtocolReturnData;
ULONG FixedProtocolReturnData2;
ULONG Reserved1[2];
UCHAR Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;
멤버
Version
이 구조체의 버전입니다. 이 설정을 STORAGE_PROTOCOL_STRUCTURE_VERSION.
Length
이 구조체의 크기입니다. sizeof(STORAGE_PROTOCOL_COMMAND)로 설정합니다.
ProtocolType
프로토콜 유형입니다.
Flags
이 요청에 대해 설정된 플래그입니다. 다음은 유효한 플래그입니다.
플래그 | 설명 |
---|---|
STORAGE_PROTOCOL_COMMAND_FLAG_ADAPTER_REQUEST | 이 플래그는 디바이스 대신 어댑터를 대상으로 하는 요청을 나타냅니다. |
ReturnStatus
스토리지 디바이스에 대한 요청의 상태. Windows 10 반환할 수 있는 값은 다음과 같습니다.
상태 값 | Description |
---|---|
STORAGE_PROTOCOL_STATUS_PENDING | 요청이 보류 중입니다. |
STORAGE_PROTOCOL_STATUS_SUCCESS | 요청이 성공적으로 완료되었습니다. |
STORAGE_PROTOCOL_STATUS_ERROR | 요청에 오류가 발생했습니다. |
STORAGE_PROTOCOL_STATUS_INVALID_REQUEST | 요청이 잘못되었습니다. |
STORAGE_PROTOCOL_STATUS_NO_DEVICE | 디바이스를 요청할 수 없습니다. |
STORAGE_PROTOCOL_STATUS_BUSY | 디바이스가 요청에 따라 작동 중입니다. |
STORAGE_PROTOCOL_STATUS_DATA_OVERRUN | 요청에 따라 작업하는 동안 디바이스에서 데이터 오버런이 발생했습니다. |
STORAGE_PROTOCOL_STATUS_INSUFFICIENT_RESOURCES | 리소스가 부족하여 디바이스에서 요청을 완료할 수 없습니다. |
STORAGE_PROTOCOL_STATUS_NOT_SUPPORTED | 요청이 지원되지 않습니다. |
ErrorCode
이 요청에 대해 반환할 버스별 프로토콜 오류 코드입니다. 선택적으로 설정됩니다.
CommandLength
명령의 길이(바이트)입니다. 호출자는 이 값을 0이 아닌 값으로 설정해야 합니다.
ErrorInfoLength
ErrorCode 버퍼의 길이(바이트)입니다. 선택적으로 설정되며 0으로 설정할 수 있습니다.
DataToDeviceTransferLength
디바이스로 전송할 버퍼의 크기입니다.
DataFromDeviceTransferLength
디바이스에서 전송할 버퍼의 크기입니다.
TimeOutValue
시간이 초과될 때까지 디바이스를 대기하는 시간을 지정합니다. 이 값은 초 단위로 설정됩니다.
ErrorInfoOffset
ErrorCode 버퍼의 오프셋입니다. 포인터 맞춤이어야 합니다.
DataToDeviceBufferOffset
디바이스로 전송할 버퍼의 오프셋입니다. 포인터 정렬이어야 하며 WRITE 요청에서만 사용됩니다.
DataFromDeviceBufferOffset
디바이스에서 전송할 버퍼의 오프셋입니다. 포인터 정렬이어야 하며 READ 요청과 함께만 사용됩니다.
CommandSpecific
명령과 함께 전달된 추가 명령별 데이터입니다. 이는 드라이버의 명령에 따라 달라지고 선택적으로 설정됩니다.
Reserved0
다음에 사용하도록 예약됩니다.
FixedProtocolReturnData
반환 데이터입니다. 선택적으로 설정됩니다. NVMe와 같은 일부 프로토콜은 별도의 디바이스 데이터 전송 없이 소량의 데이터(완료 큐 항목에서 DWORD0)를 반환할 수 있습니다.
FixedProtocolReturnData2
반환 데이터2입니다. 선택적으로 설정됩니다. NVMe와 같은 일부 프로토콜은 별도의 디바이스 데이터 전송 없이 소량의 데이터(완료 큐 항목에서 DWORD1)를 반환할 수 있습니다.
Reserved1[2]
다음에 사용하도록 예약됩니다.
Command[ANYSIZE_ARRAY]
디바이스에 전달할 공급업체별 명령입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 |
지원되는 최소 서버 | Windows Server 2016 |
머리글 | ntddstor.h(Ntddstor.h 포함) |