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中,可能的值包括:
状态值 | 说明 |
---|---|
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
命令的长度。 非零值必须由调用方设置。
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) |