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 中,可以傳回的可能值包括:
狀態值 | 描述 |
---|---|
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
ErrorCode 緩衝區的長度,以位元組為單位。 這是選擇性的設定,而且可以設定為 0。
DataToDeviceTransferLength
要傳送至裝置的緩衝區大小。
DataFromDeviceTransferLength
要從裝置傳輸的緩衝區大小。
TimeOutValue
指定在逾時前等候裝置的時間長度。這會以秒為單位來設定。
ErrorInfoOffset
ErrorCode 緩衝區的位移。 這必須是指針對齊。
DataToDeviceBufferOffset
要傳送至裝置之緩衝區的位移。 這必須是指針對齊,而且只能與 WRITE 要求搭配使用。
DataFromDeviceBufferOffset
要從裝置傳輸之緩衝區的位移。 這必須是指針對齊,而且只能與 READ 要求搭配使用。
CommandSpecific
隨 Command 一起傳遞的其他命令特定數據。 這取決於驅動程式的命令,並選擇性地設定。
Reserved0
保留供未來使用。
FixedProtocolReturnData
傳回數據。 這是選擇性設定的。 NVMe 之類的某些通訊協定可能會從完成佇列輸入傳回少量數據, (DWORD0) ,而不需要個別的裝置數據傳輸。
FixedProtocolReturnData2
傳回 data2。 這是選擇性設定的。 NVMe 之類的某些通訊協定可能會從完成佇列輸入傳回少量數據 (DWORD1) ,而不需要個別的裝置數據傳輸。
Reserved1[2]
保留供未來使用。
Command[ANYSIZE_ARRAY]
要傳遞至裝置的廠商特定命令。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
標頭 | ntddstor.h (包含 Ntddstor.h) |