(57)【要約】      （修正有）【課題】モニタまたは他のディスプレイ機構の接続時にコンピュータ・システムのモニタ関連設定を動的且つインテリジェントに構成する。【解決手段】モニタ構成は、１つまたは複数のディスプレイ機構、それらのビデオ設定、相対的な位置決め、およびパワー・スキーム・データを含むことができる。モニタがコンピュータ・システムにプラグインされるかまたは該コンピュータ・システムからアンプラグされると、モニタのマネージャ・コンポーネントに通知され、該モニタのマネージャ・コンポーネントは、モニタ識別子などに基づいて現在の構成を判断する。前のモニタ構成データが検出される場合は、前のモニタ構成が適用される。正確な合致がない場合には、持続される類似した構成データに基づき、または能力を問い合わせ、必要に応じてビデオ・カードおよびモニタが使用できるビデオ・モードの検索を繰り返すことによって、構成データが構築される。【選択図】図１
2006209091.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムにおける方法であって、
少なくとも１つのディスプレイ機構を含む構成が変更されたという表示を受信するステップと、
変更された前記構成が、前記コンピュータ・システム上で維持される構成データを有するものに対応するかどうかを判断し、対応する場合には、前記構成データに基づいて該構成を変更するステップと
を備えることを特徴とする方法。
【請求項２】
変更された前記構成は、構成データを有するものに対応せず、変更された該構成内の少なくとも１つのディスプレイ機構に対応する情報に基づいて構成を決定するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
能力情報について前記ディスプレイ機構に問い合わせるステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
現在組み込まれているビデオ・カードを用いて前記能力情報に基づいて設定を試験するステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記試験は成功せず、異なる設定の試験を繰り返すステップをさらに備えることを特徴とする請求項４に記載の方法。
【請求項６】
識別子について少なくとも１つのディスプレイ機構に問い合わせるステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
表示を受信するステップは、接続されるまたは切断されるディスプレイ機構に対応するイベントを受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記構成データに基づいて前記構成を変更するステップは、１組のビデオ関連設定を少なくとも１つのディスプレイ機構に適用するステップを含み、前記組は、解像度の設定、リフレッシュレートの設定、色の深みの設定、配向の設定、輝度の設定、コントラストの設定、ビデオ・ヘッド状態の設定、および／または、インチ当たりのドットの設定の中から少なくとも１つの設定を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記構成データへの変更を持続させるステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
実行されるときに請求項１に記載の方法を行うコンピュータ実行可能命令を有することを特徴とする少なくとも１つのコンピュータ可読媒体。
【請求項１１】
実行されるときに、
切断される前記組の機構の結果として該組が変更された後に前記ディスプレイ機構の構成データを維持することを含めて、少なくとも１つのディスプレイ機構を含む組のビデオ関連の設定を含むディスプレイ機構の構成データを持続させ、
再接続される前記組の機構の結果として、該組が実質的にいつ復元されるかを判断し、
前記持続されるディスプレイ機構の構成データに基づいて、少なくとも前記再接続されるディスプレイ機構についてのビデオ関連設定を適用することを含む該組を復元させる
ことを含むステップを行うコンピュータ実行可能命令を有する少なくとも１つのコンピュータ可読媒体。
【請求項１２】
前記ディスプレイ機構の構成データを持続させるステップは、情報を持続性ストアに書き込むステップを含み、前記情報は、１組のディスプレイ機構設定の少なくとも１つの設定を含み、前記組は、解像度の設定、リフレッシュレートの設定、色の深みの設定、配向の設定、輝度の設定、コントラストの設定、ビデオ・ヘッド状態の設定、および／または、インチ当たりのドットの設定を含むことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記ディスプレイ機構の構成データを持続させるステップは、幾何学形状情報をデータ・ストアに書き込むステップをさらに含むことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
現在取り付けられているビデオ・カードを用いて、前記再接続されたディスプレイ機構についての前記ビデオ関連設定を試験するステップと、前記試験が成功しない場合に、異なるビデオ関連設定の試験を繰り返すステップとをさらに備えることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
前記組が実質的にいつ復元されるかを判断するステップは、現在のパワー・スキームを評価するステップを含むことを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１６】
前記ディスプレイ機構の構成データへのユーザ変更に対応する情報を受信するステップと、前記変更を持続させるステップとをさらに備えることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１７】
コンピュータ・システムにおけるサブシステムであって、
現在のディスプレイ機構の構成への変更についての情報を受信するディスプレイ機構のマネージャ・コンポーネントと、
ディスプレイ機構の構成データを含むデータ・ストアと
を備え、
ａ）前記ディスプレイ機構の構成データに対応する情報は手動で変更され、
ｂ）ディスプレイ機構を切断することによって、前記現在の構成への変更が加えられ、
ｃ）ディスプレイ機構を接続することによって、前記現在の構成への変更が加えられるときに、
前記ディスプレイ機構のマネージャ・コンポーネントが、更新されたディスプレイ機構の構成データを用いて前記データ・ストアを更新する
ことを特徴とするサブシステム。
【請求項１８】
ディスプレイ機構を接続するまたは切断することによって、前記現在の構成への変更が加えられ、前記ディスプレイ機構のマネージャ・コンポーネントは、前記変更されたディスプレイ機構の構成内にある各ディスプレイ機構を識別することを特徴とする請求項１７に記載のサブシステム。
【請求項１９】
前記マネージャ・コンポーネントは、前記変更された現在の構成に対応する構成データを検索し、検出された場合には、前記検索において配置されたときに前記構成データに基づいて設定を適用することを特徴とする請求項２４に記載のサブシステム。
【請求項２０】
前記検索は成功せず、前記ディスプレイ機構は、類似した構成データに基づいてまたは該ディスプレイ機構に対応する能力情報に基づいて設定を適用することを特徴とする請求項２５に記載のサブシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムに関し、より具体的には、コンピュータ・ディスプレイおよび他のディスプレイ機構の管理に関する。
【背景技術】
【０００２】
特定のコンピュータ・システム・ユーザ、特に、ラップトップ型コンピュータのようなモバイル・コンピューティング装置のユーザは、多くの場合、コンピュータ・システムを、ディスプレイ・モニタ（または、単にモニタ）のような異なるディスプレイ機構に接続する必要がある。例えば、ラップトップ型コンピュータは内部モニタを有するが、プレゼンテーションをするときに、コンピュータ・ユーザは、ラップトップ型コンピュータを大きなモニタまたは同等の投影装置に接続することがある。他の例は、モバイル・コンピュータを、仕事中はあるモニタに接続し、自宅では異なるコンピュータに接続するユーザを含む。実際、特定のタイプのモバイル・コンピュータ・システムは、モニタなしで設計され、移動先間で移動されるように意図されており、そこで、各々の移動先のモニタに接続される。
【０００３】
さらに、広く知られてはいないが、現代のオペレーティング・システム（本件特許出願人のＷｉｎｄｏｗｓ(登録商標)ＸＰオペレーティング・システムのような）は、多数のモニタの画面を１つのより大きい画面として用いることを可能にする方法など、多数のモニタを種々の方法でサポートする。換言すると、２つまたはそれ以上のモニタ等上で同じ画像を同時に表示する（クローン・モードと呼ばれる）のではなく、オペレーティング・システムが、組み込まれたビデオ・カード（または、マルチヘッド・カード）に接続されたモニタを拡張して単一のデスクトップとして働き、ユーザは、モニタ間でマウス・ポインタおよびドラッグ・プログラム・ウィンドウを動かすことができる。この拡張された画面モードにおいて、オペレーティング・システムは、例えば、解像度、リフレッシュレート、色の深み等のような、各モニタについてのソフトウェアにより管理される別個の設定を維持する。多数のモニタを、これらのモニタにわたる単一のアプリケーションのために使用できるゲーム用アプリケーションの場合のような状況もあり、このスパン・モードにおいて、モニタは、通常、同じ設定を有する。
【０００４】
このように、ユーザは、該ユーザがコンピュータ・システムを１つまたは複数のディスプレイ機構に接続することができる点に関して、かなりの柔軟性を有する。しかしながら、例えば、モニタが接続されるまたは切断されるといった、ディスプレイ機構のコンピュータ・システムの現在の構成に変更があるときはいつでも、この変更に合わせて調整するために、かなりの量のユーザ動作を必要とする可能性がある。これにより、ユーザが、再構成に基づいて設定を変更する方法に関する知識をもつことが必要となり、ユーザが、所望の設定を記憶するかまたは試してみることが必要になることもある。
【０００５】
この再構成要件についての１つの理由は、ユーザが接続可能な多くのタイプのディスプレイ機構があり、多くが、異なる能力、画面サイズ等を有することである。別の理由は、一部のコンピュータ・システムが多数のユーザを有し、各ユーザが異なる設定を必要とすることである。一部のユーザは、仕事用モニタから家庭用モニタにまたはその逆に変更するとき、あるいは異なるユーザのログアウト後にログインするたびに、設定を再構成することを気にしないが、他のユーザは、所望の変更を行うことについて十分な知識をもっていないか、または、例えば、ユーザが別のユーザの好みを許容するといったように変更を苦にしないか、あるいは２つの場所で同じ設定を使用する（「最小公分母」の解法、モニタの１つの他の設定が好ましいものであったとしても）。他の状況においては、利用可能などのような大きなモニタまたは投射装置にも接続する必要がある、プレゼンテーションを行うユーザのような、高度化したコンピュータ・ユーザでさえ、接続の必要がある特定のディスプレイ機構について何も知らないことがある。さらに、近い将来、多くのテレビ受信機および航空機に組み込まれたディスプレイが、コンピュータに接続されてコンピュータ・モニタとして働き、これにより旅客および／またはホテルの部屋に滞在している旅行者等が、テレビまたはディスプレイに接続し、そのテレビまたはディスプレイに適合するようにコンピュータのビデオ設定を再構成することが必要になる可能性が高い。例えば、様々な状況のために、予め設定された解法は実行可能ではなく、例えば、ホテルの部屋のテレビは、航空機の座席に組み込まれたディスプレイより大きくすべきことはほぼ間違いないように、各々が異なる能力を備えた多種多様のこうしたディスプレイ機構があることに注意されたい。
【０００６】
実際には、特定のディスプレイ機構に接続するとき、解像度、色の深みおよびリフレッシュレートが、ユーザが再構成する必要があるまたは再構成したいと望む全ての変数である。これらの設定は、コンピュータ・システムに組み込まれたビデオ・カードの能力と併せて、ディスプレイ機構の能力によって決定される。１つのディスプレイ機構上では良好に見える表示可能なオブジェクトも、別のディスプレイ機構の設定で用いられるときに、小さ過ぎたり、大き過ぎたりすることがあるので、画面サイズは、既存の設定を変更する別の理由になる。特定の設定（例えば、より高いリフレッシュレート）を有することが、他のものより多くの電力を消費し、バッテリ寿命を節約しようとするときに望ましくないことがあるので、電力消費は、考慮する必要がある更に別の要因である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
要約すると、ディスプレイ機構と共に動作させるためにコンピュータ・システムを構成する多くの方法があり、ユーザが接続することができる多くのタイプのディスプレイ機構がある。コンピュータ・システムに接続させるための多数のディスプレイ機構が利用可能であるとき、種々の選択肢も存在する。必要とされるのは、１つまたは複数のディスプレイ機構に接続するときにユーザ体験を簡単化し、さらに、多くの可能なユーザ・シナリオに対処して、ユーザに望ましい結果を与えるように柔軟にこれを行う方法である。
【課題を解決するための手段】
【０００８】
手短に言えば、本発明は、モニタまたは他のディスプレイ機構の接続時にコンピュータ・システムのモニタ関連設定を動的且つインテリジェントに構成し、および／または、切断時に再構成するためのシステムおよび方法を提供するものである。本発明は、特定のディスプレイ機構について設定変更を行うだけでなく、全体としてモニタ構成についての設定変更を行うことができ、このモニタ構成は、互いに対するモニタ画面の相対的位置のような情報、およびそれらのビデオ・モード（例えば、パワー・スキーム）に影響を与える情報と共に、１つまたは複数のディスプレイ機構の概念と、それぞれのビデオ設定およびモードとを含む。ここで用いられる「モニタ」および「ディスプレイ機構」という用語は同等のものであり、一般に交換可能に用いられる（他の特定の状況では、プロジェクタのようなディスプレイ機構は、文字通りの意味でモニタと考えることができないが）ことに留意されたい。
【０００９】
モニタがコンピュータ・システムにプラグインされると、ソフトウェア内の一時モニタ・マネージャ・コンポーネントに通知され、該一時モニタ・マネージャ・コンポーネントは、該モニタを識別しようと試み、該モニタがコンピュータ・システム上で前に構成されたかどうかを確認する。互いに接続されたモニタのそれぞれの識別子と共に維持することができる、接続されたばかりのモニタの識別子を含むものについて、持続されるモニタ構成が検索される。モニタ構成データが前に確立されたものである場合には、接続されたばかりのモニタの確立されたビデオ・モードを獲得し、同様に他のいずれかの接続されたモニタのビデオ・モードを獲得することもできる。正確に合致しない場合には、前に確立された類似した構成からデータを獲得することができる。変更を必要とする場合には、全てのモニタについてのビデオ・モードを一度に適用することができるので、ユーザとの対話なしに、「フラッシュ」すなわちリフレッシュを１度だけ必要とする。既にプラグインされたモニタのビデオ・モードを変更する必要がないモニタ構成を検出することもできる。
【００１０】
一実施において、本発明は、オペレーティング・システム内のビデオ・スタックによって提供されるプラグ・アンド・プレイ・イベントの受信によって示されるように、モニタの接続または切断によって動作する。本発明はまた、ユーザがログインするとき、ユーザがコンピュータをロックし、次にロック解除するとき、あるいはユーザの高速切り替えが行われるときにも動作し、ユーザのログアウト時にモニタの変更を行う状況に対処する。
【００１１】
一時モニタ・マネージャ・コンポーネントは、受信と同時に１つまたは複数のモニタを構成し、こうした既知の構成が前に確立された場合は既知の構成内に、あるいは前に確立されなかった場合は最も可能な望ましい構成（可能な限り）にすることができる。より具体的には、合致する構成が検出されない場合には、接続されている各モニタの能力およびシステムのビデオ能力に基づいて新しい構成が判断されるが、電力および動作のタイプのような他の要因（例えば、メディア再生対画像表示）が、所定のモニタ構成を変更することもある。
【００１２】
一実施において、モニタが前にコンピュータ・システムに接続されなかった場合、可能なビデオ・モードについて該モニタに問い合わせされる。モニタが応答する場合は、戻された情報を用いて、現在のビデオ・カードの能力に関するそのモニタについての最良の可能な設定を求め、ユーザ対話なしにビデオ・モードを適用することができるが、代替的に、初めて特定のモニタに遭遇したときのように、何らかのユーザ・インターフェースをユーザに提供することも実行可能である。モニタがビデオ・モード情報を有していない場合には、標準的な（例えば、最小の）ビデオ・モード構成を用いることができる。大抵の場合、モニタ構成が正しいかどうかに関するユーザ確認は、システムがモニタ構成を検出できず、モニタがビデオ・モード情報を提供しないときにだけ必要とされる。
【００１３】
最良推定のモニタ構成を検索するためにさらなる拡張を行い、最良と思われるモニタ構成を検出することができる。これらの拡張は、現在プラグインしているモニタが前に確認されたものであるが、同じモニタ構成ではないシナリオにおける既存の設定を用いることを含むことができる。
【００１４】
切断時に新たに接続されたモニタをインテリジェントに構成することに加えて、マネージャ・コンポーネントは、あらゆる残存している（依然として接続されている）モニタを再構成し、構成変更に合わせて調整することができる。このことは、設定の変更を含むことができ、さらにウィンドウの入れ替え、および残存しているモニタにわたって切断されたモニタ上に表示される他の画像を含むことができる。マネージャ・コンポーネントは、ユーザが構成（例えば、設定の１つまたはそれ以上）に対して行うあらゆる手動変更も追跡し、同じモニタまたは類似したタイプのモニタに遭遇したときに該構成を自動的に復元する。
【００１５】
さらに、本発明がモニタ構成の変更時にビデオ・モードを設定する役割を担っているので、本発明は、低バッテリ状態に遭遇する可能性があるモバイル装置を取り扱うときなど、節電が重要なコンピュータにおいて電力を保存するのに必要とされるビデオ・モードの変更の対処に拡張可能である。一時モニタ・マネージャにパワー・スキームの変更を通知することができ、該一時モニタ・マネージャは、均一のパワー・ポリシー規則を適用するように働くことができる。現在、モバイル装置の最新ディスプレイ装置ドライバがマルチモニタ認識型ではないため、この機能は、多くの場合、モバイル装置がその内部モニタだけに電力関連ビデオ・モード変更を加えるという点で、付加的な利益を提供する。
【００１６】
他の利点は、図面と併せて、以下の詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００１７】
例示的な動作環境
図１は、本発明を実施することができる適切なコンピューティング・システム環境１００の一例を示す。コンピューティング・システム環境１００は適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能性の範囲について何らの制限を示唆するように意図されるものではない。また、コンピューティング環境１００は、例示的なオペレーティング環境１００に示されるコンポーネントの任意の１つまたは組み合わせに関連する依存関係または要件を有するものとして解釈すべきでもない。
【００１８】
本発明は、他の多数の汎用または特殊用途のコンピューティング・システム環境または構成によって動作することができる。本発明と共に用いるのに適した公知のコンピューティング・システム、環境、および／または構成の例には、これらに限定されるものではないが、パーソナル・コンピュータ、サーバ・コンピュータ、手持ち式またはラップトップ型装置、タブレット装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境等が含まれる。
【００１９】
本発明は、コンピュータによって実行されるプログラム・モジュールのようなコンピュータ実行可能命令との一般的なコンテクストに即して説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。本発明は、通信ネットワークを通してリンクされたリモート処理装置によってタスクを行う分散コンピューティング環境において実施することもできる。分散コンピューティング環境においては、メモリ記憶装置を含む局所的なおよび／またはリモートのコンピュータ記憶媒体内にプログラム・モジュールを配置することができる。
【００２０】
図１を参照すると、本発明を実施するための例示的なシステムが、コンピュータ１１０の形態の汎用コンピューティング装置を含む。コンピュータ１１０のコンポーネントは、これらに限定されるものではないが、処理ユニット１２０、システム・メモリ１３０、および該システム・メモリを含む種々のシステム・コンポーネントを該処理ユニット１２０に連結するシステム・バス１２１を含むことができる。システム・バス１２１は、あらゆる種類のバス・アーキテクチャを用いるメモリ・バスまたはメモリ・コントローラ、周辺バス、およびローカル・バスなど、幾つかのタイプのバス構造体のいずれかにすることができる。限定のためではなく一例として、こうしたアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子標準化協会（ＶＥＳＡ）ローカル・バス、およびメザニン・バスとしても知られる周辺コンポーネント相互接続（ＰＣＩ）バスが含まれる。
【００２１】
コンピュータ１１０は、通常、種々のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によりアクセス可能な如何なる利用可能な媒体とすることができ、揮発性および不揮発性媒体、並びに取り外し可能媒体および固定媒体の両方を含む。限定のためではなく一例として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体とを含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュールまたは他のデータのような情報の格納のために、いずれかの方法または技術で実装される揮発性および不揮発性、取り外し可能および固定媒体を含む。コンピュータ記憶媒体は、これらに限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスク格納部または他の磁気ストレージ、あるいは所望の情報を格納するのに用いることができ、且つ、コンピュータ１１０によりアクセス可能な他の何らかの媒体を含む。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波若しくは他の伝送機構のような変調されたデータ信号に具現化するものであり、如何なる情報送達媒体をも含む。「変調されたデータ信号」という用語は、情報を信号もエンコードする方法で設定または変更された１つまたは複数の特性を有する信号を意味する。限定のためではなく一例として、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、ＲＦ、赤外線および他の無線媒体のような無線媒体とを含む。上記のいずれの組み合わせも、コンピュータ可読媒体の範囲内に含ませるべきである。
【００２２】
システム・メモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダム・アクセス・メモリ（ＲＡＭ）１３２のような揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。基本入力／出力システム１３３（ＢＩＯＳ）は、起動中などに、コンピュータ１１０内の要素間における情報の転送を助ける基本ルーチンを含み、通常、ＲＯＭ１３１に格納される。ＲＡＭ１３２は、一般に、処理ユニット１２０に即時にアクセス可能であり、および／または、現在処理ユニット１２０によって動作しているデータおよび／またはプログラム・モジュールを含む。限定のためではなく一例として、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７を示す。
【００２３】
コンピュータ１１０は、他の取り外し可能／固定の、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例に過ぎないが、図１は、固定不揮発性の磁気媒体との間で読み取りまたは書き込みを行うハードディスク・ドライブ１４１、取り外し可能で不揮発性の磁気ディスク１５２との間で読み取りまたは書き込みを行う磁気ディスク・ドライブ１５１、およびＣＤ  ＲＯＭまたは他の光媒体のような取り外し可能で不揮発性の光ディスク１５６との間で読み取りまたは書き込みを行う光ディスク・ドライブ１５５を示す。例示的なオペレーティング環境に用いることができる他の取り外し可能／固定の揮発性／不揮発性のコンピュータ記憶媒体には、これらに限定されるものではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。通常、ハードディスク・ドライブ１４１は、インターフェース１４０のような固定メモリ・インターフェースを通してシステム・バス１２１に接続されており、磁気ディスク・ドライブ１５１と光ディスク・ドライブ１５５とは、通常、インターフェース１５０のような取り外し可能メモリ・インターフェースによってシステム・バス１２１に接続される。
【００２４】
上記で説明され、図１に示されたドライブおよびこれらの関連したコンピュータ記憶媒体により、コンピュータ可読命令、データ構造、プログラム・モジュールおよびコンピュータ１１０についての他のデータが格納される。図１において、例えば、ハードディスク・ドライブ１４１は、格納オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６およびプログラム・データ１４７として示される。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同一または異なるもののいずれかにできることに留意されたい。最低限それらが異なるコピーであることを示すために、ここでは、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６およびプログラム・データ１４７には、異なる番号が与えられている。ユーザは、タブレットのような入力装置、または電子デジタイザ１６４、マイクロホン１６３、キーボード１６２、および、一般にマウス、トラックボール、またはタッチ・パッドと呼ばれるポインティング・デバイス１６１を通してコマンドおよび情報をコンピュータ１１０に入力することができる。図１に示されていない他の入力装置は、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ等を含むことができる。これらおよび他の入力装置は、システム・バスに連結されるユーザ入力インターフェース１６０を通して処理ユニット１２０に接続されることが多いが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースおよびバス構造体によって接続することもできる。モニタ１９１または他のタイプのディスプレイ装置も、ビデオ・インターフェース１９０のようなインターフェースを介してシステム・バス１２１に接続される。モニタ１９１は、タッチ・スクリーン・パネル等と一体化させることもできる。モニタおよび／またはタッチ・スクリーン・パネルは、タブレット型パーソナル・コンピュータにおけるように、コンピューティング装置１１０が組み込まれたハウジングに物理的に連結させ得ることに留意されたい。さらに、コンピューティング装置１１０のようなコンピュータは、スピーカ１９５およびプリンタ１９６のような、周辺出力インターフェース１９４等を通して接続できる他の周辺出力装置を含むこともできる。
【００２５】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つまたは複数のリモート・コンピュータへの論理接続を用いてネットワーク化された環境で動作することができる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般的なネットワーク・ノードとすることができ、一般に、コンピュータ１１０に関する上述した要素の多くまたは全てを含むが、メモリ記憶装置１８１だけが、図１には示されている。図１に示される論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイドエリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。こうしたネットワーク化環境は、事務所、企業全体にわたるコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、普通のものである。
【００２６】
ＬＡＮネットワーク化環境で用いられる際、コンピュータ１１０は、ネットワーク・インターフェースまたはアダプタ１７０を通してＬＡＮ１７１に接続される。ＷＡＮネットワーク化環境で用いられる際、コンピュータ１１０は、一般的に、インターネットのようなＷＡＮ１７３上で通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は、内蔵にもまたは外付けにもできるが、ユーザ入力インターフェース１６０または他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク化された環境においては、コンピュータ１１０またはその一部に関連して示されたプログラム・モジュールは、リモートのメモリ記憶装置に格納することができる。限定のためではなく一例として、図１は、リモート・アプリケーション・プログラム１８５を記憶装置１８１上に常駐するものとして示している。図示のネットワーク接続は例示的なものであり、コンピュータ間における通信リンクを確立する他の手段を用い得ることが理解されるであろう。
【００２７】
以下に説明されるように、本発明は、一般に、１つまたは多数のリモート・システム上に常駐する、例えばＳＱＬサーバおよび／またはＸＭＬデータ・プロバイダ（ウェブ・サービス）に対応するデータ・ソースを含むことができるデータ・ソースに向けられることに注意されたい。図１のコンピューティング環境１００は、ＳＱＬサーバにより提供されるデータ、ウェブ・サービス・サーバにより提供されるデータおよび他のものを含むデータの任意の局所的および／またはリモート・ソースを含むように理解される。
【００２８】
モニタ構成の管理
本発明は、一般に、１つまたは複数のモニタが構成される方法のあらゆる変更が、マネージャ・コンポーネントで検知され、次に、コンピュータにより管理されたモニタ構成データを自動的に適用し、大部分のユーザが好むと思われる方法でこの変更を補償する、システムおよび方法に向けられる。理解されるように、本発明を実施する多数の方法が実行可能であり、代替案の一部だけがここに説明されている。例えば、本発明は、１つまたは複数のビデオ・カードを組み込むことができ、コンピュータ・システムとの間のモニタの接続及び切断が、プラグ・アンド・プレイ（ＰＮＰ）技術に基づいて、コンポーネントのようなオペレーティング・システム・コンポーネントによって検知されるコンピュータ・システムを参照して説明される。しかしながら、本発明は、テレビ受信機に接続するメディア・プレイヤのような、他のタイプの装置上に代わって実装することもできる。実際に、その能力に対応する一部のデータまたは識別子を別の装置に通信することができる、コンピュータ・モニタ、テレビ受信機、プロジェクタ装置等のような如何なるディスプレイ機構も、本発明から利益を得ることができる。したがって、本発明は、ここに用いられるいずれかの特定の例に限定されるものではなく、寧ろ、一般にコンピューティングの際に利益および利点を提供する種々の方法において用いることができる。
【００２９】
さらに、本発明の特定の例は、識別子、特に、ビデオ電子標準化協会によって定義される「拡張ディスプレイ識別データ」すなわちＥＤＩＤを有するコンピュータ・モニタへの種々の参照を用いて説明される。一般に、ＥＤＩＤは、コンピュータ・モニタが、接続されたホスト・コンピュータ・システムに、そのアイデンティティおよび能力（Ｅ−ＥＤＩＤと呼ばれる拡張されたＥＤＩＤデータ構造は、こうした識別子のより新しいバージョンである）を通知することが可能なデータ構造である。しかしながら、本発明は、ＥＤＩＤを有するモニタに限られるものではなく、寧ろ、任意の識別システムと共に動作する。したがって、ここに用いられる「識別子」という用語およびその変形は、ＥＤＩＤおよびＥ−ＥＤＩＤ規格に基づいたデータ構造を含む、ディスプレイ機構がそれ自体および／または接続されたホスト・システムに対する能力を識別する任意の方法を含む。
【００３０】
さらに、ここで用いられる「接続される（ｃｏｎｎｅｃｔｅｄ）」、「連結される（ｃｏｕｐｌｅｄ）」、「プラグインされる（ｐｌｕｇｇｅｄ−ｉｎ）」という用語およびそれらの変形は、同等のものであり、一般に、データが有線または無線媒体上で通信されるかどうかに関係なく、モニタとコンピュータ・システムとの間で少なくとも１つの方向にデータを通信できる状態を意味することに留意されたい。物理的な通信媒体の取り外し、無線の範囲外または干渉状態、モニタまたはビデオ・ヘッドの電源オフ状態（ラップトップの場合のような、電源オフの内部モニタなど）等を含む、どのような理由でもデータを通信することができない反対の状態は、それぞれの変形と共に、「切断される（ｄｉｓｃｏｎｎｅｃｔｅｄ）」、「切り離される（ｄｅｃｏｕｐｌｅｄ）」または「アンプラグされる（ｕｎｐｌｕｇｇｅｄ）」と同様な意味合いで呼ばれる。
【００３１】
図面を参照すると、図２は、本発明を実施することができる例示的なコンポーネントの構成を示す。図２において、１つまたは複数のモニタ２０２1および２０２2を含むディスプレイ機構は、ビデオ・ケーブルを介してモニタに物理的にプラグインすることなどによって、１つまたは複数のビデオ・カード（ビデオ・アダプタ）２０４との間で接続または切断することができる。図２には、２つモニタだけが示されているが、任意の実際的な数のモニタを接続できることも理解される。現代のコンピュータ・システムがＡＧＰまたはＰＣＩベースのビデオ・カードのような多数のビデオ・カードをサポートすること、およびさらに多数のビデオ・ヘッドを有する単一のビデオ・カードも市販されていることにも留意されたい。図２に具体的には示されないが、ビデオ「カード」の概念は、実際には取り外し可能なカード上にない内蔵ビデオ回路に匹敵することにも留意されたい。
【００３２】
プラグ・アンド・プレイ（ＰＮＰ）コンポーネント２１０によって図２に示されるように、コンピュータ・システムが動作している間に、モニタ２０２2のようなディスプレイ機構が接続または切断されるときはいつでも、ビデオ・スタック（例えば、ハードウェア・ドライバ層２０６およびソフトウェア・ドライバ層２０８等）を通してビデオ・カード２０４から、ハードウェアの変更を感知するように構成されたオペレーティング・システム機構に信号が送られる。プラグ・アンド・プレイ・コンポーネント２１０は、システムを通してイベントを適切なエンティティに送り、それにより一時モニタ・マネージャ２１２と呼ばれるユーザ・モード・コンポーネントが、接続イベントまたは切断イベントを知る。この構成は、現在の技術を活用するものであり、代替的な構成において、一時モニタ・マネージャは、カーネル・コンポーネントとして実装することができ、および／または、プラグ・アンド・プレイ・コンポーネント２１０なしにモニタ接続および切断を感知するように構成することができることに留意されたい。
【００３３】
本発明を踏まえて、一時モニタ・マネージャ２１２は、例えば、グラフィックス・インターフェース（例えば、ＧＤＩベースのソフトウェア）２１３を通したＡＰＩ呼び出しを介して、問い合わせを行うことなどによって、接続されたモニタについての情報を検出することができる。モニタがこの規格に対応する場合、こうした第１の問い合わせは、モニタの関連した識別子（例えばＥＤＩＤ）を得ることに向けられ、可能な範囲で部分的なＥＤＩＤを用い、ディスプレイ機構を何らかの最低値に設定し、ユーザ確認を得ることによって、ヌルＥＤＩＤを処理する。より具体的には、実際には、全てのモニタが固有のシリアル番号を有するわけではないので、新しいモニタがプラグインされた際、同様のモニタ構成を用いることができる。システムは、モニタの製造コードおよび製品識別子を検査し、この組み合わせが以前に見られたかを確認することができる。これらの２つの情報の断片についての合致があった場合には、シリアル番号を用いて、モニタをさらに識別することができる。シリアル番号が固有のものでない場合には、モニタからの他の情報（例えば、ＥＤＩＤデータ構造からの）を用いて、該モニタを識別することができる。
【００３４】
シリアル番号は、必ずしもモニタを識別する最良の手段ではない。モニタを識別する別の方法は、ＥＤＩＤ全体または該ＥＤＩＤの一部をハッシュ・コードに変換し、該ＥＤＩＤをハッシュ・テーブルに格納するというものである。モニタの型（ｍａｋｅ）およびモデルはＥＤＩＤの一部であるので、該ＥＤＩＤについてのハッシュ・テーブルへのエントリ・ポイントは、型およびモデル情報についてのハッシュ・テーブルを含む。これにより、より多くの情報（以下に説明されるような）について再度モニタに問い合わせる必要性が無くなる。このように、一部のモニタは、シリアル番号または該モニタの型およびモデルについての固有のシリアル番号を持たないことがあるので、ＥＤＩＤを識別子として使用することは好ましいことである。モニタをさらに識別するのを助けるために、コンピュータを接続するネットワークを識別し、ＥＤＩＤのために用いられるハッシュ・コードに情報を収めることができる。
【００３５】
モニタがＥＤＩＤを持たない（すなわち、ヌルＥＤＩＤを有する）場合には、他の種々の識別機構を伴うことができる。例えば、モニタが内部モニタ（例えば、ラップトップの内蔵ＬＣＤパネル）であることを確立できる場合には、これは、モニタを区別するのに用いられる識別の１つの形態とすることができる。モニタを区別する他の方法がなく、ヌルＥＤＩＤを有する場合には、アルゴリズム（一般的に以下に説明される）が、特定のモニタ識別子を指定することができる。しかしながら、１つより多くのヌルＥＤＩＤモニタがある場合には、２つのモニタについて異なるモニタ設定を保存する方法はない。この場合、２つのモニタは同じビデオ設定を共有するか、またはアルゴリズムがこれらのモニタを新しいモニタと考える。
【００３６】
以下に説明されるように、現在のモニタ構成を判断するために、接続されたばかりのモニタの識別子が（使用可能な場合）、接続されることが既に知られている１つまたは複数の他のモニタの１つまたは複数の識別子と共に使用される。必要に応じて、一時モニタ・マネージャ２１２は、接続さているモニタの全て（応答が可能なもの）に問い合わせて、接続されている１つまたは複数のモニタの現在の組を見つけ出すことができることに留意されたい。例えば、このことは、対応する感知されたＰｎＰイベントなしに、シャットダウン（または、ハイバネート等）中に最後のモニタ構成への任意の数の変更が加えられたときに、必要とされる次の起動である。同様に、どのモニタが切断されたのかを識別しない切断イベントにおいて、一時モニタ・マネージャ２１２は、あらゆる残存しているモニタに問い合わせ、どのモニタが切断されたかを消去法によって判断することができる。
【００３７】
本発明の態様によると、一時モニタ・マネージャ２１２が現在接続されている１つまたは複数のモニタの組を知ると、該一時モニタ・マネージャ２１２は、その組に適用されるモニタ構成（一組のデータ）を決定し、場合によっては如何なるユーザ確認も必要とすることなく、これを適用する。以下に説明されるように、モニタ構成の決定は、モニタ構成が、この組について前に確立されたかどうか、またはこの組が新しいモニタ構成に対応するかどうかに依存し、どのイベントにおいても、一時モニタ・マネージャ２１２は、本質的に、この組についての新しいモニタ構成をインテリジェントな方法で構成し、次に構成されたモニタ構成を適用する。
【００３８】
対応するモニタ構成が前に確立されたどうかを判断するために、一時モニタ・マネージャ２１２は、データ・ストア２１４内に維持されるモニタ構成データにアクセスする。一般に、合致するモニタ構成が検出された場合には、それを適用し、それにより新たに接続されたモニタおよび他のいずれかの接続されたモニタが、必要に応じて自動的に変更され、前のビデオ状態を各モニタに復元する。ビデオ状態とは、ソフトウェアによって設定することができるビデオに関連した何らかの値（例えば、モニタの解像度、リフレッシュレート、色の深み、配向、輝度、コントラスト、ビデオ・ヘッド状態のオン・オフ、および／またはＤＰＩ）を意味する。多数のモニタを有する構成に関し、ビデオ状態は、幾何学形状と呼ばれる、互いに対するモニタの（対応するコンピュータ・デスクトップ上の）相対的論理位置も含む。このように、モニタ構成の概念は、幾何学形状と共に１つまたは複数のモニタの組のビデオ設定／モードと、ビデオ設定／モード（例えば、パワースキーム）に影響を与える他の情報とを含むことに留意されたい。しかしながら、容易に理解できるように、モニタ構成を持続させ、適用するために可能な情報の全てを知る必要はないが、利用可能で持続される構成情報が多い程、次に同じ組が再接続されたとき、より良好に一時モニタ・マネージャ２１２がシステムを前の状態に復元することができる。
【００３９】
一時モニタ・マネージャ２１２が、モニタの組を少なくとも一時的に修正できる電源ＡＰＩ２２０において、モニタの組に適用される設定も示される。一時モニタ・マネージャ２１２において、低バッテリ状態のような電源関連イベントまたは電源に再接続されるモバイル装置を検知し、これによりビデオ設定の変更のための基礎として用いることができることが容易に理解される。
【００４０】
ステップ３００を介して示されるように、図３は、モニタが、例えばプラグ・アンド・プレイ・イベントを介してプラグインされたものとして検知される際、一時モニタ・マネージャ２１２によって実行される種々の動作を概説するフロー図である。ステップ３０２は、これが新しいモニタであるかまたはこのコンピュータ・システムによって前に遭遇したものであるかについての判断を示す。このステップは、モニタと関連付けられた識別子の評価を暗黙的に含んでおり、これは、次の問い合わせ型の操作を介して識別子が獲得されるが、接続イベントと共に識別子を提供することも実行可能であると考えられる。モニタが前に接続されたかどうかを判断する種々の方法が以下に説明されるが、一般に、モニタが前に接続された場合には、該モニタは、データがデータ・ストア２１４内に持続される少なくとも１つのモニタ構成に対応する。ユーティリティ・プログラム等を用いて、これ以上必要でないモニタ構成をデータ・ストア２１４から一掃することができるものの、この例示的な説明のために、いずれかの前のモニタ構成がデータ・ストア２１４内に格納されたままであると仮定されることに留意されたい。
【００４１】
モニタが少なくとも１つのモニタ構成に対応し、よって、このコンピュータ・システムにとって新しいものでない場合には、ステップ３０２は、構成全体（他の任意の接続されたモニタを含む）が評価されるステップ３０４に分岐し、接続されたばかりのモニタの識別子に対応するデータを含むいずれかのモニタ構成に対する正確な合致を探す。一般に、一時モニタ・マネージャ２１２は、ユーザが前に有していたものと同一の構成を探す。ステップ３０４においてそれが検出された場合には、ステップ３０６においてモニタ構成が用いられ、（１つまたは複数の）モニタの組を前の構成に再設定し、この一時モニタ・マネージャ２１２のプロセスは、再び必要になるまで終了する。例えば、接続されたばかりのモニタが、合致すると考えられる別のモニタと十分に類似している（例えば、同じ型およびモデル）際には、ステップ３０２および／または３０４において正確な合致より緩やかなものを要求することも可能であることに留意されたい。容易に理解できるように、既存のモニタ構成を適用することは、位置間でモバイル装置を移動させ、各々の位置でモニタにプラグインするユーザ、同じコンピュータを共有するが異なる設定を有する（モニタ構成が、ユーザ毎に持続される）ユーザ等を含む、多くのタイプのユーザが比較的頻繁に行っていることである。
【００４２】
ステップ３０４においては、ステップ３０２でモニタが認識されたものの、構成全体が新しいものであることも可能である。例えば、接続されたばかりのモニタが、前に使用されたことのないモニタの組み合わせを形成してもよく、または接続されたばかりのモニタが、常に組み合わせられた状態で用いられたものの、現在は単独で接続されていてもよい。構成全体が新しいものである場合には、ステップ３０４は、この新しいモニタの「最良」の構成が一時モニタ・マネージャ２１２によって自動的に選択されるステップ３１４に分岐する（「最良」とは、これが最良であるとは限らないが、大部分のユーザが望ましいと考える可能性が高い最良の推測に過ぎないことを示すように、引用符が付されていることに留意されたい）。例えば、このモニタが直近に用いられた合致しないモニタ構成からの設定を、最良の推測として選択し適用することができる。構成を適用する前に、モニタが最後に接続されたものと同じカードではないビデオ・カードとの両立性について設定を評価する必要があることに留意されたい。両立性がない場合には、もっと前に使用された構成を選択し、および／または、ビデオ・カードと両立性のある最も近い値に設定を変更することができる。
【００４３】
ステップ３１４は、適用される構成がユーザにとって許容可能なものであることを、ユーザ・インターフェース・ダイアログ等を介して確認する（任意の）ステップ３２０に分岐し、一般的に、ユーザが構成の変更を好む場合には、ユーザ・インターフェースが、モニタ構成（例えば、ディスプレイ特性）を修正するためのリンクを提供する。ステップ３２０におけるユーザ対話（ユーザは、将来、バイパスすることを選択することができる）の後、この一時モニタ・マネージャ２１２のこのプロセスは、再び接続イベントにおいて必要とされるまで終了する。
【００４４】
ユーザ対話によって、付加的な情報を獲得できることに留意されたい。例えば、ユーザに、プレゼンテーションを行っているかどうかを尋ねることができる。プレゼンテーションを行っている場合には、例えば、スクリーン・ブランキングも／スリーンセーバもないようにモニタ構成を設定する、通知をオフにするといったような、他のタイプの変更を加えることができる。
【００４５】
ステップ３０２に戻ると、モニタがコンピュータ・システムにとって新しいものである（例えば、該コンピュータ・システムの既存のモニタ構成において検出されない）場合には、ステップ３０２は、代わりに、その能力、すなわちモニタが提供可能なあらゆる構成関連情報について、該モニタに問い合わせることを示すステップ３１０に分岐する。例えば、一部の現代のモニタは、画像寸法のような情報を提供することができ、これから、好ましい操作上の解像度、リフレッシュレート、色の深み、および／または他の設定のような他の情報と共にＤＰＩを決定することができる。この情報の一部または全てが、ステップ３０２において前に評価した識別子内にある可能性があり、ステップ３０２において前に評価された識別子内にある場合には、ステップ３１０でそのことを再び問い合わせる理由はないことに留意されたい。しかしながら、以下に説明されるように、ＡＰＩなどを提供することができ、そこで、例えば、１つの呼び出しにおけるシリアル番号、別の呼び出しにおける能力といった、ＥＤＩＤの選択された部分を取り出すことができ、よって、多数の問い合わせを行うことができる。
【００４６】
代替的に、ステップ３１２において、詳細な情報は入手可能でないが十分な他の情報が入手可能であり、接続されたばかりのモニタが、システムに知られている別のモニタと非常に類似している（例えば、同じ型およびモデル）ことを示す場合には、他のモニタの構成情報を、このモニタの構成情報と置き換えることができる。図３に示されるように、ステップ３１２は、十分な情報が入手可能であるとき、ステップ３１４に分岐し、この情報を用いて、接続されたばかりのモニタについての最良推測の構成を選択し、適用するビデオ・カードを制限する結果として、モニタが提供する（または、置き換えられた類似した）情報を修正する必要があり、このことは、以下に説明されるような反復を介して達成され得ることに留意されたい。
【００４７】
ステップ３１２においてモニタが十分な情報を提供できなかった場合には、ステップ３１６が代わりに実行され、何らかの最小の構成を試みる。例えば、大部分のパーソナル・コンピュータおよびモニタは、少なくともＶＧＡ規格に対応し、ユーザが、ビデオ設定を手動で変更するのに十分なユーザ・インターフェースを含む意味のあるグラフィックスを見ることを可能にする。ステップ３２０は、構成の試みに従い、ユーザが、こうした変更を加え、および／または構成が許容可能であることを確認することを可能にする。図３には示されないが、ステップ３１６が何かＶＧＡより良いもの（例えば、より高い解像度を有するなど）で開始し、次いでユーザが何の動作もとらない場合、ステップ３２０で時間切れになり、続いてステップ３１６に戻り、そこで、何かより劣ったものを試みることができることに留意されたい。換言すれば、このプロセスは、ステップ３１６からステップ３２０まで進むことができ、暫時対話を可能にした後、折り返してステップ３１６に戻り、ステップ３２０においてユーザが対話するか、または最低値（ＶＧＡのような）が達成されるまで、解像度が最低値の方に後退される。ステップ３２０においてユーザが確認すると、プロセスが終了する。ユーザが全く確認しない場合には、モニタが適切に動作していないか、または少なくともＶＧＡ対応でないと仮定することができ、そのイベントにおいて、コンピュータ・システムは、別のモニタによってユーザに問題を通知し、および／または、接続したことがなかったかのように、このモニタを現在の構成の一部として含まないといった、他の動作をとることができる。
【００４８】
このように、モニタがプラグインされた際、モニタ構成を検出または構成する必要があるので、ビデオ設定への変更を適用することができる。これを行う迅速な方法は、構成の一部であったモニタに基づいて、過去のモニタ構成を調べることである。このように、新たに接続されたモニタが前にモニタ構成の一部であったかどうかを迅速に識別するための第１の検索が行われる。モニタのアイデンティティは、ＥＤＩＤ内に含まれるシリアル番号によって判断することができ、これは、現在のバージョンにおいては３２ビット数である。上述のように、シリアル番号がない場合には、１つまたは複数の他の（例えば、ＥＤＩＤ）種々のフィールドをハッシュして、識別のために有用な値を提供することが可能である。インスツルメンテーションＡＰＩ呼び出し等（例えば、グラフィックス・インターフェース・コンポーネント２１３を介するような）を用いて、ＥＤＩＤを取り出すこともできる。
【００４９】
例示的な実施において、検索を迅速化する種々の方法には、ハッシュ・テーブルの使用、および／または、既知のモニタの識別子を平衡二分木内に配置することが含まれ、例えば、既知のモニタ情報を配列内に含ませることができ、二分木内の各ノードはモニタの配列への指標とすることができるので、モニタの配列内の各エントリは、各々が、モニタがその一部であった各モニタ構成にポイントするポインタのリストを含む。一般に、１つの可能な実施を示すように、以下に二分木が用いられる。こうした実施において、モニタ構成は、モニタ構成リストと呼ばれるごく最近用いられたモニタ構成リストに格納され、モニタ構成リストへのポインタのリンク・リストは、モニタ配列の要素内に含められ、ソートされるので、リストの先端にあるポインタは、モニタがその一部であったごく最近のモニタ構成をポイントする。
【００５０】
モニタ構成はユーザごとに変更できるので、一時モニタ・マネージャ２１２がカーネル・コンポーネントである場合には、ユーザ・コンテキストの変更がある際にモニタ配列とモニタ構成リストとの間のリンクが再設定される。モニタ構成リスト内の各ノードは、タイムスタンプ（ごく最近使用された順序で配置するための）、該構成内のモニタの数、パワー・スキーム（例えば、ＧＵＩＤとして表される）、バージョン番号（データ構造の可能な将来のバージョンについての）、ビデオ・ポート状態（すなわち、ビデオ・ポートが活動状態であるかまたは非活動状態であるか）、モニタの幾何学形状、およびこの構成およびそれぞれの状態においてモニタを識別するモニタ／状態配列（ｓｔａｔｅ  ａｒｒａｙ）のようなデータを含むことができる。代替的に、ビデオ設定は、モニタ状態情報から抽出することができる。
【００５１】
モニタ／状態配列は、該モニタ配列内のモニタに対応する指標エントリを含む要素と、モニタの状態を含む構造とを有する。この状態は、モニタの解像度、リフレッシュレート、色の深み、および配向等の情報を含む。モニタの存在と関係なく、ビデオ・ヘッド状態を追跡する必要がある場合がある。この場合、ビデオ・ヘッド状態がモニタ状態の代わりにモニタ構成リスト・エントリに格納される。
【００５２】
既知のモニタを用いてマシンが起動するとき、モニタのアイデンティティが獲得される。例えば、モニタＡ、モニタＢ、およびモニタＣは、モニタＡが５のＩＤを有し、モニタＢが３のＩＤを有し、モニタＣが７のＩＤを有する状態で構成内にある。二分木が検査され、これらが既知のモニタであるこの例において、ＩＤ５、３、および７に対応するノードが検出される。各ノードは、指標をモニタ配列内に含む。各配列要素に含まれたモニタ構成リストへのポインタのリストは、ちょうどモニタの数（３つ）および現在使用されているパワー・スキームに対応するものにフィルタリングされる。次に、合致があるかどうかを確認するために、各モニタのモニタ構成リストへのポインタについて比較が行われる。３つのモニタとの合致がある場合には、モニタ構成リストのモニタ状態から得られたビデオ設定および該モニタ構成リストのノードから得られた幾何学形状が、（グラフィックス・インターフェース２１４を介して）適用される。モニタの如何なる幾何学形状も格納された幾何学形状と合致しない場合には、該格納された幾何学形状は使用されない。一例として、モニタＣがプラグインされる前に、モニタＢがモニタＡの左側に移動されることを考える。この状況においては、モニタＢがモニタＡの左に移動し、よって、格納された幾何学形状が、モニタＢをモニタＡの右に示すので、モニタＡ、ＢおよびＣ（プラグインされたとき）について格納された幾何学形状が使用されないことは周知である。
【００５３】
未知のモニタがプラグインされた場合には、できる限り過去の設定を復元するために可能なモードを繰り返すことによって、ビデオ・モードを求めることができるが、ユーザに、類似したモニタについて過去に用いられたれたモードを提供しようとして、モニタのモデル番号についての検索が行われる。モデル番号の検索に失敗した場合には、代わりにモニタ能力を用いることができ、このモニタ能力は、画面サイズ、および／またはモード、並びに該モニタがサポートするリフレッシュレートの組み合わせを含む。例えば、ＬＣＤ、ＣＲＴ、プラズマまたは他の何らかのタイプといったタイプのモニタ等の情報が、望ましいモードの選択を高めることができる。一例として、ユーザがある会議室から別の会議室に移動し、同一ではないものの類似した会議室のモニタに同じコンピュータをプラグインする場合である。このような状況では、モニタＩＤの二分木を用いて、モニタ配列内にモニタＩＤを検出することができない。検索に失敗した場合、検索は、ディスプレイ機構のモデル番号について行われる。
【００５４】
モデル番号を検索する２つの方法は、モデル番号を検索できる別の二分木を生成すること、またはモニタの配列によって線形検索を行うことを含む。大部分のユーザにとって、未知のモニタが付加された回数は、既知のモニタがコンピュータにプラグインされ、該コンピュータからアンプラグされる回数と比べて相対的にわずかである可能性が高く、二分木の生成には、モニタ配列による線形検索を必要とすることから、簡単な線形検索は有利なものである。
【００５５】
未知のモニタをプラグインできる別のシナリオは、内部モニタを持たないモバイル・コンピューティング装置の場合のように、未知のモニタがプラグインされた単独のモニタである場合を含む。コンピュータが既に動作している場合には、プラグインされた１つまたは複数の新しいモニタが、一時モニタ・マネージャ２１２に通知される。代替的に、コンピュータが最初に起動する場合、一時モニタ・マネージャ２１２は、最初にどのモニタが該コンピュータにプラグインされているかを確認する。いずれの場合も、各々の新しいモニタのモニタＩＤが獲得され、この「未知のモニタ」の例においては、二分木の検査により、このモニタＩＤを有する既知のモニタが存在しないことが示される。次に、モデル番号が獲得され、これを用いて、該モデル番号の各々の場合についてモニタの配列を（例えば、線形に）検索する。合致があるたびに、リンク・リストに配列指標が付加される。
【００５６】
リンク・リストが１つしかない場合には、該リンク・リストを線形に検査し、配列指標を用いて、モニタ構成リストへのポインタを利用できる。１つのモニタについてのモニタ構成リストのエントリがフィルタリングされ、最新のエントリが検出されたとき、モニタ構成を設定するために関連したビデオ設定データが用いられ、モニタ構成リストが更新される。次に、合致がない場合には、ビデオ・モードが繰り返され、モニタ構成が、最適な解像度およびリフレッシュレートによって決定される。
【００５７】
このプロセス中に付加された別のモニタがある場合には、別のリンク・リストが、同じように作成され、ポピュレートされる。リンク・リストが検索され、２つの（またはそれ以上の）モニタについてのあらゆるモニタ構成リストのエントリがフィルタリングされる。リンク・リストの全てによって共有される最新のモニタ構成リスト・エントリが用いられる。
【００５８】
各リンク・リストがポピュレートされた後でさらにビデオ設定データを適用する直前に、モニタのプラグイン／アンプラグ・イベントが検査される。変更がある場合には、新しいモニタ構成を判断する。未知のモニタがプラグインされる際に１つまたは複数の既知のモニタが既にプラグインされている場合には、モニタ構成リスト・エントリが既知のモニタ配列エントリによってポイントされるものと比較される点を除くと、未知のモニタの条件だけに類似した状況が存在する。
【００５９】
新たに識別されたモニタを用いてモニタ配列を更新するために、未知のモニタに問い合わせされたとき、該新たに識別されたモニタは、該モニタ配列の終わりに追加される。この時点で、配列エントリは、モニタ構成リストへの如何なるポインタも持たない。次に、二分木が、新しいモニタＩＤを用いて更新される。モニタがモニタ構成リストに付加されると、ビデオ設定を更新するコードが、モニタ構成リスト・エントリおよびモニタＩＤの組へのポインタを取り、各モニタについて関連した配列指標を戻す方法を用いて、モニタ配列を維持するコードを呼び出すときに、モニタ配列が更新される。この機能により、モニタ構成リスト・エントリへのポインタが、パラメータとして送られるモニタの組内の各モニタと関連した各配列エントリに付加される。
【００６０】
次に、切断操作の考察に移ると、ステップ４００で表されるように、図４は、切断イベントに応答して一時モニタ・マネージャ２１２が取る例示的な論理を示す。以下に説明されるように、切断されたモニタ上で表示される他のプログラム、ウィンドウ、アイコン等はもはや見えないので、単に何の行動も起こさないことが、一般的に望ましくないことに留意されたい。したがって、ステップ４０２では、切断されたモニタがもたらした全体の構成を評価する。上述のように、このことは、どのモニタが切断されたか、どの１つまたは複数のモニタが接続されたかを知ることを暗黙的に必要とし、それは、それらの識別子について残存しているモニタに問い合わせ、どのモニタが切断されたかを消去法により判断することを必要とする。
【００６１】
一般に、修正されたモニタの組が与えられた場合、一時モニタ・マネージャ２１２は、ユーザが前に持っていたものと同一の（または十分に類似した）構成を探す。ステップ４０２においてそれが検出された場合、ステップ４０６においてモニタ構成が適用され、残存している組の（１つまたは複数の）モニタをその前の構成に再設定し、一時モニタ・マネージャ２１２のこの切断処理プロセスは、再び必要とされるまで終了する。
【００６２】
代わりに、ステップ４０２においてモニタの組が新しいものであると考えられた場合には、例えば、類似した構成データまたは接続されたままの各モニタの能力に基づいて上述されたように、ステップ４０２は、最良の推測の構成が選択されるステップ４０６に分岐する。ステップ４０８は、ユーザが確認することを可能にし、このことは、一般的にあらゆるユーザ変更をも容易にする。
【００６３】
既知のモニタがアンプラグされたときの例として、モニタＡ、ＢおよびＣが接続されたコンピュータの別の構成を考える。コンピュータが動作している間に、モニタＣがアンプラグされ、それにより一時モニタ・マネージャ２１２は、モニタがアンプラグされたというＰｎＰ通知を受け取り、アンプラグされたモニタが識別されなかった場合には、一時モニタ・マネージャ２１２は、消去法により、すなわち接続されたままのモニタのモニタＩＤを再獲得し、そのＩＤをモニタ構成リストと比較することによって、どのモニタがアンプラグされたかを判断する。
【００６４】
図４を参照して上述されたように、一実施においては、このことによりモニタ構成を変更し、モニタＡおよびＢを前の状態に復元させることができる。代替的に、（ユーザ設定できる）１つの代替的な実施においては、ユーザの混乱を回避するために、残りのモニタの状態を完全な状態のままにすることができ、例えば、モニタＡまたはＢの解像度も、リフレッシュレートも変更されない。しかしながら、モニタＣのビデオ・ヘッドはスイッチが切られ、現在のモニタ構成のコピーをとり、モニタＣをモニタ・リストから排除することによって、モニタ構成リスト内の新しいエントリが準備される。ビデオ設定は、古いモニタ構成のＧＵＩＤに取って代わる新しいＧＵＩＤによってアクセス可能な格納位置にシリアル化され、格納され、タイムスタンプが更新される。残りのモニタの幾何学形状が記録され、データは、タイムスタンプによってアドレス指定可能な格納位置に配置された。次に、新しいモニタ構成が、モニタ構成リストの先頭に配置される。
【００６５】
モニタＣが再びプラグインされる場合には、一時モニタ・マネージャ２１２は、モニタがプラグインされたというＰｎＰ通知を受け取る。モニタのシリアル番号を獲得した後、モニタＩＤの二分木を介して、モニタＣがプラグインされたことが判断される。理解されるように、これは「既知のモニタ」の状態であるので、使用すべき適切なビデオ設定は、上述のように決定される。
【００６６】
既知のモニタを用いて電源切断中にモニタを再構成することも可能である。アンプラグ・イベントの受信と幾分類似しているが、ＰｎＰ通知は受信されない。ユーザがコンピュータの電源を切断し、モニタＣをアンプラグする、モニタＡ、Ｂ、およびＣに接続されたコンピュータの例を再考する。この例において、コンピュータは、モニタＡおよびＢだけを有する構成にこれまで遭遇したことがない。電源投入時にモニタＡおよびＢがプラグインされ、これに応じて識別されるが、モニタＡおよびＢを含む２つのモニタを有するモニタ構成リスト内にエントリは存在しない。
【００６７】
２つのモニタの設定方法を決定する第１の任意の方法の１つは、２つのモニタがサポートできる可能なモードにわたって繰り返すことによって、最適な解像度およびリフレッシュレートを決定することである。第２の方法は、モニタの数が既存の構成に合致する３に等しく、それにより一時モニタ・マネージャ２１２が、モニタＡおよびＢを含むモニタ構成を検出する必要がないように、モニタ構成リストの検索規則を修正することである。このように、コンピュータ・システムの電源が投入されている間、モニタＣがアンプラグされているかに類似した、新しいモニタ構成を見出すことができる。この第２の選択肢が用いられる場合、モニタＡおよびＢを含む最新の構成だけが用いられることに留意されたい。ユーザにとっては、モニタＡおよびＢについてのモニタ設定は、モニタＣがプラグインされたときと同じままであるので、モニタＣがないことが唯一の変更である。もちろん、モニタＡおよびＢがさらに別のモニタとプラグインされることも可能であるが、一般には、モニタＡおよびＢのモニタ設定値が同じままであることが望ましい。ビデオ設定が設定され、第３のモニタについてのビデオ・ヘッドの電源が切られる。次に、モニタ構成が記録され、モニタ構成リストが更新される。ビデオ設定を設定しようとする試みが失敗する場合には、第１の選択肢を用いることができる。
【００６８】
本発明の別の態様によると、モニタが切断されるとき、そのモニタ上に表示されていたいずれのプログラム・ウィンドウ、アイコン等も、一時モニタ・マネージャ２１２によって、１つまたは複数の残存しているモニタの組に切り替えることができる。このため、切断の検出および残存しているモニタの何らかの再構成時に、ウィンドウの位置、サイズ等に関するデータが依然としてメモリ内に存在し、現在拡張されていないかまたはあまり拡張されていないデスクトップから、残っているデスクトップ領域に情報を「シャッフル」するために、このデータが用いられる。新しい領域に適合させるために、必要に応じてウィンドウおよび他の画像を調整（ｓｃａｌｅ）することができる。切断されたモニタからのプログラム・ウィンドウを新しい領域に移動させてもよく、または選択されるまで接続されたモニタのタスクバー等に最小化することもでき、選択時に該プログラム・ウィンドウが該接続されたモニタ上で復元される。
【００６９】
切断されたモニタ（または類似したモニタ）が再接続される場合には、ウィンドウおよび他の画像を復元させることができる。しかしながら、ユーザの混乱を回避するために、ウィンドウの処理に適用される規則があり、例えば、単にウィンドウがあった場所に復元させるのではなく、例えば、それをタイプまたはクリックし、移動させ、サイズ変更し、および／または、そのウィンドウに焦点を合わせるといったように、ユーザが何からの十分な方法でそれと対話する場合に、ウィンドウを現在の位置のままにすることができる。
【００７０】
「高速ユーザ・スイッチ」を用いる場合、ユーザはログアウトせず、よって、ユーザのウィンドウについての位置決めデータが維持されることに留意されたい。したがって、イベント時にコンピュータが別のユーザに切り換えられたときでさえ、切断および／または再接続の構成変更後、必要に応じて多数のユーザについてのデータを再シャッフルすることができる。構成変更に続くハイバネートも、同様にウィンドウ等のシャッフルをもたらすことがあるが、現在のモニタ構成を求めることができるように、ハイバネーション・モードから出たときに一時モニタ・マネージャ２１２に通知する必要がある。
【００７１】
図５を参照すると、図３および図４から明らかなように、特定の状況において、一時モニタ・マネージャ２１２の選択は、例えば、「ディスプレイ特性」／制御パネル・ユーザ・インターフェースといった適切なユーザ・インターフェースとの手動のユーザ対話によってオーバーライドすることができる。ユーザは、通常の動作の際などの他の時にも構成データを変更することができる。理解できるように、これらの変更は、現在のモニタの組についてのモニタ構成データ内で持続させる必要があり、他の場合には、接続または切断の結果もたらされる次の構成変更時に失われることになる。
【００７２】
ステップ５００で表されるように、図５は、構成を変更するユーザ対話時に一時モニタ・マネージャ２１２がとる動作を表す。例えば、ユーザは、「ディスプレイ特性」ユーザ・インターフェースを選択することができ、何らかの変更が適用されると、一時モニタ・マネージャが、モニタの組に変更を加え、さらに該変更を持続させる。ステップ５０２において、変更を持続させるために、構成更新プロセスが、現在接続されている（１つまたは複数の）モニタの組を識別する。とりわけ、変更が構成に対するものである（例えば、ユーザがモニタの除去を望む）か、または最近使用された構成である対応する構成データをデータ・ストア２１４（図２）に配置することである場合に、これを使用することができる。次に、ステップ５０６において、ユーザが加えるあらゆる変更を含む全体の構成が格納される。
【００７３】
上述のように、モニタ構成を決定できる１つまたは複数のモニタの組以外にも多数の要因がある。これらの要因の１つは、通常適用される設定を変更またはオーバーライドできる電力状態である。例えば、電力を保存するために、リフレッシュレート、色の深み、解像度、バックライト輝度、コントラスト等の全てを修正することができる。実際には、例えば、ラップトップはバッテリ電源が不足した状態で動作するが、モニタ構成が、十分に動力供給されたモニタが接続されたようなものであるとき、ラップトップの内蔵モニタの電源を自動的に切ることができる。
【００７４】
モニタ構成を自動的に修正する別の方法は、一時モードによるものである。例えば、ビデオ再生は、６０ヘルツのリフレッシュレートで良好に動作することが知られている。例えば、グラフィックスの呈示に対して、こうした再生の検出を用い、条件が変更するまでモードを変更することができる。
【００７５】
モニタ製造業者は、一時モニタ・マネージャ２１２等への呼び出しによって持続／復元される顧客設定を有することもできる。例えば、テレビ・ベースのモニタは、特定の領域が特定の時期に画面上にトリミングされ、それらの領域が、他の条件においてはユーザ対話なしに復元されることを必要とする。さらに、色空間補正／ガンマのような顧客設定を、モニタ構成と共に保存することができる。
【００７６】
例示的な論理
図６は、１つの具体的な例の実施における一時モニタ・マネージャ２１２の概要を示す。図６に表されるように、一般に、一時モニタ・マネージャ２１２の起動時またはユーザ・コンテキストの切り換えが行われるとき、ステップ６００におけるものを含めて、一時モニタ・マネージャ２１２へのエントリ・ポイントが２つある。一時モニタ・マネージャ２１２が起動されるかまたはユーザ・コンテキストの切り換えがある場合には、適切なユーザ・データを読み込む必要がある。このため、ステップ６０２で表されるように、モニタ構成リストおよびモニタ配列がメモリから読み込まれ、二分探索木が構築され、該モニタ構成リストと該モニタ配列との間に接続が確立される。
【００７７】
ステップ６０４で表されるように、第２のエントリ・ポイントは、モニタのプラグイン／アンプラグ・イベントが行われるときである。いずれのエントリにおいても、現在のモニタ構成を決定し、試験し、モニタ構成リストを更新するために、ステップ６０６が実行される。上述のように、一般に、グラフィックス・インターフェース／インスツルメンテーションＡＰＩ呼び出しまたは他の適切な方法を用いて、現在のモニタ構成の各モニタについての各モニタＩＤが獲得される。次に、ステップ６０８で表されるように、モニタＩＤを検索するために、二分検索木が用いられる。
【００７８】
ステップ６１０で表されるように、モニタＩＤのいずれかで検索の失敗があったかどうかによって、新しいモニタ構成の判断が、２つの異なる分岐のうちの１つをとることになる。その後、以下に説明されるように、モニタ構成が決定され、試験されると、モニタ構成リストが更新され、該モニタ構成リストとモニタ配列との間の接続が更新される。
【００７９】
モニタＩＤの一部または全てが検出されなかった場合には、プロセスは、図７に表されるさらに別のステップへの移動を表すステップ６１２に分岐する。逆に、モニタＩＤの全てが検出された場合には、ステップ６１０において、プロセスは、ステップ６１４、６１６、および６１８に分岐し、そこで、モニタＩＤと関連した各配列要素内のモニタ構成リストへのポインタが比較され、ステップ６１６において、各モニタによってポイントされるそれらのモニタ構成リスト・エントリが、モニタ構成リスト・エントリのリンク・リストに付加される。モニタ構成リスト・エントリは異なるパワー・スキームのもとで記録されたモニタ構成を含むことができるので、あるいは新しいモニタが、より良い合致を得るために、より大きなモニタ構成のサブセットであった場合には、該モニタ構成リスト・エントリをフィルタリングすることができる（ステップ６１８）。これを達成するために、リンク・リスト・イテレータが、異なるパワー・スキームまたは現在の状態と異なるモニタ数のもとで記録されたモニタ構成リスト・エントリをポイントする、それらのリンク・リスト・ノードをスキップオーバーする。この時点で、図８に移動するステップ６２０で表される最良のモニタ構成リスト・エントリが見出される。
【００８０】
ステップ６１０に戻ると、検出されなかったモニタＩＤを有する１つまたは複数のモニタ（ステップ６０８およびステップ６１０、「未知のモニタ」と呼ばれる）がある場合には、プロセスは図７に分岐する。この時点で、既知のものでない場合（例えば、ＥＤＩＤ全体が前にマネージャ２１２に戻されている場合）、ステップ７０２においてＡＰＩ／メソッド呼び出しを用いて、検出されなかったモニタＩＤを有する各モニタのモデル番号を獲得する。より具体的には、二分検索木の検索に失敗したそれらのモニタについて、ステップ７０４においてモニタ配列による別の（例えば、線形）検索が行われ、同じモデル番号を有する一組のモニタを検出する。
【００８１】
この検索は、ステップ７０６において評価される際に失敗する可能性があるが、その場合、識別されたモニタは、モニタ構成リスト・エントリ内にあるモニタのサブセットを形成する。既知のモニタのアルゴリズムにおいて行われたように、モニタ構成リスト・エントリのリンク・リストを作成するために、二分検索木によって検出された配列要素と共に、この組の配列要素が用いられる。この例において、ステップ７０６においてモデル番号が検出された場合には、モニタＩＤと関連した各配列要素内のモニタ構成リストへのポインタが比較され、ステップ７０８において、各モニタによってポイントされたそれらのモニタ構成リスト・エントリが、モニタ構成リスト・エントリのリンク・リストに付加される。ステップ７１０が、未知のモニタの各々について繰り返される。
【００８２】
モニタ構成リスト・エントリは、異なるパワー・スキームのもとで記録されたモニタ構成を含むことができるので、あるいは新しいモニタがより大きなモニタ構成のサブセットであった場合には、より良い合致を得るために、該モニタ構成リスト・エントリをフィルタリングすることができる（ステップ７１４）。これを達成するために、リンク・リスト・イテレータが、異なるパワー・スキームまたは現在の状態と異なるモニタ数のもとで記録されたモニタ構成リスト・エントリをポイントする、それらのリンク・リスト・ノードをスキップオーバーする。
【００８３】
これが達成された後、未知のモニタがモニタ配列に付加され、二分検索木は、再びバランスが取られるかまたは再構築される。この時点で、未知のモニタが既知のものになるが、モニタ構成リストへのポインタは存在しない。上述のように、新しいモニタ構成が所定の位置に設定されると、モニタ配列とモニタ構成リストとの間が接続される。この時点で、図８に移動するステップ７１８で表されるように、最良のモニタ構成リスト・エントリが検出される。
【００８４】
フィルタリングされたエントリのリストからモニタ構成リストにおける最良のエントリを検出するために、図８の例示的なステップを実行することができる。このエントリは、新しいモニタ構成と同じモニタを有することができ、あるいは他のモニタを含むこともできる。以下に説明されるように、モニタ構成リスト・エントリがない場合には、プロセスが進み、未知のモニタにおいてビデオ・モードを繰り返すことができることに留意されたい。
【００８５】
本質的にステップ８０２において再評価されるように、モニタのプラグイン／アンプラグ・イベントのために、一時モニタ・マネージャ２１２が現在このプロセスを実行している場合には、一態様が既存のモニタ状態の変更を回避し、このことは、イベント前の構成と同じ状態とのモニタ合致を探すことによって達成される。イベント前の構成のモニタ状態は、モニタ構成リストの先頭に置かれる（それがごく最近使用された構成であるため）。ステップ８０４において、モニタ構成リスト・エントリのリストにおいて検索を行い、既存のモニタおよび状態と共に新しいモニタ（プラグ・イベントの場合）を含むモニタ構成を見出す。多数の合致が存在する場合には、最新のモニタ構成リスト・エントリが用いられる。代わりに、ステップ８０６において、モニタのプラグイン／アンプラグ・イベントのために一時モニタ・マネージャ２１２が現在プロセスを実行している場合、新しい構成のモニタを有する最新のモニタ構成リスト・エントリが選択される。
【００８６】
ステップ８０８においてモニタ構成リスト・エントリが検出されず、モニタの数によってフィルタリングされない場合には（ステップ８１０）、リストをフィルタリングするためにもはやモニタの数を使用しないように、ステップ８１２において、モニタ構成リスト・エントリのリンク・リストについてのイテレータが調整される。ステップ８０８に戻ることによって、モニタ構成リスト・エントリにおいて、再び検索が行われる。
【００８７】
ステップ８１０において、モニタの数によってフィルタリングされず、モニタ構成リスト・エントリが依然として検出されないとき、例えば、モニタＡおよびＢが一緒に構成されるもののモニタＣと協働しないといったように、モニタの全てが前と同じ構成にあるわけではないという可能性もある。解法は、ステップ８１２で表されるように、最も多いモニタの合致を有するモニタ構成リスト・エントリを検出することであり、上記の例においては、解法は、モニタＡおよびＢを有するモニタ構成リスト・エントリを見出す。これは、既知の状態を用いずにモニタＣを残すというものである（これは、図９において解決される）。
【００８８】
ステップ９０２を介して図９に表されるように、モニタ構成リスト・エントリについての検索が、モニタおよび状態について正確な合致をもたらす場合には、次のステップ９１８は、図１０に進むことによってビデオ・カードの能力に対する構成を試験するというものである。しかしながら、例えば、確立されたビデオ状態を持たない余分のモニタのために、検索が正確な合致を提供しない場合には、ステップ９０２は、モニタ構成を試験する前にステップ９０４に分岐する。
【００８９】
より具体的には、ステップ９０４において、新しい構成内にないモニタが、モニタ構成リスト・エントリ内に存在する場合には、ステップ９０６を介してそれらを除去する必要がある。また、関連したビデオ状態を有していないモニタが存在する場合には、ステップ９０８およびステップ９１０を介して、その利用可能なモードについてモニタに問い合わせする。ステップ９１２においてモードが検出される場合には、最良の合致を見出す必要があり、このことは、ビデオ設定に対してモニタ構成を試験することによって、ステップ９１４で実行される。これらの設定が許容される場合には、そのモニタ構成を用いることもできる。
【００９０】
一時モニタ・マネージャ２１２のプロセスが終了する前に、モニタ構成が試験される。これは、たとえ正確な合致がモニタ構成リスト内に検出されたとしても、その後ビデオ・カードが消され、以前有効だったモニタ構成がもはや新しいカードにより動作しないという可能性があるためである。ビデオ・モードについての検索（ステップ９１２）が失敗し、モニタを設定状態のないままにすることも考えられる。図１０は、例示的な試験ステップを表す。
【００９１】
ステップ１００２において、モニタのいずれも試験前に該モニタについて設定された状態を有していない場合、あるいはビデオ設定に対して試験されたときにモニタ構成に失敗するとき（ステップ１０１６およびステップ１０１８）、使用可能なビデオ・モードが繰り返される（ステップ１００４）。リフレッシュレート（ステップ１００６における限界値に対して評価される）を減少させることが可能である場合には、ステップ１００８において第１の試みがそれを行い、ステップ１０１６に進むことによってビデオ・カードの能力に対して試験を行う。（例えば、６０Ｈｚのような）限界値に達するまでリフレッシュレートを減少させることが繰り返し失敗した場合、ステップ１０１０および１０１２を介して実行されるように、可能であれば、次のステップがモニタの解像度を減少させる。モニタの解像度が減少されるときはいつでも、リフレッシュレートを増大させ、ビデオ設定を再び試験し、入れ子式のループ内でリフレッシュレートを（必要に応じて）その最小限界値まで減少させ得ることに留意されたい。最終的に使用可能なモードが失敗した場合には、ステップ１０１４において、ディスプレイ制御パネル・ダイアログが示される。示されていないが、ディスプレイ制御パネルを示す前に、１つまたは複数の試みを行い、色の深みを減少させる得ることに留意されたい。
【００９２】
ステップ６２２に戻る図１０により表されるように、試験が完了すると、モニタ構成リストを更新し用いるために、ステップ６２４が実行される。このように、既存の構成が適用されるか、または現在のモニタの組およびそれらの現在の状態について新しい構成が構築される。
【００９３】
上記の詳細な説明から分かるように、１つまたは複数のディスプレイ機構に接続するときに、多くの可能なユーザ・シナリオに対処する柔軟な方法でユーザ体験を簡単化するシステムおよび方法が提供される。合致するときに確立された構成を適用することによって、または合致しないときにインテリジェントな推測をすることによって、多くの場合、ユーザ対話を必要とすることなく、ほぼ望ましい結果がユーザに与えられる。
【００９４】
本発明には種々の修正および代替的な構成が可能であるが、その特定の例証となる実施形態が図面に示され、上記に詳細に説明された。しかしながら、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明の精神および範囲内に含まれる全ての修正、代替的な構成および等価物を網羅することが意図されることを理解すべきである。
【図面の簡単な説明】
【００９５】
【図１】本発明を組み込むことができるパーソナル・コンピュータ・システムの形態の汎用コンピューティング装置を表すブロック図である。
【図２】本発明の種々の態様による、現在の組のモニタに基づいてモニタ構成データを適用することを含む、１つまたは複数のモニタを管理するためのコンポーネントを全体的に表すブロック図である。
【図３】本発明の種々の態様による、モニタをコンピュータ・システムに接続したときに一時モニタ・マネージャ・コンポーネントによって取られる例示的なステップを全体的に表すフロー図である。
【図４】本発明の種々の態様による、モニタをコンピュータ・システムから切断したときに一時モニタ・マネージャ・コンポーネントによって取られる例示的なステップを全体的に表すフロー図である。
【図５】本発明の種々の態様による、ユーザが対話によりモニタ構成データを変更するときに一時モニタ・マネージャ・コンポーネントによって取られる例示的なステップを全体的に表すフロー図である。
【図６】本発明の種々の態様による、種々のシナリオに対処するために一時モニタ・マネージャ・コンポーネントによって取られるステップを全体的に表すフロー図である。
【図７】本発明の種々の態様による、種々のシナリオに対処するために一時モニタ・マネージャ・コンポーネントによって取られるステップを全体的に表すフロー図である。
【図８】本発明の種々の態様による、種々のシナリオに対処するために一時モニタ・マネージャ・コンポーネントによって取られるステップを全体的に表すフロー図である。
【図９】本発明の種々の態様による、種々のシナリオに対処するために一時モニタ・マネージャ・コンポーネントによって取られるステップを全体的に表すフロー図である。
【図１０】本発明の種々の態様による、種々のシナリオに対処するために一時モニタ・マネージャ・コンポーネントによって取られるステップを全体的に表すフロー図である。
【符号の説明】
【００９６】
１００：コンピューティング環境
１２０：処理ユニット
１２１：システム・バス
１３０：システム・メモリ
１３４：オペレーティング・システム
２０４：ビデオ・カード
２１０：プラグ・アンド・プレイ・コンポーネント
２１２：一時モニタ・マネージャ
２１３：グラフィック・インターフェース
２１４：データ・ストア
【図１】
2006209091.tif 000003
【図２】
2006209091.tif 000004
【図３】
2006209091.tif 000005
【図４】
2006209091.tif 000006
【図５】
2006209091.tif 000007
【図６】
2006209091.tif 000008
【図７】
2006209091.tif 000009
【図８】
2006209091.tif 000010
【図９】
2006209091.tif 000011
【図１０】
2006209091.tif 000012
【外国語明細書】
2006209091000001.pdf