(57)【要約】      （修正有）【課題】補助ディスプレイプラットフォームを有する補助コンピューティングデバイスがデバイス製造業者により拡張できるようにする。【解決手段】補助ディスプレイプラットフォームはレイヤ化され、各レイヤで拡張可能で、必要に応じて拡張ハードウェア４９３をサポートするように拡張可能なＨＡＬレイヤ４８０と、拡張ハードウェアのドライバコードを追加することで拡張可能なドライバレイヤ４７７とを含む。ライブラリ３７４、補助シェルプログラム３７０、他のマネージドコードなどのようにランタイムレイヤも必要に応じて拡張ハードウェア４９３をサポートするために拡張可能である。クライアントＡＰＩもメインコンピュータシステム上のアプリケーションがデバイスランタイムレイヤを介して拡張ハードウェア４９３と通信できるように拡張可能である。【選択図】図４
2006209738.tif 000002
【特許請求の範囲】
【請求項１】
メインコンピュータシステムに結合することができる補助デバイスであって、システムは、
より高レベルのソフトウェアからハードウェアの違いを抽象し、必要に応じて拡張ハードウェアをサポートするために拡張可能であるハードウェアアブストラクションレイヤと、
前記拡張ハードウェアのドライバコードを含むことによって拡張可能であるドライバレイヤと、
必要に応じて拡張ハードウェアをサポートするために拡張可能であるランタイムレイヤと、
前記メインコンピュータシステムまたは前記拡張ハードウェアに由来したデータに対応する情報を表示する補助デバイスプログラムコードと
を含む、前記メインコンピュータシステム上の補助プラットフォーム
を備えたことを特徴とするシステム。
【請求項２】
前記補助デバイスは、モバイル通信デバイスを備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記補助デバイスは、別個のコンピュータ、モバイル通信デバイス、ボタンアクチュエータを有する２次ディスプレイスクリーン、腕時計、壁掛けディスプレイ、ディスプレイスクリーン、デジタルピクチャフレーム、アラーム時計、テレビジョン、ラジオ、腕時計、メディアプレーヤ、民生用エレクトロニクスデバイスのメインディスプレイ内に埋め込まれるか、またはメインディスプレイを使用したデバイス、自動車、輸送または他の乗り物ユニット、前記メインコンピュータシステムのキーボードまたは他の入力デバイス、ページャ、および携帯情報端末を含む１組のデバイスタイプの中からのデバイスを備えたことを特徴とする請求項１に記載のシステム。
【請求項４】
前記拡張ハードウェアに対応する前記補助デバイス上のカスタムソフトウェアコードをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項５】
前記メインコンピュータシステム上で稼働するソフトウェアコードと、前記補助デバイス上の前記カスタムソフトウェアコードの間でデータをトランスファするように拡張可能な、前記メインコンピュータシステム上のアプリケーションプログラムインターフェースをさらに備えたことを特徴とする請求項４に記載のシステム。
【請求項６】
前記ランタイムは、共通言語ランタイムを備え、前記カスタムソフトウェアコードは、マネージドコードを備えたことを特徴とする請求項４に記載のシステム。
【請求項７】
前記拡張ハードウェアをサポートするように拡張可能である補助シェルプログラムをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項８】
前記補助デバイスは、前記メインコンピュータシステムに由来したデータに対応する補助情報を含む情報を表示するためのディスプレイを含み、前記ディスプレイは、カスタマイズ出力を表示するためにリザーブされた領域を含むことを特徴とする請求項１に記載のシステム。
【請求項９】
前記拡張ハードウェアは、ＳＰＯＴ無線、ブルートゥース無線、ＧＰＳレシーバ、温度センサ、オーディオデコーダ、オーディオエンコーダ、追加ストレージ、バイオメトリクスセンサ、加速度計、ＲＦＩＤタグ／リーダ、存在検出、ストレージアレイ／システム管理に対するインターフェース、バッテリ、ＲＦトランスミッタ、マイクロフォン、ラジオレシーバ、モバイル電話コンポーネント、無線通信コンポーネント、無線ネットワーキングコンポーネント、およびインジケータを含む１組のコンポーネントのうちの少なくとも１つのハードウェアコンポーネントに対応することを特徴とする請求項１に記載のシステム。
【請求項１０】
コンピューティングデバイスにおいて、
補助デバイスファームウェアスタックを含むファームウェアを前記コンピューティングデバイスにインストールすることであって、前記ファームウェアはメインコンピュータシステムに由来したデータに対応する補助情報を前記コンピューティングデバイスのディスプレイ上に表示するコードを含むことと、
前記コンピューティングデバイスに拡張ハードウェアを追加することと、
前記ファームウェアスタックを拡張して前記拡張ハードウェアをサポートすることと
を備えることを特徴とする方法。
【請求項１１】
前記ファームウェアスタックは、ハードウェアアブストラクションレイヤを含み、前記ファームウェアを拡張することは、前記ハードウェアアブストラクションレイヤを拡張することを備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記ファームウェアスタックは、ドライバレイヤを含み、前記ファームウェアを拡張することは、ドライバコードを拡張することを備えることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記ファームウェアスタックは、ランタイムを含み、前記ファームウェアを拡張することは、前記ランタイムを拡張することを備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記ファームウェアスタックは、シェルプログラムを含み、前記ファームウェアを拡張することは、前記シェルプログラムを拡張することを備えることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記ファームウェアスタックは、フレームワークライブラリを含み、前記ファームウェアを拡張することは、前記フレームワークライブラリを拡張することを備えることを特徴とする請求項１０に記載の方法。
【請求項１６】
前記コンピューティングデバイスに拡張ハードウェアを追加することは、モバイル通信のコンピュータデバイスを構成することを備えることを特徴とする請求項１０に記載の方法。
【請求項１７】
拡張ハードウェアを追加することは、ＳＰＯＴ無線、ブルートゥース無線、ＧＰＳレシーバ、温度センサ、オーディオデコーダ、オーディオエンコーダ、追加ストレージ、バイオメトリクスセンサ、加速度計、ＲＦＩＤタグ／リーダ、存在検出、ストレージアレイ／システム管理に対するインターフェース、バッテリ、ＲＦトランスミッタ、マイクロフォン、ラジオレシーバ、モバイル電話コンポーネント、無線通信コンポーネント、無線ネットワーキングコンポーネント、およびインジケータを含む１組のコンポーネントのうちの少なくとも１つのハードウェアコンポーネントを追加することを備えることを特徴とする請求項１０に記載の方法。
【請求項１８】
前記メインコンピュータシステム上で稼働するプログラムと、前記拡張ハードウェアに対応する前記補助デバイス上で稼働するカスタムソフトウェアコードの間でデータを通信することを特徴とする請求項１０に記載の方法。
【請求項１９】
カスタマイズ出力を表示するためにリザーブされる、前記ディスプレイの領域上にカスタム情報を表示することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項２０】
実行されるときに請求項１０に記載の方法を行うコンピュータ実行可能命令を有する１つまたは複数のコンピュータ読取り可能媒体。
【請求項２１】
実行されるときに、
補助デバイスファームウェアスタックを含むファームウェアをコンピューティングデバイスにインストールすることであって、前記ファームウェアスタックはメインコンピュータシステムに由来したデータに対応する補助情報をコンピューティングデバイスのディスプレイ上に表示するコードを含むことと、
前記ファームウェアスタックを拡張して前記コンピューティングデバイスに追加された拡張ハードウェアをサポートするカスタムソフトウェアに対して前記ファームウェアスタックの少なくとも一部分を介して通信パスを確立することと
を備えたステップを行うコンピュータ実行可能命令を有する少なくとも１つのコンピュータ読取り可能媒体。
【請求項２２】
前記ファームウェアスタックを拡張する前記カスタムソフトウェアは、ドライバレイヤに追加されるドライバコードを備えたことを特徴とする請求項２１に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータシステムに関し、より詳細にはメインコンピュータシステムに接続する補助コンピューティングデバイスに関する。
【背景技術】
【０００２】
特許文献１および特許文献２は、一般にある補助コンピューティング機能を提供する補助処理および補助メカニズムを有するコンピュータシステムの概念を対象としている。例えば、ラップトップコンピュータの蓋または側面上の小型ＬＣＤは、例えばラップトップコンピュータの蓋が閉じられており、そして／またはメインコンピュータの電源が切られているときなど、たとえメインコンピュータディスプレイを簡単に見ることができないときでさえ、ミーティングの場所や時間など有用な情報をその所有者に提供することができる。ボタンなどの制御を提供して、ユーザが補助デバイスとインタラクトできるように、カレンダデータ中のアポイントをスクロールしたり、電子メールメッセージを読んだり、指示を読んだりなど、様々なタイプのデータを閲覧することができるようになる。
【０００３】
モバイルホストコンピュータに組み込まれた補助ＬＣＤスクリーンといくぶん同様に、モバイル電話、音楽再生デバイス、ポケットサイズのパーソナルコンピュータ、携帯情報端末などは、そのディスプレイおよび／または他の機能がメインコンピュータによって活用できるようにデバイスがプログラムされている限り、物理的および／または無線（例えば、ブルートゥースまたは赤外線）リンクを介して接続されるときに、メインコンピュータに対する補助デバイスとしての機能を果たすことができる。一般に、コンピュータシステムと事実上任意の方法でインターフェースすることができるＩ／Ｏ機能を有するどのようなデバイスも、潜在的に補助コンピューティングデバイスとしての機能を果たすことができる。
【０００４】
【特許文献１】米国特許出願第１０／４２９９３０号明細書
【特許文献２】米国特許出願第１０／４２９９３２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、コンピュータシステムのための補助ディスプレイとしての機能を果たすことができる多くの様々なデバイスがある。この結果、このようなデバイスを内部的に構成する多くの方法がある。これは、デバイス製造業者（ときに、独立系ハードウェアベンダ、すなわちＩＨＶと呼ばれる）にとっての困難をもたらす。というのは、ユーザは、ユーザのデバイスが補助ディスプレイとしての機能を果たすことを望むことになるが、製造業者は、デバイスにその所望の機能を行わせることができるようにする必要があるからである。このように、このデバイスが、そもそもオーディオプレーヤ、ＧＰＳ（ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）レシーバ、電話、デジタルピクチャフレーム（ｄｉｇｉｔａｌ  ｐｉｃｔｕｒｅ  ｆｒａｍｅ）などであろうと、このデバイスは、異なるように設計される必要があることになる。これまで、システム中のハードウェアをカスタマイズし、なおこのデバイスをフル機能の補助ディスプレイとしても使用することができるようにする唯一の方法は、製造業者が非常に多くのコードを書いて、補助ディスプレイ機能を含んだ他の既存のファームウェアと共にこれらのハードウェアを統合することであった。必要とされることは、適切なときにフル機能の補助ディスプレイとしてデバイスを機能させるコンピューティングアーキテクチャであり、製造業者が所望の機能を追加でき、またそのデバイスを刷新し、他の製造業者のデバイスから差別化できるようにさらに拡張可能であることである。
【課題を解決するための手段】
【０００６】
簡潔に述べれば、本発明は、デバイス製造業者のそれぞれが彼らの特定のニーズに応じて要望に応じて独立に拡張することができる様々なレイヤのコードを含む補助ディスプレイについてのコンピューティングアーキテクチャを提供する。このアーキテクチャと共に、本発明は、デバイス製造業者がかなり低減された（例えば、あるとしても最小限の）量のファームウェア変更しか必要としない方法でハードウェアコンポーネントをカスタマイズすることができるようにする。カスタマイゼーションの例には、モバイル通信用の無線、ＳＰＯＴ無線、ブルートゥース無線および／もしくはＧＰＳレシーバなどの無線レシーバまたは無線トランシーバの統合が含まれる。また他のハードウェアは、温度センサ、オーディオデコーダ（例えば、デジタル信号処理用）、追加のストレージ、および／またはインジケータなど他のハードウェアをデバイスに含む。
【０００７】
これらのハードウェアコンポーネント上の低いレベルにおいては、ＨＡＬ（ｈａｒｄｗａｒｅ  ａｂｓｔｒａｃｔｉｏｎ  ｌａｙｅｒ）により、ハードウェアに独立した方法でより高いレベルのコードを書き込むことができるようになる。ＨＡＬは、必要に応じて拡張してカスタマイズされたハードウェアをサポートすることができる。ＨＡＬは、ハードウェアの違いを抽象するので、デバイス製造業者は、あらゆるクラスのデバイスごとにドライバをあまりカスタマイズする必要なく、多くのタイプのデバイスにわたりより高いレベルで稼働するドライバを再利用することができる。
【０００８】
これらドライバ上において、他のデバイスソフトウェアには、．ＮＥＴ共通言語ランタイム環境の比較的小規模の実装を備えるＴｉｎｙＣＬＲなどの共通言語ランタイムが含まれる。共通言語ランタイム上で稼働するマネージドコードは、このプラットフォームのＨＡＬ（ハードウェアアブストラクションレイヤ）、例えばＡＲＭ７チップに基づくプラットフォームのＨＡＬによって可能になる共通言語ランタイムが稼働するどのようなプラットフォーム上でも稼働することになる。ファームウェアの大部分は、マネージドコードで書かれるので、ファームウェアが稼働するハードウェアのタイプにも依存しない。デバイスファームウェアの大部分を制御し、アーキテクチャにＨＡＬおよびＣＬＲを含めることにより、デバイス製造業者は、どのような変更もなく既存のソフトウェアを再利用することができ、これは、補助ディスプレイとしての機能を果たす様々なタイプのデバイス間で高品質の一貫した体験を提供するために重要である。
【０００９】
アーキテクチャをレイヤに分けることにより、デバイス製造業者は、アーキテクチャ中の適切なレイヤ（または複数のレイヤ）の中でコードを拡張する必要があるだけである。例えば、この変更が新しいＣＰＵである場合、ＨＡＬを適合させる必要がある。しかし、この変更が、ＨＡＬが存在するＣＰＵを変更せずにハードウェアの１つを追加することである場合、おそらくこのハードウェアおよび他の対応するソフトウェアが、このデバイス上で稼働し、ハードウェアを制御するための適切なドライバが必要とされるだけである。例えば、高速メディアバッファリングを伴うものなど性能上の理由などのためにマネージドコードで書くことができないある種のアプリケーションについては、ＣやＣ＋＋などのネイティブコードで書くことができ、本質的にＣＬＲを拡張することができる。
【００１０】
補助ディスプレイプラットフォームに追加機能を追加することに関心のあるデバイス製造業者（ハードウェア製造業者）は、ハードウェアを追加し、それによって既存のデバイスファームウェアおよび他の任意のコードを必要に応じて拡張する。この既存の（例えば、別のベンダによって提供された）補助ディスプレイファームウェアに対する影響は、最小限である。
【００１１】
さらに、プラットフォームは、メインコンピュータシステム上で提供されるクライアント補助デバイスＡＰＩセットの観点から変更されたハードウェアに合わせて調整するように必要に応じて拡張可能である。この目的を達成するために、デバイス製造業者によって提供されるデバイスソフトウェアとメインコンピュータシステムの間で通信するために、クライアントＡＰＩを使用した簡単で拡張可能なメカニズムが提供される。これにより、このデバイス製造業者には、このプラットフォームを使用して特別なハードウェアを必要とする特定の機能のエンドツーエンドの実装を提供する機能が与えられる。このＡＰＩ拡張性により、これらデバイス製造業者および独立系ソフトウェアベンダは、専用のＡＰＩを必要とすることなく、デバイス上のカスタマイズされたハードウェアとインタラクトすることができるメインコンピュータシステム上のクライアントアプリケーションを開発できるようになる。
【００１２】
より詳細には、拡張性モデルでは、メインコンピュータシステム上で稼働するクライアントアプリケーションがデバイスにデータを送信することができるようになる前に「エンドポイント」が指定される必要がある。デバイス製造業者に専用のファームウェアを提供させて、デバイス上のエンドポイントを公示することにより、メインコンピュータシステム上のソフトウェアは、特別なハードウェア機能を有するデバイスを識別し、エンドポイントに対して直接に通信チャネルをオープンすることができる。クライアントＡＰＩは、クライアントアプリケーションとデバイスの間でトランスポートされるデータのタイプが関連しないように設計される。このように、エンドツーエンドプラットフォームは、デバイス製造業者の側であまり努力することなくハードウェア拡張性を提供する。
【００１３】
他の利点については、図面と共に以下の詳細な説明から明らかになろう。
【発明を実施するための最良の形態】
【００１４】
（例示の動作環境）
図１は本発明を組み込むことができるメインパーソナルコンピュータシステムの形態におけるコンピューティングデバイス１２０を表すブロック図である。当業者は、図１に示すパーソナルコンピュータシステム１２０が単に例示的であることを意図しているにすぎず、また本発明がハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルな民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ヘッドレスサーバなどを含む他のコンピュータシステム構成と共に実施することができることを理解するであろう。本発明は、タスクが通信ネットワークを介してリンクされるリモート処理デバイスによって実行される分散化されたコンピューティング環境中で実施することもできる。分散コンピューティング環境においては、プログラムモジュールは、ローカルメモリストレージデバイス中にもリモートメモリストレージデバイス中にも配置することができる。
【００１５】
パーソナルコンピュータシステム１２０には、処理装置１２１、システムメモリ１２２、およびこのシステムメモリを含む様々なシステムコンポーネントを処理装置１２１に結合するシステムバス１２３が含まれる。システムバス１２３は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および様々なバスアーキテクチャのうちのいずれかを使用したローカルバスを含む、いくつかのタイプのバス構造のうちのいずれであってもよい。システムメモリは、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）１２４およびＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１２５を含む。起動中などパーソナルコンピュータ１２０内のエレメント間で情報を転送する助けを行う基本ルーチンが入ったＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１２６は、ＲＯＭ１２４に格納される。パーソナルコンピュータ１２０は、図示していないハードディスクとの間での読取りおよび書き込みを行うハードディスクドライブ１２７、リムーバブル磁気ディスク１２９との間で読取りおよび書き込みを行う磁気ディスクドライブ１２８、およびＣＤ−ＲＯＭや他の光媒体などのリムーバブルな光ディスク１３１との間で読取りおよび書き込みを行う光ディスクドライブ１３０をさらに含むことができる。ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０は、それぞれハードディスクドライブインターフェース１３２、磁気ディスクドライブインターフェース１３３、および光ドライブインターフェース１３４によってシステムバス１２３に接続される。これらドライブおよび関連するコンピュータ読取り可能媒体は、パーソナルコンピュータ１２０のコンピュータ読取り可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書中で説明している例示のコンピュータシステムは、ハードディスク、リムーバブル磁気ディスク１２９およびリムーバブル光ディスク１３１を使用しているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ（Ｂｅｒｎｏｕｌｌｉ  ｃａｒｔｒｉｄｇｅ）、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）など、コンピュータによってアクセス可能なデータを格納することができる他のタイプのコンピュータ読取り可能媒体も、この例示のコンピュータシステム中で使用することができることが当業者によって理解されるべきである。
【００１６】
オペレーティングシステム（Ｗｉｎｄｏｗｓ（登録商標）ＸＰなど）１３５、１つまたは複数のアプリケーションプログラム（Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｏｕｔｌｏｏｋなど）１３６、他のプログラムモジュール１３７およびプログラムデータ１３８を含め、いくつかのプログラムモジュールは、ハードディスク、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４またはＲＡＭ１２５に格納することができる。ユーザは、キーボード１４０やポインティングデバイス１４２などの入力デバイスを介してパーソナルコンピュータ１２０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれ得る。これらおよび他の入力デバイスは、システムバスに結合されるシリアルポートインターフェース１４６を介して処理装置１２１に接続されることが多い、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）など他のインターフェースによって接続することもできる。モニタ１４７または他のタイプのディスプレイデバイスもまた、ビデオアダプタ１４８などのインターフェースを介してシステムバス１２３に接続される。モニタ１４７に加えて、パーソナルコンピュータは、通常、スピーカやプリンタなど他のペリフェラル出力デバイス（図示せず）を含む。補助ディスプレイ／デバイス２００は、追加の出力デバイスであり、例えば、補助ディスプレイインターフェース１５５を介してシステムバス１２３に接続することができる。
【００１７】
補助ディスプレイはまた、シリアルインターフェースを介して、あるいはパラレルポート、ゲームポート、赤外線もしくは無線接続、ユニバーサルシリアルバス（ＵＳＢ）、または他のペリフェラルデバイス接続など他のインターフェースによってメインコンピューティングデバイス１２０に接続することもできる。図１における入力デバイス２０１は、補助ディスプレイ２００とインターフェースし、そして／または補助ディスプレイ２００を制御する１つまたは複数のアクチュエータを提供することができ、例えば、シリアルインターフェースとすることができる入力デバイスインターフェース１５６を介して、あるいはパラレルポート、ゲームポート、赤外線もしくは無線接続、ユニバーサルシリアルバス（ＵＳＢ）、または他のペリフェラルデバイス接続など、他のインターフェースによってシステムバス１２３に接続することができる。
【００１８】
パーソナルコンピュータ１２０は、リモートコンピュータ１４９など１つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピュータ１４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードとすることができ、通常、パーソナルコンピュータ１２０に関連して上で説明したエレメントの多くまたはすべてを含むが、メモリストレージデバイス１５０だけを図１に示している。図１に示す論理接続は、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）１５１およびＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）１５２を含む。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて、一般的なものである。
【００１９】
ＬＡＮネットワーキング環境中で使用されるときには、パーソナルコンピュータ１２０は、ネットワークインターフェースまたはアダプタ１５３を介してローカルネットワーク１５１に接続される。ＷＡＮネットワーキング環境中で使用されるときには、パーソナルコンピュータ１２０は、通常、インターネットなどのワイドエリアネットワーク１５２を介して通信を確立するためのモデム１５４または他の手段を含む。モデム１５４は、内蔵または外付けとすることができるが、シリアルポートインターフェース１４６を介してシステムバス１２３に接続される。ネットワーク環境においては、パーソナルコンピュータ１２０に関連して示したプログラムモジュール、またはその一部分は、リモートメモリストレージデバイスに格納することもできる。図示したこれらのネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
【００２０】
補助デバイスが本発明に従って機能するためには、コンピュータシステムは必ずしも完全に動作している必要はないことに留意されたい。実際には、コンピュータシステムが、スリープ状態または休止状態モード（ｈｙｂｅｒｎａｔｅ  ｍｏｄｅ）にあるとき、および／またはユーザがまだログオンしていないか、そうでなければセキュリティメカニズムを介してシステムからロックアウトされるときなど、コンピュータが少なくとも初期設定の範囲またはユーザが設定する範囲までパワーダウンされるときにも、補助デバイスは、機能することができる。
【００２１】
補助ディスプレイ／デバイス２００は、メインディスプレイを補完することができ、メインディスプレイがシャットダウンされるか、そうでなければ動作していない（例えば、非接続）ときに、代理のディスプレイとしての機能を果たして、ユーザに何らかの情報を提供することができる。例えば、メインディスプレイがオフであり、そして／または簡単に見ることができない（例えば、ラップトップの蓋が閉じられている）ときにユーザが閲覧することができる、モバイルコンピュータに接続された補助ディスプレイデバイスにミーティングに対する部屋番号および／または指示があれば助けになるであろうように、メインディスプレイの起動の仕方などの情報があれば、助けになる可能性がある。この補助デバイスは、オーディオおよび／またはビデオを再生し、イメージを表示し、カレンダ情報を表示し、電子メールを表示することなどができる。
【００２２】
これらパワーダウンモード（ｐｏｗｅｒｅｄ−ｄｏｗｎ  ｍｏｄｅ）における通信を可能にし、制御するために、不揮発性メモリに格納されたファームウェアがあることもあり、このファームウェアにより、何らかの電力が利用可能である限り、２次プロセッサによってロードされ、動作されるときに、この補助ディスプレイを他の補助コンポーネントと一緒に使用することが可能になる。本明細書中で使用しているように、用語「ファームウェア」および「デバイスハードウェア」は、本質的に等価であり、一般にこの補助メモリ、その中のコード、および／またはファームウェアが稼働する補助プロセッサを表すものと考えることができることに留意されたい。
【００２３】
図２Ａ〜２Ｅは、補助ディスプレイスクリーン２００a〜２００eの配置についてのコンピューティングデバイス上の、またはコンピューティングデバイスに関連付けられた例示の位置をそれぞれ示している。図２Ａおよび２Ｂに示すように、補助ディスプレイスクリーン２００aは、スタンドアロン（陸上通信線またはモバイル）電話２０２の前面、裏面、または他の表面に配置することができ（この電話は、ブルートゥース技術を介してなど何らかの方法でリンクされていれば、物理的に結合されている必要はない）、そして／または他の補助ディスプレイスクリーン２００bは、モバイルコンピュータ２０４またはタブレットコンピューティングデバイス（図示せず）の端部または蓋の上に配置することができる。補助ディスプレイスクリーン２００cの別の場所（図２Ｃ）は、コンピュータに取り付けられた電話上、またはモニタ２０６やキーボード（図示せず）など、コンピュータに取り付けられたペリフェラルデバイス上にあってもよい。図２Ｄおよび２Ｅは、コンピュータに接続されたスタンドアロンコンソール２０８、または（マザーボードのハウジングなど）何らかの他のハウジング２１０のフロントパネル上の補助ディスプレイスクリーン２００dおよび２００eの追加の位置をそれぞれ示している。補助ディスプレイスクリーンは、コンピュータに対する無線または他の接続を有する腕時計、リモートコントロールデバイス、リモート壁掛けユニットなど、ディスプレイ機能を有する任意のコンピューティングデバイスまたは他のデバイスの任意の表面上にも配置することができることを当業者は理解するであろう。実際に、補助ディスプレイは、接続がＬＡＮまたはＷＡＮを介して、あるいはインターネットを介してさえ可能になるので、メインコンピュータシステムに物理的に近くである必要はない。
【００２４】
図２Ａ〜２Ｅから明らかなように、補助ディスプレイは、１つまたは複数のＬＥＤ、２行の英数字のディスプレイ、モノクロディスプレイ、カラーディスプレイなど任意数の既知のタイプのディスプレイの形態とすることができる。本発明は、他のコンピューティングデバイスまたは通信デバイスのディスプレイを補助ディスプレイ２００として使用することができることを当業者は理解するであろう。これらの他のコンピューティングデバイスまたは通信デバイスは、汎用コンピュータ、セル電話、およびページャやＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）などのハンドヘルドデバイスを含んでいる。さらに、本発明は、ユーザがログインする前を含めて、コンピューティングデバイス１２０のオンスクリーン表示（例えば、スクリーンセーバーやグラフィックユーザインターフェースのコンポーネントなど）のエリア内に補助ディスプレイ２００として実装された仮想補助ディスプレイを使用することができる。補助ディスプレイ２００は、前述の形態のどのような組み合わせも含むことができ、また１つまたは複数のＬＥＤなどのインジケータと物理的または論理的に組み合わせ、そして／または仮想補助ディスプレイと共に使用することができる。
【００２５】
補助デバイスは、スクリーンなしでも、またはそのスクリーンの電源が切られているときでさえも、機能を提供することができる。例えば、補助デバイスは、オーディオを再生し、データを収集し（例えば、メインコンピュータシステムに後でダウンロードする場合）、計算を実行することなどができる。また、ディスプレイは、フルスクリーンではなくて、１つまたは複数のＬＥＤなどを備えることもできる。このように、多くの利点および長所が、補助ディスプレイスクリーンを有することから生じ、そのため補助デバイスが、本明細書中では補助ディスプレイと呼ばれることもあるが、ディスプレイは必須ではない。一般に、本明細書中で称している補助ディスプレイは、どのような視覚的表現、聴覚的表現、および／または触覚的表現をも含め、感知することができる基本的にどのようなものから構成することもできる。補助ディスプレイデバイスとしての機能を果たすことができるデバイスのタイプの例には、別個のコンピュータシステム、ラップトップの蓋の上のディスプレイ、モバイル電話、ポケットサイズのパーソナルコンピュータ、デジタルイメージベースのピクチャフレーム、台所のディスプレイ、テレビジョン、メディアプレーヤ、アラーム時計を含む時計、腕時計などが含まれる。他のタイプのデバイスには、民生用エレクトロニクスデバイス（冷蔵庫、ホームシアターレシーバ、ＤＶＤプレーヤなど）、壁掛けディスプレイ、自動車、輸送または他の乗り物ユニット（例えば、補助ディスプレイとして車／列車／飛行機にすでにあるディスプレイを使用して）、メインコンピュータシステムのキーボードまたは他の入力デバイス、ＰＤＡ（非セルラ電話ＰＤＡを含む）などのメインディスプレイ内に埋め込まれ、またはメインディスプレイを使用した補助デバイスが含まれる。
【００２６】
（補助ディスプレイの拡張アーキテクチャ）
図面のうちの図３を参照すると、アプリケーションプログラム３０２および他のプログラム（例えば、オペレーティングシステムコンポーネント）を備えるクライアントに対して補助ディスプレイＡＰＩセット３０４を介して補助デバイス３００および／または３０１を公開する例示の実装が示されている。ＡＰＩセット３０４は、クライアントアプリケーション３０６（プログラムの１コンポーネントまたは可能性としてプログラムそれ自体）をシステムに登録すること、コンテンツをこれらの付属デバイスに送信すること、通知を付属デバイスに送信すること、付属デバイスからイベントを受信することを含め、様々なファンクションのＡＰＩを提供する。イベントは、ナビゲーションイベント、コンテンツ要求イベント、コンテンツ変更イベントなどを含むことができる。
【００２７】
ＡＰＩレイヤ３０４は、ポータブルデバイスＡＰＩセット３１０に書き込まれ、このＡＰＩセットは、ユーザモードドライバフレームワーク３１２を介してデバイスのドライバプロセスと通信する。ポータブルデバイスＡＰＩセット３１０は、補助ディスプレイをポータブルデバイスのカテゴリにマップし、デバイスの機能の列挙を可能にする。これは、ユーザモードドライバ内でカプセル化されるが、クライアントアプリケーション３０６に公開されない。図３に示す他の（オプションの）コンポーネントは、この補助ディスプレイ上で通知を提供することができる通知クライアント３１６を含む。例えば、カレンダプログラムなどのアプリケーションプログラムが稼働していないときでさえ、このプログラムに対応するスケジュールされた通知を提供することが望ましいこともあり、この通知クライアント３１６は、このようなシナリオを可能にする。
【００２８】
ハードウェア製造業者の観点に目を向けると、一般に各補助デバイスベンダは、対応する補助デバイスドライバ３２４を提供するが、このデバイスドライバは、補助ディスプレイプラットフォームのプロバイダによって提供することもできる。ある種のタイプの補助デバイスは、これらが、とりわけＡＰＩセット３０４を介して受信することができるどの情報とも一般に互換性のある、ある種のファームウェアを用いて構成されるので、「拡張された」デバイスと考えられる。したがって、このようなデバイスについて汎用のドライバを提供することができるが、以下で説明するように、このドライバは拡張することができ、そして／または他のドライバを追加することができる。
【００２９】
いずれにしても、このユーザモードドライバフレームワークは、デバイスドライバ（例えば、３２４および３２５）を補助ディスプレイプラットフォームに結合するためのＤＤＩ（ｄｅｖｉｃｅ  ｄｒｉｖｅｒ  ｉｎｔｅｒｆａｃｅ）を提供する。次いで、これらのドライバは、このＡＰＩ−受信情報に対応するデータを補助ディスプレイデバイスへの通信のための適切なハードウェアインターフェース（トランスポート）に転送する（また戻す）。例えば、図３において、デバイスドライバ３２４は、デバイス３００に（例えば、ブルートゥース、Ｗｉ−ＦＩ、ＡＭ／ＦＭ赤外線などの）無線通信のためにリモートスタックおよびドライバ３２７に（以前に定義されたプロトコルを介して）データを転送するものとして示されているのに対して、デバイスドライバ３２５は、ＵＳＢ−ベースのハードウェア３２８にデータを転送するものとして示されているが、ＴＣＰ／ＩＰ−ベースのトランスポートなどのネットワークトランスポートを含む他のタイプのトランスポートも可能である。ユーザモードドライバは、接続タイプに関係なくすべての拡張ディスプレイについて機能することができるが、デバイスごとの接続タイプごとに１つのドライバを使用することがより直截的でありそうであることに留意されたい。さらに、図３に示すように、複数のデバイスをコンピュータに結合して、同時に補助デバイスとしての機能を果たすこともできることに留意されたい。ユーザは、どのクライアントアプリケーションのデータがどのデバイスに表示されるかについて、（例えば、システムデータプロバイダ３０８のコントロールパネルなどを介して）設定することができる。システムデータプロバイダ３０８はまた、時間データ、無線信号強度データ、および／またはバッテリレベルデータなどのシステム情報を補助ディスプレイに供給する。
【００３０】
図３にも示すように、「拡張」ディスプレイ３０１は、本明細書中で補助ディスプレイプラットフォームと呼ばれる特定のファームウェアスタックを実行するディスプレイである。例えば、１つの本実装形態においては、このようなファームウェアスタックは、ＴｉｎｙＣＬＲコンポーネントを含み、ＴｉｎｙＣＬＲオブジェクトシリアル化をサポートする。
【００３１】
図３に示すこの例示の実装形態においては、キャッシュされたコンテンツをナビゲートし、表示するために、デバイスアプリケーション３６９およびシェルプログラム３７０は、ＴｉｎｙＣＬＲフレームワーク３７４およびＴｉｎｙＣＬＲランタイムコンポーネント３７６上で実行され、これにより、データがインタープリットされ、ナビゲートされ、表示される。ＴｉｎｙＣＬＲランタイムコンポーネント３７６は、図４を参照して以下で説明するように、少なくとも１つのドライバ３７７およびＴｉｎｙＨＡＬの上に示されている。
【００３２】
一般に、シェルプログラム３７０は、補助ディスプレイデバイスのホームページ、非クライアントエリア、メニュー、および一般的なルックアンドフィールを提供する。この提供されるデータは、それぞれがＴｉｎｙＣＬＲフォームオブジェクトによってルートされるＴｉｎｙＣＬＲビューオブジェクトの可視ツリーである、スクリーンの有向グラフの形態とすることができ、または有向グラフに変更することができる。このシェルレイヤは、このファームウェアのより低いレイヤからボタンイベントを受け取り、これらをインタープリットし、適切な場合にデータ中でナビゲートする。シェルプログラム３７０はまた、前述のように補助ディスプレイプラットフォームを介してメインコンピュータシステムからの通知要求を受け入れ、メインコンピュータシステムに対して要求を発行して、キャッシングマネージャ３７２から、コンテンツが必要とされる（例えば、不足している）ことを知ったときに、新しいコンテンツを提供する。シェルプログラム３７０はまた、メインコンピュータシステムが接続されていないときに生じることがある時刻指定された通知を表示する。レンダリングエンジン３７０は、アプリケーションが、このアプリケーションのデータをレンダリングすることができるカスタムコードを提供できるように拡張可能とすることができることに留意されたい。
【００３３】
オフラインキャッシングマネージャ３７２は、ＴｉｎｙＣＬＲ３７６の上に書かれたアセンブリを備えており、これは、デバイスに格納されたデータアイテムのキャッシュを管理する。このコンポーネントはまた、いくつかのメモリ管理を行い、システムアプリケーションプログラムが、このデバイスが記憶することができるよりも多くのデータを提供できるという事実に対処している。ファームウェアがデータキャッシュを変更する場合、このコンポーネントは、この情報を追跡し、システム上でアプリケーションプログラムに対してイベントをポストして、メインコンピュータシステムがオンラインである場合には直ちに、オンラインでない場合にはマシンがオンラインに復帰するときに知らせる。キャッシュマネージャは、インターフェースを介してドライバ３６０に公開することができる。
【００３４】
本発明の一態様によれば、（図４に一般的に示すように）様々なレイヤは、分かれており、それぞれがデバイス製造業者によって必要に応じて別個に拡張されて、拡張されたハードウェアをサポートすることができる。図４の大半は、図３のファームウェアスタックに一般に対応していることに留意されたい。このアーキテクチャをレイヤに分けることにより、デバイス製造業者には、拡張されたハードウェアのために必要に応じてアーキテクチャにおける適切なレイヤ（または複数のレイヤ）のコードを拡張する必要があるだけである。
【００３５】
より詳細には、ディスプレイパネルおよびコントローラ４９０、補助プロセッサ４９１、ならびにメモリ４９２に加えて、拡張ハードウェア４９３が、デバイスをカスタマイズするためにデバイス製造業者により追加される。カスタマイゼーションの例には、以下の１つまたは複数のもののこのデバイスへの統合が含まれる。これらは、ＳＰＯＴ無線、ブルートゥース無線、ＧＰＳレシーバ、温度センサ、オーディオデコーダ、オーディオエンコーダ、追加ストレージ、指紋リーダなどのバイオメトリクスセンサ、加速度計、ＲＦＩＤタグ／リーダ、存在検出、ストレージアレイ／システム管理に対するインターフェース（例えば、システム情報を提供することができるＳＭｂｕｓなどのシステムバスへのアクセス、またはストレージの大規模アレイへのアクセス）、バッテリ（例えば、メインコンピュータシステムと共用されるものでなくて、このデバイス自体の電源）、赤外線トランシーバ、ＲＦトランスミッタ（例えば、ＲＦリモートコントロール）、マイクロフォン、および／またはインジケータなど他のハードウェアなどである。理解されるように、製造業者は、この補助デバイスファームウェアスタックに対するかなり低減された（例えば、あるとしても最小限の）量の変更しか必要としないように、これらのハードウェアコンポーネントをカスタマイズすることができる。
【００３６】
これらハードウェアコンポーネントの上で、ＨＡＬ（例えば、ハードウェアアブストラクションレイヤ）により、より高レベルのコードをハードウェアに独立な仕方で書くことができるようになる。本明細書中で使用しているように、コードスタックについて言及するときの用語「高レベル（ｈｉｇｈ−ｌｅｖｅｌ）」、「低レベル（ｌｏｗ−ｌｅｖｅｌ）」、「上（ａｂｏｖｅ）」、「下（ｂｅｌｏｗ）」などは、他のコンピューティングシナリオにおいて使用されるこれらの用語と同様であり、一般に、ソフトウェアコンポーネントが、より高いコンポーネントに対してより低いソフトウェアコンポーネントほど、このより低いコンポーネントは、ハードウェアにより近い。図４に示すように、ベースＨＡＬは、必要に応じてＨＡＬ拡張コード４８０によって拡張されて、カスタマイズされたハードウェアをサポートすることができる。例えば、未使用の汎用目的のＩ／Ｏポートなどは、既存のＨＡＬ４７９を介してデバイスを動作させる場合に利用可能にすることもできるので、ＨＡＬを拡張することが常に必要であるとは限らないことに留意されたい。そうでない場合には、ポートは、拡張されたＨＡＬを介して管理することができる。
【００３７】
ＨＡＬ上には、拡張されたハードウェアのために追加されたカスタムドライバ４７７3を含む、ドライバ４７７1〜４７７3がある。図４は、１つのドライバ４７７3と１つの拡張ハードウェアブロック４９３しか示していないが、より多くのドライバおよび／またはハードウェアが追加されることもあることに留意されたい。さらに、別のドライバを追加する代わりに、既存のドライバコードを変更して望ましい追加機能を実行することも等価であることに留意されたい。一般に知られているように、ＨＡＬ４７９は、ハードウェアの違いを抽象するので、デバイス製造業者は、デバイスのあらゆる異なるクラスについてドライバ４７７3をカスタマイズする必要なく、多くのタイプの物理デバイス間で稼働するカスタムドライバ４７７3（または変更されたドライバ）を再利用することができる。
【００３８】
ドライバの上において、他のデバイスソフトウェアは、ＴｉｎｙＣＬＲ３７６などのＣＬＲ（ｃｏｍｍｏｎ  ｌａｎｇｕａｇｅ  ｒｕｎｔｉｍｅ）を含み、これは、．ＮＥＴ共通言語ランタイム環境の比較的小規模の実装を備える。共通言語ランタイム上で稼働するマネージドコードは、共通言語ランタイムが稼働するどのようなプラットフォーム上でも稼働することになり、これは、このプラットフォームのＨＡＬ（ハードウェアアブストラクションレイヤ）、例えばＡＲＭ７チップに基づいたプラットフォームのＨＡＬによって可能にされる。ファームウェアの大部分は、マネージドコードで書かれるので、ファームウェアも、それが稼働するハードウェアのタイプから独立している。デバイスファームウェアの大部分を制御し、このアーキテクチャにＨＡＬおよびＣＬＲを含むことにより、デバイス製造業者は、どのような変更もなく既存のソフトウェアを再利用することができ、このことは、補助ディスプレイとしての機能を果たす様々なタイプのデバイス間で、高品質の一貫した体験を提供するために重要である。
【００３９】
アプリケーションプログラム４０２は、拡張ハードウェア４９３と共に動作するカスタムアプリケーションとすることができる。しかし、図４にユーザ体験拡張によって示されるように、すでに書かれたアプリケーションプログラムを拡張することによってこのユーザ体験を拡張することも可能である。例として、拡張ハードウェアが、通知の受け取りにより点灯する簡単なインジケータを備えるものと考える。通知を受け取るプログラム４０２は、通知が受け取られたときにインジケータを点灯し、通知が取り下げられたときにインジケータを消灯するように拡張することができる。
【００４０】
性能上の理由のためになど、マネージドコードで書くことができないある種のアプリケーションは、ＣやＣ＋＋などのネイティブコードで書くことができ、図４にＣＬＲ拡張４７６で示すように、ＣＬＲを基本的に拡張することができる。ＣＬＲは、リード、ライト、オープン、クローズ、Ｉ／Ｏ制御など、フレームワーク拡張４７４による使用のためのＡＰＩを提供することができるが、これは、ある種のアプリケーションには、十分ではないこともある。例えば、高速媒体バッファリングは、アプリケーションプログラムレベルのバッファからＣＬＲを介して、より低レベルのデジタル信号処理バッファにコピーされる場合に十分高速に実現できないことがある。このようなコピーによる費用を回避するために、ＣＬＲ拡張４７６中のネイティブコードが、単一セットのバッファを埋めることができる。
【００４１】
補助シェルプログラム３７０はまた、メインコンピュータシステム上でＡＰＩを使用し、デバイスにコードをダウンロードすることによって拡張することができる。そのようにするための典型的な理由は、カスタマイズされた機能に対して、アイコン、要約テキスト、コンテキストに応じたテキスト、メニューアイテムなどの参照を追加することである。例えば、オーディオプレーヤとしても構成される補助ディスプレイデバイスにより、他のデータを記録し、ゲームを楽しみ、アポイントカレンダを維持することもできるようになる。シェル拡張４７０を介してアイコンおよびメニューアイテムを追加して、それにより、これらの異なるアプリケーションプログラムを簡単に実行することができるようになる。フレームワークライブラリ３７４もまた、対応する拡張４７４を介して拡張することができる。
【００４２】
図５に示すように、補助ディスプレイスクリーンに十分な余裕がある場合の一実装においては、補助ディスプレイデバイスのスクリーン５０６の領域５０４は、デバイス製造業者が会社ロゴなど何らかの情報を示すためにリザーブされることに留意されたい。この領域は、拡張ハードウェアに対応する情報を示す場合に使用することができ、例えば、ＧＰＳレシーバは、この領域に何らかのＧＰＳデータ、または選択されるとＧＰＳデータをメインスクリーンに速やかに呼び出すことができるアイコンを表示することができる。
【００４３】
図３に戻ると、このプラットフォームは、さらにメインコンピュータシステムのクライアント補助ディスプレイＡＰＩセット３０４および／または３１０上で拡張可能である。この目的を達成するために、クライアントＡＰＩを使用して簡単で拡張可能なメカニズムが、このデバイス製造業者によって提供されるデバイスソフトウェアとメインコンピュータシステムの間で通信する場合に提供される。これにより、デバイス製造業者には、このプラットフォームを使用して特別なハードウェアを必要とする特定の機能のエンドツーエンドの実装を提供する能力が提供される。ＡＰＩ拡張性により、デバイス製造業者および独立系ソフトウェアベンダは、専用化されたＡＰＩを必要とすることなく、このデバイス上のカスタマイズされたハードウェアとインタラクトすることができる、メインコンピュータシステム上のクライアントアプリケーション３０６および他のプログラム３０２を開発することができるようになる。
【００４４】
より詳細には、拡張性モデルでは、クライアントアプリケーション３０２がデバイスにデータを送ることができるようになる前に「エンドポイント」を指定する必要がある。デバイス製造業者に、補助デバイスファームウェア中のコードを拡張してデバイス上のエンドポイントを公示させることにより、メインコンピュータシステム上のソフトウェアは、特別なハードウェア機能を有するデバイスを識別し、このエンドポイントに対して直接に通信チャネルをオープンすることができる。クライアントＡＰＩは、クライアントアプリケーションとデバイスの間でトランスポートされるデータのタイプが、関連していない、例えば、テキスト、バイナリデータ、媒体、オブジェクトなどを通信できるように設計される。このようにして、このエンドツーエンドプラットフォームは、デバイス製造業者の側においてあまり多くの努力をしなくても、ハードウェア拡張性を実現している。
【００４５】
機能拡張されたデバイスでは、基本的にエンドポイント間でデータパイプを確立し、シリアル化されたオブジェクトなどに通す必要があるだけである。これを実現するための一方法は、．ＮＥＴリモーティングと呼ばれる技術を使用する方法であり、これにより、メインコンピュータシステム上のコードは、補助デバイス上のクラスに対するメソッドコールを行うことができるようになる。このように、例えば、メインコンピュータシステム上のアプリケーションは、ＧＰＳ機能を用いて構成された補助デバイスにコールして、メインコンピュータシステム上でＧＰＳ情報を取得することができる。
【００４６】
前述のように、コンテンツは、機能拡張されたデバイス上のキャッシュにダウンロードすることができ、次いでこのデバイスそれ自体が、必要に応じてコンテンツを処理することになる。これにより、切り離された使用が可能になり、また一般に１つのアプリケーションが一度に実行されて補助ディスプレイ上のキャッシュされたコンテンツにアクセスし、システム上で稼動している複数のアプリケーションにコンテンツを提供させることも可能になることに留意されたい。
【００４７】
以上から理解することができるように、本発明は、必要に応じて拡張して、追加のハードウェアをサポートすることができるレイヤを有する補助ディスプレイプラットフォームを提供する。同時に、補助ディスプレイプラットフォームにより、ハードウェアデバイスの製造業者は、これらのデバイスをフル機能の補助ディスプレイとして使用し、さらに、このファームウェアに対してたとえあるとしてもほとんど変更なしに拡張可能にすることができ、その結果、製造業者は、所望の機能を簡単に追加すると共に、自身のデバイスに改良を加え、他の製造業者のデバイスと差別化できるようになる。このように、本発明は、現代のコンピューティングにおいて必要とされる非常に多くの利点および長所を提供する。
【００４８】
本発明は、様々な変更形態および代替構造の余地があるが、本発明のある種の例示した実施形態について、図面中に示し、上記に詳細に説明した。しかし、本発明を開示した１つまたは複数の特定の形態に限定する意図はなく、反対に、本発明の趣旨および範囲に含まれるすべての変更形態、代替構成、および均等物を網羅するものであることを理解されたい。
【図面の簡単な説明】
【００４９】
【図１】本発明を組み込むことができる、従来のパーソナルコンピュータシステムの形態の汎用コンピューティングデバイスを示すブロック図である。
【図２Ａ】様々なデバイス上にこの補助ディスプレイを配置するための位置を一般的に例示する図である。
【図２Ｂ】様々なデバイス上にこの補助ディスプレイを配置するための位置を一般的に例示する図である。
【図２Ｃ】様々なデバイス上にこの補助ディスプレイを配置するための位置を一般的に例示する図である。
【図２Ｄ】様々なデバイス上にこの補助ディスプレイを配置するための位置を一般的に例示する図である。
【図２Ｅ】様々なデバイス上にこの補助ディスプレイを配置するための位置を一般的に例示する図である。
【図３】本発明の一態様による、メインコンピュータシステム上のアプリケーションプログラムが任意の補助ディスプレイデバイスのファームウェアとデータを交換することができる例示的な実装形態を一般的に示すブロック図である。
【図４】本発明の一態様に従って構成される例示的なレイヤ化されたアーキテクチャを一般的に示すブロック図である。
【図５】本発明の一態様に従って、デバイス製造業者がどのようにスクリーンをカスタマイズすることができるかを示すディスプレイスクリーンを有するハードウェアディスプレイを例示的に表す図である。
【符号の説明】
【００５０】
１２０  コンピューティングデバイス
１２１  主処理装置
１２２  システムメモリ
１２３  システムバス
１２４  ＲＯＭ
１２５  ＲＡＭ
１２６  ＢＩＯＳ
１２７  ハードディスクドライブ
１２８  磁気ディスクドライブ
１２９  磁気ディスク
１３０  光ディスクドライブ
１３１  光ディスク
１３２  ハードディスクドライブインターフェース
１３３  磁気ディスクドライブインターフェース
１３４  光ドライブインターフェース
１３５  オペレーティングシステム
１３６  アプリケーションプログラム
１３６’  アプリケーションプログラム
１３７  他のプログラムモジュール
１３８  プログラムデータ
１４０  キーボード
１４２  マウス
１４６  シリアルポートインターフェース
１４７  モニタ
１４８  ビデオアダプタ
１４９  リモートコンピュータ
１５１  ローカルエリアネットワーク
１５２  ワイドエリアネットワーク
１５３  ネットワークインターフェース
１５４  モデム
１５５  補助ディスプレイインターフェース
１５６  入力デバイスインターフェース
２００  補助ディスプレイ
２０１  入力デバイス
２０２  電話
２０４  モバイルコンピュータ
２０６  モニタ
２０８  コンソール
２１０  ハウジング
３００  リモート補助ディスプレイ
３０１  補助ディスプレイハードウェア
３０２  補助認識アプリケーション
３０４  補助ディスプレイＡＰＩ
３０６  クライアントアプリケーション
３０８  システムデータプロバイダ
３１０  ポータブルデバイスＡＰＩ
３１２  ユーザモードドライバフレームワーク
３１６  通知クライアント
３２４  基本ディスプレイデバイスドライバ
３２５  拡張ディスプレイデバイスドライバ
３２７  リモートスタックおよびドライバ
３２８  ホストハードウェア
３６９  デバイスアプリケーション
３７０  シェルプログラム
３７２  オフラインキャッシングマネージャ
３７４  ＴｉｎｙＣＬＲフレームワーク
３７６  ＴｉｎｙＣＬＲランタイムコンポーネント
３７７  ＴｉｎｙＣＬＲ  ＵＳＢドライバ
３８０  ＵＳＢクライアントチップセット
４０２  アプリケーション
４０３  ユーザ体験拡張
４７０  シェル拡張
４７４  フレームワークライブラリ拡張
４７６  ＣＬＲ拡張
４７７  ドライバ
４７９  ＨＡＬ
４８０  ＨＡＬ拡張
４９０  ディスプレイパネルおよびコントローラ
４９１  補助プロセッサ
４９２  メモリ／ストレージ
４９３  拡張ハードウェア
５０４  領域
５０６  スクリーン
【図１】
2006209738.tif 000003
【図２Ａ】
2006209738.tif 000004
【図２Ｂ】
2006209738.tif 000005
【図２Ｃ】
2006209738.tif 000006
【図２Ｄ】
2006209738.tif 000007
【図２Ｅ】
2006209738.tif 000008
【図３】
2006209738.tif 000009
【図４】
2006209738.tif 000010
【図５】
2006209738.tif 000011
【外国語明細書】
2006209738000001.pdf