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_CODEWPD_PROPERTY_MTP_EXT_OPERATION_PARAMSを 指定する必要があります。

MTP ドライバーがデバイスにコマンドを送信できた場合、戻り値には常にWPD_PROPERTY_MTP_EXT_RESPONSE_CODEが含 まれます。 応答コードが成功を示し、コマンドのセマンティクスで応答パラメーターが許可されている場合は、 WPD_PROPERTY_MTP_EXT_RESPONSE_PARAMS も使用できます。

プログラミング ガイド