次の方法で共有


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

コマンドの長さ。 0 以外の値は、呼び出し元によって設定する必要があります。

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
Header winioctl.h (Windows.h を含む)

こちらもご覧ください

IOCTL_STORAGE_PROTOCOL_COMMAND