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 を含む) |