STORAGE_PROTOCOL_COMMAND 구조체(winioctl.h)
이 구조체는 통과 메커니즘을 사용하여 IOCTL_STORAGE_PROTOCOL_COMMAND를 통해 공급업체별 명령을 스토리지 디바이스에 발급할 때 입력 버퍼로 사용됩니다.
구문
typedef struct _STORAGE_PROTOCOL_COMMAND {
DWORD Version;
DWORD Length;
STORAGE_PROTOCOL_TYPE ProtocolType;
DWORD Flags;
DWORD ReturnStatus;
DWORD ErrorCode;
DWORD CommandLength;
DWORD ErrorInfoLength;
DWORD DataToDeviceTransferLength;
DWORD DataFromDeviceTransferLength;
DWORD TimeOutValue;
DWORD ErrorInfoOffset;
DWORD DataToDeviceBufferOffset;
DWORD DataFromDeviceBufferOffset;
DWORD CommandSpecific;
DWORD Reserved0;
DWORD FixedProtocolReturnData;
DWORD FixedProtocolReturnData2;
DWORD Reserved1[2];
BYTE Command[ANYSIZE_ARRAY];
} STORAGE_PROTOCOL_COMMAND, *PSTORAGE_PROTOCOL_COMMAND;
멤버
Version
이 구조체의 버전입니다. STORAGE_PROTOCOL_STRUCTURE_VERSION 설정해야 합니다.
Length
이 구조체의 크기입니다. sizeof(STORAGE_PROTOCOL_COMMAND)로 설정해야 합니다.
ProtocolType
STORAGE_PROTOCOL_TYPE 형식의 프로토콜 형식입니다.
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
오류 버퍼의 길이입니다. 선택적으로 설정되며 0으로 설정할 수 있습니다.
DataToDeviceTransferLength
디바이스로 전송할 버퍼의 크기입니다. WRITE 요청에서만 사용됩니다.
DataFromDeviceTransferLength
디바이스에서 전송할 버퍼의 크기입니다. 이는 READ 요청에서만 사용됩니다.
TimeOutValue
시간이 초과될 때까지 디바이스를 기다리는 기간입니다. 이 값은 초 단위로 설정됩니다.
ErrorInfoOffset
오류 버퍼의 오프셋입니다. 포인터 맞춤이어야 합니다.
DataToDeviceBufferOffset
디바이스로 전송할 버퍼의 오프셋입니다. 포인터 정렬이어야 하며 WRITE 요청에서만 사용됩니다.
DataFromDeviceBufferOffset
디바이스에서 전송할 버퍼의 오프셋입니다. 포인터 정렬이어야 하며 READ 요청과 함께만 사용됩니다.
CommandSpecific
명령과 함께 전달된 명령별 데이터입니다. 이는 드라이버의 명령에 따라 달라지고 선택적으로 설정됩니다.
Reserved0
다음에 사용하도록 예약됩니다.
FixedProtocolReturnData
반환 데이터입니다. 선택적으로 설정됩니다. NVMe와 같은 일부 프로토콜은 별도의 디바이스 데이터 전송 없이 소량의 데이터(완료 큐 항목에서 DWORD0)를 반환할 수 있습니다.
FixedProtocolReturnData2
Reserved1[2]
다음에 사용하도록 예약됩니다.
Command[ANYSIZE_ARRAY]
디바이스에 전달할 공급업체별 명령입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 |
지원되는 최소 서버 | Windows Server 2016 |
머리글 | winioctl.h(Windows.h 포함) |