共用方式為


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 (include Ntddstor.h)

另請參閱