(57)【要約】  仮想環境にあるアドオンコンポーネントを動作させるためのシステムおよび方法が説明される。ホストオペレーティングシステムにあるコンポーネントプロキシと仮想環境において動作するサーバプロセスとの間に通信リンクを設定することによって、アドオンコンポーネントを仮想環境において実行することができる。サーバプロセスは、オペレーティングシステムからコマンドを転送するコンポーネントプロキシによって転送されたコマンドに基づいて、アドオンコンポーネントを実行する。
2010532050.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のコンピューティング装置上で実装されるシステム（２００）であって、
オペレーティングシステム（２０２）と、
前記オペレーティングシステムに含まれるコンポーネントプロキシ（２０８）と、
前記コンポーネントプロキシと通信する仮想環境（２０４）と、
前記仮想環境にあるコンポーネントサーバプロセス（２１０）と、
前記仮想環境にある１つまたは複数の仮想アプリケーション（２１４）と、
前記１つまたは複数の仮想アプリケーション（２１４）に関連付けられる１つまたは複数のアドオンコンポーネント（２１２）とを含み、
前記コンポーネントサーバプロセスは、前記コンポーネントプロキシによって転送されるコマンドを受信し、前記アドオンコンポーネントを実行することを特徴とするシステム（２００）。
【請求項２】
前記コンポーネントプロキシは、前記アドオンコンポーネントのうちの１つまたは複数について前記オペレーティングシステムに登録されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記登録は、前記仮想環境が前記１つまたは複数のコンピューティング装置上でシミュレートされるときに、行われることを特徴とする請求項２に記載のシステム。
【請求項４】
前記オペレーティングシステムは、前記１つまたは複数のアドオンコンポーネントにアクセスするために、前記コンポーネントプロキシを呼び出すことを特徴とする請求項１に記載のシステム。
【請求項５】
前記コンポーネントプロキシは、前記コンポーネントサーバプロセスが起動される適正な仮想環境について確認し、前記コンポーネントプロキシが十分な情報に登録された場合に、適切な仮想環境において動作するサーバに接続することを特徴とする請求項１に記載のシステム。
【請求項６】
前記コンポーネントプロキシは、サーバを起動せずに前記コンポーネントプロキシによってサポートされるコンポーネントを決定するために、仮想環境のマニフェストにアクセスすることを特徴とする請求項１に記載のシステム。
【請求項７】
前記１つまたは複数のアドオンコンポーネントは、シェル拡張を含むことを特徴とする請求項１に記載のシステム。
【請求項８】
コンピュータ実行可能コンポーネントを実現させるためのプログラムを記録したコンピュータ可読記録媒体であって、前記コンピュータ実行可能コンポーネントは、
コンポーネントプロキシ（２０８）と、
前記コンポーネントプロキシと通信する仮想環境（２０４）と、
前記仮想環境に含まれるコンポーネントサーバプロセス（２１０）と、
前記コンポーネントサーバプロセスにあるアドオンコンポーネント（２１２）とを含み、
前記アドオンは、アプリケーションに機能を提供することを特徴とするコンピュータ可読記録媒体。
【請求項９】
前記仮想環境は、サーバコンポーネント上のアプリケーションによってシミュレートされることを特徴とする請求項８に記載のコンピュータ可読記録媒体。
【請求項１０】
前記アドオンコンポーネントとオペレーティングシステムとの対話に関する情報を含むサーバコンポーネントをさらに含むことを特徴とする請求項８に記載のコンピュータ可読記録媒体。
【請求項１１】
前記サーバコンポーネントは、レジストリ設定、ファイル、アプリケーション変数、およびオペレーティングシステム変数のうちの１つまたは複数のログを記録することを特徴とする請求項１０に記載のコンピュータ可読記録媒体。
【請求項１２】
サーバコンポーネントに常駐するアプリケーションの仮想アプリケーションをさらに含むことを特徴とする請求項８に記載のコンピュータ可読記録媒体。
【請求項１３】
コンピュータが仮想環境にあるアドオンコンポーネントを動作させる方法（３００）であって、
機能を提供するアドオンコンポーネントに対応するコンポーネントプロキシを呼び出すステップ（３０２）と、
前記仮想環境に関連付けをするステップ（３０４）と、
前記仮想環境が適正な仮想環境であるかどうかを判断するステップ（３０６）と、
前記仮想環境が適正であると判断された場合に、コンポーネントサーバプロセスを起動するステップ（３０８）と
を含むことを特徴とする方法（３００）。
【請求項１４】
アプリケーションプログラムインターフェースが、前記関連付けをすることに使用されることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記判断するステップは、前記仮想環境が、前記対応するアドオンコンポーネントを含むかどうかを確認するステップを含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記起動するステップは、前記アドオンコンポーネントが前記仮想環境においてホストされることを有効化した後に行われることを特徴とする請求項１３に記載の方法。
【請求項１７】
前記判断するステップにより前記仮想環境が適正でないとわかった場合、適正な仮想環境を見つけるステップ、および前記コンポーネントプロキシが十分な情報に登録された場合に、適切な仮想環境において動作するサーバに接続するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１８】
前記コンポーネントプロキシは、サーバを起動せずに前記コンポーネントプロキシによってサポートされるコンポーネントを決定するために、仮想環境のマニフェストにアクセスすることを特徴とする請求項１３に記載の方法。
【請求項１９】
前記仮想環境において、コンポーネントプロキシに対応する前記アドオンコンポーネントのインスタンスを作成するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項２０】
前記コンポーネントプロキシからのコマンドを、前記コンポーネントサーバプロセスおよび前記アドオンコンポーネントに転送するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
アプリケーションの仮想化では、仮想アプリケーションをローカルにインストールせず、かつホストオペレーティングシステムを変更せずに、ホストオペレーティングシステムがコンピューティング装置上にシミュレートされたコンピュータ環境、すなわち仮想環境を作成して、仮想アプリケーションを実行する。仮想アプリケーションは、ローカルにあるハードウエアリソースを使用してローカルに実行され、仮想環境がホストオペレーティングシステム（たとえば、レジストリキー、ファイルなど）から隠されている場合であっても、ホストオペレーティングシステムと対話することができる。
【０００２】
こうしたことが可能であるのは、コンピューティング装置上で仮想アプリケーションを実行するのに必要なコンポーネント、たとえばレジストリエントリ、ファイル、環境変数、ユーザインターフェース要素、およびグローバルオブジェクトなどを、仮想環境が含んでいるからである。仮想環境にあるこれらのコンポーネントは、ホストオペレーティングシステムに認識されない。仮想アプリケーションに関連付けられたアドオンコンポーネント、たとえばシェル拡張、プラグインなどもホストオペレーティングシステムに認識されない。というのは、ホストオペレーティングシステムはアドオンコンポーネントのレジストリエントリまたはファイルへのアクセスを持たないからである。結果として、ホストオペレーティングシステムは、仮想環境において利用可能なアドオンコンポーネントに気づかないままであり、仮想環境において利用可能なアドオンコンポーネントによって提供される機能を使用することができない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本概要では、仮想環境にあるアプリケーションのアドオンコンポーネントを動作させることに関連した概念を紹介する。この概念は、以下の詳細な説明においてさらに記述される。本概要は、特許請求される主題の重要な特徴を特定するためのものではなく、特許請求される主題の範囲を決定するのに使用されるためのものでもない。
【課題を解決するための手段】
【０００４】
一実施形態では、オペレーティングシステムに含まれるコンポーネントプロキシが、１つまたは複数の仮想アプリケーションを含む仮想環境と通信する。アドオンコンポーネントが、１つまたは複数の仮想アプリケーションに関連付けられ、コンポーネントサーバプロセスが、コンポーネントプロキシによって転送されたコマンドを受信し、アドオンコンポーネントを実行する。
【０００５】
添付の図を参照して、詳細な説明が記載される。図において、参照番号の最も左側の桁が、その参照番号が最初に出てきた図を特定する。同一の番号が、同様の特徴およびコンポーネントを参照するために図面全体にわたって使用される。
【図面の簡単な説明】
【０００６】
【図１】一実施形態における、仮想環境にあるアドオンコンポーネントを動作させるための例示的なシステムを示す図である。
【図２】別の実施形態における、仮想環境にあるアドオンコンポーネントを動作させるための例示的なシステムを示す図である。
【図３】仮想環境にあるアドオンコンポーネントを動作させるための例示的なプロセスフロー図を示す図である。
【図４】例示的なコンピューティングベースの装置を示す図である。
【発明を実施するための形態】
【０００７】
以下の開示では、仮想環境にあるアドオンコンポーネントを動作させるためのシステムおよび方法を説明する。アドオンコンポーネントは、ホストオペレーティングシステム（すなわちオペレーティングシステム）と仮想環境において動作するサーバプロセスとの間に通信リンクを設定することによって、仮想環境において実行することができる。オペレーティングシステムはコンポーネントプロキシを含み、このコンポーネントプロキシが、サーバプロセスにおいて実行されるアドオンコンポーネントと通信する。説明されるシステムおよび方法はまた、ネットワークを通じて、仮想化されたアドオンコンポーネントのオンデマンドのアクセスおよび使用を可能にする。
【０００８】
仮想環境にあるアドオンコンポーネントを動作させるために説明されるシステムおよび方法の態様は、異なるコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成がいくつあっても実装することができるが、本実施形態は、以下の例示的なシステムアーキテクチャのコンテキストにおいて説明される。
【０００９】
図１は、仮想環境にあるアドオンコンポーネントを動作させるための例示的なシステム１００を示す。システム１００は、パーソナルコンピュータなどのスタンドアローンコンピューティング装置の一部であっても装置に含まれていてもよく、またはいくつかのコンピューティング装置の一部として含まれていてもよい。アドオンコンポーネントは、シェル拡張、プラグインであってよく、または既存のアプリケーションに追加的な機能を提供できる任意の他の類似のエンティティであってもよい。この目的のために、システム１００は、コンピューティング装置上のオペレーティングシステム１０２と、仮想環境１０４とを含む。一実装形態において、システム１００は、単一のコンピューティング装置上で実装され、コンピューティング装置上で動作する１つまたは複数の仮想環境間でのリソースの共有を容易にすることができる。コンピューティング装置は、デスクトップコンピューティング装置、ラップトップ、モバイルコンピューティング装置など、既知のコンピューティング装置のいずれかとして実装されてよい。
【００１０】
さらに、オペレーティングシステム１０２は、仮想環境１０４と通信するコンポーネントプロキシ１０６を含む。仮想環境１０４は、コンポーネントサーバプロセス１０８と、１つまたは複数の仮想アプリケーション、たとえば仮想アプリケーション１１０とを含む。コンポーネントサーバプロセス１０８は、仮想アプリケーションに関連付けられた１つまたは複数のアドオンコンポーネント、たとえば仮想アプリケーション１１０に関連付けられたアドオンコンポーネント１１２を含む。
【００１１】
仮想環境１０４に常駐するアドオンコンポーネント１１２によって提供される機能にアクセスするために、コンポーネントプロキシ１０６は、コンポーネントサーバプロセス１０８と通信してアドオンコンポーネント１１２を実行するように構成される。こうするために、コンポーネントプロキシ１０６は、リモートプロシージャコール１１４などのアプリケーションプログラムインターフェース（ＡＰＩ）を使用して、コンポーネントサーバプロセス１０８と通信することができる。
【００１２】
例示的なオペレーションでは、コンポーネントプロキシ１０６は、仮想環境１０４において利用可能なアドオンコンポーネント１１２それぞれについて、オペレーティングシステム１０２に登録される。登録は、たとえば仮想環境１０４がコンピューティング装置上でシミュレートされる際に行うことができる。アドオンコンポーネント１１２にアクセスするために、オペレーティングシステム１０２は、対応するコンポーネントプロキシ１０６を呼び出す。オペレーティングシステム１０２が初めてコンポーネントプロキシ１０６を呼び出す場合、コンポーネントプロキシ１０６は、仮想環境１０４にあるコンポーネントサーバプロセス１０８を起動し、リモートプロシージャコール１１４を使用してコンポーネントサーバプロセス１０８と通信する。リモートプロシージャコール１１４によって、明示的なコードの詳細をこの対話に提供せずに、仮想環境（たとえば仮想環境１０４）においてコンポーネントプロキシ１０６からのプロシージャやコマンドが実行できるようになる。
【００１３】
例示的な一実施形態は、システム１００において動作する仮想環境が２つ以上ある場合を含み、この場合コンポーネントプロキシ１０６は、コンポーネントサーバプロセス１０８が起動される仮想環境（たとえば仮想環境１０４）が適正な仮想環境であるかどうかを確認する。こうするために、コンポーネントプロキシ１０６は、対応するアドオンコンポーネント１１２が仮想環境１０４において利用可能であるかどうかを判断する。適正な仮想環境（たとえば仮想環境１０４）が特定されると、コンポーネントプロキシ１０６は、特定された仮想環境（たとえば仮想環境１０４）においてコンポーネントサーバプロセス１０８を起動する。別の例示的な実施形態では、コンポーネントプロキシ１０６が、適切な仮想環境において動作するサーバに直接接続するのに十分な情報に登録される。サーバが適正な仮想環境において動作していない場合は、コンポーネントプロキシはこれを検出してサーバを起動することができる。さらに別の例示的な実施形態では、コンポーネントプロキシ１０６は、仮想環境内のサーバを起動しそれと通信せずにどのコンポーネントがサポートされるかを決定するために、各仮想環境のマニフェストにアクセスすることができる。
【００１４】
コンポーネントサーバプロセス１０８は、コンポーネントプロキシ１０６によって転送されたコマンドを受信し、それに応じてアドオンコンポーネント１１２を実行する。コマンドは、コンテキストメニュー、共有メニューなどを更新するなどの、仮想環境１０４にある共通のインターフェースを実装するための命令を含むことができる。
【００１５】
オペレーティングシステム１０２が既にコンポーネントプロキシ１０６を呼び出し、コンポーネントサーバプロセス１０８を起動している場合、コンポーネントサーバプロセス１０８は、さらなる処理についてすべてのコマンドをアドオンコンポーネント１１２に直接転送する。たとえば、オペレーティングシステム１０２は本件特許出願人のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムとすることができ、アドオンコンポーネント１１２は、仮想環境１０４において利用可能なＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムシェル拡張とすることができる。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムは、シェル拡張プロキシ（たとえばコンポーネントプロキシ１０６）を介して仮想環境１０４と対話して、サーバプロセス（たとえばコンポーネントサーバプロセス１０８）中に、対応するシェル拡張のインスタンス（たとえばアドオンコンポーネント１１２）を作成する。シェル拡張のインスタンスが作成されると、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムは、シェル拡張プロキシ（たとえばコンポーネントプロキシ１０６）を介してすべてのコマンドをサーバプロセス（たとえばコンポーネントサーバプロセス１０８）に転送しサーバプロセスがこのコマンドをシェル拡張に転送することによって、シェル拡張にアクセスする。
【００１６】
コンピューティング装置上で動作するいくつかの仮想環境がある場合は、類似の方法を使用してアドオンコンポーネントを動作させることができることが理解されるであろう。加えて、各仮想環境は、その上でいくつかの仮想アプリケーションおよびアドオンコンポーネントを動作させることができる。さらに、異なる仮想環境における、コンピューティング装置上で動作する同一のアプリケーションおよびアドオンコンポーネントの複数バージョンがあってよい。
【００１７】
図２は、別の実施形態における、仮想環境にあるアドオンコンポーネントを動作させるための例示的なシステム２００を示す。システム２００は、パーソナルコンピュータなどのスタンドアローンコンピューティング装置として、または複数のコンピューティング装置を含むサーバ／クライアントアーキテクチャにおいて実装することができる。アドオンコンポーネントは、シェル拡張、プラグインであってよく、または既存のアプリケーションに追加的な機能を提供できる任意の類似のエンティティであってもよい。この目的のために、システム２００はクライアント装置上のオペレーティングシステム２０２と、仮想環境２０４と、サーバコンポーネント２０６とを含む。一例では、仮想環境２０４は、サーバコンポーネント２０６上でホストされたアプリケーションによってシミュレートされてよい。
【００１８】
オペレーティングシステム２０２は、仮想環境２０４と通信するコンポーネントプロキシ２０８を含む。仮想環境２０４は、コンポーネントサーバプロセス２１０と、アドオンコンポーネント２１２と、１つまたは複数の仮想化アプリケーション、たとえば仮想アプリケーション２１４とを含む。
【００１９】
さらに、他のアドオンコンポーネント２１６が、サーバコンポーネント２０６上で、または仮想環境２０４内でホストされてよい。また、たとえば他のアドオンコンポーネント２１６が、アプリケーションのインストール中および実行中に、どのようにオペレーティングシステム（たとえばオペレーティングシステム２０２）と対話するかという情報が、サーバコンポーネント２０６上で、または仮想環境２０４内でホストされてもよい。サーバコンポーネント２０６もまた、レジストリ設定、ファイル、ならびに他のアプリケーションおよびオペレーティングシステムに関連した変数のログを記録することができる。
【００２０】
オペレーティングシステム２０２は、リモートプロシージャコール２１８を介して通信することによって、仮想環境２０４にあるアドオンコンポーネント２１２にアクセスする。こうするために、オペレーティングシステム２０２はさまざまなエンジンまたは技術を使用して、コンポーネントプロキシ２０８と仮想環境２０４との間に通信リンクを設定することができる。
【００２１】
図１を参照して説明したように、仮想環境２０４において実行できるアドオンコンポーネント２１２それぞれについて、対応するコンポーネントプロキシ２０８がオペレーティングシステム２０２に登録される。アドオンコンポーネント２１２によって提供される機能を使用するために、オペレーティングシステム２０２は、対応するコンポーネントプロキシ２０８を呼び出す。オペレーティングシステム２０２が初めてコンポーネントプロキシ２０８を呼び出す場合、コンポーネントプロキシ２０８は、仮想環境２０４にあるコンポーネントサーバプロセス２１０を起動し、リモートプロシージャコール２１８を使用してコンポーネントサーバプロセス２１０と通信する。初めて呼び出すのではない場合、コンポーネントプロキシ２０８は、さらなる処理についてすべてのコマンドをコンポーネントサーバプロセス２１０に直接転送する。
【００２２】
複数の仮想環境がある場合、コンポーネントプロキシ２０８は適正な仮想環境、たとえば仮想環境２０４においてコンポーネントサーバプロセス２１０が起動されているかどうかを確認する。こうするために、コンポーネントプロキシ２０８は、仮想環境が、対応するアドオンコンポーネント２１２を含むかどうかを判断する。コンポーネントサーバプロセス２１０は、仮想環境２０４にあるアドオンコンポーネント２１２を実行し、コンポーネントプロキシ２０８から来たすべてのコマンドをアドオンコンポーネント２１２に転送する。
【００２３】
加えて、アドオンコンポーネント２１２が、オペレーティングシステム２０２によって呼び出されたコンポーネントプロキシに対応しない場合、コンポーネントプロキシ２０８は、サーバコンポーネント２０６上の他のアドオンコンポーネント２１６の中から、および／またはシステム２００が接続またはネットワーク接続できる他の仮想環境およびシステムの中から、対応するアドオンコンポーネントを探すことができる。
【００２４】
上述した実装形態を、他のシナリオにおいても、仮想環境にあるアドオンコンポーネントを動作させるのに拡張できることが理解されるであろう。たとえば、１つのシナリオでは、コンピュータネットワーク上にいくつかの仮想環境があり得、それらの仮想環境が、その上でいくつかの仮想アプリケーションおよび関連のアドオンコンポーネントを動作させることができる。異なるサーバ装置における、ネットワーク上で動作する同一の仮想アプリケーションおよびアドオンコンポーネントの複数バージョンもあり得る。さらに、同一のコンピューティング装置上で動作する異なる構成を有する同一の仮想アプリケーションのインスタンスもあり得る。
【００２５】
別の例示的なシナリオでは、クライアント装置が、サーバ／クライアントアーキテクチャを実装するネットワーク上のサーバ装置またはクライアント装置においてホストされた仮想アプリケーションに関連付けられたアドオンコンポーネントにアクセスすることができる。たとえば、クライアント装置のオペレーティングシステム２０２が、別個のコンピューティング装置に常駐するサーバコンポーネント２０６に常駐する他のアドオンコンポーネント２１６に含まれるアドオンコンポーネントに対応するコンポーネントプロキシを呼び出すことができる。こうした場合においては、オペレーティングシステム２０２は仮想環境２０４との通信リンクを設定し、仮想環境２０４がサーバコンポーネント２０６にあるアドオンコンポーネントを探す。アドオンコンポーネントが他のアドオンコンポーネント２１６中に位置する場合、クライアント装置は、それ自体の上にアドオンコンポーネントをダウンロードせずに、仮想環境２０４を介してアドオンコンポーネント２１６にアクセスすることができる。
【００２６】
別の実装形態では、複数の仮想環境を動作させるクライアントコンピューティング装置がまた、接続されているネットワーク上に存在する他の仮想環境からアドオンコンポーネントにアクセスして、アドオンコンポーネントの共有を容易にすることができる。
【００２７】
図３は、仮想環境にあるアドオンコンポーネントを動作させる実装形態を示す例示的なプロセス図３００である。プロセス図３００は、ハードウエア、ソフトウエア、ファームウエアまたはこれらの組合せにおいて実装することができる、一連のオペレーションを表すロジカルフローグラフにおけるステップの集まりとして示されている。方法が説明される順序は、限定として解釈されるものではなく、説明される方法のブロックは、本方法または代替の方法を実装するのにどのような順序でいくつ組み合わされてもよい。加えて、本明細書で説明される主題の精神および範囲を逸脱せずに、個々のブロックを本方法から削除することもできる。
【００２８】
ソフトウエアのコンテキストにおいて、ブロックは、１つまたは複数のプロセッサによって実行される場合、先に挙げたオペレーションを行うコンピュータ命令を表すことができる。解説目的のため、プロセス３００を、図１に示すシステム１００および図２に示すシステム２００を参照して説明する。
【００２９】
ブロック３０２で、オペレーティングシステムが、アドオンコンポーネントの機能を使用するために、アドオンコンポーネントに対応するコンポーネントプロキシを呼び出す。たとえば、オペレーティングシステム１０２はコンポーネントプロキシ１０６を呼び出す。別の例では、オペレーティングシステム２０２はコンポーネントプロキシ２０８を呼び出す。
【００３０】
ブロック３０４で、コンポーネントプロキシがＡＰＩを使用して仮想環境に関連付けをする。たとえば、システム１００で、コンポーネントプロキシ１０６はＲＰＣ１１４を使用して仮想環境１０４に関連付けをすることができる。または、コンポーネントプロキシ２０８はＲＰＣ２１８を使用して仮想環境２０４に関連付けをすることができる。
【００３１】
ブロック３０６で、コンポーネントプロキシは関連付けられた仮想環境が適正な仮想環境であるか否かを判断する。こうするために、コンポーネントプロキシは、仮想環境が、オペレーティングシステムによって要求された対応するアドオンコンポーネントを含むかどうかを確認する。この仮想環境が適正な仮想環境であると判断された場合（すなわち、ブロック３０６から「ＹＥＳ」分岐をたどる）、プロセスフロー制御はブロック３０８へと進む。そうでない場合（すなわち、ブロック３０６から「ＮＯ」分岐をたどる）、プロセスフロー制御はブロック３０４へと進み、適正な仮想環境が見つかるまで別の仮想環境に関連付けを設定する。たとえば、仮想環境１０４においてアドオンコンポーネント１１２が検出されない場合、コンポーネントプロキシ１０６は他の仮想環境においてアドオンコンポーネント１１２を探す。別の実装形態では、システム２００上で、適正な仮想環境を決定するための同一のプロシージャに従う。
【００３２】
適正な仮想環境が見つかると、ブロック３０８で、コンポーネントプロキシはその適正な仮想環境にあるコンポーネントサーバプロセスを起動する。たとえば、コンポーネントプロキシ１０６は、アドオンコンポーネント１１２が仮想環境１０４においてホストされることを有効化した後で、仮想環境１０４にあるコンポーネントサーバプロセス１０８を起動する。別の実装形態では、システム２００上で、コンポーネントプロキシ２０８が、仮想環境２０４にあるコンポーネントサーバプロセス２１０を起動する。
【００３３】
ある実装形態では、コンポーネントプロキシは、適切な仮想環境において動作するサーバに直接接続するのに十分な情報に登録される。サーバが適正な仮想環境において動作していない場合、コンポーネントプロキシはこれを検出し、サーバを起動することができる。他の実装形態では、コンポーネントプロキシは、仮想環境内のサーバを起動しそれと通信せずにどのコンポーネントがコンポーネントプロキシによってサポートされるかを決定するために、各仮想環境のマニフェストにアクセスすることができる。
【００３４】
ブロック３１０で、オペレーティングシステムにあるコンポーネントプロキシと仮想環境にあるコンポーネントサーバプロセスとの間に通信リンクが設定され（すなわち確立され）、それによりオペレーティングシステムと仮想環境との間でデータおよびコマンドを転送することができる。通信リンクは、ＲＰＣまたは任意の他の既知の技術を使用して設定することができる。たとえば、オペレーティングシステム１０２は、コンポーネントサーバプロセス２１０の立ち上げの後に、通信リンクを設定して仮想環境１０４とデータおよびコマンドを交換することができる。別の実装形態では、通信リンクを設定するための同様の方法をシステム２００上で使用することができる。
【００３５】
ブロック３１２で、コンポーネントサーバプロセスは、仮想環境において、コンポーネントプロキシに対応するアドオンコンポーネントのインスタンスを作成する。さらに、１つまたは複数の仮想環境上にアドオンコンポーネントのインスタンスを２つ以上作成することができる。たとえば、コンポーネントサーバプロセス１０８は、コンポーネントプロキシ１０６から受信した通信に応答して、仮想環境１０４においてアドオンコンポーネント１１２のインスタンスを作成する。別の実装形態では、システム１００について説明したのと同様の方法を使用して、システム２００においてアドオンコンポーネントのインスタンスを作成することができる。
【００３６】
アドオンコンポーネントが作成されると、ブロック３１４で、コンポーネントプロキシがコマンドをオペレーティングシステムからコンポーネントサーバプロセスに転送し、コンポーネントサーバプロセスはそのコマンドをアドオンコンポーネントに転送する。それによりオペレーティングシステムはアドオンコンポーネントにアクセスすることができ、アドオンコンポーネントによって拡張可能になる。たとえば、オペレーティングシステム１０２が仮想環境１０４にあるアドオンコンポーネント１１２を特定すると、オペレーティングシステム１０２はアドオンコンポーネント１１２によって提供される機能を使用することができる。
【００３７】
例示的コンピュータ環境
図４は、本明細書で説明される技術を実装するのに使用されてよく、本明細書で説明される要素の全部または一部において典型となり得る、例示の一般的なコンピュータ環境４００を示す。たとえば、一般的なコンピュータ環境は図１のシステム１００および図２のシステム２００に使用することができ、図３のプロセス３００において説明されるステップを実装することができる。
【００３８】
コンピュータ環境４００は、コンピューティング環境の一例にすぎず、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲についていかなる限定を示唆するものでもない。コンピュータ環境４００はまた、例示のコンピュータ環境４００に図示されるコンポーネントの１つ、または組合せに関連したいかなる従属性や必要条件を有するとも解釈されるべきではない。
【００３９】
コンピュータ環境４００は、コンピュータ４０２の形態の汎用コンピューティングベースの装置を含む。コンピュータ４０２は、たとえばデスクトップコンピュータ、ハンドヘルドコンピュータ、ノートブックまたはラップトップコンピュータ、サーバコンピュータ、ゲームコンソールなどでよい。コンピュータ４０２のコンポーネントには、１つまたは複数のプロセッサまたは処理装置４０４と、システムメモリ４０６と、プロセッサ４０４を含むさまざまなシステムコンポーネントをシステムメモリ４０６に結合するシステムバス４０８とが含まれてよいが、これらに限定しない。
【００４０】
システムバス４０８は、メモリバスまたはメモリコントローラ、周辺機器バス、アクセラレイティッドグラフィックスポート、およびさまざまなバスアーキテクチャのうちの任意のものを使用するプロセッサバスまたはローカルバスを含むバス構造のいくつかのタイプのうちの任意の１つまたは複数を表す。例として、こうしたアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスなどが含まれてよい。
【００４１】
コンピュータ４０２は、さまざまなコンピュータ可読媒体を典型的に含む。こうした媒体は、コンピュータ４０２がアクセスできる任意の利用可能媒体であってよく、揮発性および不揮発性媒体の両方、ならびに着脱可能および着脱不可能媒体の両方を含む。
【００４２】
システムメモリ４０６は、揮発性メモリの形態のコンピュータ可読媒体、たとえばＲＡＭ（ランダムアクセスメモリ）４１０、および／または不揮発性メモリの形態のコンピュータ可読媒体、たとえばＲＯＭ（リードオンリーメモリ）４１２を含む。スタートアップの際などに、コンピュータ４０２内の要素間で情報を転送するのに役立つ基本ルーチンを含むＢＩＯＳ（ベーシックインプット／アウトプットシステム）４１４が、ＲＯＭ４１２に記憶される。ＲＡＭ４１０は、処理装置４０４によって直ちにアクセス可能なデータモジュールおよび／またはプログラムモジュール、および／または処理装置４０４によって現在操作されているデータモジュールおよび／またはプログラムモジュールを典型的に含む。
【００４３】
コンピュータ４０２はまた、他の着脱可能／着脱不可能な、揮発性／不揮発性コンピュータ記憶媒体を含むことができる。例として図４は、着脱不可能な不揮発性の磁気媒体（図示せず）からの読み取りおよび磁気媒体への書き込みを行うハードディスクドライブ４１６、着脱可能な不揮発性磁気ディスク４２０（たとえば「フロッピー（登録商標）ディスク」）からの読み取りおよびディスク４２０への書き込みを行う磁気ディスクドライブ４１８、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体などの着脱可能な不揮発性光学ディスク４２４からの読み取りおよび／またはディスク４２４への書き込みを行う光学ディスクドライブ４２２を示す。ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光学ディスクドライブ４２２はそれぞれ、１つまたは複数のデータ媒体インターフェース４２６によってシステムバス４０８に接続される。あるいは、ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光学ディスクドライブ４２２は、１つまたは複数のインターフェース（図示せず）によってシステムバス４０８に接続されてよい。
【００４４】
ディスクドライブとそれに関連したコンピュータ可読媒体は、不揮発性記憶装置のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータをコンピュータ４０２に提供する。本例ではハードディスク４１６、着脱可能な磁気ディスク４２０、着脱可能な光学ディスク４２４を図示するが、コンピュータがアクセス可能なデータを記憶できる他のタイプのコンピュータ可読メディア、たとえば磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光学記憶装置、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（リードオンリーメモリ）、ＥＥＰＲＯＭ（電気的消去可能なプログラマブル読取専用メモリ）などを使用しても、例示的なコンピューティングシステムおよびコンピューティング環境を実装できることが理解されるであろう。
【００４５】
任意の数のプログラムモジュールを、ハードディスク４１６、磁気ディスク４２０、光学ディスク４２４、ＲＯＭ４１２および／またはＲＡＭ４１０に記憶することができ、プログラムモジュールには、例としてオペレーティングシステム４２７、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール４３０、およびプログラムデータ４３２が含まれる。このようなオペレーティングシステム４２７、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール４３０、およびプログラムデータ４３２（またはこれらのなんらかの組合せ）のそれぞれは、分散ファイルシステムをサポートする常駐コンポーネントのすべてまたは一部を実装することができる。
【００４６】
ユーザは、キーボード４３４およびポインティング装置４３６（たとえば「マウス」）などの入力装置を介して、コマンドおよび情報をコンピュータ４０２に入力することができる。他の入力装置４３８（具体的には図示せず）として、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、スキャナおよび／またはその類を含むことができる。これらおよび他の入力装置は、システムバス４０８に結合された入力／出力インターフェース４４０を介して処理装置４０４に接続されるが、他のインターフェースおよびバス構造、たとえばパラレルポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）によって接続されてもよい。
【００４７】
モニタ４４２または他のタイプの表示装置も、ビデオアダプタ４４４などのインターフェースを介してシステムバス４０８に接続することができる。モニタ４４２に加え、他の出力周辺装置として、入力／出力インターフェース４４０を介してコンピュータ４０２に接続できるスピーカ（図示せず）およびプリンタ４４６などのコンポーネントを含むことができる。
【００４８】
コンピュータ４０２は、リモートコンピューティングベースの装置４４８などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境において作動することができる。例として、リモートコンピューティングベースの装置４４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピア装置または他の一般的なネットワークノードなどであってよい。リモートコンピューティングベースの装置４４８は、コンピュータ４０２に関して本明細書で説明される要素および特徴の多くまたはすべてを含むことができるポータブルコンピュータとして図示される。
【００４９】
コンピュータ４０２とリモートコンピュータ４４８との間の論理接続は、ＬＡＮ（ローカルエリアネットワーク）４４０および一般的なＷＡＮ（ワイドエリアネットワーク）４４２として表される。こうしたネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて普及している。
【００５０】
ＬＡＮネットワーク環境において実装される場合、コンピュータ４０２は、ネットワークインターフェースまたはネットワークアダプタ４４４を介してローカルネットワーク４４０に接続される。ＷＡＮネットワーク環境において実装される場合、コンピュータ４０２は、ワイドネットワーク４４２を通じて通信を確立するためのモデム４４６または他の手段を典型的に含む。コンピュータ４０２の内部または外部にあってよいモデム４４６は、入力／出力インターフェース４４０または他の適切なメカニズムを介してシステムバス４０８に接続することができる。図示されたネットワーク接続は例示的なものであり、コンピュータ４０２と４４８との間の通信リンクを確立する他の手段が採用されてもよいことが理解されるであろう。
【００５１】
ネットワーク化された環境、たとえばコンピューティング環境４００で図示される環境では、コンピュータ４０２に関して表されたプログラムモジュール、またはそれらの部分がリモートのメモリ記憶装置に記憶されてよい。例として、リモートのアプリケーションプログラムがリモートコンピュータ４４８のメモリ装置に常駐する。例示目的のために、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能なプログラムコンポーネントは、本明細書では別個のブロックとして図示されているが、こうしたプログラムおよびコンポーネントは、コンピューティングベースの装置４０２の異なる記憶コンポーネントにさまざまな時間に常駐し、コンピュータのデータプロセッサによって実行されることが理解される。
【００５２】
本明細書では、さまざまなモジュールおよび技術を、１つまたは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令、たとえばプログラムモジュールなどの一般的なコンテキストにおいて説明することができる。一般的に、プログラムモジュールは、個々のタスクを実行する、または個々の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的に、プログラムモジュールの機能は、さまざまな実施形態において必要に応じて組み合わせる、または分散することができる。
【００５３】
これらのモジュールおよび技術の実装形態は、なんらかの形態のコンピュータ可読媒体上に記憶される、または媒体に渡って送信することができる。コンピュータ可読媒体は、コンピュータがアクセスできる任意の利用可能な媒体であってよい。例として、コンピュータ可読媒体にはコンピュータ記憶媒体および通信媒体が含まれてよいが、これらに限定しない。
【００５４】
コンピュータ記憶媒体には、揮発性および不揮発性、着脱可能および着脱不可能な媒体が含まれ、これらの媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術によって実装される。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報を記憶するのに使用でき、かつコンピュータがアクセスできる任意の他の媒体が含まれるが、これらに限定しない。
【００５５】
あるいは、フレームワークのある部分を、ハードウエア、またはハードウエア、ソフトウエア、および／またはファームウエアの組合せにおいて実装することができる。たとえば、１つまたは複数のＡＳＩＣ（特定用途向け集積回路）またはＰＬＤ（プログラマブルロジックデバイス）を設計またはプログラムして、１つまたは複数のフレームワークの部分を実装することができる。
【００５６】
結論
仮想環境にあるアドオンコンポーネントを動作させるための実施形態を、構造的特徴および／または構造的方法に特有の言語で説明してきたが、添付の特許請求の範囲の主題は、説明された特定の特徴または方法に必ずしも限定されないことが理解されるであろう。むしろ、特定の特徴および方法は、仮想環境にあるアドオンコンポーネントを動作させるための例示的な実装形態として開示される。
【図１】
2010532050.tif 000003
【図２】
2010532050.tif 000004
【図３】
2010532050.tif 000005
【図４】
2010532050.tif 000006
【国際調査報告】
2010532050.tif 000007
2010532050.tif 000008