共用方式為


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)

另請參閱