MTP 拡張機能のサポート
メディア転送プロトコル
メディア転送プロトコル (MTP) は、ピクチャ転送プロトコル (PTP) の拡張機能です。 その結果、すべての PTP プロトコル セマンティクスが MTP で有効になります。
MTP は、イニシエーターとレスポンダーの 2 つのパーティ間でコマンドと応答を使用して通信します。 関連するデバイスの役割は非常に明確に定義されています。 通常、PC はイニシエーターであり、デバイスは常にレスポンダーです。 PC 以外のデバイスは、イニシエーター (車のデッキや Microsoft X ボックスなど) でもかまいません。 デバイスが両方のロールを同時に引き受けることはありません。
イニシエーターは、レスポンダーにコマンドを送信することで通信を開始します。 レスポンダーはコマンドを処理し、適切な応答を返します。 コマンドに関連付けられているデータ フェーズが存在する可能性があります。 この場合、データ フローの方向を事前に知り、イニシエーターとレスポンダーの両方で受け入れる必要があります。 新しいコマンドのデータ フローを示す説明ヘッダーは存在しないことに注意してください。
レスポンダーは、イニシエーターとは無関係に通信を開始できます。 たとえば、レスポンダーはイニシエーターにイベントを送信できます。 ただし、イベントと共にデータを送信することはできません。 イベントの一部として読み取る必要があるデータがある場合、イニシエーターは MTP コマンドを送信する必要があり、デバイスはコマンドに応答してデータを送信できます。
MTP の詳細については、 MTP の仕様を参照してください。
MTP コマンドの送信
アプリケーションは、 IPortableDevice::SendCommand メソッドを呼び出すことによって、MTP コマンドをデバイスに送信できます。 送信されるコマンドは、データ フェーズがあるかどうか、および付随するデータがデバイスから読み取られるか、デバイスに書き込まれるかによって異なります。 次の表では、使用可能な 3 つの MTP 拡張コマンドについて説明します。
これらのコマンドは MTP に固有であることに注意してください。したがって、WPD MTP クラス ドライバーによってのみ実装されます。
command | 説明 |
---|---|
WPD_COMMAND_MTP_EXT_END_DATA_TRANSFER | データの読み取りまたは書き込み操作の終了を通知する MTP コマンドを発行します。 |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITHOUT_DATA_PHASE | 対応するデータ フェーズなしで MTP コマンドを発行します。 |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_WRITE | MTP コマンドを発行します。その後に付随するデータが続き、デバイスに書き込まれます。 |
WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_READ | MTP コマンドを発行し、その後に付随するデータをデバイスから読み取ります。 |
WPD_COMMAND_MTP_EXT_READ_DATA | デバイスから PC にデータを送信する MTP コマンドを発行します。 |
WPD_COMMAND_MTP_EXT_WRITE_DATA | PC からデバイスにデータを送信する MTP コマンドを発行します。 |
フェーズに関係なく、 WPD_PROPERTY_MTP_EXT_OPERATION_CODE と WPD_PROPERTY_MTP_EXT_OPERATION_PARAMSを 指定する必要があります。
MTP ドライバーがデバイスにコマンドを送信できた場合、戻り値には常にWPD_PROPERTY_MTP_EXT_RESPONSE_CODEが含 まれます。 応答コードが成功を示し、コマンドのセマンティクスで応答パラメーターが許可されている場合は、 WPD_PROPERTY_MTP_EXT_RESPONSE_PARAMS も使用できます。
関連トピック