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