(57)【要約】【課題】  複数タイプのメディアデバイスを制御する方法およびシステムを提供する。【解決手段】  コンピューティングデバイス１１０と、複数タイプのメディアデバイス１８０の１つとの通信を容易にする。このシステムは、メディアデバイスによって制御されるデバイスデータセットのグループから情報を検索する、コンピューティングデバイスによって制御されるデバイス検索モジュールを含む。デバイスデータセットは、メディアデバイスのタイプに固有のプロパティのセットを含むデバイス情報データセットを含む。コンピューティングデバイスは、メディアデバイスに記憶されたオブジェクトデータセットのグループからオブジェクト情報を検索するオブジェクト検索ツールと、メディアデバイスのオブジェクトを制御する制御コマンドモジュールを含む。【選択図】  図１
2004334881.tif 000002
【特許請求の範囲】
【請求項１】
イニシエータとレスポンダとの間の通信を行う方法であって、前記レスポンダは複数タイプのメディアデバイスの１つであり、前記方法は、
前記レスポンダによってサポートされるプロパティのセットを含む複数のデータセットを前記レスポンダに提供するステップであって、前記プロパティは前記メディアデバイスのタイプに固有であるステップと、
前記複数のデータセットから情報を探索し、且つ前記レスポンダのオブジェクトを制御するための複数の制御モジュールを前記イニシエータに提供するステップと、
を含むことを特徴とする方法。
【請求項２】
オブジェクトプロパティおよびデバイスプロパティのプロパティコードを含むデバイス情報データセットを、前記レスポンダに提供するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記プロパティコードによって識別されるプロパティのタイプを識別するために、デバイス情報検索モジュールおよびオブジェクト情報検索モジュールを、前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項２に記載の方法。
【請求項４】
前記メディアデバイスによってサポートされる拡張セットを記述する前記デバイス情報データセット中にベンダ拡張フィールドを提供するステップをさらに含む、ことを特徴とする請求項２に記載の方法。
【請求項５】
前記デバイス情報データセットの機能モードフィールド中にメディアデバイスカテゴリを提供するステップをさらに含む、ことを特徴とする請求項２に記載の方法。
【請求項６】
デバイスプロパティ記述データセットを前記レスポンダに提供するステップをさらに含む、ことを特徴とする請求項２に記載の方法。
【請求項７】
オブジェクトの特性を記述する複数のフィールドを備えたオブジェクト情報データセットを前記レスポンダに提供するステップをさらに含む、ことを特徴とする請求項６に記載の方法。
【請求項８】
選択されたオブジェクトのプロパティを列挙するオブジェクトプロパティ記述データセットを提供するステップをさらに含む、ことを特徴とする請求項７に記載の方法。
【請求項９】
前記レスポンダとの通信セッションを開くセッション制御ツールを前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記デバイス情報データセットから情報を検索するデバイス情報検索ツールを前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項２に記載の方法。
【請求項１１】
オブジェクト情報を検索するオブジェクト情報検索モジュールを前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記レスポンダのオブジェクトを改訂するオブジェクト改訂モジュールを前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１３】
新たなオブジェクトを獲得し且つ追加することを前記レスポンダに命令するためのオブジェクトキャプチャモジュールを前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１４】
選択された１つのオブジェクトを少なくとも１つの他の選択されたオブジェクトに関連付けるアソシエーションメカニズムを前記イニシエータに提供するステップをさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項１５】
請求項１に記載の方法を行うためのコンピュータ実行可能命令を有する、ことを特徴とするコンピュータ可読媒体。
【請求項１６】
メディアデバイスを制御する方法であって、
前記メディアデバイスに特定のサポートされるデバイスプロパティコードおよびオブジェクトプロパティコードのセットを指定するデバイス情報データセットを取得するステップと、
前記プロパティコードに関連付けられたデバイスプロパティ記述またはオブジェクトプロパティ記述を取得する動作を行うステップと、
前記デバイスプロパティおよび前記オブジェクトプロパティの知識に基づいて選択されたオブジェクトに所望の制御オペレーションを行うステップと、
を含むことを特徴とする方法。
【請求項１７】
選択されたオブジェクトの特性を記述するオブジェクト情報データセットを取得するステップをさらに含む、ことを特徴とする請求項１６に記載の方法。
【請求項１８】
デバイスプロパティ記述またはオブジェクトプロパティ記述を取得する動作を行うステップは、デバイスプロパティ検索モジュールおよびオブジェクトプロパティ検索モジュールを使用して、デバイスプロパティ記述データセットまたはオブジェクトプロパティ記述データセットを取得するステップを含む、ことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記動作により、前記デバイスプロパティ記述データセットおよび前記オブジェクトプロパティ記述データセットの１つが得られる、ことを特徴とする請求項１８に記載の方法。
【請求項２０】
デバイス情報データセットを取得するステップは、前記デバイス情報データセットの機能モードフィールドにおけるデバイスカテゴリを判定するステップを含む、ことを特徴とする請求項１６に記載の方法。
【請求項２１】
所望の制御オペレーションを行うステップは、オブジェクトキャプチャモジュールを使用してオブジェクトの獲得を行うステップを含む、ことを特徴とする請求項１６に記載の方法。
【請求項２２】
所望の制御オペレーションを行うステップは、オブジェクト改訂モジュールを使用してオブジェクト改訂を行うステップを含む、ことを特徴とする請求項１６に記載の方法。
【請求項２３】
所望の制御オペレーションを行うステップは、アソシエーションメカニズムを使用して１つのオブジェクトから少なくとも１つの他のオブジェクトへの参照を提供するステップを含む、ことを特徴とする請求項１６に記載の方法。
【請求項２４】
ストレージロケーションモジュールを使用して、前記メディアデバイスに関連付けられた各ストアを位置付けするステップをさらに含む、ことを特徴とする請求項１６に記載の方法。
【請求項２５】
セッション制御ツールを使用して前記メディアデバイスとの通信セッションを開くステップをさらに含む、ことを特徴とする請求項１６に記載の方法。
【請求項２６】
メディアデバイスのプロパティが変化するとき前記メディアデバイス中にイベントを生成するステップをさらに含む、ことを特徴とする請求項１６に記載の方法。
【請求項２７】
請求項１に記載の方法を行うコンピュータ実行可能命令を有する、ことを特徴とするコンピュータ可読媒体。
【請求項２８】
複数タイプのメディアデバイスを制御するシステムであって、
メディアデバイスのタイプに固有のプロパティのセットを含むデバイス情報データセットを有するデバイスデータセットのグループから情報を検索するデバイス検索モジュールと、
オブジェクトデータセットのグループからオブジェクト情報を検索するオブジェクト検索ツールと、
前記デバイス上のオブジェクトを制御する制御コマンドモジュールと、
を具備したことを特徴とするシステム。
【請求項２９】
メディアデバイスとのセッションを開き、そして閉じるセッション制御ツールをさらに具備した、ことを特徴とする請求項２８に記載のシステム。
【請求項３０】
前記デバイス検索モジュールは、デバイス情報データセットを検索するデバイス情報検索モジュールと、デバイスプロパティ記述データセットを検索するデバイスプロパティ検索モジュールとを具備した、ことを特徴とする請求項２８に記載のシステム。
【請求項３１】
前記オブジェクト検索ツールは、オブジェクト情報データセットを検索するオブジェクト情報検索モジュールと、オブジェクトプロパティ記述データセットを検索するオブジェクトプロパティ検索モジュールと、オブジェクトハンドルのリストを検索するオブジェクトハンドル検索モジュールとを具備した、ことを特徴とする請求項２８に記載のシステム。
【請求項３２】
前記制御コマンドモジュールは、前記メディアデバイス上のオブジェクトを改訂するオブジェクト改訂モジュールを含む、ことを特徴とする請求項２８に記載のシステム。
【請求項３３】
前記制御コマンドモジュールは、オブジェクトの獲得を開始するオブジェクトキャプチャモジュールを含む、ことを特徴とする請求項２８に記載のシステム。
【請求項３４】
前記制御コマンドモジュールはさらに、１つのオブジェクトを少なくとも１つの他のオブジェクトに関連付けるアソシエーションメカニズムを具備した、ことを特徴とする請求項２８に記載のシステム。
【請求項３５】
前記デバイスデータセットは、サポートされるプロパティのリストおよびデバイスカテゴリを含むデバイス情報データセットを含む、ことを特徴とする請求項２８に記載のシステム。
【請求項３６】
前記デバイスデータセットは、デバイスプロパティを記述するデバイスプロパティ記述データセットを含む、ことを特徴とする請求項３５に記載のシステム。
【請求項３７】
前記オブジェクトデータセットは、オブジェクト情報データセットおよびオブジェクトプロパティ記述データセットを含む、ことを特徴とする請求項２８に記載のシステム。
【請求項３８】
イニシエータとレスポンダとの間の通信を行うシステムであって、
少なくとも１つのデバイスカテゴリと前記カテゴリに固有のプロパティのセットとを含む、前記レスポンダに記憶されたデバイスデータセットと、
各オブジェクトに固有の情報を含む、前記レスポンダに記憶されたオブジェクトデータセットと、
前記デバイスデータセットおよび前記オブジェクトデータセットから情報を収集するための、前記イニシエータにアクセス可能な検索モジュールと、
を具備したことを特徴とするシステム。
【請求項３９】
前記レスポンダに記憶されたオブジェクトを制御するための、前記イニシエータにアクセス可能な制御モジュールをさらに具備した、ことを特徴とする請求項３８に記載のシステム。
【請求項４０】
前記制御モジュールは、オブジェクトキャプチャモジュールおよびオブジェクト改訂モジュールを含む、ことを特徴とする請求項３９に記載のシステム。
【請求項４１】
前記制御モジュールは、１つのオブジェクトを少なくとも１つの他のオブジェクトに関連付けるアソシエーションメカニズムを含む、ことを特徴とする請求項３９に記載のシステム。
【請求項４２】
前記オブジェクトデータセットは、イメージオブジェクト、オーディオオブジェクト、およびビデオオブジェクトを含む複数タイプのメディアについての情報を格納するように構成される、ことを特徴とする請求項３８に記載のシステム。
【請求項４３】
前記デバイスデータセットは、デバイス情報データセットおよびデバイスプロパティ記述データセットを含む、ことを特徴とする請求項３８に記載のシステム。
【請求項４４】
前記オブジェクトデータセットは、オブジェクト情報データセットおよびオブジェクトプロパティ記述データセットを含む、ことを特徴とする請求項３８に記載のシステム。
【請求項４５】
前記オブジェクトデータセットは、オブジェクトプロパティ値データセットを含む、ことを特徴とする請求項３８に記載のシステム。
【請求項４６】
前記検索モジュールは、デバイス情報検索モジュールおよびオブジェクト情報検索モジュールを含む、ことを特徴とする請求項３８に記載のシステム。
【請求項４７】
前記検索モジュールは、オブジェクト情報検索モジュール、オブジェクトプロパティ検索モジュール、およびオブジェクトプロパティ値検索モジュールを含む、ことを特徴とする請求項３８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングデバイスと他のデバイスとの間の通信に関し、より詳細には、コンピューティングデバイスと複数タイプのメディアデバイスとの通信に関する。
【背景技術】
【０００２】
近年、コンピューティングデバイスがデジタルカメラなどのメディアデバイスを制御し、そのようなメディアデバイスと通信することを可能にする通信プロトコルが開発されている。既存の通信プロトコルにより、コンピューティングデバイスとデジタルスチルカメラの通信が可能になっている。既存プロトコルの１つであるＩＳＯ１５７５４０ピクチャ転送プロトコル（ＰＴＰ：Picture Transfer Protocol）は、ワシントン州レドモンドのマイクロソフト社の製品に組み込まれており、カメラなどの画像デバイスからパーソナルコンピューティングデバイスへの画像の転送との関連で使用されることができる。このプロトコルは、デジタルスチルカメラが、Microsoft Windows（登録商標）およびMicrosoft（登録商標）クラスドライバを用いて動作するパーソナルコンピューティングデバイスと通信する方式を定義する。上記商品は、ともにワシントン州レドモンドのマイクロソフト社の製品である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
既存プロトコルがデジタルスチルカメラ以外のメディアデバイスに機能できるようにするために、既存のプロトコルに拡張が必要とされる。そのような拡張により、既存のオペレーティングシステムがデジタルメディアデバイス向けの堅牢で安定したハブを提供できるようになる。さらに、そのような拡張が実現すれば、パーソナルコンピューティングデバイスとの基本的なプロトコル通信についてはもはや懸念せずに済むので、ハードウェア製造者は、ハードウェアと価値を付加したソフトウェアの革新に集中できるようになる。同様の例がＤＶＤプレーヤに当てはまる。ＤＶＤ製造者は、これまで、部分的には、テレビと通信するためのテレビとの標準的な接続メカニズム(connection mechanism)（Ｓビデオやコンポジットなど）と、記憶媒体(storage media)への情報の標準的なレイアウトを信頼することができたため、ＤＶＤプレーヤの機能に労力を注ぐことができた。
【０００４】
したがって、コンピューティングデバイス(computing device)と他のタイプのメディアデバイス(media device)との間の通信を容易にする必要性が存在する。そのようなデバイスには、内蔵カメラを備えるか、または備えない携帯電話、デジタルオーディオプレーヤ、デジタルビデオプレーヤ、静止画像機能を備えるデジタルビデオカメラ、携帯情報端末(personal digital assistant)（ＰＤＡ）、デジタル音声レコーダ、および他のタイプのメディアデバイス、あるいは前述のデバイスの組み合わせが含まれる。デジタルスチルカメラ向けのＰＴＰと同様に、１つのプロトコルが、メディアデバイスを記述し、構成し、制御するためのメカニズムを定義するのが理想的である。写真、オーディオ／音楽、ビデオ、およびリッチなメタデータ(rich metadata)が関連付けられた他のメディアなどの各種メディアをデバイスとの間で転送できる方式を定義するプロトコルが必要とされる。
【課題を解決するための手段】
【０００５】
本発明の一形態は、イニシエータ(initiator)とレスポンダ(responder)との間の通信を容易にする方法を対象とし、このレスポンダは、複数タイプのメディアデバイス(media device)の１つである。本発明による方法は、レスポンダによってサポートされるプロパティのセット(a set of properties)を含む複数のデータセット(a plurality of data sets)をレスポンダに提供することを含み、このプロパティはメディアデバイスのタイプに固有(specific)である。また、本発明による方法は、この複数のデータセットにある情報を探索(seek)し、レスポンダのオブジェクト(object)を制御するための複数の制御モジュール(control module)をイニシエータに提供することを含む。
【０００６】
追加的な形態として、本発明は、メディアデバイスを制御する方法を対象とする。この方法は、メディアデバイスに固有のサポートされるデバイスプロパティおよびオブジェクトプロパティのセットとサポートされる動作(supported operation)とを指定するデバイス情報データセット(device information data set)を取得することと、プロパティコード(property code)に関連付けられたデバイスプロパティ記述(device property description)またはオブジェクトプロパティ記述(object property description)を取得する動作を行うこととを含む。本発明による方法はさらに、デバイスプロパティ(device property)およびオブジェクトプロパティ(object property)の知識(knowledge)に基づいて、選択されたオブジェクトに所望の制御オペレーション(control operation)を行うことを含む。
【０００７】
さらに追加的な形態として、本発明は、複数タイプのメディアデバイスの制御を容易にするシステムを対象とする。このシステムは、デバイスデータセットのグループ(a group of device data sets)から情報を検索(retrieve)するデバイス検索モジュール(device retrieval module)を含み、このデバイスデータセットは、メディアデバイスのタイプ(a type of media device)に固有(specific)のプロパティのセット(a set of properties)を含むデバイス情報データセット(device information data set)を含む。本発明によるシステムはさらに、オブジェクトデータセットのグループ(a group of object data sets)からオブジェクト情報(object information)を検索(retrieve)するオブジェクト検索ツール(object retrieval tool)と、メディアデバイス上のオブジェクトを制御する制御コマンドモジュール(control command module)とを含む。
【０００８】
さらなる形態として、本発明は、イニシエータとレスポンダとの間の通信を容易にするシステムを対象とする。本発明によるシステムは、レスポンダに格納されたデバイスデータセット(device data sets stored with the responder)を含み、このデバイスデータセットは、少なくとも１つのデバイスカテゴリ(device category)と、そのカテゴリに固有のプロパティのセット(a set of properties)を含む。本発明によるシステムはさらに、レスポンダに格納されたオブジェクトデータセット(object data sets)を含み、このオブジェクトデータセットは各オブジェクトに固有の情報を含み、また、本発明によるシステムは、デバイスデータセットとオブジェクトデータセットから情報を収集(gather)する、イニシエータにアクセス可能な検索モジュール(retrieval module)を含む。
【０００９】
以下、添付図面を参照して本発明を詳細に説明する。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明を実施することが可能な適切なコンピューティングシステム環境(computing system environment)１００の一例を示す。コンピューティングシステム環境１００は適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能性の範囲について何らの制限を示唆するものではない。またコンピューティング環境１００は、例示的動作環境１００に示す構成要素の１つまたは組み合わせに関連する依存性または必要性を有するものとも解釈されるべきでない。
【００１１】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令との一般的な関係で説明することができる。一般に、プログラムモジュールには、特定タスクを行うか、特定の抽象データタイプ(particular abstract data type)を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、当業者には、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサを用いる、あるいはプログラム可能な消費者家電製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施してもよいことが理解されよう。本発明は、通信ネットワークを通じてリンクされた遠隔の処理デバイスによってタスクが行われる分散コンピューティング環境で実施されることもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモート両方のコンピュータ記憶媒体に置かれることができる。
【００１２】
図１を参照すると、本発明を実施する例示的システム１００はコンピュータ１１０の形態の汎用コンピューティングデバイスを含み、コンピュータ１１０は、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む各種のシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含む。
【００１３】
コンピュータ１１０は通例、各種のコンピュータ可読媒体を含む。これに限定しないが、コンピュータ可読媒体は例としてコンピュータ記憶媒体と通信媒体を含むことができる。システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）は、通例ＲＯＭ１３１に記憶される。ＲＡＭ１３２は通例、処理ユニット１２０から即座にアクセス可能な、かつ／または現在処理ユニット１２０によって操作中のデータおよび／またはプログラムモジュールを含む。これに限定しないが、例として、図１にはオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７が示される。
【００１４】
コンピュータ１１０は、この他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。単なる例として、図１には、例示取り外し不能、不揮発性の磁気媒体の読み書きを行うハードディスクドライブ１４１、取り外し可能、不揮発性の磁気ディスク１５２の読み書きを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光学媒体などの取り外し可能、不揮発性の光ディスク１５６の読み書きを行う光ディスクドライブ１５５が示される。例示的動作環境で使用できるこの他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体には、これらに限定しないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ１４１は通例、インターフェース１４０などの取り外し不能のメモリインターフェースを通じてシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通例、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００１５】
上記で説明し、図１に示されるドライブとそれに関連付けられたコンピュータ記憶媒体は、コンピュータ１１０のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供する。例えば図１では、ハードディスクドライブ１４１にオペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶している。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じものでも、異なるものでもよいことに留意されたい。ここではオペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、それらが少なくとも異なるコピーであることを表すために異なる参照符号が付されている。ユーザは、キーボード１６２、および普通はマウス、トラックボール、タッチパッドと称するポインティングデバイス１６１などの入力装置を通じてコンピュータ１１０にコマンドと情報を入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバスに結合されたユーザ入力インターフェース１６０を通じて処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造によって接続することも可能である。モニタ１９１または他タイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。コンピュータは、モニタに加えて、スピーカ１９７やプリンタ１９６など他の周辺出力装置も含むことができ、それらは出力周辺インターフェース１９５を通じて接続されることができる。
【００１６】
本発明によるコンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１８０はパーソナルコンピュータでよく、図１にはメモリ記憶装置１８１のみが示されているが、通例はコンピュータ１１０との関連で上記で挙げた要素の多くまたはすべてを含む。図１に示す論理接続は、構内ネットワーク（ＬＡＮ）１７１と広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むことも可能である。
【００１７】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を通じてＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は通例、インターネットなどのＷＡＮ１７３を通じて通信を確立するためのモデム１７２またはその他の手段を含む。モデム１７２は内蔵型でも外付け型でもよく、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０との関連で図示したプログラムモジュールまたはその一部は、遠隔のメモリ記憶装置に配置されることができる。これに限定しないが、例として図１ではリモートアプリケーションプログラム１８２、１８３，１８４、１８５がメモリ装置１８１に常駐している。図の実施形態では、デバイスプログラム１８２、デバイスプロパティ１８３、メディアオブジェクト１８４、およびオブジェクトプロパティ１８５が含まれる。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用できることは理解されよう。
【００１８】
コンピュータ１１０の多くの他の内部コンポーネントは図示されていないが、当業者は、そのようなコンポーネントと相互の接続はよく知られていることを理解されよう。そのため、コンピュータ１１０の内部構造に関する追加的な詳細は、本発明との関連では開示される必要はない。
【００１９】
図２は、本発明を適用したシステムの一実施形態を示すブロック図である。このシステムは、ネットワーク２０を通じて複数のレスポンダ３００、４００、５００と通信することが可能なイニシエータ２００を含む。イニシエータ２００は通例、図１を参照して上述したコンピューティングデバイス１１０と同様である。レスポンダ３００、４００、および５００は、異なるカテゴリに属する複数のメディアデバイスを表す。これらのメディアデバイスには、デジタルスチルカメラデバイス、（静止画像キャプチャ機能を備える、または備えない）デジタルビデオカメラ、個人音楽プレーヤや個人ビデオプレーヤなどの携帯メディアプレーヤ、（メディアキャプチャ／再生機能を備える、または備えない）携帯電話、およびその他のメディアデバイスが含まれる。レスポンダ３００、４００、および５００は通例カテゴリに区分され、各カテゴリは個別のプロパティのセットを有する。ネットワーク２０は、図１を参照して先に説明したような任意タイプのネットワークでよい。
【００２０】
一般的なシナリオでは、イニシエータ２００がレスポンダ３００、４００、および５００との通信セッションを開く。レスポンダ３００、４００、および５００は、その通信セッションの継続を可能にする情報をもって応答する。ここでは、パーソナルコンピューティングデバイス１１０が通例はイニシエータ２００として機能し、メディアデバイスが通例はレスポンダ３００、４００、および５００として機能する。ただし、メディアデバイスがパーソナルコンピューティングデバイス１１０との通信セッションを開く場合は、この役割の逆転が生じる可能性がある。そのような事例では、下記でさらに説明するように、セッションを開き、閉じるための適切なツールを含むようにメディアデバイスを増強することができる。
【００２１】
図３は、本発明の一実施形態によるメディアデバイス／レスポンダ(media device/responder)３００を示すブロック図である。メディアデバイス３００は複数のカテゴリの１つに該当することができ、メディアデバイス３００の特定の機能は、そのメディアデバイス３００がデジタルカメラであるか、デジタルビデオカメラ（静止画像キャプチャ機能(still image capture functionality)を備える、または備えない）、個人音楽プレーヤや個人ビデオプレーヤなどの携帯型メディアプレーヤ、携帯電話（メディアキャプチャ／再生機能(media capturing/playback capability)を備える、または備えない）、および他のメディアデバイスであるかに応じて決まる。メディアデバイスは、メディアツール３０２、信号処理デバイス３０４、制御ユニット３０６、通信インターフェース３０８、メモリ３１０、およびストア３５０を含む。通信インターフェース３０８は、メディアデバイスあるいはレスポンダ３００がコンピューティングシステムあるいはイニシエータ２００と対話することを可能にする。メディアツール３０２は、選択されたメディアデバイス３００に固有である。メディアデバイス３００がビデオカメラまたはデジタルカメラである場合、メディアツール３０２は画像キャプチャ装置(image capturing unit)を含むことができる。メディアデバイス３００がオーディオデバイスである場合、メディアツール３０２はオーディオの録音および再生ツールであってよい。ストア３５０も、実施されるメディアデバイス３００のタイプに固有である。通信インターフェース３０８は、カメラを直接コンピュータシステム２００に差し込むことを必要とするか、インターネットを通じてカメラをコンピュータシステム２００に接続することが可能なインターフェースであってよい。一実施形態では、メディアデバイス３００は、無線インターフェースを介してコンピュータシステム２００に接続される。
【００２２】
図４は、本発明の一実施形態によるデバイス／レスポンダのメモリ３１０を示すブロック図である。メディアデバイス３００のカテゴリおよび機能に関係なく、メディアデバイス３００は、そのメモリ３１０に、デバイスデータセット３２０、オブジェクトデータセット３３０、およびパーセッションのデータセット(per session data sets)３４０を記憶して、パーソナルコンピューティングデバイスあるいはイニシエータ２００との通信を容易にする。
【００２３】
データセット(data sets)３２０、３３０、および３４０は、複数のデータタイプ(data types)からなる。本発明の一実施形態では、各データタイプは、イニシエータ２００とレスポンダ３００との間でデータタイプを通信するのに使用される一意の１６ビットデータコードを有する。データタイプには、様々な大きさの符号付および符号なしの整数、それら整数の配列、および文字列が含まれる。下の要約表は、データタイプの説明を示している。
【００２４】
【表１】
2004334881.tif 000003
【００２５】
データセット３２０、３３０、および３４０は、デバイス、ストア、オブジェクト、およびプロパティを含む、プロトコル中で使用される上位レベルのエンティティを記述するために使用される。
【００２６】
データコードは、プロトコルで定義される様々な動作(operation)、応答(response)、イベント(event)、プロパティ(property)、およびフォーマット(format)を識別(identify)するために使用される１６ビットの符号なしの整数である。可能な１６ビット値の範囲は、各エンティティがその範囲の特定部分に配置されるように区分される。この区分により、エンティティタイプの識別が可能になる。さらに、各下位範囲が、標準的なデータコードのセットとベンダによって定義されるデータコードのセットとに分割される。標準データコードはそのプロトコルを使用するすべてのデバイスに共通であり、ベンダ定義のデータコードは、そのベンダ製造のデバイスに固有の拡張を定義するためにベンダによって使用されることができる。ベンダ(vendor)は、複数のデバイス間で拡張を共通して使用することができ、その場合、デバイスは、そのデバイス情報データセット(device information data set)のベンダ拡張フィールド(vendor extension field)を通じてその共通性を表明しなければならない。
【００２７】
デバイスデータセット３２０には、デバイス情報データセット３２２およびデバイスプロパティ記述データセット(device property description data set)３２４が含まれる。例示的なデバイス情報データセット３２２を下表に示す。
【００２８】
【表２】
2004334881.tif 000004
【００２９】
具体的には、デバイス情報データセット(device information data set)３２２は、フィールド順(field order)１で新しいバージョン番号を報告する。フィールド２〜４において、デバイスデータセットはベンダ拡張情報(vendor extension information)を含む。フィールド５では、機能モードフィールド(functional mode field)によりデバイスカテゴリ(device category)を報告することができる。さらに、デバイス情報データセット３２２によって戻されるサポートされたデバイスプロパティのフィールド（フィールド順８）は、そのデバイスによってサポートされるカテゴリに固有のプロパティデータコード(property data code)の固定されたセット(fixed set)を戻す。サポートされるプロパティのフィールドに格納されるデバイスプロパティコードは、すべてのデバイスカテゴリの属性を記述することができる。例えば、ビデオプレーヤデバイスの場合、デバイスプロパティコードはそのデバイスのビデオ表示の特性を記述する。そのプロパティには、これらに限定しないが、スクリーンの寸法(screen dimension)、スクリーンの輝度(screen brightness)、およびコントラストが含まれる。これにより、デバイス３００は、フルデータコードセット(full data code set)のサブセット(subset)とベンダ拡張データコード(vendor-extension data code)をサポートすることができる。デバイスによって実施されるベンダ拡張データコード(vendor-extension data code)のセットは、デバイス情報データセットのベンダ拡張フィールド(vendor extension field)のフィールド順２〜４に示される。デバイスによって実施される固有のベンダ拡張データコードは、デバイス情報データセットのフィールド順６〜１０のサポートされる動作、サポートされるイベント、サポートされるプロパティ、キャプチャフォーマット(capture format)、およびオブジェクトフォーマット(object format)のフィールドに示される。デバイス情報データセット３２２は、読み取り専用であり、基本レベルの静的なデバイス情報を提供する。
【００３０】
サポートされるプロパティフィールドのプロパティは、記述によって定義される。標準プロパティの記述(description of standard property)はすべてのデバイスについて固定(fixed)されているのに対して、ベンダ拡張プロパティの記述(description of vendor extension property)は、同じベンダ拡張セット(seme set of vendor extension)を実施するデバイスに共通である。この記述は、データコードとして指定されるプロパティキー(property key)を固定する。プロパティは値(value)も有し、この値は、デバイス単位(per-device)（デバイスプロパティの場合）か、またはオブジェクト単位(per-object)（オブジェクトプロパティの場合）で変更することができる。
【００３１】
デバイス情報データセット３２２は、オブジェクトプロパティとデバイスプロパティに対応し、また画像フォーマット(image format)以外のメディアフォーマットに対応するためにデバイスによってサポートされる拡張についての追加的情報を提供する。フィールド順４のベンダ拡張記述フィールド(vendor extension description field)は、デバイスでサポートされる複数の異なる拡張セット(different extension set)を記述する。ベンダ拡張セット(vendor extension set)の名前は、フィールド中でストリングによって指定される。この記述は、人間とコンピュータの両方に可読であることが好ましい。フィールド順１０のオブジェクトフォーマットフィールドで戻される配列は、すべてのタイプのメディアフォーマットのフォーマットコードを含むことができる。フィールド順９のキャプチャフォーマットフィールド(capture format field)で戻される配列(array)は、画像フォーマットと他のメディアフォーマットの両方を含むことができる。このフォーマットコードは、例えば、画像(image)、オーディオ、ビデオ、再生リスト(play list)、連絡先、メッセージのフォーマットを定義することができる。
【００３２】
デバイスプロパティ記述データセット(device property description data set)３２４はさらにデバイスプロパティ(device propety)を定義する。所与のデバイスは、デバイスプロパティごとに１つのみのプロパティ値(property value)を持つ。例示的なデバイスプロパティ記述データセット３２４を次に示す。
【００３３】
【表３】
2004334881.tif 000005
【００３４】
プロパティ記述データセット３２４は、フィールド順１のプロパティコード、フィールド順２のデータタイプ(data type)、フィールド順３のｇｅｔ  ｓｅｔ、およびフィールド順４のデフォルト値で開始する。フィールド順１のプロパティコードフィールドは、そのプロパティのデータコードに対応する。フィールド順２のデータタイプフィールドは、そのプロパティ値のデータタイプを記述する。フィールド順３のGetSetフィールドは、そのプロパティ値をイニシエータ２００によって変更してよいかどうかを示す。フィールド順４のデフォルト値フィールドは、そのプロパティのデフォルト値を提供する。デフォルト値は、フィールド順２のデータタイプフィールドに提供されるデータタイプを有する。デフォルト値を使用して、下記でさらに説明するデバイスプロパティ値リセット動作を介してプロパティをデフォルト値に復元することができる。デバイスプロパティ記述データセット３２４中で、フィールド順５の現在の値フィールドは、デバイスプロパティの現在の値を提供する。
【００３５】
イニシエータ２００は、デバイス情報データセット３２２およびデバイスプロパティ記述データセット３２４に反映された上記のデバイス機能を理解すると、オブジェクトデータセット３３０を詳しく検討することができる。オブジェクトは、大半のエンドユーザにとって関心の対象となる機能である。オブジェクトは、ピクチャ、歌、またはビデオクリップを含む個々のメディアに対応する。プロトコル動作の大半には、デバイス間におけるオブジェクトの特徴づけ、管理、および転送が伴う。どのようなフォーマットのオブジェクトもオブジェクト参照を有することができる。オブジェクトデータ中の情報がデバイスの他オブジェクトへの静的な参照を含む場合は、それらのオブジェクトをオブジェクト参照とミラーする(mirror)ことができる。例えば、再生リストのフォーマットを有するオブジェクトは、そのオブジェクトデータ中に再生リストを格納する。その再生リストは、恐らくは、特定の順序で数曲の歌を列挙する静的フォーマットである。歌自体は、デバイス３００ではオーディオフォーマットを持つオブジェクトとして表される。再生リストを表すオブジェクトは、オブジェクト参照を介して歌を表すオブジェクトを参照することができる。それにより、当該オブジェクトが格納されたデバイスを含むオブジェクトへのアクセス権を有するデバイス３００は、特定の再生リストフォーマットを理解しなくとも再生リスト中の歌を見つけることができる。
【００３６】
オブジェクトデータセットには、オブジェクト情報データセット３３２、オブジェクトプロパティ記述データセット３３４、およびオブジェクトプロパティ値データセット３３６が含まれる。オブジェクト情報データセット３３２の一例を下表に示す。
【００３７】
【表４】
2004334881.tif 000006
【００３８】
オブジェクト情報データセット３３２のフィールドは、オブジェクトの特性を記述する。上に示すオブジェクト情報データセット(object information data set)３３２の場合、フィールドは主に画像中心メタデータフィールド(image centric meta-data field)である。オブジェクトは、オブジェクト情報データセット３３２、オブジェクトプロパティ記述データセット３３４に記される任意数のオブジェクトプロパティ、およびオブジェクトプロパティ値データセット(object property value data set)３３６に示されるオブジェクト参照(object reference)によって特徴付けられる。
【００３９】
異なるデバイス３００は、拡張されたオブジェクトプロパティに対して提供するサポートのレベルが異なる可能性がある。デバイスがまったくサポートを提供しない場合でも、オブジェクト情報データセット３３２は、対応するオブジェクトについての情報を格納するために使用することができる。オブジェクト情報データセット３３２のフィールド順１９のキーワードフィールドは、拡張されたオブジェクトプロパティ値を格納するために使用することができる。デバイス３００は、固定されたオブジェクトプロパティのセットをサポートし、そのデバイスに新しいオブジェクトプロパティの定義を可能にすると最良である。その場合、新しいプロパティを使用して、対応するオブジェクトの拡張プロパティ値を格納することができる。
【００４０】
各オブジェクトは、デバイスが保持する共通のセットから１つまたは複数のプロパティを有することができる。オブジェクトプロパティは、デバイスプロパティと同じ範囲のデータコードを共有し、下記でさらに説明するパラレルな動作セットを有する。所与のオブジェクトに特定のプロパティが設定されていない場合、そのオブジェクトは、当該プロパティについて照会された時にはデフォルト値を戻す。デバイスで新しいオブジェクトが作成されると、そのオブジェクトは自動的に、そのデバイスによって保持されているすべての現存するオブジェクトプロパティについてデフォルト値をとる。例示的なオブジェクトプロパティ記述データセット３３４を下表に示す。
【００４１】
【表５】
2004334881.tif 000007
【００４２】
フィールド順５のグループコードフィールドは、特定のプロパティグループのグループコードを提供する。デバイスプロパティはグループ化されないので、このフィールドは、オブジェクトプロパティ記述データセット３３４に固有である。
【００４３】
オブジェクトプロパティ記述データセットの残りのフィールドの大半は、プロパティが取ることのできる可能な値を限定する。それらの値は、フィールド順２のデータタイプフィールドに提供されるプロパティのデータタイプに固有であるが、そのプロパティがそのデータタイプ中でとれる値をさらに限定する。例えば、ストリング（０ｘＦＦＦＦ）のデータタイプを有するプロパティは、ストリング値「ｒｅｄ」、「ｇｒｅｅｎ」、および「ｂｌｕｅ」に限定されることができる。
【００４４】
フィールド順(field order)６のフォームフラグフィールド(form flag field)は、プロパティ記述データセットの残りのフィールドの構造を示す。このフィールドに可能な値はそれぞれ、型フラグフィールド自体の後のオブジェクトプロパティ記述データセット３３４に付加される、対応するフィールドのリストを有する。例えば、０ｘ０２のフォームフラグ(form flag)は、プロパティ値がある範囲の値に限定されることを示す。したがって、そのデータセットは、範囲フォーム(range form)によって記述された最小値、最大値、およびステップサイズのフィールドを含むことになる。フォームフラグの最初の値０ｘ００は、そのプロパティ値(property value)がそのデータタイプ以外に限定されることはなく、したがってフォームフラグ自体の後のオブジェクトプロパティ記述データセット３３４に追加的なフィールドが現れないことを示す。
【００４５】
所与のデバイスあるいはレスポンダ３００ではデバイスが１つしかないため各デバイスプロパティは１つのみの値を持つので、デバイスプロパティはオブジェクトプロパティと区別される。しかし、オブジェクトは多数ある可能性があるので、オブジェクトプロパティは、オブジェクトごとに一意の値をとることができる。この違いは、プロパティ値を含むデバイスプロパティ記述データセットと、プロパティ値を含まないオブジェクトプロパティ記述データセットとの違いに反映される。オブジェクトプロパティ記述データセット３３２は、オブジェクトプロパティを記述するが、デバイスに記憶されたすべてのオブジェクトのそのプロパティのすべての値を提供することはできない。そのため、例示的なオブジェクトプロパティ値データセット３３６を下表に示す。
【００４６】
【表６】
2004334881.tif 000008
【００４７】
所与のオブジェクトに対して特定の値に設定されていないプロパティは、当該プロパティのオブジェクトプロパティ記述データセット３３４に定義される、オブジェクトプロパティ値データセット３３６中のデフォルト値を戻す。
【００４８】
オブジェクトハンドルは、デバイスストア３５０のオブジェクトを識別するために使用される３２ビットの符号なし整数である。オブジェクトハンドルは、一時的なものであり、１回のセッションでのみ使用することができる。２つのセッションが同時に行われる場合でも、異なるセッションでは恐らくは同じオブジェクトにまったく異なるオブジェクトハンドルが割り当てられる。オブジェクトハンドルを使用して、オブジェクト情報、プロパティ、またはデータを読み書きするなど、個々のオブジェクトを扱うことができる。
【００４９】
オブジェクトプロパティ値とデバイスプロパティ値はわずかに異なる要件を有し、その違いは記述データセットと新しい動作に反映される。第１に、所与のオブジェクトプロパティは、デバイス全体に１つの値があるのとは異なり、デバイスのオブジェクトごとに１つの値を有する。第２に、多数のオブジェクトのオブジェクトプロパティ値のすべてまたはいくつかを１回の動作でデータのブロック転送として取り出せると利便である。これらの動作については下記でさらに説明される。第３に、オブジェクトプロパティの値タイプ(value type)と制約(restriction)は、デバイスプロパティよりも変動的(more varied)である。その違いは、オブジェクトプロパティ記述データセット３３４の追加的な可変のフォーム(additional variant form)に反映される。これらのフォームは、オブジェクトプロパティがそのデータタイプの範囲内で取れる値をさらに限定する役割を果たす。
【００５０】
上述のようにレスポンダ３００はストア３５０も含み、これは、デバイス３００で恒久的な記憶(persistent storage)を提供する物理媒体である。ストレージ情報データセット(storage information data set)３４６が各ストア３５０のプロパティを定義し、これを下表にす。
【００５１】
【表７】
2004334881.tif 000009
【００５２】
デバイスおよびオブジェクトと異なり、ストア３５０は個々のプロパティを持たず、ストレージ情報データセット３４６に集められたフィールドだけを有する。デバイス３００は、２つ以上のストアを有することができる。デバイス３００は、セッション中に異なるストア３５０を区別するストレージＩＤを割り振る。ストアは、オブジェクトとオブジェクトに関連付けられた情報を保持する。
【００５３】
ストアはストレージＩＤ(storage ID)で識別される。ストレージＩＤは、３２ビットの符号なしの整数であり、物理記憶媒体のユニット、またはそのような記憶媒体を受け付けることができるドライブまたはコネクタを識別する。各ストア、または潜在的なストアには、１回のセッションの持続期間にわたってデバイス３００からストレージＩＤが割り振られる。
【００５４】
図４に示すように、レスポンダ３００が有するデータセットのいくつかは、各セッションに一意のパーセッションデータセット(per-session data set)３４０である。このデータセット３４０には、オペレーション応答データセット(operation response data set)３４４、イベントデータセット３４８、およびオブジェクトハンドルのリスト(list of object handle)３４２が含まれる。イベントデータセット３４８にはイベント生成メカニズム(event generating mechanism)３４９が関連付けられ、オペレーション応答データセット３４４にはオペレーション応答ツール(operation response tool)３４５が関連付けられる。これらのデータセットについては、本発明の方法との関連で下記でさらに説明する。
【００５５】
図５は、本発明者の一実施形態におけるイニシエータのメモリ２１０を示す。イニシエータメモリ２１０は、イニシエータ２００とレスポンダ３００とのセッションを開き、閉じ、制御するためのセッション制御ツール２１２を含むことができる。デバイス情報検索モジュール(device information retrieval module)２１４、デバイスプロパティ検索モジュール２１６、およびデバイスプロパティ改訂モジュール(device property revision module)２１８が、デバイス情報データセット３２２およびデバイスプロパティ記述データセット３２６との対話を制御する。オブジェクト情報検索モジュール２１９、オブジェクトハンドル検索モジュール２２０、オブジェクトキャプチャモジュール２２２、オブジェクトプロパティ検索モジュール２２４、オブジェクトプロパティ値検索モジュール２２５、オブジェクト改訂モジュール２２６は、オブジェクトデータセット３３０およびオブジェクトハンドルのリスト３４２との対話を制御する。イニシエータメモリは、通例、アソシエーションメカニズム(association mechanism)２２８、オペレーション要求データセット(operation request data set)２３０、ストレージロケーションモジュール(storage location module)２３２、記憶プロパティ検索モジュール２３４、およびストレージ改訂モジュール２３６も含む。
【００５６】
一般に、セッション制御ツール(session control tool)２１２は、セッションオープン動作を行い、デバイス３００にリソースを割り振らせ、必要な場合はデータオブジェクトにハンドルを割り当てさせ、接続に特定の初期化を行わせる。セッション制御ツール２１２はセッションＩＤを割り当てる。セッションＩＤは、そのセッション中にすべての他の動作で使用することができる。
【００５７】
イニシエータ２００がオープンセッション動作を試みる場合、すでにセッションが開かれており、デバイス３００が複数のセッションをサポートしない場合はその試みは失敗する可能性がある。応答「セッションすでにオープン(session already open)」が返され、すでに開かれているセッションのセッションＩＤが最初の応答パラメータになる。デバイスが複数セッションをサポートする場合も応答「セッションすでにオープン」を使用すべきであるが、選択されたセッションＩＤのセッションはすでに開かれている。デバイスが複数のセッションをサポートし、最大数のセッションが開かれている場合、デバイスは「デバイスビジー」で応答する。セッション制御ツール２１２は、現在のセッションを閉じるためにセッションクローズ動作を実施することもできる。
【００５８】
イニシエータ２００は、デバイス情報検索モジュール２１４を呼び出すことによりデバイスの基本的特性を検索することができる。デバイス情報検索モジュール２１４は、デバイス情報取得動作を呼び出すことにより、デバイス３００のデバイス情報データセット３２２を戻す。デバイス情報取得動作は、セッションの外部で呼び出すことができるが、セッションを開始することはない。図の実施形態で、この動作がセッションの外部で呼び出された場合、オペレーション要求データセットのセッションＩＤとトランザクションＩＤは０ｘ００００００００に設定されるべきである。
【００５９】
イニシエータ２００は、自身のデバイス情報検索モジュール２１４を使用して、デバイス情報データセット３２２のサポートされるプロパティフィールドに返されたプロパティコード配列を調べることにより、デバイス３００によってサポートされるデバイスプロパティとオブジェクトプロパティを判定することができる。イニシエータ２００は、プロパティコード配列を列挙し、デバイスプロパティ検索モジュール２１６とオブジェクトプロパティ検索モジュール２２４の両方を呼び出して、各プロパティコードを順に渡すべきである。デバイス情報データセット３２２のプロパティコードの配列は、デバイスプロパティとオブジェクトプロパティ両方のデータコードをリストする。両タイプのプロパティのデータコードはこの配列中で混合されることができ、イニシエータ２００が、どのプロパティコードがどのタイプのプロパティを定義するのかを識別する責を負う。デバイスプロパティ検索モジュール２１６およびオブジェクトプロパティ検索モジュール２２４によって実施されるデバイスプロパティ記述取得動作およびオブジェクトプロパティ記述取得動作が、所与のプロパティコードが定義するプロパティのタイプを決定する。
【００６０】
所与のプロパティコードはデバイスプロパティか、またはオブジェクトプロパティなので、デバイスプロパティ検索モジュール２１６とオブジェクトプロパティ検索モジュール２２４の１つだけが成功することになる。どちらも成功しない場合は、そのプロパティコードがデバイス３００で使用するには無効であることになる。
【００６１】
所与のプロパティコードについてオブジェクトプロパティ検索モジュール２２４の動作が成功した場合、イニシエータ２００は、オブジェクトプロパティ値検索モジュール２２５を呼び出してオブジェクトプロパティ値を検索することができる。オブジェクトプロパティ値は個々のオブジェクトに固有なので、イニシエータ２００は、オブジェクトも選ばなければならないことになる。デバイスプロパティ検索モジュール２１６が成功した場合は、一般には、デバイスプロパティ記述データセット３２４中のデータタイプからデバイスプロパティ値を判定することができる。
【００６２】
デバイスプロパティ改訂モジュール２１８は、デバイスプロパティ記述動作(device property description operation)を呼び出し、プロパティのプロパティコードとプロパティの新しい値を渡すことにより、デバイスの既存のデバイスプロパティ値を変更することができる。イニシエータ２００は、デバイスプロパティ記述データセット３２４を使用してプロパティのデータタイプを判定し、そのプロパティの新しい値の妥当性を検証することができる。デバイスプロパティ改訂モジュール２１８は、動作の成功を示すステータスコードを戻す。プロパティが設定可能でない場合は、応答「アクセス否定(access denied)」が戻される。値がデバイスによって許可されない場合は、「無効なデバイスプロパティ値(invalid device property value)」が戻される。プロパティ値のフォーマットまたは大きさが正しくない場合は、「無効なデバイスプロパティフォーマット(invalid device property format)」が戻される。
【００６３】
オブジェクトハンドル検索モジュール(object handle retrieval module)２２０は、デバイス上のすべてのオブジェクトを迅速に見つけることができる。オブジェクトハンドル検索モジュール２２０は、第１のパラメータ中のストレージＩＤによって存在が示されるオブジェクトハンドルの配列(array)を戻す。すべてのストアにわたる集約されたリストが求められる場合は、この値は０ｘＦＦＦＦＦＦＦＦに設定されるべきである。オブジェクトハンドル検索モジュール２２０は、そのデバイスまたは指示されるストアに格納された全オブジェクトに対して１つのエントリを有するオブジェクトハンドルのリストを戻す。リスト中のすべてのオブジェクトハンドルについて、イニシエータ２００は、オブジェクト情報検索モジュール２２８を呼び出し、オブジェクトハンドルを渡してオブジェクト情報データセット３３２を検索することができる。
【００６４】
オブジェクト情報検索モジュール２１９は、オブジェクトの基本的特性を戻す。オブジェクト情報検索モジュール２１９は、オブジェクト情報取得動作を呼び出し、特定のオブジェクトのオブジェクトハンドルを渡すことにより、そのオブジェクトのオブジェクト情報データセット３３２を戻す。
【００６５】
オブジェクトプロパティ検索モジュール２２４は、オブジェクトプロパティリスト取得動作を呼び出し、そのオブジェクトのオブジェクトハンドルのみを渡すことにより、所与のオブジェクトのすべてのプロパティをまとめて検索することができる。オブジェクトプロパティ検索モジュール２２４は、オブジェクトプロパティ記述データセット３３４のグループ値で示される１つのグループに含まれるオブジェクトプロパティのみを得ることもできる。オブジェクトプロパティ検索モジュール２２４は、オブジェクトハンドルの「すべてのオブジェクト」値を渡すことにより、デバイス上のすべてのオブジェクトのすべてのプロパティをまとめて検索することもできる。
【００６６】
オブジェクトプロパティ値検索モジュール２２５は、所与のオブジェクトのプロパティ値を検索することができる。オブジェクトプロパティ値検索モジュール２２５は、オブジェクトプロパティ値取得動作を呼び出し、そのオブジェクトのオブジェクトハンドルとプロパティのプロパティコードの両方を渡すことにより、プロパティ値のみを戻す。イニシエータ２００は、対応するオブジェクトプロパティ記述データセット３３４の情報を使用してそのプロパティ値を解釈することができる。オブジェクトプロパティ値検索モジュール２２５は、オブジェクトプロパティ値データセット３３６のリストも戻すことができ、各データセットは、同じオブジェクトハンドル、特定のプロパティコード、および特定のプロパティ値を含む。
【００６７】
オブジェクト改訂モジュール２２６は、オブジェクトプロパティ値設定動作を呼び出し、オブジェクトのオブジェクトハンドル、プロパティのプロパティコード、およびプロパティの新しい値を渡すことにより、オブジェクトの既存のオブジェクトプロパティ値を変更することができる。オブジェクト改訂モジュール２２６は、オブジェクトプロパティ記述データセット３３４を使用してプロパティのデータタイプを判定することができる。オブジェクト改訂モジュール２２６は、動作の成功を示すステータスコードを戻す。
【００６８】
オブジェクト改訂モジュール２２６は、オブジェクトプロパティ値リセット動作(reset object property value operation)を呼び出し、オブジェクトのオブジェクトハンドルとプロパティのプロパティコードを渡すことにより、オブジェクトの既存のオブジェクトプロパティ値を復元することもできる。オブジェクト改訂モジュール２２６は、プロパティのオブジェクトプロパティ記述データセット３３４に定義されるデフォルト値を適用する。
【００６９】
オブジェクト改訂モジュール２２６は、オブジェクトプロパティリスト設定動作を呼び出し、所与のオブジェクトとプロパティのみを参照するオブジェクトプロパティ値データセット３３６を渡すことにより、所与のオブジェクトのすべてのプロパティをまとめて変更することもできる。この動作で設定されるオブジェクトプロパティの合計数は、オブジェクトプロパティ値データセット３３６の第１フィールドによって決定される。配列の各エントリは、変更対象のオブジェクト、設定されるオブジェクトプロパティ、およびそのオブジェクトプロパティに設定される値を記述するのに十分である。
【００７０】
オブジェクト改訂モジュール２２６は、オブジェクトプロパティ記述設定動作を呼び出し、フィールドが適切な値に設定されたオブジェクトプロパティ記述データセット３３４を渡すことにより、新しいオブジェクトプロパティを定義することができる。オブジェクト改訂モジュール２２６は、その動作の成功または失敗を示すステータスコードを戻す。動作が成功した場合は、新しいオブジェクトプロパティがデバイスに追加されており、既存のオブジェクトまたは新規のオブジェクトに適用されることができる。オブジェクトプロパティに値が与えられていない既存オブジェクトは、オブジェクトプロパティ記述データセット３３４に指定されるデフォルト値を報告する。動作が失敗した場合は、デバイス上でその新しいオブジェクトプロパティが未定義のままになり、既存のオブジェクトにも新しいオブジェクトにも適用されることができない。
【００７１】
オブジェクト改訂モジュール２２６は、まず新しいオブジェクトを作成し、そのオブジェクトに参照を配置することにより、任意のオブジェクト集合を構築することもできる。イニシエータ２００が集合に含めようとするすべてのオブジェクトは、対応する参照を持つべきである。
【００７２】
イニシエータ２００は、オブジェクトハンドル検索モジュール２２０を使用して集合を表すオブジェクトのオブジェクトハンドルを検索することにより、任意の集合を変更することもできる。オブジェクトハンドル検索モジュール２２０は、集合オブジェクトのオブジェクトハンドルを使用してオブジェクトハンドルのリストを戻すことができ、リスト中の各オブジェクトハンドルは、それまでにその集合に属したオブジェクトに対応する。オブジェクト改訂モジュール２２６は、このリストを変更して、もはやその集合に属さないオブジェクトに対応するオブジェクトハンドルを除去するか、あるいは集合に追加されるオブジェクトに対応するオブジェクトハンドルを追加することができる。
【００７３】
オブジェクトキャプチャモジュール２２２は、デバイス３００が非同期プロセスを通じて新しいメディアオブジェクトをキャプチャすることを要求することができる。オブジェクトキャプチャモジュール２２２はキャプチャ開始動作で開始することができ、デバイス３００は、キャプチャ完了イベントまたはストレージフルイベントでプロセスの終了を通知する。デバイス３００は、下記でさらに説明するオブジェクト追加イベントも使用してデバイス３００での新しいメディアオブジェクトの作成を通知する。キャプチャの進行中に、デバイスは、オブジェクト追加イベントを生成して、そのキャプチャプロセスで新しいメディアオブジェクトが生成されたことを通知する。デバイスで新しいメディアオブジェクトが作成されるたびに１つのオブジェクト追加イベントが生成される。キャプチャによって新しいオブジェクトが生成されたもののストア３５０にそのオブジェクトを収容するだけの空き領域がない場合、デバイス３００はストレージフルイベントを生成することができる。キャプチャが完了し、成功した場合は、デバイスはキャプチャ完了イベントを生成することができる。イベントの生成については、イベント生成メカニズム３４９との関連で下記でさらに説明する。
【００７４】
作成した任意の集合を使用するには、イニシエータ２００は、その集合を表すオブジェクトのオブジェクトハンドルを用いて開始する。イニシエータは次いで、オブジェクト参照リスト取得動作を呼び出すことにより、その集合オブジェクトからの参照を要求する。この参照は、１つの参照につき１つのオブジェクトハンドルを含むオブジェクトハンドルのリストとして戻される。オブジェクトハンドル検索モジュール２２０はさらに、オブジェクトハンドルのリストを取得し、そのリストを使用してオブジェクト情報データセット３３２と、したがってそれらオブジェクトのプロパティ、参照、またはデータを検索することができる。
【００７５】
ストレージプロパティ検索モジュール(storage property retrieval module)２３４は、特定ストアのストレージＩＤを使用してストア情報取得動作(store information operation)を呼び出すことによりストア３５０の基本的特性(basic characteristic)を検索することができる。このストレージプロパティ検索モジュール２３４は、ストレージ情報データセット３４６を戻す。
【００７６】
ストレージ改訂モジュール２３６は、ストレージ情報変更イベント(storage information changed event)を受け取り、処理することにより、ストレージ情報データセット３４６の変化を追跡することができる。ストレージ情報データセット３４６の変化についての追加的情報を得るには、ストレージプロパティ検索モジュール２３４がストレージ情報データセット３４６を検索、イニシエータ２００は変化がないかストレージ情報データセット３４６を調べることができる。
【００７７】
ストレージロケーションモジュール２３２は、イニシエータ２００がデバイス３００のすべてのストアを見つけるのを助けることができる。ストレージロケーションモジュール２３２は、ストアＩＤ取得動作(get store IDs operation)を呼び出してストレージＩＤのリストを戻す。リストは、有効な論理ストアのストレージＩＤを含むことができる。有効な論理ストアのストレージＩＤは、非ゼロの物理ストレージＩＤの部分と、非ゼロの論理ストレージＩＤの部分を有する。配列は、現在ドライブにメディアが挿入されていない取り外し可能メディアドライブのストレージＩＤも含むことができる。メディアが挿入されていないドライブのストレージＩＤは、物理ストレージＩＤの部分は非ゼロであるが、論理ストレージＩＤの部分はゼロになる。ストレージプロパティ検索モジュール２３４は、ストレージロケーションモジュール２３２によって取り出されたストレージＩＤを使用して対応するストレージ情報データセット３４６を検索することができる。
【００７８】
イニシエータメモリ２１０のアソシエーションメカニズム２２８は、ストアにあるオブジェクトのツリー構造の編成を扱う。アソシエーションはオブジェクトのセットであり、それ自体オブジェクトとして表される。アソシエーションにおけるメンバーシップは排他的であり、オブジェクトは２つ以上のアソシエーションに属することはできない。さらに、アソシエーションは、ストア３５０のオブジェクトを表すのに使用される基礎的なファイルシステムと通例はパラレルである階層に編成される。アソシエーションは、デスクトップのユーザインターフェースの比喩で用いられるコンピュータファイルシステムまたはフォルダのディレクトリに似ている。
【００７９】
アソシエーションの構成(arrangement of association)により、ストア３５０のすべてのオブジェクトを親／子の階層に編成する。この編成は、オブジェクト情報データセット３３２の親オブジェクトフィールドを介してイニシエータに伝達される。各オブジェクトは何らかの親の子であり、親は、親オブジェクトフィールドで戻されるオブジェクトハンドルで指定される。親オブジェクトフィールドのオブジェクトハンドルは、常に、あるアソシエーションをポイントする。各アソシエーションは、各ストアの階層の最上位の親すなわちルートを除いては、それ自体もアソシエーションである親オブジェクトを有する。
【００８０】
参照(reference)は、各オブジェクトと共に記憶されたオブジェクトハンドル(object handle)である。オブジェクトは任意数の参照を有することができる。各参照は、同じデバイスおよびストアの別のオブジェクトへのタイプレス有向ポインタ(type-less directed pointer)である。例えば、オブジェクトＡからオブジェクトＢへの参照は、オブジェクトＡに置かれ、オブジェクトＢをポイントする。参照はオブジェクトハンドルとして表されるので、１回のセッション中にのみ有効である。イニシエータ２００とレスポンダ３００はともに、参照の意味をセッション間で保存すべき場合は参照を別の静的な形態に変換する役割を担う。
【００８１】
参照を使用して、可能性としては重複のある任意のオブジェクトの集合を構築することができる。例えば、デバイス３００がオブジェクトとして歌を記憶し、それらのオブジェクトのデータ中にサンプリングされた音楽が表されるとする。同じデバイスが、ある再生リストオブジェクトから再生リストに含まれるすべての音楽オブジェクトあるいは歌への参照を有するオブジェクトとして再生リストを記憶することができる。各音楽オブジェクトは、１つまたは複数の再生リストに属することができる。再生リストはオブジェクトハンドルを使用して含まれている音楽オブジェクトを指定するので、音楽オブジェクトの場所または名前の変更は、再生リストの構成に影響しない。
【００８２】
別の例として、音楽オブジェクトは、参照を使用して、サンプリングされた音楽コンテンツへのアクセスを許可するためにデジタル著作権管理システム（ＤＲＭ）によって検証されるべきライセンスを指定することができる。ライセンス自体もオブジェクトとして表され、それらのライセンスオブジェクトは、参照を使用してそれらのライセンスが適用される音楽オブジェクトを指示することができる。音楽オブジェクトは、参照を使用して、そのオブジェクトの内容へのアクセスを制御するライセンスを指示することができる。両方向の参照により、アソシエーションメカニズム２２８は、１つの音楽オブジェクトに適用されるすべてのライセンスオブジェクトを迅速に見つける、あるいは１つのライセンスオブジェクトによってカバーされるすべての音楽オブジェクトを見つけることができる。
【００８３】
各オブジェクトは、同じデバイスと理想的には同じストアの他のオブジェクトを参照するオブジェクトハンドルの配列を有する。オブジェクト参照(object reference)は、ソースオブジェクト(source object)からターゲットオブジェクト(target object)に向かう有向ポインタ(directed pointer)である。このオブジェクト参照は、ソースオブジェクトからターゲットオブジェクトへの高速アクセスを可能にする静的フォーマットでデバイスによって保持されるが、プロトコルはオブジェクトハンドルのみを用いて機能する。ソースオブジェクトからのオブジェクト参照は、オブジェクトハンドル検索モジュール２２０によって取り出されることができ、オブジェクトハンドル検索モジュール２２０はオブジェクトハンドルの配列を戻す。同様に、ソースオブジェクトからのオブジェクト参照は、オブジェクト改訂モジュール２２６によって変更されることができる。両方向のオブジェクト参照を使用して両方向のポインタを実施する。
【００８４】
イニシエータ２００とレスポンダ３００間の通信は、トランザクションと称する別個のステップで行われる。トランザクションは、上記のようにイニシエータ２００から要求される動作の形をとることができ、またイベントの形をとってもよい。イベントはレスポンダ３００から送信され、イニシエータ２００によって受け取られる。
【００８５】
上述のすべての動作を用いて、イニシエータ２００は、オペレーション要求データセット(operation request data set)２３０を構築し、そのオペレーション要求データセット２３０をレスポンダ３００に送ることを含む動作を要求することにより、開始(take action)する。その後、レスポンダ３００はオペレーション応答データセット３４４を構築する。イニシエータとレスポンダ間の１回の対話は１回のトランザクションであり、１回のセッション中にはトランザクションが連続して行われる。通例、イニシエータ２００とレスポンダ３００間の通信は、通信セッションを形成する。例示的なオペレーション要求データセット３２０を下表に示す。
【００８６】
【表８】
2004334881.tif 000010
【００８７】
フィールド順１のオペレーションコード(operation code)は、要求される動作を指定する。このオペレーションコードは、標準動作と拡張された動作のための特定の範囲に限定された１６ビットの符号なし整数であることが好ましい。この例では、すべての実施に共通の標準オペレーションコードは、０ｘ１０００〜０ｘ１ｆｆｆの範囲に限定される。特定の実施に特定の拡張オペレーションコード(extended operation code)は、範囲０ｘ９０００〜０ｘ９ｆｆｆの範囲を占めることができる。
【００８８】
セッションＩＤフィールド(session ID field)は、その動作が開始されるセッションを指定する。セッションの外部で開始された動作または新しいセッションを開始する動作の場合、セッションＩＤフィールドは０ｘ００００００００に設定される。オペレーション応答データセット３４４のセッションＩＤフィールドは、対応するオペレーション要求データセット２３０のセッションＩＤフィールドと同じでなければならない。セッションＩＤは、符号なしの３２ビットの整数であり、セッションが開かれる時にセッション制御ツール２１２を用いてイニシエータ２００によって選択される。セッションＩＤは、イニシエータ２００およびレスポンダ３００の両方に一意であることが好ましい。セッションＩＤは、すべてのオペレーション要求データセット２３０およびオペレーション応答データセット３４４に含まれ、動作またはイベントをそれが行われるセッションに関連付ける。
【００８９】
セッションおよびセッションＩＤは、デバイスが同じデバイスまたは異なる複数のデバイスとの複数の同時進行のセッションを維持することを可能にする。例えば、同じホストイニシエータ２００で実行される２つの異なるアプリケーションが、１つのターゲットデバイス３００と個別の複数のセッションを開くことができる。第１のアプリケーションは、例えば、そのセッションを使用してデバイスプロパティを検索、変更し、一方第２のアプリケーションは別のセッションを使用してデバイス３００に新しいメディアオブジェクトをダウンロードすることが可能である。
【００９０】
トランザクションＩＤ(transaction ID)は、その動作によって開始されているトランザクションを指定する。トランザクションＩＤは、新しいセッションを開始する動作でゼロから開始しなければならず、追加的なトランザクションが行われるたびに１ずつインクリメントすべきである。オペレーション応答データセット３４４のトランザクションＩＤフィールドは、対応するオペレーション要求データセット２３０のトランザクションＩＤフィールドと同じでなければならない。トランザクションＩＤは、１つのセッション中で一意の符号なしの３２ビット整数である。トランザクションＩＤは、イニシエータ２００からオペレーション要求データセット２３０で送信され、レスポンダ３００によりそれに対応するオペレーション応答データセット３４４で戻される。
【００９１】
イニシエータ２００は、トランザクションＩＤのシーケンスを生成する役割を担い、レスポンダ３００は、受け取るトランザクションＩＤが以前のトランザクションですでに使用されてないかどうか調べる役割を担う。したがって、イニシエータ２００は、オペレーション要求データセット２３０またはイベントデータセットで使用された最後のトランザクションＩＤを常に把握し、それを１ずつインクリメントし、オペレーション要求データセットまたはイベントデータセット３４８中の値を使用し、最後の値を最後のトランザクションＩＤとして保存する。レスポンダ３００は、新しいトランザクションＩＤが以前に受け取ったトランザクションＩＤより大きいことを確認し、受け取ったトランザクションＩＤを、最大のすでに受け取られたトランザクションＩＤとして記憶することができる。
【００９２】
トランザクションＩＤは、セッションの両当事者が、オペレーション要求データセット２３０、オペレーション応答データセット３４４、およびイベントデータセット３４８を含むトランザクションで関連する異なるデータセットを相互に関連付けることを可能にする。この能力は、トランザクションのキャンセルなどの非同期イベントが現存するトランザクションのステータスの変化を告げる時に特に重要である。
【００９３】
パラメータフィールド１〜５は、各動作により異なる形で解釈される。所与の動作で使用されないパラメータフィールドは０ｘ００００００００に設定すべきである。レスポンダ３００は、オペレーション要求データセット(operation request data set)２３０を受け取るか、可能性としてはイニシエータからデータを受け取るか、またはイニシエータにデータを送信した後に、動作に応答する。所与のトランザクションは、要求でイニシエータから受信側にデータを転送しても、応答で受信側からイニシエータにデータを転送してもよいが、両方行うことはできない。レスポンダ３００は、オペレーション応答データセット(operation response data set)３４４を構築し、それをイニシエータに送ることができる。例示的なオペレーション応答データセット３４４を下表に示す。
【００９４】
【表９】
2004334881.tif 000011
【００９５】
オペレーション応答データセット３４４の応答コードフィールド(response code field)は、与えられた応答を指定するデータコードを含む。応答コードは、標準的な応答と拡張された応答に特定の範囲に限定された１６ビットの符号なし整数である。一般にすべての実施に共通の標準応答コードは、範囲０ｘ２０００〜０ｘ２ｆｆｆに限定される。特定の実施に特定の拡張応答コードは、０ｘａ０００〜０ｘａｆｆｆの範囲に限定される。追加的なパラメータは、オペレーション要求データセット２３０について上記で述べたものとほぼ同様である。
【００９６】
トランザクション中、データは１つの方向か、またはもう一方の方向に流れる。イニシエータ２００がレスポンダ３００にデータを送信するか、またはレスポンダ３００がイニシエータにデータを送信することができる。イニシエータ２００がオペレーション要求データセット２３０でレスポンダ３００に情報を送信し、レスポンダ３００がオペレーション応答データセット３４４でイニシエータ２００に情報を送信することもできるが、その情報は、個々のデータセットのパラメータフィールドのサイズと数によって限定される。
【００９７】
デバイス３００でオブジェクトが変化するか、または動作が行われると、デバイス３００は、イベント生成メカニズム３４９を使用してイベントデータセット３４８を生成することができる。例示的なイベントデータセット３４８を下表に示す。
【００９８】
【表１０】
2004334881.tif 000012
【００９９】
イベントは、イニシエータ２００から送信されることができるが、通例はレスポンダ３００によって送信される。イベントコードフィールドは、生成されたイベントを指定する。フィールド順１のイベントコードは、標準イベントと拡張されたイベントに固有の範囲に限定された１６ビットの符号なし整数である。標準イベントコードは、０ｘ４０００〜０ｘ４ｆｆｆの範囲に限定される。特定の実装に固有の拡張イベントコードは、０ｘｃ０００〜０ｘｃｆｆｆの範囲に限定される。
【０１００】
フィールド順２のセッションＩＤフィールドは、そのイベントが適用されるセッションを指定する。イベントが特定の動作に適用される場合、イベントデータセットのセッションＩＤフィールドは、対応するオペレーション要求データセット２３０のセッションＩＤと同じになる。イベントが特定のセッションに適用される場合、イベントデータセット３４８のセッションＩＤフィールドは、そのセッションのセッションＩＤに設定しなければならない。最後に、イベントがすべての現存するセッションに適用される場合、セッションＩＤは０ｘｆｆｆｆｆｆｆｆに設定すべきである。
【０１０１】
フィールド順３のトランザクションＩＤフィールドは、そのイベントが適用されるトランザクションを指定する。イベントが特定の動作に適用される場合、イベントデータセットのトランザクションＩＤフィールドは、対応するオペレーション要求データセット２３０のトランザクションＩＤと同じでなければならない。イベントが特定のトランザクションに適用されない場合、トランザクションＩＤフィールドは、０ｘｆｆｆｆｆｆｆｆに設定されるべきである。パラメータフィールド１〜３は、イベントごとに異なる解釈をされる。所与の動作で使用されないパラメータフィールドは、０ｘ００００００００に設定されるべきである。
【０１０２】
複数タイプのイベントを生成することができる。デバイス情報データセット３２２が変化すると、イベント生成メカニズム３４９は、デバイス情報変化イベントまたはオブジェクト情報変化イベントを生成することができる。両イベントとも、セッション外部の変化か、またはイニシエータ２００によって生じたのではない変化の結果生成される。変化についての情報を受け取るために、イニシエータ２００は、情報検索モジュール２１４またはオブジェクト情報検索モジュール２１９を呼び出して該当する情報セットを検索する。同様に、デバイスプロパティ値またはオブジェクトプロパティが変更されると、イベント生成メカニズム３４９は、デバイスプロパティ変更イベントまたはオブジェクトプロパティ変更イベントを生成することができる。
【０１０３】
ストア３５０に新しいオブジェクトが作成されると、イベント生成メカニズム３４９はオブジェクト追加イベントを生成することができる。同時に複数のオブジェクトが生成された場合は、新しいオブジェクトごとに別々のオブジェクト追加イベントが生成される。このイベントは、デバイス３００または別のセッションによって明示的にオブジェクトが作成される時にのみ生成される。オブジェクト追加イベントは、新しいオブジェクトのオブジェクトハンドルをパラメータとして含む。情報を得ようとする場合、イニシエータ２００は、オブジェクト情報検索モジュール２２０を使用してオブジェクト情報取得動作を呼び出し、オブジェクト情報データセット３３２を得る。
【０１０４】
デバイス３００に新しいストアが追加されると、イベント生成メカニズム３４９は、オブジェクト追加イベント(objected added event)ではなくストレージ追加イベント(storage added event)を生成することができる。このストレージ追加イベントは、追加されたストアのストレージＩＤをパラメータとして含む。１つの物理記憶媒体の挿入により２つ以上の論理的ストアが同時にデバイスに追加された場合は、デバイス３００により１つのみのストレージ追加イベントが生成される。新しいストアのストレージＩＤは、単一の論理ストアが追加された場合には有効になる。可能性としては１つの物理的ストアにより同時に２つ以上の論理ストアが追加された場合、ストレージＩＤは０ｘ００００００００になる。イニシエータ２００は、新しいストア３５０についての情報を求める場合は、該当する動作を用いてストレージ情報データセット３４６を検索することになる。
【０１０５】
イベント生成メカニズム３４９は、オブジェクト除去イベント(object removed event)も生成することができる。同時に２つ以上のオブジェクトが除去された場合は、除去されたオブジェクトごとに別個のオブジェクト除去イベントが生成される。このイベントは、デバイス３００または別のセッションによりオブジェクトが明示的に削除された場合にのみ生成される。このイベントは、除去されたストアにオブジェクトが記憶されていた場合でも、既存のストアがデバイスから除去された時には生成されない。イベント生成メカニズム３４９は、代わりに、既存のストア３５０がデバイス３００から除去された時にはストレージ除去イベント(storage removed event)を生成することができる。
【０１０６】
このストレージ除去イベントは、除去されたストアのストレージＩＤをパラメータとして含む。イニシエータ２００は、このストレージＩＤを用いてストアを特徴付けてはならず、あるいはストアのオブジェクトを扱ってはならない。イニシエータ２００は、このストレージＩＤを使用して、デバイス３００で利用可能なストア３５０とオブジェクトについての自身の情報を更新すべきである。
【０１０７】
図６は、イニシエータ２００とレスポンダ３００との間の例示的セッションを説明する流れ図である。ステップ１０において、イニシエータ２００は自身のセッション制御ツール２１２を使用してレスポンダ３００とのセッションを開く。ステップ１０はセッションの開始を表しているが、デバイス３００が自身がプロトコルをサポートしていると初めに識別しない場合は通信シーケンスを行うことができない。プロトコルが構築された基盤となるトランスポート層が識別の方式を決定する。デバイス３００は、同時に複数のセッションに関係することができるが、同時に行われるセッションは互いから独立している。セッションの当事者間のすべての通信は、そのセッションに固有のセッションＩＤによって承認される。セッションＩＤは、セッションの開始時にイニシエータ２００によって選択され、イニシエータ２００とレスポンダ３００の両方に一意でなければならない。
【０１０８】
ステップ１２において、イニシエータ２００は一般に、デバイス情報検索モジュール２１４を使用してデバイス３００についての情報を要求する。ステップ１４において、レスポンダ３００がデバイス情報データセット３２２を戻す。上述のように、デバイス情報データセット３２２は、諸データの中でも特に、サポートされるデータコードのリストを含む。デバイス情報データセット３２２は、読み取り専用であり、基本レベルの静的なデバイス情報を提供する。より詳細な情報を得るには、イニシエータ２００は、デバイスプロパティ検索モジュール２１６を使用してデバイスプロパティ記述データセット３２４を検索する。
【０１０９】
イニシエータ２００がレスポンダ３００の能力を理解すると、イニシエータ２００は、次いでステップ１６に進んで、オブジェクトハンドル検索モジュール２２０を用いてデバイスにあるオブジェクトのリストを求めてデバイスを照会する。オブジェクトハンドル値は一時的なものであり、セッションクローズ動作または切断イベント後には存続しない。ステップ１８で、デバイス３００はオブジェクトハンドルのリストを戻す。
【０１１０】
ステップ２０において、イニシエータ２００は、オブジェクトプロパティ検索モジュール２２４を用いて各オブジェクトに固有の情報を求めてレスポンダ３００を照会する。各オブジェクトプロパティは、オブジェクトプロパティ記述データセット３３４のオブジェクトプロパティデータコードによって一意に識別される。ステップ２２では、オブジェクトプロパティ記述データセット３３４が戻される。オブジェクトプロパティ記述データセット３３４は、オブジェクトプロパティ値の大きさ（バイト）とデータタイプを記述する。
【０１１１】
デバイスの能力が理解され、デバイスのオブジェクトが特徴付けられると、イニシエータ２００は次いでステップ３０において、オブジェクトをアップロードまたは検索するか、オブジェクトメタデータ(object metadata)を追加、変更、または除去するか、またはデバイスによってサポートされる任意の他の動作を行う。
【０１１２】
行われる動作は、図５との関連で上述した動作を含んでよい。それらのコマンドにより、メディアデバイス３００の制御が可能になる。カテゴリが異なるメディアデバイスのオブジェクトの操作が行われると、異なる動作が行われる。例えば、メディア再生デバイスはデジタルスチルカメラとは異なる制御コマンドを必要とする。イニシエータ２００から再生を制御するためにメディア再生デバイス３００のオブジェクトを操作すると、再生、一時停止、次の曲、早送りなどのコマンドが行われる。
【０１１３】
イニシエータ２００が必要な動作を完了すると、セッション制御ツール２１２はステップ４２でセッションを完了することができる。セッション制御ツール２１２は、ステップ４４で既存のオブジェクトハンドルを無効にする。
【０１１４】
上述のプロトコルはトランスポート層に限定されず(agnostic)、ＵＳＢ、ＵＳＢ２．０、ＩＥＥＥ１３９４、Ｂｌｕｅｔｏｏｔｈ、ＵＰｎＰ、ＴＣＰ／ＩＰ、またはトランスポートの要件を満たす任意のトランスポート層を通じて実施されることができる。また、このプロトコルは、幅広いメディアタイプのサポート、拡張可能性、およびメタデータのサポートを提供する。
【０１１５】
本発明については特定の実施形態との関連で説明したが、この実施形態はあらゆる点で説明を目的とするものであり、制約的なものではない。当業者には、本発明の範囲から逸脱せずに本発明が関連する代替の実施形態が明らかになろう。
【０１１６】
前述の内容から、本発明は、自明であり、本システムおよび方法に備わる他の利点とともに上述の目標および目的をすべて達成するようになされた発明であることが理解されよう。特定の機能およびサブコンビネーションは有用であり、他の機能およびサブコンビネーションを参照せずに用いられることが理解されよう。そのことを企図し、特許請求の範囲に記載する。
【図面の簡単な説明】
【０１１７】
【図１】本発明を実施する際に使用するのに適したコンピューティングシステム環境を示すブロック図である。
【図２】本発明の一実施形態によるシステム全体を示すブロック図である。
【図３】本発明の一実施形態によるメディアデバイスを示すブロック図である。
【図４】本発明の一実施形態によるレスポンダのメモリを示すブロック図である。
【図５】本発明の一実施形態によるイニシエータのメモリを示すブロック図である。
【図６】本発明の一実施形態によるイニシエータとレスポンダとの間のセッションに関する手順を示した流れ図である。
【符号の説明】
【０１１８】
２０  ネットワーク
１００  コンピューティングシステム環境
１１０、１８０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３６、１４６  プログラムモジュール
１３７、１４７  プログラムデータ
１４０、１５０  インターフェース
１４１  ハードディスクドライブ
１５１  磁気ディスクドライブ
１５２  磁気ディスク
１５５  光ディスクドライブ
１５６  光ディスク
１６０  ユーザ入力インターフェース
１６１  ポインティングデバイス
１６２  キーボード
１７０  アダプタ
１７１  ＬＡＮ
１７２  モデム
【図１】
2004334881.tif 000013
【図２】
2004334881.tif 000014
【図３】
2004334881.tif 000015
【図４】
2004334881.tif 000016
【図５】
2004334881.tif 000017
【図６】
2004334881.tif 000018