共用方式為


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)

另請參閱

IOCTL_STORAGE_PROTOCOL_COMMAND