次の方法で共有


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

コマンドの長さ (バイト単位)。 呼び出し元はこれを 0 以外の値に設定する必要があります。

ErrorInfoLength

ErrorCode バッファーの長さ (バイト単位)。 これは必要に応じて設定され、0 に設定できます。

DataToDeviceTransferLength

デバイスに転送されるバッファーのサイズ。

DataFromDeviceTransferLength

デバイスから転送されるバッファーのサイズ。

TimeOutValue

タイムアウトするまでデバイスを待機する時間を指定します。これは秒単位で設定されます。

ErrorInfoOffset

ErrorCode バッファーのオフセット。 これはポインターを合わせる必要があります。

DataToDeviceBufferOffset

デバイスに転送されるバッファーのオフセット。 これはポインターアラインメントである必要があり、WRITE 要求でのみ使用されます。

DataFromDeviceBufferOffset

デバイスから転送されるバッファーのオフセット。 これはポインターを合わせる必要があり、READ 要求でのみ使用されます。

CommandSpecific

Command と共に渡されるコマンド固有の追加データ。 これはドライバーからのコマンドによって異なり、必要に応じて設定されます。

Reserved0

将来利用するために予約されています。

FixedProtocolReturnData

戻り値のデータ。 これは必要に応じて設定されます。 NVMe などの一部のプロトコルでは、個別のデバイス データ転送を必要とせずに少量のデータ (完了キュー エントリから DWORD0) を返す場合があります。

FixedProtocolReturnData2

戻り値のデータ 2。 これは必要に応じて設定されます。 NVMe などの一部のプロトコルでは、個別のデバイス データ転送を必要とせずに少量のデータ (完了キュー エントリから DWORD1) を返す場合があります。

Reserved1[2]

将来利用するために予約されています。

Command[ANYSIZE_ARRAY]

デバイスに渡されるベンダー固有のコマンド。

要件

要件
サポートされている最小のクライアント Windows 10
サポートされている最小のサーバー Windows Server 2016
Header ntddstor.h (Ntddstor.h を含む)

こちらもご覧ください