イベント
アセンブラの魔女 ⧫ PTP ⧫ イベント
アセンブラの魔女 ⧫ PTP ⧫ イベント

 イベントはPTPデバイスからイニシエータにデバイスの状態の変化などのイベントの通知等に用いられます。イベントはイニシエーターから送られることも、レスポンダーから送られることもあります。PTP仕様ではイベントの機能を必須で要求しています。

イベントコード
Eventデータセット
イベントのIn-Band転送
イベントのOut-of-Band転送

 PTPイベントはイベントコードによって識別されます。

CODEイベント名説明
0x4001 CancelTransaction 実行中のトランザクションをキャンセル
0x4002 ObjectAdded 新しいオブジェクトの追加
0x4003 ObjectRemoved 予期しないオブジェクトの削除
0x4004 StoreAdded 新しいストアの追加
0x4005 StoreRemoved ストアの削除
0x4006 DevicePropChanged 予期しないデバイスプロパティの変更
0x4007 ObjectInfoChanged ObjectInfoの変更
0x4008 DeviceInfoChanged DeviceInfoの変更
0x4009 RequestObjectTransfer オブジェクトの転送要求
0x400A StoreFull ストアのフル状態
0x400B DeviceReset リセット予告
0x400C StorageInfoChanged StorageInfoの変更
0x400D CaptureComplete IniticateCaptureによるキャプチャシーケンスの完了
0x400E UnreportedStatus 内部状態の変化

 このイベントは明確なキャンセル方法を持たない転送のためのトランザクションをキャンセルするために用いられます。イニシエーターやレスポンダーはこのイベントを受信したとき、EventデータセットのTransactionIDで示されるトランザクションをキャンセルしなければなりません。

 新しいオブジェクトが追加されるとObjectAddedイベントが送られます。複数のオブジェクトが追加されたとき、それぞれのオブジェクトごとにObjectAddedイベントが発生します。新しいストアが追加されたときに、そのストアにあるオブジェクトのためにObjectAddedイベントは発生しません。この場合は代わりにStoreAddedイベントが発生します。

 現在のセッションの外部で予期せずオブジェクトが削除されたことを通知するイベントです(DeleteObjectの結果として発生するイベントではありません)。削除されたオブジェクトはEvent Parameter1でObjectHandleを使って示されます。

 デバイスに新しいストアが追加されたことを通知するイベントです。追加された物理ストアが論理ストアを1つだけ持つ場合、Event Parameter1にそのストアのStorageIDが示されます。追加されたストアが複数の論理ストアを持つ場合、Event Parameter1の値は0x00000000になります。この場合、GetStorageIDsを使わなければ追加されたストアを特定することはできません。

 Event Parameter 1でStorageIDを使って示すストアが削除されたことを通知するイベントです。削除されたのが論理ストアのみであればEvent Parameter1には完全なStorageIDが示されます。物理ストア上の全ての論理ストアが削除された場合(リムーバブルメディアのイジェクト等の原因によって)、上位16ビットで物理StorageIDが示され、下位16ビットは0xFFFFにマスクされます。

 このセッションの外部からデバイスプロパティが変更されたことを示すイベントです。変更のあったデバイスプロパティはEvent Parameter1にDevicePropCodeを使って示されます。

 ObjectInfoが変更されたことを通知するイベントです。ObjectInfoの変更のあったオブジェクトはEvent Parameter1でObjectHandleを使って示されます。イニシエーターは以前のObjectInfoを破棄して、GetObjectInfoを使ってて新しいObjectInfoを取得する必要があります。

 デバイスのケイパビリティが変化してイニシエータはDeviceInfoを再度取得する必要があることを通知します。

 このイベントはレスポンダーがイニシエーターにEvent Parameter1でObjectHandleを使って示すオブジェクトの転送を要求するために用いられます。

 ストアがフルになったことを通知するイベントです。Event Parameter1でStorageIDを使ってフルになったストアが示されます。

 このイベントはデバイスが多重セッションやリセットの機能を持つ場合に限り必要とされ、リセットによってセッションが閉じられることをセッションに通知します。

 Event Parameter1でStorageIDを使って示されるストアのStorageInfoが変更されたことを通知します。

 このイベントは直前に実行したInitiateCaptureによって作られます。このイベントが発生すると、それ以降、そのInitiateCaptureによってObjectAddedイベントは発生しません。

 このイベントは特定の転送でレスポンダーが内部状態の変化をイニシエーターに通知できないような状況が起こるときに使うことができます。イニシエーターはこのイベントを受信したらレスポンダに関する情報をアップデートする必要があります。

 イベントのために専用の論理コネクションを用意できない場合、In-Band転送のためにデータストリーム中にイベントをインターリーブする仕組みを実装する必要があります。

 イベントの転送のために専用の論理コネクションを用意できる場合、転送中の転送処理の取り消しを想定して巨大なオブジェクトの転送を細切れに行う必要はなくなります。USBへの実装では、割り込みエンドポイントを利用します。

▼ Property
記事情報
datePublished2011-01-01
dateModified2018-07-26
authorアセンブラの魔女
headlinePTPイベントについての説明記事です
keywordsPTP
keywordsイベント
publisher name= wiredFish, logo.name= wiredFish, logo.url= https://books-nekoya.jp/Programming/chigu-hagu-title-01.png size= 208 pixel x 50 pixel
image.url url= https://books-nekoya.jp/Programming/chigu-hagu-title-01.png , size= 208 pixel x 50 pixel