(57)【要約】【課題】メインコンピュータシステムで実行されるクライアントアプリケーションが、各種のデバイス実装の違いに関係なく、各種の補助ディスプレイと対話する方式を提供するインターフェース（ＡＰＩ）セットを有する補助ディスプレイプラットフォームを含むシステムおよび方法を提供する。【解決手段】対話には、アプリケーションから提供されたコンテンツおよび通知を表示すること及びアプリケーションにイベントを返すことが含まれる。ＡＰＩセットは、クライアントアプリケーションを登録しその構成確認を行い、接続されたデバイスにコンテンツと通知を送り、そのデバイスからのイベントを返すＣＯＭオブジェクトのセットを備える。アプリケーションは通信の宛先とデータのコントラクトに対応するエンドポイントにデータを送る。プラットフォームとＡＰＩセットは、アプリケーションが特定の補助デバイス実装に関係なく情報を提供する抽象化層を提供する。【選択図】図８
2007048259.tif 000002
【特許請求の範囲】
【請求項１】
メインコンピュータシステムと、前記メインコンピュータシステムに結合された少なくとも１つの補助デバイスとを有するコンピューティング環境において、
前記メインコンピュータシステムのクライアントアプリケーションが、特定のデバイス実装に関係なく、１つまたは複数の補助デバイスに送信すべき情報を提供できるための抽象化層を提供することと、
クライアントアプリケーションから補助デバイスに情報を送信することを求める要求を前記抽象化層で受け取り、それに応答して、前記アプリケーションから提供された情報を、各デバイスの特定のデバイス実装に応じて、少なくとも１つのデバイスに送ることと
を備えることを特徴とする方法。
【請求項２】
前記送信すべき情報はコンテンツに相当し、前記情報を送ることは、デバイスに依存しないフォーマットで前記クライアントアプリケーションから前記情報をプルすることを備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記抽象化層は、オブジェクトのＡＰＩセットを含み、前記オブジェクトの１つは、コンテンツマネジャオブジェクトを含み、前記要求を受け取ることは、前記アプリケーションに提供される前記コンテンツマネジャオブジェクトのインターフェースで呼び出しを受け取り、前記アプリケーションをコールバックして、送信すべき情報を取得することを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記送信すべき情報は、通知に相当し、前記情報を送ることは、デバイスに依存しないフォーマットで、前記クライアントアプリケーションから前記情報をプルすることを備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記抽象化層は、オブジェクトのＡＰＩセットを含み、前記オブジェクトの１つは、通知マネジャオブジェクトを含み、前記要求を受け取ることは、前記アプリケーションに提供される前記通知マネジャオブジェクトのインターフェースで呼び出しを受け取り、前記アプリケーションをコールバックして、通知に関連する送信すべき情報を取得することを備えることを特徴とする請求項１に記載の方法。
【請求項６】
登録呼び出しの際にクライアントアプリケーションから指定されたエンドポイントを受け取ることをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記登録呼び出しに応答して、前記クライアントアプリケーションが前記指定されたエンドポイントを使用してデバイスに情報を送る権限を有するかどうかを評価することをさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
請求項１に記載の方法をコンピュータに実行させるコンピュータ実行可能命令を有することを特徴とする少なくとも１つのコンピュータ読取可能な記録媒体。
【請求項９】
メインコンピュータシステムと、前記メインコンピュータシステムに結合された補助デバイスとを有するコンピューティング環境において、
クライアントＡＰＩセットを含む、前記メインコンピュータシステム上の補助プラットフォーム
を備えるシステムであって、前記クライアントＡＰＩセットは、
前記メインコンピュータシステムで実行されるクライアントアプリケーションから、前記アプリケーションを識別し、補助デバイスのエンドポイントにコンテンツを送ることを要求する呼び出しを受け取る登録オブジェクトであって、コンテンツマネジャオブジェクトをインスタンス化し、前記呼び出しに応答して、前記コンテンツマネジャオブジェクトへのポインタを前記アプリケーションに返すように構成された登録オブジェクトと、
前記アプリケーションからの呼び出しに応答して前記アプリケーションからコンテンツを取得し、前記アプリケーションから提供されたコンテンツを前記エンドポイントに通信するように構成された前記コンテンツマネジャオブジェクトと
を備えることを特徴とするシステム。
【請求項１０】
前記登録オブジェクトは、前記クライアントアプリケーションが、前記指定されたエンドポイントを使用してデバイスに情報を送る権限を有するかどうかを評価することを特徴とする請求項９に記載のシステム。
【請求項１１】
補助表示装置で通知を表示することを求める、前記クライアントアプリケーションからの登録要求に応答して、前記登録オブジェクトによってインスタンス化される通知マネジャオブジェクトであって、前記アプリケーションからの呼び出しに応答して前記アプリケーションから通知データを取得し、前記アプリケーションから提供された前記通知データを前記エンドポイントに通信するように構成された通知マネジャオブジェクトをさらに備えることを特徴とする請求項９に記載のシステム。
【請求項１２】
前記通知データは、タイトル、メッセージ、画像データ、および失効時間を含むセットにある少なくとも１つのデータ項目を含むことを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記クライアントアプリケーションは、前記エンドポイントに対応するコントラクトに基づいて前記補助デバイスにコンテンツを通信し、前記コンテンツマネジャは、前記コンテンツと対話しないことを特徴とする請求項９に記載のシステム。
【請求項１４】
前記アプリケーションから取得される前記コンテンツは、そのアプリケーションプログラムに固有のコンテンツ識別子で識別されることを特徴とする請求項９に記載のシステム。
【請求項１５】
別のクライアントアプリケーションをさらに備え、前記クライアントＡＰＩセットは、補助デバイスとの通信に関して前記クライアントアプリケーションを互いから隔離することを特徴とする請求項９に記載のシステム。
【請求項１６】
別のエンドポイントをさらに備え、前記クライアントアプリケーションは、それぞれが各エンドポイントに対応する別個のコントラクトに基づいて各エンドポイントにコンテンツを通信することを特徴とする請求項９に記載のシステム。
【請求項１７】
前記エンドポイントは、異なる補助デバイスの異なるプログラムに対応することを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記補助デバイスの動作状態に対応する、存続時間に関連する通知を前記クライアントマネジャに提供する存続時間マネジャをさらに備えることを特徴とする請求項９に記載のシステム。
【請求項１９】
メインコンピュータシステムと、前記メインコンピュータシステムに結合された少なくとも１つの補助デバイスとを有するコンピューティング環境において、
前記メインコンピュータシステムのクライアントアプリケーションが、特定のデバイス実装に関係なく、１つまたは複数の補助デバイスに送信すべき情報を提供するためのインターフェースと、
前記クライアントアプリケーションから補助デバイスにコンテンツまたは通知を送るために、前記インターフェースを介して前記クライアントアプリケーションを登録する手段と、
前記コンテンツまたは前記通知に対応する、前記クライアントアプリケーションから提供される情報を取得する手段と、
前記情報を少なくとも１つの補助デバイスに送信する手段と
を備えることを特徴とするシステム。
【請求項２０】
前記補助デバイスからイベントを受け取るために前記インターフェースを介して前記クライアントアプリケーションを登録する手段と、前記補助デバイスからイベントを受け取る手段と、前記イベントを前記クライアントアプリケーションに伝搬する手段とをさらに備えることを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはコンピュータシステムに関し、より詳細には、コンピュータシステムと補助デバイスの間で情報を通信する改良されたシステムおよび方法に関する。
【背景技術】
【０００２】
米国特許出願第１０／４２９，９３０号および米国特許出願第１０／４２９，９３２号は、概して、メインコンピュータシステムにいくらかの補助的な計算機能を提供する補助処理および補助機構を備えるコンピュータシステムの概念を対象とする。例えば、ラップトップコンピュータの蓋や側面にある小型のＬＣＤは、例えばラップトップコンピュータの蓋が閉じられている、かつ／またはメインコンピュータの電源が切られている時など、メインコンピュータのディスプレイを容易に見ることができない時でも、面会の場所や時刻のような有用な情報をユーザに提供することができる。ユーザが選択できる応答やサポートされる動作のセットなどのコントロールがボタンの形態などで提供されて、ユーザが、通知への応答を選択する、各種種類のデータを見る、予定表データの面会予定をスクロールして見る、電子メールメッセージを読む、指示を読むなど、補助デバイスと対話できるようにすることができる。
【０００３】
移動ホストコンピュータに内蔵された補助ＬＣＤ画面にやや類似するのは、携帯電話、音楽再生装置、ポケットサイズのパーソナルコンピュータ、携帯情報端末（ＰＤＡ）などであり、それらのデバイスは、物理的に、かつ／または無線リンク（Ｂｌｕｅｔｏｏｔｈや赤外線）を介してメインコンピュータシステムに結合された時に、または、コンピュータと結合された後の任意の時に、ディスプレイおよび／または他の機能をメインコンピュータに利用させるようにプログラムされているのであれば、デバイスがコンピュータにあったデータを保持している場合に、メインコンピュータシステムに対する補助デバイスとして機能することができる。一般に、実質的に任意の方式でコンピュータシステムとインターフェースをとることができる、入出力機能を備えたデバイスであれば、補助コンピューティングデバイスとして機能することができる可能性がある。
【０００４】
しかし、コンピュータシステムの補助ディスプレイとして機能することが可能なデバイスは潜在的に多種あるが、メインコンピュータシステムのプログラムが補助ディスプレイと対話するための既存のプラットフォームあるいはＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ；アプリケーションプログラミングインターフェース）は、現在のところ存在しない。既存のシステムは、閉じられていて、そのためにＩＳＶ（ｉｎｄｅｐｅｎｄｅｎｔ  ｓｏｆｔｗａｒｅ  ｖｅｎｄｏｒｓ；独立ソフトウェアベンダ）がプラットフォームの機能を拡張することができないか、または、補助ディスプレイに共通の対話の種類に向けて厳密に設計されておらず、したがって使用するのが平易でもなく、一貫性もないかのいずれかである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
必要とされるのは、メインコンピュータシステムで実行されるプログラムが、各種のデバイス実装の違いに関係なく、各種の補助ディスプレイと、平易に、一貫性をもって対話するための方式である。アプリケーションは、各デバイスの固有の機能に対応することを必要とされるべきでないが、必要な場合は、デバイス能力を問い合わせて、各デバイスにカスタマイズされた情報を表示できるべきである。
【課題を解決するための手段】
【０００６】
簡潔に述べると、本発明は、各種のデバイス実装の違いに関係なく、そして、（必要とされない限り）各デバイスの固有の能力に対処する必要なく、クライアントアプリケーション（メインコンピュータシステムで実行されるプログラム）が各種の補助ディスプレイと対話するための単純で一貫性のある方式を提供するインターフェースセットを含む補助ディスプレイプラットフォームを備えるシステムおよび方法を提供する。対話は、デバイスでレンダリングされる、任意の合意されたフォーマットのデータ、通知またはコンテンツを含む、クライアントアプリケーションから送られる情報を表示することを含み、また、デバイスは、クライアントアプリケーションにイベントまたはデータを送ることができる。ユーザは、どのクライアントアプリケーションのデータがどのデバイスに表示されるかを設定することができる。
【０００７】
このアーキテクチャは、補助ディスプレイＡＰＩセットを介してクライアントアプリケーションに補助デバイスを公開し、ＡＰＩセットは、一実施形態では、ＣＯＭ（ｃｏｍｐｏｎｅｎｔ  ｏｂｊｅｃｔ  ｍｏｄｅｌ；コンポーネントオブジェクトモデル）インターフェースの形態である。ＡＰＩセットは、デバイスのファームウェアおよび接続プロトコルに関係なく、各種のデバイスを共通の方式でクライアントアプリケーションに公開できるようにする。ＡＰＩセットは、システムへのクライアントアプリケーションの登録、接続された１又は複数のデバイスへのコンテンツの送信、接続された１又は複数のデバイスへの通知の送信、および、接続された１又は複数のデバイスからのイベントまたはデータの受け取りを含む、各種の機能を提供する。イベントには、ナビゲーションイベント、コンテンツ要求イベント、コンテンツ変更イベントなどが含むことができる。
【０００８】
一般に、クライアントアプリケーションは、補助デバイスにコンテンツと通知を送り、補助デバイスアプリケーションが、そのコンテンツをキャッシュおよび／またはレンダリングする。大半のデバイスおよびアプリケーションがサポートすることを推奨される、ＸＭＬスキーマに基づいてシンプルコンテンツフォーマットが記述される。ＡＰＩセットは、それを通じて送られるコンテンツは問わない。そのため、ＡＰＩセットは、データを消費するカスタムエンドポイントにカスタムデータを送信することもサポートし、その場合、エンドポイントは、通信の宛先（例えば、特定の補助デバイスアプリケーション）とデータのコントラクト（例えば、フォーマット）を指定する。補助デバイスは、クライアントアプリケーションから送られる通知を特別な領域あるいは他のコンテンツの上に表示することもでき、また、メインコンピュータシステムから提供されるデータに基づいて独自の通知を生成することもできる。ＡＰＩセットはさらに、補助デバイスからのイベントとデータの戻し（ｒｅｔｕｒｎ）を助ける。
【０００９】
一実施形態では、クライアントＡＰＩセットは、ＣＯＭインターフェースのセットからなるコード（例えば非マネージＣ＋＋コード）として実施される。クライアントアプリケーションは、各自のプロセスでオブジェクト／インターフェースのうち１つまたは複数のインスタンスを作成し、そのオブジェクトを使用して補助ディスプレイプラットフォームと通信する。
【００１０】
登録オブジェクト（例えばＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒ）は、クライアントアプリケーションが現在実行中として自身を登録するためのインターフェース（例えばＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒ）を実装する。ＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒクラスは、ＡＰＩインスタンスによって使用されているデバイスに対応するインターフェースポインタのリストを保持する。ＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒクラスは、デバイスがシステムに追加される、またはシステムから除去された時に通知するデバイスイベントも受け取り、それに応じて自身のローカルリストを更新し、また、その変更の影響を受ける可能性のある任意の既存のクライアントに通知する。ＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒクラスは、クライアントアプリケーションがデバイスを使用する権限があるかどうかを判定するための、アプリケーションとデバイスの許可確認を行う役割もある。
【００１１】
通知マネジャオブジェクトは、クライアントアプリケーションが通知を要求し、接続されたデバイスでの通知を取り消すためのインターフェース（例えばＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒ）を実装する。ＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒオブジェクトは、クライアントアプリケーションによって（例えばＲｅｇｉｓｔｅｒＮｏｔｉｆｉｃａｔｉｏｎｓメソッドを介して）通知登録要求が行われる時に通知マネジャオブジェクトをインスタンス化し、通知が可能にされる各デバイスを通知マネジャオブジェクトに知らせ（すなわちデバイスへのポインタを提供し）、要求元のクライアントアプリケーションにＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒインターフェースへのポインタを返す。アプリケーションがインターフェースを使用して通知の表示を要求すると、通知マネジャオブジェクトは、コールバックを介してクライアントアプリケーションから通知情報（例えば、タイトル、メッセージ、アイコン／画像データ、および失効時間）をプルし、そのクライアントアプリケーションによって使用されることが許可されたデバイスに通知を送る。
【００１２】
コンテンツについては、クライアントアプリケーションからのＲｅｇｉｓｔｅｒメソッドの呼び出しに応答して、コンテンツマネジャオブジェクト（例えばＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒインターフェースを実装するオブジェクト）がＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒクラスによって作成される。コンテンツマネジャオブジェクトは、登録時に渡される（クライアントアプリケーションの）アプリケーションＩＤとエンドポイントＩＤ（データの行き先）とともに初期化され、コンテンツの追加、特定コンテンツの除去、あるいはすべてのコンテンツの除去のためにクライアントアプリケーションが使用するメソッドを含むインターフェースを提供する。このインターフェースは、Ａｄｄメソッドを含み、このメソッドは、クライアントアプリケーションに問い合わせてその呼び出しに適用することが可能なプロパティの一部の値を得、その結果に基づいてデバイスを順に調べ、クライアントアプリケーションにコンテンツを要求し、デバイスにそのコンテンツを送る。アプリケーションは、そのアプリケーションに権限があるすべてのデバイスに１つのコンテンツを送ることを指定することも可能であり、デバイスの能力に合うように調整されたコンテンツなど、異なるコンテンツを異なるデバイス個々に送ることができるように指定することもできる。ｒｅｍｏｖｅの呼び出しは、各デバイスから特定のコンテンツを除去することを試みる。コンテンツは、そのアプリケーションの範囲内で一意の永続的な一意の識別子で識別される。
【００１３】
イベントについては、別のメソッドが、イベントシンク（ｅｖｅｎｔ  ｓｉｎｋ）の設定を扱い、クライアントアプリケーションが、イベント通知に使用されるインターフェースポインタを渡すことを可能にする。イベントは、デバイスの追加および除去、または、接続および切断についてのイベント通知（アプリケーション／デバイスの権限の変化で生成されるイベントを含む）、接続されたデバイスのプロパティの問い合わせに応答したイベント、キーの押下についての通知イベント、補助デバイスが現在入手できない（キャッシュにある、またはその他の）コンテンツを必要とする時に生成されるコンテンツ要求イベントを含むことができる。補助デバイスのアプリケーションは、デバイスナビゲーションイベント、選択イベント、コンテンツメニューの動作に関連するイベントなど、イベントを生成することもできる。他のイベントは、例えばデータの必要性を予期したイベントなど、事前対応型であってよい。イベントの特定のセマンティックと内容は、エンドポイント（例えば、デバイスアプリケーション）によって定義されるが、一般には、イベントは、発生元のデバイス、発生元のデバイスアプリケーション／エンドポイント、そのイベントに付随するデータを識別する。
【００１４】
この他の利点は、図面と併せて以下の詳細な説明を考察することから明らかになろう。
【発明を実施するための最良の形態】
【００１５】
（例示的動作環境）
図１は、本発明を組み込むことができるパーソナルコンピュータシステムの形態のコンピューティングデバイス１２０を表すブロック図である。当業者には理解されるように、図１に示すパーソナルコンピュータシステム１２０は、例示的なものに過ぎず、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサを利用した、あるいはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ヘッドレスサーバなどを含む、他のコンピュータシステム構成で実施してよい。本発明は、通信ネットワークを通じてつながれた遠隔の処理デバイスによってタスクが行われる分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に置くことができる。
【００１６】
パーソナルコンピュータシステム１２０は、処理装置１２１、システムメモリ１２２、および、システムメモリを含む各種のシステム構成要素を処理装置１２１に結合するシステムバス１２３を含む。システムバス１２３は、各種のバスアーキテクチャのいずれかを使用した、メモリバスあるいはメモリコントローラ、ペリフェラルバス、ローカルバスを含む数種のバス構造のいずれでもよい。システムメモリは、ＲＯＭ（読み取り専用メモリ）１２４とＲＡＭ（ランダムアクセスメモリ）１２５を含む。起動時などにパーソナルコンピュータ１２０内の要素間の情報転送を助ける基本ルーチンを含んだ基本入出力システム（ＢＩＯＳ）１２６は、ＲＯＭ１２４に記憶される。パーソナルコンピュータ１２０はさらに、図示しないハードディスクの読み書きを行うハードディスクドライブ１２７、取り外し可能磁気ディスク１２９の読み取りまたは書き込みを行う磁気ディスクドライブ１２８、および、ＣＤ−ＲＯＭや他の光学媒体などの取り外し可能光ディスク１３１の読み取りまたは書き込みを行う光ディスクドライブ１３０を含むことができる。ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０は、それぞれハードディスクドライブインターフェース１３２、磁気ディスクドライブインターフェース１３３、光学ドライブインターフェース１３４でシステムバス１２３に接続される。これらのドライブとそれに関連付けられたコンピュータ読取可能媒体は、パーソナルコンピュータ１２０のためのコンピュータ読取可能命令、データ構造、プログラムモジュール、および、他のデータの不揮発性の記憶装置を提供する。ここで説明する例示的コンピュータシステムはハードディスク、取り外し可能磁気ディスク１２９、および取り外し可能光ディスク１３１を用いるが、当業者には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み取り専用メモリ）など、コンピュータからアクセスできるデータを記憶することができる他の種類のコンピュータ読取可能媒体も例示的コンピュータシステムで使用してよいことを理解されよう。
【００１７】
ハードディスク、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４、またはＲＡＭ１２５には複数のプログラムモジュールを記憶することができ、それには、オペレーティングシステム１３５（Ｗｉｎｄｏｗｓ（登録商標）ＸＰなど）、１つまたは複数のアプリケーションプログラム１３６（Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｏｕｔｌｏｏｋなど）、他のプログラムモジュール１３７、およびプログラムデータ１３８が含まれる。ユーザは、キーボード１４０やポインティングデバイス１４２などの入力装置を通じてパーソナルコンピュータ１２０にコマンドと情報を入力することができる。他の入力装置（図示せず）として、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ等を含むことができる。上記および他の入力装置は、多くの場合、システムバスに結合されたシリアルポートインターフェース１４６を通じて処理装置１２１に接続されるが、パラレルポート、ゲームポート、または、ＵＳＢ（ユニバーサルシリアルバス）などの他のインターフェースで接続してもよい。モニタ１４７あるいは他の種類の表示装置も、ビデオアダプタ１４８などのインターフェースを介してシステムバス１２３に接続される。モニタ１４７に加えて、パーソナルコンピュータは通例、スピーカやプリンタなどの他の周辺出力装置（図示せず）を含む。補助ディスプレイ２００は、追加的な出力装置であり、例えば補助ディスプレイインターフェース１５５を介してシステムバス１２３に接続されることができる。補助ディスプレイ１０１は、パラレルポート、ゲームポート、赤外線あるいは無線接続、ＵＳＢ（ユニバーサルシリアルバス）、その他の周辺装置接続など、シリアルインターフェースあるいは他のインターフェースでコンピューティングデバイス１２０に接続されることもできる。図１の入力装置２０１は、補助ディスプレイ２００とのインターフェースをとり、および／または、制御する、１つまたは複数のアクチュエータを備えることができ、例えば、補助表示装置の一部とすることができるが、それに代えて、補助表示装置から独立させ、入力装置インターフェース１５６を介してシステムバス１２３に接続してもよく、入力装置インターフェース１５６は、シリアルインターフェース、またはパラレルポート、ゲームポート、赤外線あるいは無線接続、ＵＳＢ（ユニバーサルシリアルバス）、他の周辺装置接続などの他のインターフェースである。
【００１８】
パーソナルコンピュータ１２０は、リモートコンピュータ１４９などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、あるいは他の一般的なネットワークノードであり、図１にはメモリ記憶装置１５０のみを示すが、通例はパーソナルコンピュータ１２０との関連で上述した要素の多くまたはすべてを含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１５１とＷＡＮ（ワイドエリアネットワーク）１５２を含む。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【００１９】
ＬＡＮネットワーキング環境で使用される場合、パーソナルコンピュータ１２０は、ネットワークインターフェースあるいはアダプタ１５３を通じてローカルネットワーク１５１に接続される。ＷＡＮネットワーキング環境で使用される場合、パーソナルコンピュータ１２０は通例、インターネットなどのワイドエリアネットワーク１５２を通じて通信を確立するためのモデム１５４あるいは他の手段を含む。モデム１５４は、内蔵型でも外付け型でもよく、シリアルポートインターフェース１４６を介してシステムバス１２３に接続される。ネットワーク環境では、パーソナルコンピュータ１２０との関連で図示するプログラムモジュールあるいはその一部は、遠隔のメモリ記憶装置に記憶することができる。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を用いてよいことは理解されよう。
【００２０】
コンピュータシステムは、補助デバイスが本発明により機能するために完全に稼動している必要はないことに留意されたい。実際には、補助デバイスは、コンピュータシステムがスリープ状態あるいは休止モードにある時、および／またはユーザがまだログオンしていない時、あるいは他の形でセキュリティ機構を介してシステムから締め出されている時など、コンピュータの電源が切られている時でも、少なくともデフォルトの程度まで、またはユーザによって設定された程度まで機能することができる。
【００２１】
補助デバイスは、メインディスプレイを補助することができ、メインディスプレイの電源が切られている時や、他の理由で稼動していない時（例えば接続が切断されている時）に代理ディスプレイとしても機能してユーザにいくらかの情報を与えることができる。例えば、メインディスプレイの電源が切られている時および／または容易に見ることができない（ラップトップの蓋が閉じられているなど）時にユーザが見ることができる、移動コンピュータに接続された補助表示装置で、メインディスプレイの電源の入れ方や部屋番号および／または面会の道順などの情報を得られると役に立つ可能性がある。補助デバイスは、オーディオおよび／またはビデオの再生、画像の表示、予定表情報の表示、電子メールの表示等を行うことができる。
【００２２】
そうした電源が切られたモードで通信を可能にし、制御するために、不揮発性メモリに記憶されたファームウェアが存在する場合があり、そのファームウェアがロードされ、補助プロセッサによって操作されると、いくらかの電力が得られる限り、他の補助コンポーネントとともに補助ディスプレイを使用することができる。ここで使用される用語「ファームウェア」と「デバイスハードウェア」は基本的に同義であり、一般には、補助メモリ、その中のコード、および／またはそのコードが実行される補助プロセッサを表すものと考えることができることに留意されたい。
【００２３】
図２Ａ〜２Ｅに、それぞれ補助ディスプレイ画面２００a〜２００eを配置するコンピューティングデバイス表面における例示的位置、あるいはコンピューティングデバイスに関連する例示的位置を示す。図２Ａおよび２Ｂに示すように、補助ディスプレイ画面２００ａは、独立型の（地上の通信線（ｌａｎｄｌｉｎｅ）あるいは携帯）電話２０２の前面、後面、あるいは他の面（Ｂｌｕｅｔｏｏｔｈ技術などを介して他の形でリンクされる場合は物理的に結合される必要はない）に配置することができ、かつ／または別の補助ディスプレイ画面２００bは、移動コンピュータ２０４あるいはタブレットコンピューティングデバイス（図示せず）の端部あるいは蓋に配置されることができる。補助ディスプレイ画面２００cの別の場所（図２Ｃ）は、コンピュータに取り付けられた電話機の表面、またはモニタ２０６やキーボード（図示せず）の表面などコンピュータに接続された周辺装置である。図２Ｄおよび２Ｅに、それぞれ、コンピュータに接続された独立型コンソール２０８の前面パネルにある補助ディスプレイ画面２００dと、または何らかの他の筐体２１０（マザーボードの筐体など）の表面にある補助ディスプレイ画面２００eの追加的な配置を示す。当業者は、補助ディスプレイ画面は、任意のコンピューティングデバイス、あるいはコンピュータとの無線接続あるいは他の接続を有する腕時計、遠隔制御装置、遠隔の壁に取り付けられるユニットなど、表示機能を有する他のデバイスの任意の面に配置できることを認識されよう。実際、接続はＬＡＮ、ＷＡＮ、あるいはインターネットを介する場合もあるので、補助ディスプレイは、物理的にメインコンピュータシステムの近くにある必要はない。
【００２４】
図２Ａ〜２Ｅから明らかになるように、補助ディスプレイは、１つまたは複数のＬＥＤ、２行の英数文字ディスプレイ、モノクロディスプレイ、カラーディスプレイなど、いくつもの知られる種類のディスプレイの形をとることができる。当業者は、本発明では、他のコンピューティングデバイスあるいは通信デバイスのディスプレイを補助ディスプレイ２００として使用することもできることを認識されよう。そうした他のコンピューティングデバイスあるいは通信デバイスには、汎用コンピュータ、携帯電話、および、ページャや携帯情報端末（ＰＤＡ）などのハンドヘルドデバイスが含まれる。また、本発明は、ユーザがログインする前を含めて、コンピューティングデバイス１２０の画面表示の領域内（例えばスクリーンセーバやグラフィカルユーザインターフェースのコンポーネントなど）に実装される仮想的な補助ディスプレイを補助ディスプレイ２００として使用することもできる。補助ディスプレイ２００は、上記の形態の任意の組合せを含むことができ、また、１つまたは複数のＬＥＤなどの表示器と物理的または論理的に組み合わせても、かつ／または仮想的な補助ディスプレイと併用してもよい。
【００２５】
補助デバイスは、画面がなくとも、あるいは画面の電源が切られている時でも機能を提供することができる。例えば、補助デバイスは、オーディオの再生、データの収集（例えば、後にメインコンピュータにダウンロードするために）、計算を行うなどすることができる。また、ディスプレイは、フル画面でなく、１つまたは複数のＬＥＤなどからなることができる。したがって、補助ディスプレイ画面を備えることから多くの利益と利点が得られ、したがって、ここでは補助デバイスを補助ディスプレイと呼ぶことができるが、ディスプレイは必須ではない。一般に、ここで称されるところの補助ディスプレイは、視覚的表現、音声表現、および／または触覚による表現を含めて、感知することが可能なものであれば基本的に何から構成されてもよい。
【００２６】
（補助デバイスとプログラムの対話のためのインターフェース）
本発明は一般には、補助デバイスに表示するコンテンツ、通知、他の情報などを提供するため、そして可能性としては、補助デバイスとのユーザ対話に基づくイベントなど、デバイスからの戻り情報を得るための補助デバイスとの通信を対象とする。理解されるように、必ずしもディスプレイを備えないが、音や光などの何らかの出力を提供することができるものを含めて、補助表示装置として機能することが可能な多種のデバイスがある。ここでは、ラップトップの蓋に取り付けられたディスプレイ、携帯電話、ポケットサイズのパーソナルコンピュータ、デジタル画像を利用する写真フレーム、台所用ディスプレイ、テレビジョン、メディアプレーヤ、目覚ましや腕時計などを含む時計を含むいくつかの例を使用するが、本発明はそれらのどの例にも制限されず、補助「ディスプレイ」と称される場合でも、感覚情報を出力することが可能な任意のデバイスの使用を企図する。例えば、他の種類のデバイスには、家電製品（冷蔵庫、ホームシアター受信機、ＤＶＤプレーヤなど）のメインディスプレイに埋め込まれた、あるいはそのようなメインディスプレイを使用する補助デバイス、壁掛けディスプレイ、自動車、輸送あるいは他の車両ユニット（例えば車／列車／飛行機にすでに備わるディスプレイを補助ディスプレイとして使用する）、メインコンピュータシステムのキーボードあるいは他の入力装置、ＰＤＡ（非携帯電話、ＰＤＡを含む）などが含まれる。同様に、本発明は、補助ディスプレイを別のコンピュータシステムに結合するなんらかの特定の機構には制限されず、したがって、本明細書で用いられる有線または無線の例に制限されない。接続は、ＬＡＮまたはＷＡＮを通じる、あるいはインターネットを通じた仮想私設接続（ｖｉｒｔｕａｌ  ｐｒｉｖａｔｅ  ｃｏｎｎｅｃｔｉｏｎ）を通じるなど、比較的近くにあっても、比較的遠隔にあってもよく、基本的にどこにあってもよい。
【００２７】
図３に移ると、補助ディスプレイＡＰＩセット３０４を介して、アプリケーション３０２および他のプログラム（オペレーティングシステムコンポーネントなど）を備えるクライアントに補助デバイス３００および／または３０１を公開する例示的アーキテクチャを示す。下記で説明する実施形態では、ＡＰＩセット３０４は、Ｃ＋＋でアクセス可能なＣＯＭ  ＡＰＩの形態である。ＡＰＩ３０４は、クライアントアプリケーション３０６（プログラムのコンポーネントまたは場合によりプログラム自体）のシステムへの登録、接続されたデバイスへのコンテンツの送信、接続されたデバイスへの通知の送信、および接続されたデバイスからのイベントの受け取りを含む各種機能のためのＡＰＩを提供する。イベントは、ナビゲートイベント、コンテンツ要求イベント、コンテンツ変更イベントなどを含むことができる。
【００２８】
下記で述べる本発明の各種態様によれば、ＡＰＩセット３０４を使用することで、ＡＰＩセット３０４を使用するクライアントに「補助ディスプレイシステム」だけを公開する。個々のデバイスへの他の（ＡＰＩを介さない）アクセスは、実現可能であるが、必須ではない。その結果、独立ソフトウェアベンダにとっては、（ＡＰＩセット３０４を介して）クライアントアプリケーションとしてプログラムコンポーネントを登録すると、デバイスの実際の種類および機能に関係なく、同じＡＰＩセット３０４への別の呼び出しを使用してどの補助デバイスにもコンテンツを送ることができる。ユーザエクスペリエンス（ｅｘｐｅｒｉｅｎｃｅ）は様々に異なる可能性があるが、アプリケーションは、存在する補助デバイスに合わせて適合する必要はない。アプリケーションは、補助デバイスの能力情報を得ることもでき、その能力に応じて異なる形で動作することを選択することもできるが、アプリケーションは、デバイスを使用するためにそのようにする必要はないことに留意されたい。この理由は、本発明は、さらなる通信を扱うアーキテクチャを提供し、なんらかの特定のデバイスに合うようにデータを調整することを含む複雑なタスクからアプリケーションを解放するためである。
【００２９】
ＡＰＩ層３０４は、携帯デバイスＡＰＩセット３１０の上に書かれ、ＡＰＩセット３１０は、ユーザモードドライバフレームワーク３１２を介してデバイスのドライバプロセスと通信する。携帯デバイスＡＰＩセット３１０は、ＭＰ３プレーヤ、デジタルカメラなどの携帯デバイスとの接続を可能にし、補助ディスプレイによって利用される。携帯デバイスＡＰＩセット３１０は、補助ディスプレイを携帯デバイスのカテゴリの１つに対応付け、デバイスの機能の列挙を可能にする。
【００３０】
一般に、クライアントアプリケーション３０６は、コンテンツと通知とを補助デバイスに送信する。デバイスは、通知を表示することができるだけでなく、メインコンピュータシステムから提供されるデータに基づいて独自の通知を生成することもできる。デバイスは、イベントの形で情報をクライアントアプリケーション３０６に返す。アプリケーション層より下にあり、デバイスドライバ３２４および３２５より上にあるコンポーネントを一般的に「補助ディスプレイプラットフォーム」と呼ぶことができることに留意されたい。
【００３１】
図４に概略的に示す一実施形態では、プラットフォームは、携帯デバイスＡＰＩセット３１０と、ユーザモードドライバを実行するためのサンドボックス環境であるユーザモードドライバフレームワーク（ＵＭＤＦ。ＵＷＤＦ（Ｕｓｅｒｍｏｄｅ  Ｗｉｎｄｏｗｓ（登録商標）  ｄｅｖｉｃｅ  ｆｒａｍｅｗｏｒｋ）とも称する）とを含む既存のコンポーネントを利用して、補助表示装置と通信するための統一された方式を提供する。本発明によれば、デバイスのファームウェアと接続プロトコルに関係なく、各種種類のデバイスが共通の方式で公開される。
【００３２】
図３に示すブロック図に戻ると、複数のデバイスがコンピュータに結合されて、同時に補助ディスプレイとして機能することができる。ユーザは、（例えば、コントロールパネルなどを介して）どのクライアントアプリケーションのデータがどのデバイスに表示されるかを設定することができる。システムデータプロバイダ３０８も、時刻データ、無線信号強度データ、コンピュータのオーディオ音量およびミュート状態、および／またはバッテリレベルデータなどのシステム情報を補助ディスプレイに供給することができる。一実施形態では、補助ディスプレイプラットフォームは、クライアントアプリケーション３０６がコンテンツを送ると、システムで保持されているマトリックスを調べて、どの１つのデバイスまたは複数のデバイスがその情報を受け取るかを判定する。また、補助ディスプレイプラットフォームのＡＰＩ３０４は、マトリックスを使用してイベントを１つのクライアントアプリケーション（または複数のクライアントアプリケーション）に適宜送ることにより、補助デバイスからクライアントアプリケーション３０６へイベント（および可能性としては他の情報）も送る。
【００３３】
図３のディスプレイ３０１などの特定種類の補助デバイスは、特定のＳＰＯＴ（Ｓｍａｒｔ  Ｐｅｒｓｏｎａｌ  Ｏｂｊｅｃｔ  Ｔｅｃｈｎｏｌｏｇｙ）ファームウェアと特定のレンダリングコードで構成され、特に、ＡＰＩ３０４を介して受信可能などのような情報とも一般に互換性があるので、「高機能」ディスプレイとみなされる。例えば図３の基本リモート補助（携帯電話機）ディスプレイ３００など、ここで「基本」ディスプレイと称する他の補助デバイスは、他のカスタムファームウェアを実行するが補助ディスプレイとして働くことが可能な任意の補助表示装置からなる。ユーザモードドライバフレームワークは、デバイスドライバ（３２４および３２５など）を補助ディスプレイプラットフォームに結合するデバイスドライバインターフェース（ＤＤＩ）を提供する。そして、ドライバは、ＡＰＩで受け取られた情報に対応するデータを、補助ディスプレイデバイスに通信するために、該当するハードウェアインターフェース（トランスポート）に転送する。例えば、図３では、基本デバイスドライバ３２４は、デバイス３００に無線通信（例えばＢｌｕｅｔｏｏｔｈ、Ｗｉ−Ｆｉ、ＡＭ／ＦＭ赤外線など）するために、（あらかじめ定義されたプロトコルを介して）リモートスタックおよびドライバ２３７にデータを転送するとして示されているのに対して、高機能デバイスドライバ３２５は、ＵＳＢを利用するハードウェア３２８にデータを転送するとして示されているが、ＴＣＰ／ＩＰを利用する移送などのネットワーク移送を含む他の種類の移送が実現可能である。理解されるように、これらの接続は、例示の目的でのみ示しており、どのデバイスドライバでも、無線通信または有線通信するためのデータを適宜転送する。
【００３４】
本発明の一態様は、補助ディスプレイプラットフォームへのプログラムによるアクセスを可能にするパブリックＡＰＩセット３０４を対象とする。クライアントＡＰＩセット３０４は、プラットフォームへのアクセスをサポートし、下記で説明するように、インスタンス化と登録、コンテンツ管理（データの送信を含む）、通知の管理、能力の問い合わせ、およびイベンティングのための機構を提供する。クライアントアプリケーションがデバイスに送るコンテンツは、そのアプリケーションが登録されたエンドポイントに応じて決まる。上記で述べたように、大半のデバイスがサポートする汎用的なフォーマットの１つはシンプルコンテンツフォーマットであり、このフォーマットは、例えば、様々なディスプレイ機能を備える各種のデバイスにわたって機能するクライアントアプリケーションを開発する際にＩＳＶに柔軟性を提供するレイアウトプリミティブを記述するＸＭＬスキーマに基づく。例えば、シンプルコンテンツフォーマットは、画像とテキストで構成されるコンテンツページ、アクションとして選択可能な、スクロール可能な項目一覧を備えるメニューページ、ユーザインターフェースのダイアログボックスとオプションからなるダイアログ、および、例えばユーザが状況に応じた動作を起動することができるコンテクストメニューをサポートすることができる。
【００３５】
クライアントＡＰＩセット３０４は、カスタムデータを、そのデータを消費するカスタムエンドポイントに送ることもサポートし、エンドポイントは、通信の宛先（例えば、特定の補助デバイスアプリケーション）とそのデータのコントラクト（例えば、フォーマット）を指定する。ＡＰＩセット３０４はさらに、補助デバイスからのイベントの戻しと、補助デバイスに通知を送ることを容易にする。
【００３６】
本発明の一態様によれば、どの補助デバイスでもレンダリングすることが可能なフォーマットのコンテンツをＩＳＶが提供できるようにすることにより、補助デバイスプラットフォームを拡張する機構が提供される。そのために、クライアントＡＰＩ３０４は、ＩＳＶが補助ディスプレイプラットフォームに合わせて自社のアプリケーションを拡張するために使用するフレームワークを提供する。下記で説明するように、クライアントアプリケーションがプラットフォームに登録すると、ＡＰＩセット３０４は、デバイスにコンテンツをプッシュし、かつ、デバイスからのイベントに応答するための機構を提供する。
【００３７】
図５を参照すると、クライアントアプリケーション３０６は、メインコンピュータシステムに最初にインストールされる際に自身を登録することができる。そのために、アプリケーション３０６がインストールされる時に、図５の矢印１で表すように、インストールに関連するデータ５３８がレジストリ５４０に書き込まれる。補助ディスプレイの機能に関して、インストールは、アプリケーションの通常のインストールプロセスの際に、補助ディスプレイに関連するレジストリキーの指定されたセットを書き込むことを含む。アプリケーションは、そのタイトル、アイコン、およびサポートされるエンドポイントを含むいくつかの重要な値をこの時に指定する。例えば、メインのレジストリキーは、[HKCU|HKLM]＼Software＼Microsoft＼Windows＼AuxiliaryDisplay＼Applications＼<ApplicationID>であり、その特定のクライアントアプリケーションを一意に識別するＧＵＩＤの形態のアプリケーションＩＤ（存続時間管理のためのＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＡｐｐｌｉｃａｔｉｏｎインターフェースを実装するＣＯＭオブジェクトのＣＬＳＩＤも表す）；クライアントアプリケーションの名前を記述する、人間が読むことのできるテキスト文字列からなるフレンドリー名；大抵の場合はファイル名とリソースＩＤとして記憶される、クライアントアプリケーションを表すアイコン（コンピュータパネルやデバイスのシェルなどで表示される）；そのクライアントアプリケーションがデータを送信する（複数の）デバイスアプリケーションを含むエンドポイントＩＤの優先順位リスト、を参照することができる。最大数が実施される可能性があり（ａ  ｍａｘｉｍｕｍ  ｎｕｍｂｅｒ  ｍａｙ  ｂｅ  ｅｎｆｏｒｃｅｄ）、優先順位が明確になるようにエンドポイントは数値で表されることができる（Ｅｎｄｐｏｉｎｔ０，Ｅｎｄｐｏｉｎｔ１）。また、（例えば、システム管理者による）ポリシーは、補助ディスプレイに関してアプリケーションが要求する事を何でも却下することができ、例えばアプリケーションのデバイスの使用を阻止することができることに留意されたい。
【００３８】
補助ディスプレイアプリケーションのインストールプロセスでは、ユーザがデバイス上で使用可能にするために、補助ディスプレイのコントロールパネルでクライアントアプリケーションを利用できるようにする。そのために、インストールが行われる時にユーザに通知を表示することができ、図５では、これは矢印２Ａで表され、レジストリに関連付けられたコード５４２（例えばレジストリエディタコード）は、通知５４４を介して、新しくインストールされたクライアントアプリケーションについての情報５４８が利用できることをユーザインターフェース５４６に通知する。
【００３９】
そして、図５の矢印３で表すように、ユーザは、コントロールパネルウィンドウ５５０などを起動して、そのクライアントアプリケーションに接続する１つの補助デバイスまたは複数の補助デバイスを選択することができ、すなわち、そのクライアントアプリケーション３０６を、ユーザの１つの補助表示装置または複数の補助表示装置のいずれか１つで使用できるようにすることができる。通知５４４は、ユーザがコントロールパネルウィンドウで正しいアイコンを選択して補助ディスプレイでそのアプリケーションを使用できるようにすることを助ける、命令、リンク、あるいは同様の情報を提供できることに留意されたい。上記で述べたように、選択を助けるために、チェックボックスのテーブル（許可テーブル）などが提供されて、新しくインストールされたそのクライアントアプリケーション３０６を使用可能にする１つまたは複数の補助デバイスをユーザが選択できるようにすることができる。
【００４０】
容易に理解できるように、ユーザは、コントロールパネルあるいは同様の機構を使用して、すでにインストールされているが使用可能にされていないアプリケーションを使用可能にする、以前に使用可能にされたアプリケーションを使用不可にする、アプリケーションを使用可能にする１つのデバイスまたは複数のデバイスを変更する、等することもできる。したがって、図５では、クライアントアプリケーションが実行される時、そのアプリケーションは、１つまたは複数の補助デバイスとともに使用可能にしても、しなくてもよいが、使用可能にしない場合は、実行される時に使用可能にすることができる。例えば、実行中のアプリケーションの登録要求５５２の際に（下記で図７および図８を参照して説明する）、すでに使用可能になっているのでなければ、登録コード５５４が通知５４４を送信することができる。そのような時に、ユーザは、１つまたは複数の補助デバイスについてそのアプリケーションを使用可能にするかどうかを決定することができる。ユーザは、１つまたは複数の補助デバイスについてアプリケーションを使用可能にするか使用不可にするかをアプリケーションの実行中に決定することもでき、クライアントアプリケーションにとって、それらの変更は、それぞれ「デバイス追加」イベントと「デバイス削除」イベントとして見える。
【００４１】
ここに記載される実施形態では、ユーザ（またはより高いレベルのポリシー）は、どのアプリケーションがどのデバイスにコンテンツを送ってよいかについての決定権を常に有することに留意されたい。自動的な使用可能化が実現可能であるが、セキュリティ上の観点からはそれは望ましくなく、したがってこの実施形態では、クライアントアプリケーションがインストールプロセス中に補助デバイスとともに動作できるようにするプログラムによる方式はない。
【００４２】
クライアントアプリケーション３０６は、使用可能にされると、プラットフォームを呼び出して、ユーザによって権限を与えられたデバイスに登録することができ、その後はそれら権限を与えられたデバイスにコンテンツを提供することができる。登録と通信については図７〜９を参照して下記で説明する。本発明の各種態様によれば、デバイスの管理作業はプラットフォームによって対処されるので、クライアントアプリケーションは、デバイスの管理を扱わなくてよい。代わりに、クライアントアプリケーションは、下記で述べるように、ＡＰＩセット３０４（図３）を使用してコンテンツと通知を送信することができる。クライアントアプリケーションは、オフライン状態でのアクセスを可能にする等のためにキャッシングをサポートするデバイスにデータをキャッシュすることができ、それにより、ユーザは、アプリケーションによってデバイスにキャッシュされたコンテンツを見ることができることに留意されたい。一実施形態では、セキュリティ上の理由から、アプリケーションは、補助デバイスにキャッシュされるコンテンツを送ることはできるが得ることはできず、あるいは、下記で述べるように補助デバイスからイベントを受け取ることのみができることに留意されたい。しかし、アプリケーションが、補助デバイスにキャッシュされたコンテンツを読み出すことができるシステムは容易に提供することができる。
【００４３】
キャッシュの代わりに（あるいはキャッシュに加えて）、アプリケーションは、ユーザが要求した時に、要求に応じて（オンデマンドで）そのコンテンツを提供することもできる。そのオンデマンドのシナリオでは、ユーザが補助ディスプレイを介してクライアントアプリケーションと対話すると、プラットフォームは、表示するコンテンツをアプリケーションに要求し、ＡＰＩセット３０４を介してコンテンツを受け取り、そのコンテンツをデバイスに送る。メインコンピュータシステムがオンライン状態の時には、プラットフォームは、アプリケーションにイベントを提供することもでき、そのため、アプリケーションは、補助デバイスとのユーザ対話コマンドに対応するイベントを受け取るなど、ユーザが行っている動作を認識する。
【００４４】
このプラットフォームは、コンテンツを通信するためのＡＰＩセットとシンプルコンテンツフォーマットを介して、各種のデバイス、そのファームウェア、そのデバイスでデータを一般にレンダリングするために必要とされる通信チャネルとドライバについての特別な知識を、クライアントアプリケーションが持つ必要性をなくす。このようにして、この設計は、ＩＳＶが、デバイス管理とワイヤプロトコルの詳細に対処せずに済むようにする。したがって、ＡＰＩセットを含むプラットフォームアーキテクチャは、ＩＳＶが、接続された補助表示装置、特にシンプルコンテンツフォーマットをサポートするデバイスにコンテンツを提供することを可能にし、その結果、クライアントアプリケーションは、どの準拠デバイスでもレンダリングすることが可能なデータを提供することができる。下記で述べるように、このフォーマットは、基本的なテキストと画像のレイアウトに加え、メニューとダイアログも提供する。このプラットフォームは、ＩＳＶがコンテンツをカスタマイズすること（色のサポートに応じて異なるコンテンツを提供する等）を決定した場合には、デバイス能力も公開する。
【００４５】
さらに、デバイスは、シンプルコンテンツフォーマット以上のものをサポートすることができ、例えば、カレンダー（例えばｖＣａｌｅｎｄａｒ）、連絡先情報（例えばｖＣａｒｄ）のための追加的なエンドポイント（拡張されたデータフォーマット）、あるいはデバイスが理解することができる他のフォーマットをサポートすることができる。デバイスでサポートされるデータフォーマットは、デバイスのみによって制限され、メインコンピュータシステムで実行されるクライアントアプリケーションは、補助ディスプレイプラットフォームを使用して、任意の相互に理解されるデータフォーマットを使用して補助ディスプレイと通信することができる。
【００４６】
要約すると、補助ディスプレイＡＰＩセット３０４（図３）は、メインコンピュータシステムで実行される、権限を持つクライアントアプリケーションが、補助表示装置にデータをレンダリングするためにコンテンツと通知とを送信することを可能にする。プラットフォームはデバイス接続と管理を提供し、システムコントロールパネルは、補助ディスプレイの設定のユーザ制御を提供する。ＡＰＩは、アプリケーションがデバイスにコンテンツと通知とを送り、またデバイスからイベントを受け取ることを可能にする。このアーキテクチャは、プラットフォームとＡＰＩセットがＩＳＶアプリケーションを抽象化して、各補助表示装置の固有の特性を理解せずに済むようにすることを含めて、様々なレベルでの拡張性を可能にする。デバイス能力は要求される場合にのみ公開される。さらに、補助ディスプレイがどのように接続されるかはアプリケーションにとって関係がない点で、補助ディスプレイプラットフォームは接続に依存せず、補助ディスプレイの接続は、適切なユーザモード補助ディスプレイトランスポートドライバが存在する限り、例えばＵＳＢ、Ｂｌｕｅｔｏｏｔｈ、ＴＣＰ／ＩＰなど、今後導入されるプロトコルを含めて、基本的にどのような接続および／またはプロトコルを介してもよい。
【００４７】
上記で述べたように、クライアントアプリケーションは、エンドポイントと称されるものを使用してデバイスと通信する。エンドポイントは、通信の宛先（例えばカレンダーデバイスアプリケーション）と、アプリケーションとエンドポイントの間で渡されるデータのコントラクト（例えばｖＣａｌｅｎｄａｒフォーマット）を指定する。このモデルでは、アプリケーションは、通信することができるエンドポイントを指定し、一方、デバイスは、サポートするエンドポイントを指定する。そして、プラットフォームは、同じエンドポイントをサポートするデバイスとアプリケーション間に通信を確立する。
【００４８】
エンドポイントは、デバイスと通信する際にメインコンピュータシステムによって使用される一意の識別子（ＧＵＩＤなど）で表される。デバイス上の各デバイスアプリケーションは、メインコンピュータシステムからのデータを受け付けることができる１つまたは複数のエンドポイントを公表することができる。エンドポイントは、デバイスにまたがって一貫性のある、よく知られた項目とみなされる。エンドポイントは、メインコンピュータシステムとの間でデータを通信するために使用されるデータフォーマットを指定し、クライアントアプリケーションは、エンドポイントコントラクトの一部として、それが通信するエンドポイントに合わせて正しくデータをフォーマットする責任がある。エンドポイントの例には、シンプルコンテンツレンダラ（データフォーマットはシンプルコンテンツフォーマット）、カレンダーレンダラ（データフォーマットはｉＣａｌ）、および通知エンジンが含まれる。
【００４９】
図６に、ＰＩＭ（personal information manager；パーソナル情報マネジャ）アプリケーション６７０、メディアアプリケーション６７２、電話アプリケーション６７４を含む様々な例示的なクライアントアプリケーションが、高機能ディスプレイ６７６と携帯電話６７８からなる例示的デバイスと通信する方式を示す。アプリケーションは、エンドポイントにデータを提供し、プラットフォームはそのエンドポイントを使用して、そのデータを伝達する１つのデバイスまたは複数のデバイスを判定する。したがって、図６の例では、ＰＩＭアプリケーション６７０は、高機能ディスプレイ６７６によってデータのコピー６８１として消費されるカレンダーエンドポイントデータ６８０を指定し、高機能ディスプレイ６７６は、ブロック６８２および６８３で表すように、メディアアプリケーション６７２からの一般的なエンドポイントデータも消費する。携帯電話６７８は、ブロック６８２、６８４、６８５で表すように、ＰＩＭアプリケーション６７０とアプリケーション６７２からの一般的なデータを消費する。携帯電話６７８は、ブロック６８６および６８７で表すように、電話エンドポイントデータも消費する。図６の例には図示しないが、サポートできるエンドポイントの他の例には、電子メールデータと連絡先データがある。
【００５０】
本発明には必須ではないが、特定のコンテンツのために特定のコンテンツ識別子を確保することができる。例えば、最上位アプリケーションの「要約」情報が（コンテンツＩＤ「０」のメタデータとして）各クライアントアプリケーションのコンテンツＩＤ名前空間に保持されて、そのアプリケーションの最上位の要約情報として表示されるデータを指示する。要約情報は通例簡潔なデータであり、アプリケーションにとっては、デバイスのメインメニューに表示する非常に重要なデータとみなされる（１行ディスプレイの場合は、それが、表示される唯一のコンテンツである場合もある）。例えば、電子メールレンダラの場合、最上位アプリケーションの要約情報は「７件の未読メッセージ」であり、一方、カレンダーアプリケーションの場合、最上位アプリケーション要約情報は、次の面会予定の時刻と場所を記述することができる。ＡＰＩによって要約情報を強制的にフォートすることが可能であり、例えば、データが受け付けられるために、Ｕｎｉｃｏｄｅのｎｕｌｌで終わる文字列としてデータを提供する必要があるようにすることができる。
【００５１】
一実施形態では、図７に概略的に表すように、パブリッククライアントＡＰＩセット３０４は、ＣＯＭインターフェースのセットからなる非マネージコードとして実施される。クライアントアプリケーションは、各自のプロセスでオブジェクト／インターフェースのうち１つまたは複数のインスタンスを作成し、それらのオブジェクトを使用して補助ディスプレイプラットフォームと通信する。主要なクラスとそのクラスが実装するインターフェースを示す一般的なアーキテクチャの図が図７に示される。各ＣＯＭオブジェクトは、図を簡潔にするために図７から省略したＩＵｎｋｎｏｗｎインターフェースも提供することに留意されたい。
【００５２】
構成マネジャ７６０は、デバイスとアプリケーションの構成情報を扱う、共有される内部コンポーネントを備える。ＣＲｅｇｉｓｔｒａｒクラス（オブジェクト）７６２は、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒインターフェースとＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒ  ＣｏＣｌａｓｓを実装する。ＣＲｅｇｉｓｔｒａｒクラス７６２は、ＡＰＩインスタンスによって使用中のデバイスに対応するＩＰｏｒｔａｂｌｅＤｅｖｉｃｅインターフェースポインタのリストを保持する。このリストは、ＲｅｇｉｓｔｅｒまたはＲｅｇｉｓｔｅｒＮｏｔｉｆｉｃａｔｉｏｎが呼び出された時に埋められ、いつでもリストへの追加および削除を行うことができる。ＣＲｅｇｉｓｔｒａｒクラス７６２は、ＰｎＰデバイスイベント７６４をリッスンして、デバイスがシステムに追加／システムから除去された時に判定し、そのローカルリストを適宜更新し、また、その変更の影響を受ける任意の既存のクライアント（ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクトまたはＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト）に通知する。ＣＲｅｇｉｓｔｒａｒクラス７６２は、共有されるＣｏｎｆｉｇｕｒａｔｉｏｎ  Ｍａｎａｇｅｒライブラリをそのデータへのインターフェースとして使用して、アプリケーションとデバイスの許可確認も担当し、アプリケーションがデバイスを使用する権限があるかどうかを判定する。インスタンス化されたオブジェクト（ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒまたはＣＣｏｎｔｅｎｔＭａｎａｇｅｒ）のリストが保持される。これらのオブジェクトは、そのオブジェクトとＣＲｅｇｉｓｔｒａｒへのすべての参照がなくなる（すなわちＡＰＩがロードされない）時にのみ消滅する。
【００５３】
ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒクラス／オブジェクト７６６は、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒインターフェースを実装する。ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒクラス７６６が作成される時に、アプリケーション識別子（ＩＤ）がそのインスタンスに関連付けられ、その識別子は変更されない。ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７６６をインスタンス化するＣＲｅｇｉｓｔｅｒオブジェクト７６２は、通知可能にされている各デバイスに対応する１つのＩＰｏｒｔａｂｌｅＤｅｖｉｃｅＣｏｎｔｅｎｔポインタを渡す。このデバイスリストにその後行われる変更は、オブジェクトの全存続期間を通じて、ＣＲｅｇｉｓｔｅｒオブジェクト７６２からの同様のメソッド呼び出しの影響を受ける。通知を表示する際に呼び出し元のアプリケーションに返されるクッキーを追跡するために記憶された内部メタデータがあってよい。ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒクラス／オブジェクト７６６は、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎオブジェクトを受け取り、データを抽出し、携帯デバイスＡＰＩ３１０のＩＰｏｒｔａｂｌｅＤｅｖｉｃｅＣｏｎｔｅｎｔインターフェースを使用してそのデータを各デバイスに送信する役割を担う。通知は複数のデバイスにわたって一貫して扱われるので、同じ動作を既知のデバイスそれぞれに繰り返すことができる。
【００５４】
ＣＮｏｔｉｆｉｃａｔｉｏｎクラス７６８は、データコンテナである。このクラスは、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎインターフェースと、ＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎ  ＣｏＣｌａｓｓを実装する（そのためクライアントはインスタンスを共同生成（ＣｏＣｒｅａｔｅ）することができる）。
【００５５】
ＣＣｏｎｔｅｎｔＭａｎａｇｅｒクラス／オブジェクト７７０は、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒインターフェースを実装する。このインターフェースは、Ｒｅｇｉｓｔｅｒメソッドの呼び出しに応答してＣＲｅｇｉｓｔｅｒクラス７６２によって作成される。ＣＣｏｎｔｅｎｔＭａｎａｇｅｒクラス／オブジェクト７７０は、Ｒｅｇｉｓｔｅｒに渡されたアプリケーションＩＤおよびエンドポイントＩＤとともに初期化される必要があり、これらのＩＤは、一旦設定されると変更されない。ＣＲｅｇｉｓｔｒａｒオブジェクト７６２は、構成テーブルを調べて、特定のアプリケーション／エンドポイントの対についてどのデバイスが使用可能かを判定する役割を担う。そして、ＣＲｅｇｉｓｔｒａｒオブジェクト７６２は、一致した各デバイスについてのＣＣｏｎｔｅｎｔＭａｎａｇｅｒ  ａｎ  ＩＰｏｒｔａｂｌｅＤｅｖｉｃｅＣｏｎｔｅｎｔインターフェースポインタを渡す。その後デバイスが追加／除去される時には、同じ機構を使用してＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０に変更を通信する。また、ローカルに記憶された各デバイスインターフェースについて、ＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０は、対応するＣＤｅｖｉｃｅＣａｐａｂｉｌｉｔｉｅｓオブジェクト７７２（またはＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣａｐａｂｉｌｉｔｉｅｓインターフェース）を記憶する。これは、そのオブジェクトが頻繁に必要とされることを見越した最適化である。
【００５６】
コンテンツの追加、特定コンテンツの除去、またはすべてのコンテンツの除去のためのメソッドは、ＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０に提供される。そのために、Ａｄｄメソッドの呼び出しが、入力（ｉｎｃｏｍｉｎｇ）ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔインターフェースに問い合わせて、その呼び出しに適用できるプロパティの一部についての値を得、その結果に基づいてデバイスを順に調べ（ｉｔｅｒａｔｅ  ｔｈｒｏｕｇｈ）、クライアントアプリケーションにコンテンツを要求し、そのコンテンツをデバイスに送る。ｒｅｍｏｖｅの呼び出しは、各デバイスから特定のコンテンツを除去することを試みる。別のメソッドがイベントシンクの設定に対処する。クライアントアプリケーションから渡されるＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＥｖｅｎｔｓインターフェースポインタが記憶され、アプリケーションに各種のイベントを通知するために使用される。デバイスイベントは、ＣＲｅｇｉｓｔｒａｒオブジェクト７６２から入ってくるイベントに応答してトリガされる。ＣＣｏｎｔｅｎｔＭａｎａｇｅｒクラス７７０は、ＩＰｏｒｔａｂｌｅＤｅｖｉｃｅＥｖｅｎｔＣａｌｌｂａｃｋインターフェースを実装することができ、ＣＲｅｇｉｓｔｒａｒオブジェクト７６２は、イベントを登録することができ、そして、ＣＣｏｎｔｅｎｔＭａｎａｇｅｒ７７０がそれらのイベントを適宜解析し、委託する（ｄｅｌｅｇａｔｅ）役割を担う。
【００５７】
ＣＤｅｖｉｃｅＣａｐａｂｉｌｉｔｉｅｓクラス７７２は、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣａｐａｂｉｌｉｔｉｅｓインターフェースを実装する。このインターフェースは、ＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０がコンテンツを表示する各デバイスと一致するように、ＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０によって作成される。内部では、クラス７７２は、ＩＰｏｒｔａｂｌｅＤｅｖｉｃｅＰｒｏｐｅｒｔｉｅｓインターフェースへの参照を有し、そのため、デバイスから直接デバイスプロパティを問い合わせることができる。デバイス能力は、デバイスがキャッシュを有するかどうか、画面の種類（ビットマップ、テキスト、１行ディスプレイなど）、画面の幅、画面の高さ、色深度、色の種類（例えば、カラー、グレースケール、白黒）などを含むことができる。
【００５８】
図８に、デバイスにコンテンツを追加するために、アプリケーション３０６がＣＲｅｇｉｓｔｒａｒオブジェクトおよびＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト（それぞれ図７の７６２と７７０）と協働する方式を説明する。一般に、補助ディスプレイの使用を求めるクライアントアプリケーション３０４がメインコンピュータシステムで起動すると（または何らかの他の適当な時に）、アプリケーションは、ＣＲｅｇｉｓｔｒａｒオブジェクト７６２への登録要求を介して補助ディスプレイプラットフォームに登録する。登録が成功すると、コンテンツ管理インターフェースのインスタンスが（例えばポインタとして）アプリケーションに返される。これを図８の矢印１および２で概略的に示す。
【００５９】
デバイスにコンテンツを追加するために、アプリケーション３０４は、コンテンツとコンテンツ本体についてのメタデータを得るためにプラットフォームが使用できるインターフェースを実装する。これはプルモデルであり、この場合、プラットフォームがアプリケーションからデータをプルする。コンテンツを追加するために、図８の矢印３で概略的に表すように、アプリケーションは、ＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０のメソッドを呼び出し、そのコンテンツをカプセル化しているオブジェクトへのポインタを渡すことによって手順を開始する。ＣＣｏｎｔｅｎｔＭａｎａｇｅｒオブジェクト７７０は次いで、そのカプセル化しているオブジェクトにコールバックしてコンテンツを取り出し、そのコンテンツを接続されたデバイスに送信する。デバイスの中にはデータをキャッシュするものがあるが、他のデバイスはキャッシュしない場合もある（例えば、キャッシュがないため、低メモリ状態などのため）。したがって、イベントを介して、データを再送するようにアプリケーションに通知することができる。各コンテンツは、（アプリケーションの範囲内で）一意のＩＤを有し、デバイスとプラットフォームは、そのＩＤによってコンテンツを参照する。これらの動作を図８の矢印４と５を介して概略的に表す。
【００６０】
アプリケーションは、データを追加する時に、そのデータを複数のデバイスに送信することができる。異なるデバイスは異なる特性を持つので、場合によっては、アプリケーションは、デバイスごとにコンテンツを特化することを決定することができる。このコンテンツの特化は、コンテンツメタデータで指定され、図８の矢印６と７で概略的に表す。アプリケーションが、すべてのデバイスについてプラットフォームから当該コンテンツについて一度呼び出されることを求めると指定した場合、アプリケーションは、例えば真／偽データを介して、すなわち偽の応答を介して、デバイスごとの呼び出しは望まないことを指定する。すべてのコンテンツが指定される場合（偽）のこの動作を矢印８Ａと９Ａで示す。
【００６１】
あるいは、矢印８Ｂおよび９Ｂは、アプリケーションがデバイスごとに別個にコールバックされて（真の応答）、デバイスの特性に応じてコンテンツを提供することを望む場合の動作を示す。これが行われる場合は、アプリケーションがコンテンツを送信する権限を持つデバイスごとに、コンテンツの要求と取得のプロセスが繰り返される（例えば、矢印１０と１１）。
【００６２】
図４に示すように、クライアントアプリケーションとデバイスのアクティブ化ステータスの変化をリッスンし、クライアントアプリケーションに通知する存続時間マネジャ４３４を提供することができる。クライアントアプリケーションは、異なるプロセスで登録されたクラスをＣｏＣｒｅａｔｅし、適切なパラメータとともにＳｔａｒｔＵｐメソッドを呼び出すことによって開始される。アプリケーションは、補助ディスプレイアプリケーションに存続時間に関連する機能を提供するＡＰＩセットを実装することができる。プラットフォームのコンポーネントの１つが、接続されたデバイスのセットに基づいてアプリケーションを開始および中止する役割を担う。あるいは、アプリケーションは、自身の存続時間を管理することができ、デバイスが接続または切断されるとアプリケーションに通知され、コンテンツを提供するデバイスがない時にアプリケーションが実行されている場合がしばしばある。
【００６３】
図４に表すように、（すでに実行されているのでない場合は）存続時間マネジャ４３４によってクライアントプロセスが開始される。クライアントプロセスは、クライアントアプリケーションとデバイス上のそのコンテンツを管理することに関連するロジックの責任を持ち、補助表示装置で実行されるデバイスアプリケーションにとっては、メインコンピュータシステムに相当するものである。上記で述べたように、クライアントコード３０６は、プラットフォームに登録することにより補助ディスプレイプラットフォームとの通信を開始する。この呼び出しは、補助ディスプレイクライアントＡＰＩと携帯デバイスＡＰＩの両方をクライアントプロセスのアドレス空間にロードする。携帯デバイスＡＰＩは、補助表示装置に接続するドライバへのプロセス境界を越えた通信を扱う。
【００６４】
ドライバプロセスは、ユーザモードドライバフレームワークプロセスによって作成される。ドライバは、携帯デバイスＡＰＩが通信するデバイスドライバインターフェースを公開する。クライアントＡＰＩは、それらのプロセスと直接は対話しない。クライアントアプリケーションがインストールされると、そのアプリケーションは、ＧＵＩＤであるアプリケーションＩＤを指定する。このアプリケーションＩＤは、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＡｐｐｌｉｃａｔｉｏｎインターフェースを実装するＣＯＭコンポーネントのＣＬＳＩＤであるべきである。存続時間マネジャ４３４は、アプリケーションＩＤを使用して、クライアントアプリケーションのプロセス外（ｏｕｔ−ｏｆ−ｐｒｏｃ）ＣＯＭサーバインスタンスをＣｏＣｒｅａｔｅする。存続時間マネジャ４３４は、クライアントアプリケーションと通信するデバイスが少なくとも１つある（起動）時を知らせる、および、通信するデバイスがない（シャットダウン）時も知らせる、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＡｐｐｌｉｃａｔｉｏｎインターフェースのメソッドを呼び出す。さらに、アプリケーションのクラッシュが発生した時に堅牢であるように、ハートビートメソッドを使用して、アプリケーションがまだ実行中であるかどうかを確認することができる。
【００６５】
ＡＰＩセット３０４と通信するために独自のプロセスにＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒのインスタンスをＣｏＣｒｅａｔｅすることは、ＩＳＶの役割であることに留意されたい。この手法は、ＡＰＩをアプリケーションのプロセスで実行する利点を保ちながら、アプリケーションを互いから分離することを可能にする。
【００６６】
アプリケーションは、複数のコンテンツフォーマットをサポートすることができるが、クライアントＡＰＩ（ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒ）の各インスタンスは、１つのコンテンツフォーマットしかサポートすることができない。上記で述べたように、アプリケーションがインストールされる際に、アプリケーションは、それがサポートするエンドポイントを優先度順に並べたリストを提供する。内部では、デバイスによって公開されるエンドポイントとアプリケーションに好まれるエンドポイントとの対応付けが行われて、デバイスに最適なコンテンツフォーマットの合致を得る。基本的には、一致するものが見つかるまでリストを調べることにより、利用できる場合には最も優先度が高いコンテンツフォーマットが選択される。コントロールパネルは、アプリケーションとデバイス間になんらかの共通のエンドポイントがある場合にチェックボックスを表示する。クライアントＡＰＩは、実行時に使用される実際のエンドポイントを判定するが、リストは変わる可能性がある。クライアントアプリケーションは、それがサポートするエンドポイントごとに１回ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒ：：Ｒｅｇｉｓｔｅｒを呼び出し、アプリケーションは、各コンテンツフォーマットにつき１つのＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒインターフェースを得る。現在の実装の１つでは、各デバイスは、それらのインターフェースの多くとも１つからのみコンテンツを受け取る。したがって、アプリケーションは、１つの中央データソースを有することができ、複数のＡＰＩインターフェースに通信し、ＡＰＩインターフェースは、それぞれが異なるコンテンツフォーマットをサポートする複数のデバイスに通信する。この手法は、ＡＰＩ内の分離が保たれるため、ＡＰＩをクリーンで平易に使用することができ、同時に、ＩＳＶが直感的な方式で複数のコンテンツフォーマットをサポートすることができる。コントロールパネルで、各アプリケーションを、それがサポートするフォーマットの数に関係なく１行で表示することができる。
【００６７】
アプリケーションが補助デバイスに送ることができる通知の説明に移ると、プラットフォームは、補助デバイスでの通知（あるいは警告）の表示をサポートする。例えば、面会を知らせる通知、電子メールアラート、友人のログオン、システムアラートなどの重要なイベントについての通知を、補助デバイスで表示するために送ることができる。一実施形態では、通知は、通例、リアルタイムでいずれかの既存のデバイスアプリケーションの上に表示され、ユーザにはそれを消す（自動的な失効の前に）手段が与えられる。補助ディスプレイプラットフォームに送られる通知は、タイトル、メッセージ本文、アイコンを含むことができ、失効時間に関連付けられる。失効時間（例えば、絶対的な時間または相対的な時間）は、ユーザがその通知と対話していない場合に、デバイスがいつその通知を除去することができるかについての指示をデバイスに提供する。
【００６８】
通知は、一般に、デバイス能力に関係なく、アプリケーション３０６から見て同じ通知ＡＰＩを使用することができる。したがって、タイトル、テキスト、および、画像、アイコン、コントロール（ボタンなど）、メニューなどのオプションの情報は、パラメータとして指定されることができる。グラフィック機能を持たないデバイスは情報からテキスト以外のものを取り除き、また、時間の経過とともに行を交互に表示するなど特定のデバイスディスプレイに収まるようにテキストに変更を加えることもできる。コンテンツは、一般に、高機能デバイスではキャッシュにダウンロードされるか、または要求時にダウンロードされ、デバイス自体が必要に応じてコンテンツを扱うことに留意されたい。これにより、システムで実行される複数のクライアントアプリケーションからコンテンツを提供させることができ、補助ディスプレイでは、一度に１つのデバイスアプリケーションが実行される。通知は、意図的に、現在実行されているデバイスアプリケーションを対象とする（ｉｍｐｏｓｅ  ｏｎ）。通知は、ＦＩＦＯ（先入れ先出し）法など、任意の適切な順序付けで提示のために並べることができるが、容易に理解できるように、通知の種類には異なる優先度がある場合がある（例えば、緊急性のある通知、新しい通知、またはその他の形でフラグが立てられた通知には、通常の通知や古い通知よりも高い優先順位を与えることができる）。
【００６９】
図９に、１つまたは複数のデバイスに通知を送るために、クライアントアプリケーション３０６がＣＲｅｇｉｓｔｅｒオブジェクト７６２およびＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７６６と協働する方式を説明する。一般に、アプリケーション３０４が補助ディスプレイに通知を送りたい時、アプリケーションは、ＲｅｇｉｓｔｅｒＮｏｔｉｆｉｃａｔｉｏｎ要求を介してＣＲｅｇｉｓｔｒａｒオブジェクト７６２に通知について登録する。登録が成功すると、ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７６６のインスタンスが（例えば、ポインタとして）アプリケーションに返される。これを図９の矢印１および２で概略的に表す。
【００７０】
図９の矢印３で概略的に表すように、アプリケーション３０６は、ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７６６のメソッドを呼び出すことによって手順を開始する。次いで、図９の矢印４および５で概略的に表すように、ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７６６が、アプリケーション３０４（または図７のようにアプリケーションによって指定されたＣＮｏｔｉｆｉｃａｔｉｏｎオブジェクト７６８）をコールバックして、その通知の識別子を取得する。図９の矢印６〜１１で概略的に表すように、次いで、それに続くタイトル、メッセージ（テキスト）、アイコン／画像、および失効時間のコールバックが行われる。
【００７１】
図９の矢印１２で概略的に表すように、その情報を用いて、ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７７６は、接続された１つのデバイス又は複数のデバイスに通知を送る。現在の実施形態の１つでは、アプリケーションが通信する権限を持つすべてのデバイスが通知を受け取るが、クライアントアプリケーションは、権限を持つデバイスの特定の１つのみが通知を受け取ることを選択的に指定可能な代替の機構を得ることが可能である。また、異なるフォーマットの通知情報が異なる種類のデバイスに送られる機構を得ることも可能である（図８を参照して概説した、デバイスごとにコンテンツを差別化する機構に似る）。
【００７２】
通知を送ることに加えて、アプリケーションは、同様に、１つの通知の取り消し、またはそのアプリケーションのすべての通知の取り消しも要求することができる。例えば、ユーザがメインコンピュータシステムで通知の表示を消すことができ、アプリケーションが、１つの補助デバイスまたは複数の補助デバイスからその通知が取り消されるべきであると判断することができる。
【００７３】
イベントに関しては、アプリケーションは、プラットフォームから様々な種類のイベントを受け取るインターフェースを指定することができる。プラットフォームは、コントロールパネルの構成テーブルなどに基づいて、デバイスに関連するイベントを、適切に権限が与えられたアプリケーションに送る。イベントは、デバイスの追加および除去または接続および切断（無線の範囲外にある時やデバイスのクラッシュを含む）を含むことができ、かつ、画面サイズ、色深度、データキャッシュの有無など、接続されたデバイスのプロパティについての問い合わせに応答したイベントについてのイベント通知を含むことができる。イベンティング機構は、キーの押下についての通知イベントも提供し、カスタムのエンドポイントにも適用される。補助デバイスが容易に入手できないコンテンツを必要とする時には、コンテンツ要求イベントも生成される。
【００７４】
補助デバイスのアプリケーションも、デバイスナビゲーションイベント（例えば、コンテンツが欠落している、リフレッシュが必要とされる等）、選択イベント（ユーザがダイアログでボタンを押す、表示されたアイコンを選択する、通知を消すなど）、および、コンテクストメニュー動作などのイベントを生成することができる。他のイベントは、事前対応型（ｐｒｅ−ｅｍｐｔｉｖｅ）であってよく、例えばオーディオアプリケーションのトラック「７」を再生しているデバイスが、トラック「８」のデータが必要であることを予想し、そのデータの要求を前もって送ることができる。補助デバイスのアプリケーションで生成されたイベントは、メインコンピュータシステムで実行されているクライアントアプリケーションに（オンライン時に）返送される。
【００７５】
イベントのセマンティクスと内容は、エンドポイントによって定義される。一般に、イベントは、その発生元のデバイス、発生元のデバイスアプリケーション／エンドポイント、およびそのイベントに付随するデータを識別する。例えば（シンプルコンテンツフォーマットのエンドポイントを使用する場合）、ユーザがあるコンテンツから別のコンテンツに移ると、ナビゲートイベントがメインコンピュータシステムに送り返されて、ユーザが行った事を報告する。アプリケーションは、適切な方式でこのイベントに応答することを選択することができる。
【００７６】
（インターフェースと要約）
全ＡＰＩセットを通じて使用される共通の種類の定義を下に示す。
【００７７】
【表１】
2007048259.tif 000003
【００７８】
以下は、補助ディスプレイプラットフォーム（インターフェースについては上記で説明し、下記で概略的に要約する）のインターフェース定義ファイルの一例を含む。
【００７９】
【表２】
2007048259.tif 000004
【００８０】
【表３】
2007048259.tif 000005
【００８１】
【表４】
2007048259.tif 000006
【００８２】
【表５】
2007048259.tif 000007
【００８３】
【表６】
2007048259.tif 000008
【００８４】
【表７】
2007048259.tif 000009
【００８５】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＡｐｐｌｉｃａｔｉｏｎインターフェースは、クライアントアプリケーションを作成し、対話するために、存続時間マネジャによって使用される。ＩＳＶは、存続時間管理を使用することを望む場合は、自社のクライアントアプリケーションにこのインターフェースを実装する責任がある。HRESULT Startup (REFAPPLICATION_ID in_applicationId)メソッドは、クライアントアプリケーションがデバイスとの通信を開始すべきことを知らせるために呼び出される。このメソッドは、所与のアプリケーションがデータを送信することができる１つまたは複数のデバイスがあることを知らせる。第１のパラメータは、開始されるアプリケーションのアプリケーションＩＤであり、複数のアプリケーションについて同じＣＯＭオブジェクトがデータを扱う場合に含められる。HRESULT Shutdown (REFAPPLICATION_ID in_applicationId)メソッドは、クライアントアプリケーションがデバイスとの通信を中止すべきことを知らせるために呼び出される。Ｓｈｕｔｄｏｗｎが呼び出された後、存続時間マネジャは、そのクライアントアプリケーションへの参照を解放し、（理想的には）アプリケーションが閉じる。HRESULT KeepAlive (REFAPPLICATION_ID in_applicationId)メソッドは、ハートビートとして使用される。存続時間マネジャは、時折このメソッドを呼び出し、Ｓ＿ＯＫ応答を受け取ることを予想する。その呼び出し（例えば、リモートプロシージャ呼び出しあるいはＲＰＣ）が時間切れになった場合、または何らかの他の理由で呼び出しが失敗した場合、アプリケーションは再起動される。
【００８６】
上記のように、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＲｅｇｉｓｔｒａｒインターフェースは、補助ディスプレイサブシステムとの「セッション」を開始するためにＩＳＶのクライアントアプリケーションによって使用される。ＩＳＶのアプリケーションは、このクラスのインスタンスをＣｏＣｒｅａｔｅし、Ｒｅｇｉｓｔｅｒメソッドを呼び出してＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒインターフェースを取得し、そのインターフェースを使用してデバイスにコンテンツを提供することができる。返されるインターフェースは、そのクライアントアプリケーションの存続時間にわたって有効である。デバイスは、プラットフォームによって行われる管理とともに、局面に現れ、隠れることができる（ｃｏｍｅ  ａｎｄ  ｇｏ  ｂｅｈｉｎｄ  ｔｈｅ  ｓｃｅｎｓ）。上記で述べたように、アプリケーションがデバイスと通信する権限があるかどうかを判定するのはＡＰＩ内部であり、アプリケーションがデバイスと通信する権限を持たない場合でも、一実施形態では、インターフェースは返されるが、どのデバイスにもデータを送信しない（そしてＧｅｔＤｅｖｉｃｅが０を返す）。HRESULT Register (REFAPPLICATION_ID in_applicationId, REFENDPOINT_ID in_endpointId, IAuxiliaryDisplayContentManager ** out_pContent)メソッドは、ＩＳＶのアプリケーションを補助ディスプレイサブシステムに登録し、そのクライアントアプリケーションがデバイスにコンテンツを送信できるようにする。第１のパラメータは、例えばＧＵＩＤで表される、アプリケーションを一意に識別するアプリケーションＩＤである。第２のパラメータは、そのアプリケーションが通信することを望むデバイスにあるエンドポイントを表すＧＵＩＤである。このパラメータは、各エンドポイントが１つの種類のコンテンツに対応するので、ＩＳＶのアプリケーションが複数のエンドポイント（コンテンツフォーマット）をサポートできるようにするために提供される。ＩＳＶのアプリケーションは、それが送信したいコンテンツフォーマットごとに異なるＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒインターフェースを使用することに留意されたい。第３のパラメータは、ＩＳＶのアプリケーションがコンテンツを送信するために使用するインターフェースを含むｏｕｔパラメータである。HRESULT RegisterNotifications (REFAPPLICATION_ID in_applicationId, IAuxiliaryDisplayNotificationManager ** out_pNotification)メソッドは、ＩＳＶアプリケーションが、補助ディスプレイに通知を提供するアプリケーションとして自身を登録することを可能にする。ＩＳＶアプリケーションは、自身のアプリケーションＩＤを提供し、ＣＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒオブジェクト７６６のＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒインターフェースへのポインタを得、そのポインタが使用されてサブシステムで通知を管理する。
【００８７】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎＭａｎａｇｅｒインターフェースは、ＩＳＶアプリケーションが補助ディスプレイで通知を表示および非表示にすることを可能にする。HRESULT Show (IAuxiliaryDisplayNotification * in_pNotification)メソッドは、通知をサポートしかつ接続され権限が与えられた補助デバイスで、通知を表示させる。パラメータは、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎインターフェースを実装するクラスのインスタンスである。このインターフェースは、基本的に、通知を表示するために必要な関連する部分を含む。HRESULT Revoke (const NOTIFICATION_ID in_notificationId)メソッドは、ＩＳＶアプリケーションが、すべての該当するデバイスで１つの通知をキャンセルすることを可能にする。パラメータは、上記のように、Ｓｈｏｗの呼び出しから返されたクッキーからなる。通知は、現在表示されている場合、または保留中である（遅らされた通知あるいは別の通知に妨害された）場合にのみ除去される。ＨＲＥＳＵＬＴ  ＲｅｖｏｋｅＡｌｌ  （）メソッドは、ＩＳＶが、すべての保留中の通知を除去することを可能にする。
【００８８】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＮｏｔｉｆｉｃａｔｉｏｎインターフェースは、通知の主要な部分を記憶し、取り出すメソッドを提供する。[propget] HRESULT Notificationld (PNOTIFICATION_ID in_pnotificationId)メソッドおよび[propput] HRESULT NotificationId (NOTIFICATION_ID in_notificationId)メソッドは、ＡＰＩ／ＩＳＶが通知ＩＤを設定／取り出すことを可能にする。デフォルト値は０である。この値は、アプリケーション内で通知を一意に識別する。［propget] HRESULT Title (LPWSTR * out_ppwszTitle)メソッドと[propput] HRESULT Title (LEWSTR in_pwszTitle)メソッドは、ＡＰＩ／ＩＳＶが通知の現在のタイトルを設定／取り出すことを可能にする。デフォルト値があってよい（「Ｎｏｔｉｆｉｃａｉｏｎ」など）。［propget] HRESULT Message (LPWSTR * out_ppwszMessage)メソッドおよび[propput] HRESULT Message (LPWSTR in_pwszMessage)メソッドは、ＡＰＩ／ＩＳＶが、通知の現在のメッセージ本文を設定／取り出すことを可能にする。メッセージ本文は、ユーザに表示されるメッセージの大部分である。[propget] HRESULT Image (HICON * out_phIcon)メソッドおよび[propput] HRESULT Image (HICON in_hIcon)メソッドは、ＡＰＩ／ＩＳＶが、通知の一部として表示される画像を設定／取り出すことを可能にする。画像を、デバイスに応じて収まるようにサイズ調整し、標準のフォーマットで提供することができる。[propget] HRESULT ExpirationTime (PSYSTEMTIME out_pExpirationTime)メソッドと、[propput] HRESULT ExpirationTime (PSYSTEMTIME in_pExpirationTime)メソッドは、ＡＰＩ／ＩＳＶが、通知が失効する時間を設定／取り出すことを可能にする。デフォルト値は「０」であり、通知が絶対に失効しない（そしてユーザが通知を消す必要がある）ことを意味する。一実施形態では、時間は、絶対的な時間として指定され、通知は、それが表示されていたかどうかに関係なく、その失効時間に自動的に消滅する。失効時間を正しく順守することは、デバイスのファームウェアあるいはドライバに任せられる。
【００８９】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒインターフェースは、ＩＳＶが補助ディスプレイにコンテンツを送ることを可能にするインターフェースである。このインターフェースは、汎用的であり、任意のエンドポイントを宛先とするどの種類のコンテンツでも受け付けるが、このインターフェースの特定のインスタンスはそれぞれ、１つのエンドポイントための（したがって１つの種類）のコンテンツしか受け付けない。HRESULT Add (IAuxiliaryDisplayContent * in_pContent)メソッドは、ＩＳＶが、コンテンツが表示されているデバイスのキャッシュにコンテンツを追加することを可能にする。第１のパラメータは、コンテンツをプルするＩＳＶによって実装されるインターフェースへのポインタである。HRESULT Remove (const CONTENT_ID in_contentId)メソッドは、ＩＳＶが、任意のデバイスから特定のコンテンツを除去することを可能にする。パラメータは、除去するコンテンツのコンテンツＩＤである。その項目が、現在接続されているいずれかのデバイスのキャッシュにある場合は、その項目が除去される。項目は、いずれかのデバイスのキャッシュにあることは保証されず、また、現在接続が切断されているデバイスについても保証されない。ＨＲＥＳＵＬＴ  ＲｅｍｏｖｅＡｌｌ（）メソッドは、ＩＳＶが、すべてのデバイスのキャッシュから、そのＩＳＶのアプリケーションに関連付けられたすべてのコンテンツを除去することを可能にする。HRESULT SetEventSink (IAuxiliaryDisplayEvents * in_pEvents)メソッドは、ＩＳＶアプリケーションが、デバイスからイベントを受け取るために使用するコールバックインターフェースを指定することを可能にする。パラメータは、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＥｖｅｎｔｓインターフェースを実装するクラスのインスタンスへのポインタを含む。その値がＮＵＬＬあるいは無効である場合は、ＩＳＶアプリケーションへのコールバックは行われない。HRESULT GetDevices (DWORD * out_pdwNumDevices, IAuxiliaryDisplayCapabilities ** out_ppDevices)メソッドは、ＩＳＶアプリケーションが、そのアプリケーションについて権限が与えられた、現在接続されているデバイスを列挙することを可能にする。このメソッドは、ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣａｐａｂｉｌｉｔｉｅｓオブジェクトへのポインタの配列を返し、このオブジェクトは、権限のある各デバイスの能力についてのいくらかの情報を提供する。ＤＷＯＲＤパラメータは、返されるデバイスの数を含む。アプリケーションは、このメソッドを使用して、そのアプリケーションがコンテンツを生成する必要があるデバイスの数と種類を判定することができ、アプリケーションが、デバイスの能力に応じてそのコンテンツを差別化することを望む場合には、このメソッドは、アプリケーションがそれを決定し、適切なコンテンツを事前に生成することを可能にする。あるいは、このメソッドが、デバイス能力についての列挙子（エミュレータ）の実装を返すことも実現可能である。
【００９０】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔインターフェースは、ＩＳＶアプリケーションによって実装され、アプリケーションをコールバックし、アプリケーションからコンテンツをプルするためにＡＰＩによって使用される。HRESULT GetContent (IAuxiliaryDisplayCapabilities * in_pCapabilities, DWORD * out_pdwSize, BYTE ** out_ppbData)メソッドは、ＩＳＶアプリケーションからコンテンツを取り出すためにＡＰＩによって呼び出される。このメソッドが呼び出される方式は、ＤｉｆｆｅｒｅｎｔｉａｔｅＣｏｎｔｅｎｔプロパティの値に応じて決まり、アプリケーションが、デバイス能力を考慮することを示した場合は、このメソッドは１つのデバイスにつき１回コールバックされ、第１のパラメータは、該当するＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣａｐａｂｉｌｉｔｉｅｓインターフェースへのポインタである。アプリケーションがデバイスごとの能力を考慮しないことを示した場合は、このメソッドは、１回だけ呼び出され、第１のパラメータはＮＵＬＬポインタになる。第２のパラメータは、ユーザがそのデータをポイントするように設定するバイトポインタを含む。第３のパラメータは、ＩＳＶが、返されるコンテンツのサイズで埋めるｏｕｔポインタである。ＩＳＶアプリケーションは、ＣｏＴａｓｋＭｅｍＡｌｌｏｃを使用してメモリを割り振って、このメソッド呼び出しから戻る。その結果、データを使い終わった時にそのデータを解放するのはＡＰＩの役目になる。[propget] HRESULT Contentld (PCONTENT_ID out_pcontentId)メソッドは、実際のコンテンツに関連付けられたコンテンツＩＤを取り出すためにＡＰＩによって呼び出される。このメソッドは、ＩＳＶアプリケーションがデバイス能力に応じてコンテンツを差別化するかどうかに関係なく１回呼び出される。このメソッドは、ＩＳＶアプリケーションがなんらかの特定のコンテンツに関連付けられたコンテンツＩＤを容易に追跡できるようにする管理性の目的で、このインターフェースに提供される。[propget] HRESULT DifferentiateContent (BOOL * out_pfDifferentiateContent)メソッドは、ＩＳＶアプリケーションがデバイス能力に応じてコンテンツを差別化することを望むかどうかを示すフラグを取り出すためにＡＰＩによって呼び出される。基本的に、このメソッドは、ＧｅｔＣｏｎｔｅｎｔが１つのデバイスにつき１回呼び出されるか、またはすべての該当するデバイスに対して１回呼び出されるかを決定するために使用される。値が真の場合は、ＩＳＶアプリケーションが１つのデバイスにつき１回コールバックされることを要求することを意味し、値が偽の場合は、ＩＳＶが１つのコンテンツ項目につき１回コールバックされることを要求することを意味する。
【００９１】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＥｖｅｎｔｓインターフェースは、ＩＳＶアプリケーションによって実装され、イベントでアプリケーションをコールバックするためにＡＰＩセットによって使用される。ＩＳＶアプリケーションは、イベントを考慮しない場合は、このインターフェースを実装する必要はない。しかし、大半の場合、ＩＳＶアプリケーションは、このインターフェースを実装する。HRESULT ContentMissing (const CONTENT_ID in_contentId, IAuxiliaryDisplayContent ** out_pContent)イベントは、デバイスで特定のデータが要求されるが存在しない時にデバイスによって生成される。第１のパラメータは、欠落しているコンテンツのコンテンツＩＤを含み、第２のパラメータは、ＩＳＶがその欠落コンテンツを提供することを可能にするｏｕｔパラメータである。内部では、このイベントは、第２のパラメータを処理するときにＩＳＶがＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣｏｎｔｅｎｔＭａｎａｇｅｒ：：Ａｄｄを呼び出した場合と同じように扱われ、コンテンツはすべてのデバイス、またはそのコンテンツ要求を生じたデバイスのみに送られることができる。ＩＳＶアプリケーションは、どのデバイスがそのイベントを生成したのかは判定できないことに留意されたい。HRESULT ApplicationEvent (IAuxiliaryDisplayCapabilities * in_pCapabilities, const DWORD in_dwEventId, const DWORD in_dwEventSize, const BYTE * in_pbEventData)イベントは、デバイスアプリケーションによって生成され、エンドポイントに固有のイベント情報を含む。第１のパラメータは、イベントの発生元のデバイスを記述するインターフェースポインタである。第２のパラメータは、その特定のエンドポイントに固有のイベントＩＤである。各エンドポイントは、イベントＩＤのセットとそれに関連付けられたデータを定義することができ、それらは、ＩＳＶアプリケーションによって解釈されることができる。例えば、シンプルコンテンツフォーマットからアプリケーションイベントを復号するヘルパオブジェクトが提供されることができる。第３のパラメータは、イベントデータのサイズを含み、第４のパラメータは、実際のデータへのポインタを含む。HRESULT DeviceAdded (IAuxiliaryDisplayCapabilities * in_pDevice)イベントは、ＡＰＩによって生成され、そのアプリケーションが現在追加的なデバイスで表示されていることをＩＳＶアプリケーションに通知する。第１のパラメータは、その新しいデバイスの能力へのポインタを含む。このイベントは、ユーザが補助ディスプレイのコントロールパネルを介してアプリケーションを使用可能にした結果発生することができ、新しいデバイスが接続された結果だけでは発生しないことに留意されたい。HRESULT DeviceRemoved (IAuxiliaryDisplayCapabilities * in_pDevice)イベントは、ＡＰＩによって生成され、アプリケーションがもはやデバイスで表示されていないことをＩＳＶアプリケーションに通知する。第１のパラメータは、除去されるデバイスの能力へのポインタを含む。このイベントは、ユーザが補助ディスプレイコントロールパネルを介してアプリケーションを使用不可にした結果発生し、デバイスが除去された結果だけでは発生しないことに留意されたい。
【００９２】
ＩＡｕｘｉｌｉａｒｙＤｉｓｐｌａｙＣａｐａｂｉｌｉｔｉｅｓインターフェースは、ＡＰＩによって実装され、そのアプリケーションが表示されている各種デバイスについての有用な情報をＩＳＶアプリケーションに提供する。このインターフェースの目的は、ＩＳＶアプリケーションが、様々なデバイスに固有の特性に合うように各自のコンテンツを（適切な場合には）調整するのに十分な情報を提供することである。パブリックな能力ＩＤの基本的なセット（ＰＲＯＰＥＲＴＹＫＥＹ）が提供されるが、ＩＨＶの拡張性を可能にする。HRESULT GetCapability (REFPROPERTYKEY in_pkeyCapability, PROPVARIANT * out_pvarData)メソッドは、デバイス能力を問い合わせるための汎用的な機構を提供する。第１のパラメータは、取得する能力を表すＰＲＯＰＥＲＴＹＫＥＹである。第２のパラメータは、適切に初期化されたＰＲＯＰＶＡＲＩＡＮＴへのポインタである。返されるデータの種類は、その特定のプロパティに関連付けられた種類に応じて決まる。結果得られるデータを解放することは呼び出し元の役割である。
【００９３】
（むすび）
前述から理解できるように、本発明は、クライアントアプリケーションが、各種のデバイス実装の違いに関係なく、各種の補助ディスプレイと平易に、一貫性をもって対話するためのインターフェースセットを含む補助ディスプレイプラットフォームを提供する。この対話は、デバイスでキャッシュあるいはレンダリングするコンテンツおよび通知を含めて、クライアントアプリケーションから送られる情報を表示することを含み、また、デバイスは、アプリケーションにイベントとデータを送ることができる。情報を提供し、イベントを受け取るために、クライアントアプリケーションは、各デバイスの固有の能力に対応する必要はなく、必要な場合には、デバイス能力を問い合わせて、各デバイスにカスタマイズされた情報を表示することができる。したがって、本発明は、現在のコンピューティングで必要とされる多数の利益と利点をもたらす。
【００９４】
本発明には、各種の変更と代替の構成が可能であるが、その特定の例示的実施形態を図に示し、上記で詳しく説明した。ただし、本発明をここに開示される特定の形態に限定する意図はなく、反対に、その意図は、本発明の主旨と範囲に該当するすべての変更、代替構成、および均等物を包含することであることは理解されたい。
【図面の簡単な説明】
【００９５】
【図１】本発明を組み込むことができる従来のパーソナルコンピュータシステムの形態の汎用コンピューティングデバイスを表すブロック図である。
【図２Ａ】各種のデバイスに補助ディスプレイを配置する場所を概略的に表す例示的図である。
【図２Ｂ】各種のデバイスに補助ディスプレイを配置する場所を概略的に表す例示的図である。
【図２Ｃ】各種のデバイスに補助ディスプレイを配置する場所を概略的に表す例示的図である。
【図２Ｄ】各種のデバイスに補助ディスプレイを配置する場所を概略的に表す例示的図である。
【図２Ｅ】各種のデバイスに補助ディスプレイを配置する場所を概略的に表す例示的図である。
【図３】本発明の一態様による、クライアントアプリケーションが補助表示装置のファームウェアとデータを交換することができる例示的な階層化アーキテクチャを概略的に表すブロック図である。
【図４】本発明の各種態様による、補助表示装置と通信するために使用されるプロセスにある各種コンポーネントを例示的に表す図である。
【図５】本発明の一態様による、アプリケーションが基本的な補助表示装置とデータを交換することを可能にする、インストールを利用する機構または実行を利用する機構を例示的に表す図である。
【図６】本発明の一態様による、補助デバイスを認識したクライアントアプリケーションが各種の補助表示装置アプリケーションとデータを交換するためのエンドポイントを例示的に表す図である。
【図７】本発明の一態様による、補助表示装置のファームウェアとデータを交換するためにクライアントアプリケーションが呼び出すＡＰＩセットのオブジェクトを概略的に表すブロック図である。
【図８】本発明の一態様による、１つまたは複数の補助表示装置に通信するコンテンツをアプリケーションから取得するためにクライアントアプリケーションとＡＰＩオブジェクトの間で行われる登録、呼び出し、およびコールバックを概略的に表すシーケンス図である。
【図９】本発明の一態様による、１つまたは複数の補助表示装置に通信する通知データをアプリケーションから取得するためにクライアントアプリケーションとＡＰＩオブジェクト間で行われる登録、呼び出し、およびコールバックを概略的に表すシーケンス図である。
【図１】
2007048259.tif 000010
【図２Ａ】
2007048259.tif 000011
【図２Ｂ】
2007048259.tif 000012
【図２Ｃ】
2007048259.tif 000013
【図２Ｄ】
2007048259.tif 000014
【図２Ｅ】
2007048259.tif 000015
【図３】
2007048259.tif 000016
【図４】
2007048259.tif 000017
【図５】
2007048259.tif 000018
【図６】
2007048259.tif 000019
【図７】
2007048259.tif 000020
【図８】
2007048259.tif 000021
【図９】
2007048259.tif 000022