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) |