(57)【要約】  複数の仮想マシンは、グラフィックスハードウェアとディスプレイを含むホストコンピュータ上で実行される。仮想マシンは、ディスプレイデータをそれぞれの仮想デスクトップバッファに書き込む。ホストコンピュータのディスプレイに出力するため、仮想マシンが選択される。グラフィックスハードウェア上の構成バッファはその選択された仮想マシンに対してイネーブルされる。その選択された仮想マシンと関連する仮想デスクトップバッファのコンテンツは、グラフィックスハードウェアによって、その構成バッファにコピーされる。その構成バッファのコンテンツは、グラフィックスハードウェアによってレンダーされ、表示される。加えて、構成するバッファへの読み取りアクセスは、グラフィックスハードウェアに制限される。その結果、悪意あるソフトウェアアプリケーションがパーティションを越えてディスプレイデータを取り込むことを防止できる。
2009503647.tif 000002
【特許請求の範囲】
【請求項１】
デスクトップ構成の方法であって、
それぞれが仮想デスクトップバッファを備える少なくとも１の仮想マシンをホストコンピュータ上で実行するステップと、
前記仮想マシンによって、それらの対応する仮想デスクトップバッファにディスプレイデータを生成するステップと、
少なくとも１の前記仮想デスクトップバッファをイネーブルするステップと、
前記イネーブルされた仮想デスクトップバッファコンテンツを構成バッファにコピーするステップと
を備えることを特徴とする方法。
【請求項２】
前記構成バッファのコンテンツをディスプレイにレンダリングするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
セキュアプロセスをホストコンピュータ上で実行していずれの仮想デスクトップバッファをイネーブルさせるべきかを決定するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記セキュアプロセスは、ハイパーバイザーを備えることを特徴とする請求項３に記載の方法。
【請求項５】
構成バッファは、ハードウェアデバイス中で実装され、前記イネーブルされた仮想デスクトップバッファのコンテンツを構成バッファにコピーすることは、ハードウェアデバイスが前記イネーブルされた仮想デスクトップバッファのコンテンツを読み取り、前記イネーブルされた仮想デスクトップバッファのコンテンツを前記構成バッファに書き込むステップを備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記仮想デスクトップバッファへの読み込みアクセスは、ソフトウェアプロセスに対して拒否することを特徴とする請求項５に記載の方法。
【請求項７】
前記仮想デスクトップバッファへの読み込みアクセスは、セキュアでないソフトウェアプロセスに対して拒否することを特徴とする請求項５に記載の方法。
【請求項８】
前記構成バッファは、ダブルバッファであることを特徴とする請求項１に記載の方法。
【請求項９】
コンピュータであって、
それぞれがディスプレイデータを関連する仮想マシンバッファ中に生成する少なくとも１の仮想マシンを実行するように適合されたプロセッサと、
前記仮想マシンバッファにストアするように適合されたメモリと、
構成バッファを備えるグラフィックスプロセッサであって、前記仮想マシンバッファのコンテンツを前記メモリから前記構成バッファにコピーするように適合された前記グラフィックスプロセッサと
を備えることを特徴とするコンピュータ。
【請求項１０】
前記グラフィックスプロセッサは、前記構成バッファのコンテンツをレンダリングするようにさらに適合されたこと特徴とする請求項９に記載のコンピュータ。
【請求項１１】
前記プロセッサは、セキュアプロセスを実行するようにさらに適合され、前記セキュアプロセスは、少なくとも１の仮想マシンをイネーブルすることを特徴とする請求項９に記載のコンピュータ。
【請求項１２】
前記セキュアプロセスは、ハイパーバイザーを備えることを特徴とする請求項１１に記載のコンピュータ。
【請求項１３】
前記グラフィックスプロセッサは、どの仮想マシンがイネーブルされるかを決定し、前記イネーブルされた仮想マシンに対応する前記仮想マシンバッファのコンテンツを前記メモリから前記構成バッファにコピーするようにさらに適合されたことを特徴とする請求項１１に記載のコンピュータ。
【請求項１４】
前記メモリは、ソフトウェアプロセスに対する読み取りアクセスを拒否するように、さらに適合されたこと特徴とする請求項９に記載のコンピュータ。
【請求項１５】
前記メモリは、セキュアなソフトウェアプロセスに対する読み取りアクセスのみ認めるようにさらに適合されたことを特徴とする請求項９に記載のコンピュータ。
【請求項１６】
前記メモリは、前記グラフィックスプロセッサに対する読み取りアクセスのみ認めるようにさらに適合されたことを特徴とする請求項９に記載のコンピュータ。
【請求項１７】
前記構成バッファは、ダブルバッファであることを特徴とする請求項９に記載のコンピュータ。
【請求項１８】
デスクトップ構成のためのシステムであって、
ホストコンピュータ上で実行する少なくとも１の仮想マシンをイネーブルするためのイネーブルコンポーネントと、
前記イネーブルされた仮想マシンからディスプレイデータを取り出すための取り出しコンポーネントと、
前記取り出されたディスプレイデータをストアするための構成バッファと、
前記ストアされたディスプレイデータを、ホストコンピュータのディスプレイに適したフォーマットに変換するための変換コンポーネントと
を備えることを特徴とするシステム。
【請求項１９】
前記取り出しコンポーネントは、グラフィックスハードウェアの一部であり、前記ディスプレイデータは、前記ホストコンピュータのメモリから前記グラフィックスハードウェアによって取り出されることを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記イネーブルコンポーネントは、前記ホストコンピュータ上で実行するセキュアプロセスを備えることを特徴とする請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアハードウェアデスクトップバッファ構成に関する。
【背景技術】
【０００２】
仮想マシンにより、ホストコンピュータはマルチアプリケーション環境、またはオペレーティングシステムを同一のコンピュータで同時に稼動可能となる。ホストコンピュータは、一定の量のホストリソースをそれぞれの仮想マシンに割り当てる。そして、それぞれの仮想マシンは、オペレーティングシステムを含むアプリケーションを実行するために割り当てられたリソースを使うことができる。仮想マシンは、ホストコンピュータの基礎となるハードウェアを仮想化し、またはハードウェアデバイスをエミュレートし、オペレーティングシステムまたはコンピュータのユーザーに仮想マシンの使用を透過性のあるものにする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
仮想ＰＣ環境では、ＰＣのハードウェアは、複数のパーティションまたは仮想マシンの間で共有される。そのような実行環境においては、主Ｏ／Ｓ（すなわち、それぞれの仮想マシンのホストＯ／Ｓ）は、一般的に、グラフィックスハードウェアを有し、それゆえにデスクトップバッファ構成プロセスを有する。デスクトップバッファ構成プロセスは、どのような仮想マシンの出力がスクリーン上にどの時点で表示されるかを決定する。各仮想マシンはホスト機を完全に制御していると思っているので、各仮想マシンは自己の仮想デスクトップバッファに出力することができる。仮想マシンによって作成された画素をグラフィックスサブシステムに持ってくるために、これらの仮想デスクトップバッファへのアクセスが主ＯＳに与えられる。主Ｏ／Ｓに仮想デスクトップバッファへのアクセスを与えることにより、他のパーティションによって生成されたビデオデータの機密性に、セキュリティ上の課題が生じる。これらのパーティションの１つがセキュアＯＳを実行している場合、このことは特に望ましくないことである。
【０００４】
例えば、悪意あるユーザーは、ホスト上で実行する１または複数の仮想マシンのビデオ出力を記録することを望むかもしれない。ディスプレイに表示する最終イメージを構成するために、仮想マシンデスクトップバッファへのアクセスは主Ｏ／Ｓのデスクトップ構成するプロセスに与えられるので、悪意あるユーザーは、その構成するプロセスを変更して、別のパーティションに属する仮想デスクトップバッファ上にレンダーされた機密情報にアクセスすることができる。そして、悪意あるユーザーは、任意の特定の仮想マシンの表示アクティビティを備えたムービーを作成するか、または画面のコンテンツを変更して不正確な決定をするようにユーザーを誤らせることさえできるだろう。
【課題を解決するための手段】
【０００５】
複数の仮想マシンは、グラフィックスハードウェアとディスプレイを含むホストコンピュータ上で実行される。そのグラフィックスハードウェアは、仮想デスクトップ画素をハードウェア構成バッファ上に複製し、結合することができる。仮想マシンは、ディスプレイデータをそれぞれの仮想デスクトップバッファに書き込む。ホストコンピュータのディスプレイに出力するため、仮想マシンが選択される。グラフィックスハードウェア上の構成バッファはその選択された仮想マシンに対してイネーブルされる。その選択された仮想マシンと関連する仮想デスクトップバッファのコンテンツは、グラフィックスハードウェアによって、その構成バッファにコピーされる。その構成するバッファのコンテンツは、グラフィックスハードウェアによってレンダーされ、表示される。加えて、構成するバッファへの読み取りアクセスは、グラフィックスハードウェアに制限される。その結果、悪意あるソフトウェアアプリケーションがパーティションを越えてディスプレイデータを取り込むことを防止できる。
【発明を実施するための最良の形態】
【０００６】
図１は、本発明による例示的なデスクトップバッファ構成ホストコンピュータを示すブロック図である。図示する通り、ホストコンピュータは、複数の仮想マシンクライアント１１０、１２０および１３０を特徴としている。各仮想マシンクライアント１１０、１２０および１３０は、ホストコンピュータ上で実行することができる。各仮想マシンクライアント１１０、１２０および１３０は、自己のオペレーティングシステムおよびアプリケーションを実行し、あたかもホストコンピュータのリソースを完全に制御しているかのようにふるまうことができる。しかしながら、ホストコンピュータのリソースは、仮想マシンクライアント１１０、１２０および１３０の間で共有され、ホストコンピュータのオペレーティングシステムによって制御される。図１に示しているのは３つの仮想マシンのみであるが、これは説明する目的のためだけであり、この発明の限定を意味するものではない。サポートできる仮想マシンの数に制限はない。
【０００７】
仮想マシン１１０、１２０および１３０は、関連する仮想デスクトップバッファを有する。図示する通り、仮想マシン１１０は仮想デスクトップバッファ１１１を有し、仮想マシン１２０は仮想デスクトップバッファ１２１を有し、仮想マシン１３０は仮想デスクトップバッファ１３１を有する。仮想マシンは、それぞれの仮想デスクトップバッファに表示されるべきデータを出力する。例えば、仮想マシン１１０は、開いているアプリケーションまたはデスクトップのアイコンを含め、現在のデスクトップを表示することができる。したがって、仮想マシン１１０は、要求された画素データを仮想デスクトップバッファ１１１に書き込む。例えば、仮想デスクトップバッファは、そのホストオペレーティングシステムによって仮想マシンに割り当てられた、グラフィックスハードウェア１４０のホストシステムメモリ、またはビデオメモリの一部として存在することができる。図１において、仮想マシンを囲むボックスで示されているように、仮想マシンは自己のメモリの一部を割り当てられる。
【０００８】
既存の技術では、仮想マシン１１０、１２０および１３０のいずれがホストコンピュータのディスプレイ１７１を制御するかは、ソフトウェアプロセスが決定するだろう。そして、そのソフトウェアプロセスは、例えば、グラフィックスハードウェア１４０のディスプレイコントローラーによって読み込まれる仮想デスクトップバッファのコンテンツを構成バッファ１５１にコピーすることにより、最終的なディスプレイを構成するだろう。構成プロセスにおいては、仮想マシンの出力に加えられた追加的なユーザーインターフェースを有することは一般的である。代表的な例は、インターフェースを加えてユーザーが1つのパーティションから別のパーティションまでの物理的なディスプレイを切り換えることを可能にすることである。前述したように、ソフトウェアプロセスは悪意あるユーザーがディスプレイデータを取り込めるようにまたはディスプレイをハイジャックすらできるように変更される可能性があったため、このソフトウェア構成方法により、システムにセキュリティ上の問題が生じることとなる。
【０００９】
現代のグラフィックデバイスは、強力なだけでなく非常に複雑でもあるため、ソフトウェアデスクトップ構成をセキュアにすることはひどく難しい。代表的なO／Sは、グラフィックスコアを効果的に制御する方法を知らず、そして、適当なデバイスドライバーに依拠してコマンドをマシン依存コードに翻訳しなければならない。簡単なレジスタインターフェースを通じて構成して、ハードウェア中で構成がなされると、レンダーされた画素のセキュリティを大いに向上することができる。ハードウェアのサポートにより、ソフトウェア構成プロセスは主Ｏ／Ｓから移され、インターフェースコードは、サイズがさらに小さくそれゆえ製造業者にとってセキュリティアサーションを作成することが容易なハイパーバイザー１８０のような信頼性のあるソフトウェアプロセスに置かれる。
【００１０】
このような状況下においては、セキュアハードウェア構成をグラフィックスハードウェア１４０に追加して、仮想デスクトップバッファ１１１、１２１、または１３１から構成バッファ１５１まで自動的に画素を複製することが望ましい。仮想デスクトップバッファからのディスプレイデータをコピーするためのグラフィックスコマンドをビルドするソフトウェアプロセスの代わりに、グラフィックスハードウェア１４０は、仮想デスクトップバッファのコンテンツを構成バッファ１５１へコピーするための簡単なインターフェースを提供する。そして、他のパーティションで稼動している悪意あるソフトウェアプロセスから、その仮想デスクトップバッファをセキュアにすることができる。
【００１１】
さらに、グラフィックスハードウェア１４０はまた、構成バッファ１５１へのメモリアクセスを制限しなければならない。読み取りアクセスは、最終イメージを物理的ディスプレイに生成するためのディスプレイロジックについては、許可されるべきである。書き込みアクセスは、仮想デスクトップバッファから画素を複製するためのセキュア構成エンジンについては、許可される。
【００１２】
ティアリングを防止するために、構成バッファ１５１をダブルバッファ方式で実装するのが望ましい。この配置では、メモリの２つのセクションが構成バッファとして割り当てられる。一方のバッファでセキュアな構成が起こっている間、ディスプレイ制御装置は常にもう一方のバッファから読み込みを行う。１フレームのレンダリング（構成すること）が完了すると、それら２つのバッファの役割は交換される。
【００１３】
ダブルバッファリングは、グラフィック／アニメーションの世界ではよく知られた先行技術である。レンダリングが起きたバッファは、一般的にはバックバッファとしてラベルされる。レンダリングが行われると、バックバッファは、ディスプレイにフリップされ、次のディスプレイリフレッシュ時に効果が生じるだろう。その時まで、元のディスプレイバッファを次のフレームのバックバッファとして用いることができる。さらに高度なシステムでは、バックバッファの数を変えることができる。構成バッファ１５１は、グラフィックを多用するディスプレイの技術で知られている任意のシステム、方法または技法を用いて実装することができる。その技法は、構成プロセス中に任意の数のバックバッファを用いるシステムで実装することができる。
【００１４】
最も簡単なケースでは、グラフィックスハードウェア１４０は、仮想デスクトップバッファを構成バッファにコピーするための簡単なインターフェースの提供を要求されるだけである。この解決手段において、ハイパーバイザー１８０が、パーティションからのディスプレイフリップコマンドをインターセプトする。そのパーティションがまたディスプレイを有する場合、ハイパーバイザー１８０は、そのフリップコマンドをセキュアハードウェア構成命令に変換するだろう。さもなければ、そのパーティションから生成された画素をディスプレイに送るべきではないので、ハイパーバイザー１８０はフリップリクエストをドロップする。追加的なグラフィックスコンテンツがパーティションの出力に重ね合わされる場合、構成することが要求されることに留意されたい。さもなければ、ハイパーバイザー１８０は構成するプロセスをスキップすることができ、ディスプレイに直接出力をフリップすることができる。
【００１５】
この解決手段において、グラフィックスハードウェア１４０は、ソースと宛先のサーフェイスの両方についてプロパティを定義する適切なレジスタインターフェースを提供することができる。ソースサーフェイスは、そこから画素をコピーする仮想デスクトップバッファを参照し、宛先はそこへ画素をコピーする構成バッファである。サーフェイスの属性は、これらには制限されないが、ベースアドレス、色の深さ（１画素あたりのビット数）、色の表現方式（ＲＧＢ方式とＹＵＢ方式）、幅、高さ、走査線あたりのバイト数を含む。それゆえ、構成プロセスは、色空間補正およびアルファチャネルの取り扱いに対するサポートを有する簡単な画素複製プロセスである。ハイパーバイザー１８０は、パーティション出力の上に追加的ユーザーインタェースをオーバーレイする必要があるため、アルファチャネルサポートが必要となることがある。ユーザーがディスプレイをあるパーティションから他のパーティションへ切り換えるのを可能にするためのインターフェースを加えることが、その一例である。
【００１６】
さらに進んだ解決手段においては、画素の複製は座標変換をも伴うことがある。全体のディスプレイを有する単一のパーティションを有する代わりに、ハイパーバイザーは、物理的ディスプレイを共有できるように各パーティションからの出力をウィンドーに表示するように選択することができる。
【００１７】
図２は、ホストシステム上の複数の仮想デスクトップバッファのウィンドー化されたディスプレイをサポートする、デスクトップ構成バッファシステムの変更を示す。ホストシステムのユーザーまたはアドミニストレーターは、そのホスト機で現在稼動中の仮想マシンのデスクトップやスクリーンディスプレイを同時に見たいかもしれない。そのようなディスプレイを容易にするための便利な方法は、各仮想デスクトップバッファを構成するデスクトップバッファ上のウィンドーとして取り扱うことであろう。その最も簡単な解決手段は、ハイパーバイザー１８０がそれらの仮想バッファから画素を複製する適切な順序を決定する方法を有するように、深さ値を各仮想デスクトップバッファに割り当てることである。ここでのこの最も簡単な解決手段は、いわゆるペインターアルゴリズムである。この場合、ウィンドーが深さ順にソートされ、最も遠い（下の）ウィンドーが最初に、最も近い（上の）ウィンドーが最後に構成される。どのパーティションでフリップが起きても、その度にこの構成がなされる。フリップ操作の影響がある場所を慎重に解決し、変更された画素だけを取り込むことにより、最適化は容易に達成され得る。
【００１８】
図２では、構成バッファ１５１がウィンドー２１０、２２０、２３０をホストする。この簡単な例では、ウィンドーはオーバーラップせず、レンダリングの順序は重要ではない。しかし実際は、オーバーラップされたウィンドーを見ることは一般的なことであり、レンダリングの順序はハイパーバイザーによって適切に維持され得る。そのウィンドーは、ホストコンピュータ上で稼動している仮想マシンに対応する。そして、そのウィンドーはマップされ、対応する仮想デスクトップバッファと関連付けられることが望ましい。例えば、ウィンドー２１０は仮想マシン１１０に対応し、仮想デスクトップバッファ１１１にマップされる。ウィンドー２２０は仮想マシン１２０に対応し、仮想デスクトップバッファ１２１にマップされる。同様に、ウィンドー２３０は仮想マシン１３０に対応し、仮想デスクトップバッファ１３１にマップされる。
【００１９】
この状況では、仮想デスクトップバッファ１１１、１２１、１３１、および構成バッファ１５１は、通常、異なるサーフェイスプロパティを有する。さらに重要なことに、各仮想マシンは、ホストシステムを完全には制御していないこと、およびそのディスプレイはフルスクリーンではなくホストシステム上で稼働中のウィンドーに表示され得ることを知らないため、各仮想デスクトップは構成バッファ１５１の原点から位置ずれを有するであろう。仮想デスクトップバッファのコンテンツを変換して、ホストディスプレイ１７１上のウィンドーされたロケーションに反映する必要がある。これを容易にするために、複製する必要がある場合、グラフィックスハードウェアは追加レジスタを提供して固定変換を定義する必要があるだろう。この変換ベクトルは、ハイパーバイザー１８０のような信頼性のあるソフトウェアからのみアクセス可能な、オフセット２７０などの信頼のあるロケーションにストアされなければならない。オフセットは、特定の仮想デスクトップバッファの座標とディスプレイ１７１の仮想マシンに割り当てられたウィンドーとの間の変換を備えることができる。複製した画素の宛先の座標を生成する時、グラフィックスハードウェアはこの位置ずれを考慮に入れなければならない。
【００２０】
さらに、バッファイネーブル１５３はまた、このセキュアな構成フューチャーをアクティブ化するか、またはディスエーブルするためにグラフィックスハードウェア１４０に導入される。セキュリティを確保するために、ソースと宛先のサーフェイスの両方のプロパティを定義するレジスタは、例えば、ハイパーバイザー１８０のような信頼されたソフトウェアプロセスによって制御することができる。しかしながら、これがどのように達成されるかは本発明の範囲外である。
【００２１】
図３は、本発明によるデスクトップバッファ構成の例示的な方法を示すブロック図である。複数の仮想マシンは、グラフィックスハードウェアとディスプレイを含むホストコンピュータ上で実行される。フルスクリーンの場合、ハイパーバイザー１８０は、ユーザーの入力に基づいてディスプレイを有する仮想マシンを決定する。ウィンドー化の場合、ハイパーバイザー１８０は、ユーザーの入力に基づいてレンダリングの順序を決定する。仮想マシンは、ディスプレイデータをそれぞれの仮想デスクトップバッファに書き込む。フリップが生じると、ハイパーバイザー１８０は、セキュア構成を起こす必要があるかどうかを判断する。ハイパーバイザーが仮想マシンの出力の上にユーザーインターフェースの追加を必要とする場合またはそのフリップが物理的ディスプレイの一部にのみ影響する場合に、構成が要求される。構成が要求されるケースでは、グラフィックスハードウェアの構成バッファがディスプレイに送られる構成されたイメージを作成するために使用することができる。
【００２２】
３１０では、複数の仮想マシンがホストコンピュータ上で稼動しているかもしれない。各仮想マシンは、ホストコンピュータのリソースをいくつか割り当てられるが、ホストコンピュータのリソースを完全に制御していると思っている。したがって、仮想マシンは、そのディスプレイデータはホストコンピュータのディスプレイに表示されていると思っているディスプレイデータを生成する。例えば、生成されたディスプレイデータは、ホストコンピュータによって仮想マシンに割り当てられた仮想テスクトップバッファに書き込まれる。
【００２３】
３２０では、ホストコンピュータのユーザーまたはアドミニストレーターは、制御する１の仮想マシンを選択したか、またはディスプレイデータをホストコンピュータのディスプレイに出力したかもしれない。アドミニストレーターは、例えば、選択した仮想マシン環境でアプリケーションを制御、または実行したいかもしれない。あるいは、ユーザーはいくつかの仮想マシンをホストコンピュータで同時に見たいかもしれない。このようなケースでは、例えば、仮想マシンと関連するデスクトップをホストコンピュータのスクリーン上の別々のウィンドーに表示できる。
【００２４】
３３０では、選択された仮想マシンを反映するように、セキュアプロセスまたはハイパーバイザーが、ホストコンピュータのグラフィックスハードウェアをセットする。例えば、グラフィックスハードウェアは、構成バッファおよびバッファイネーブルを備えることが望ましい。構成バッファは、特別なアクセスコントロールを有する専用化されたハードウェアバッファである。読み取りアクセスはディスプレイロジックに対して、書き込みアクセスはセキュア構成プロセスに対して、許可される。このアイディアは、例えば、悪意あるソフトウェアプロセスが、仮想デスクトップバッファのコンテンツをコピー、または妨害することを避けるためのアイディアである。
【００２５】
正しい仮想マシンバッファを構成バッファにコピーするようにグラフィックスハードウェアに指示するために、バッファイネーブルはセットされ、サーフェイスプロパティが、もしあれば、どの仮想デスクトップバッファがグラフィックスハードウェアによって構成バッファにコピーされるべきかを指定するように、ハイパーバイザーによって構成される。バッファをイネーブルする技術で知られている任意のシステム、方法、または技法を用いることができる。
【００２６】
３４０では、グラフィックスハードウェアは、１または複数の仮想デスクトップバッファのコンテンツを構成バッファにコピーすることができる。グラフィックスハードウェアは、既に構成バッファにあるコンテンツと正しくブレンドするために、ソースサーフェイスの座標変換ベクトルおよびアルファ値を支持することが望ましい。画素をブレンドする技術で知られている任意のシステム、方法または技法を用いることができる。
【００２７】
同一のディスプレイを共有している複数の仮想デスクトップバッファがある場合またはユーザーインターフェースのオーバーレイが小さなスクリーンエリアのみ占有する場合、座標を最初に変換をして、コンテンツが表示されているホストコンピュータのディスプレイにそのロケーションを反映することが望ましい。例えば、ユーザーは、ディスプレイ上の別々のデスクトップウィンドーで仮想マシンを見ており、仮想マシンはそれらが直接ディスプレイに表示されているかのようにディスプレイデータを出力するので、ディスプレイデータは、各仮想マシンそれぞれのウィンドーのロケーションおよび寸法を反映するように、手直しされまたは変換されることが望ましい。座標を変換するための技術で知られている任意のシステム、方法または技法を用いることができる。
【００２８】
３５０では、構成バッファのコンテンツはスキャンされ、物理的ディスプレイに合う信号に変換される。構成バッファのコンテンツを、当技術で知られている任意のシステム、方法または技法を用いて、スキャンし、ディスプレイできる。
【００２９】
図４は、本発明による例示的なデスクトップバッファ構成システムを示すブロック図である。このシステムは、いくつかの手段、デバイス、ソフトウェア、および／またはバッファ装置４０３、イネーブラー４０６、リトリバー４０７、トランスレーター４０９を含む、機能を実行するハードウェアを含む。
【００３０】
バッファ装置４０３は、ハードウェア構成バッファを備えている。前述したように、構成バッファは、仮想マシンホストコンピュータのディスプレイを現に制御している仮想マシンの仮想デスクトップバッファのコピーを受け取る。そして、構成バッファのコンテンツは、ホストコンピュータのグラフィックスハードウェアによりレンダーされ、ディスプレイに出力することができる。構成バッファはハードウェア中で実装されるので、悪意あるアプリケーションがバッファのコンテンツを取り込むリスクは大いに減少する。
【００３１】
ホストコンピュータがディスプレイの制御を複数の仮想マシンに例えば別々のウィンドーで提供することができる場合、バッファ装置４０３はさらに、仮想マシンに対応するセクションに分割することができる。そして、それらのセクションはそれらの仮想マシンの仮想デスクトップバッファを受け取ることができる。バッファ装置４０３は、例えばダブルバッファとして実装され得る。しかしながら、バッファの実装のための技術で知られている任意のシステム、方法または技法を用いることができる。
【００３２】
イネーブラー４０６は、どの仮想マシンの仮想デスクトップバッファが４０３にコピーされるかを制御することが望ましい。イネーブラー４０６は、セキュアレジスタ、またはグラフィックスハードウェアやハイパーバイザーのようなセキュアなソフトウェアプロセスにアクセスできる他のセキュアなメモリロケーションを備えることができる。ハイパーバイザーは、ホストディスプレイを１または複数の仮想マシンに提供するとき、どの仮想マシンが構成バッファにコピーされるべきかを指示するためにイネーブラー４０６をセットすることが望ましい。イネーブラー４０６は、ファームウェア、ハードウェア（シリコンの）、またはその両方の組み合わせで実装され得る。
【００３３】
リトリバー４０７は、ソース仮想デスクトップバッファを取り出し、アルファブレンドが要求された場合は、任意選択的にデスティネーション構成バッファを取り出し、正しいブレンディングを適用し、トランスレーター４０９を通じてそれをバッファ装置４０３に書き出すことが望ましい。リトリバー４０７は、ソースとしてどの仮想マシンが選えらばれるかを、イネーブラー４０６を参照することによって決定できる。リトリバー４０７は、例えばグラフィックスカードのようなハードウェア中で実装されることが望ましい。仮想デスクトップバッファへのアクセスは、リトリバー４０７を実装するハードウェアデバイスに制限され得るため、ハードウェア中でリトリバー４０７を実装することにより、ホストコンピュータ上で稼動する悪意あるソフトウェアアプリケーションから保護できる。リトリバー４０７は、ハードウェアデバイスによる画素データの取り出しや操作の技術で知られている任意のシステム、方法または技法を用いて実装できる。
【００３４】
トランスレーター４０９は、仮想マシンから取り出されたディスプレイデータを構成バッファのカラーフォーマットに変換する。それはまた、ソースと宛先のサーフェイス間の座標を変換する。仮想マシンは、ディスプレイを含むホストシステムを完全には制御していないことを知らないので、仮想マシンは、ディスプレイデータを、全体のディスプレイに対する座標で仮想マシンバッファに出力する。ホストシステムでは、これらの仮想マシンは、デスクトップ上の別々のウィンドー中に、それぞれディスプレイに対する自己の座標とともに表示できる。したがって、確実に各仮想マシンをホストコンピュータ上の正しいウィンドーに表示するためには、構成バッファのディスプレイデータは、バッファ装置４０３を通じて構成バッファにストアするより先に、トランスレーター４０９によって変換されることが望ましい。仮想マシンの変換データまたはオフセットは、例えばグラフィックスハードウェアにストアすることができる。ディスプレイデータを変換するための任意のシステム、方法または技法を用いることができる。
【００３５】
（例示的コンピュータ環境）
図５は、本発明を実装するのに適したコンピューティングシステム環境５００の例を示す。コンピューティングシステム環境５００は、適切なコンピューティング環境の一例にすぎず、本発明の一実施形態の使用範囲または機能に関するいかなる限定も意味するものではない。コンピューティング環境５００は、例示的動作環境５００中で示されているコンポーネントのいずれか１またはその組み合わせに依存するか、または必要としているとみなされるべきではない。
【００３６】
本発明は、その他多くの汎用または専用コンピューティングシステム環境若しくは構成で動作可能である。使用に適した他の周知のコンピューティングシステム、環境および／または構成としては、これらに制限されないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、テレビ設置用端末機器（セットトップボックス）、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ上のシステムやデバイスを含む分散コンピュータティング環境などがある。
【００３７】
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストで記述することができる。一般的に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、特定のタスクを実行するかまたは特定の抽象データ型を実装するデータ構造などを含む。また、本発明は、タスクが通信ネットワークまたは他のデータ伝送媒体を通してリンクされるリモート処理装置によって実行される分散コンピューティング環境で実行することができる。分散コンピューティング環境では、プログラムモジュールおよび他のデータを、メモリ記憶装置を含むローカルおよびリモートのいずれのコンピュータ記憶媒体に格納できる。
【００３８】
図５に関して、本発明を実装する典型的システムは、コンピュータ５１０の形式の汎用コンピューティングデバイスを含む。コンピュータ５１０のコンポーネントは、これらには制限されないが、処理装置５２０、システムメモリ５３０、およびシステムメモリを含むシステムの様々なコンポーネントを処理装置５２０に結合するシステムバス５２１を含むことができる。
【００３９】
一般的に、コンピュータ５１０は、様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータ５１０がアクセスでき利用可能などんな媒体でもよく、揮発性媒体と不揮発性媒体、リムーバブル媒体と非リムーバブル媒体の両方を含む。例示であって限定ではないが、コンピュータ読取可能媒体は、コンピュータ記憶媒体と通信媒体を備えることができる。コンピュータ記録媒体は、コンピュータ読取可能構造、データ構造、プログラムモジュール、または他のデータなど、情報の記録に用いられる方法、技術で実行される揮発性および不揮発性媒体、リムーバブルおよび非リムーバブルの媒体の両方を含む。コンピュータ記録媒体は、これに限定されないが、ＲＡＭ、ＲＯＭ，ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（Ｄｅｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、または望まれた要求をストアするのに用いることができ、コンピュータ５１０がアクセス可能な他のメディアを含む。
【００４０】
システムメモリ５３０は、ＲＯＭ５３１およびＲＡＭ５３２のような、揮発性および／または不揮発性のメモリ形式のコンピュータ記録媒体を含む。一般に、たとえば起動の際には、コンピュータ５１０中の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）５５３は、ＲＯＭ５３１にストアされる。
一般的にＲＡＭ５３２は、処理装置５２０から直ちにアクセス可能であり、および／または処理装置５２０が操作しているデータおよび／またはプログラムモジュールを含む。例であって限定ではないが、図５は、オペレーティングシステム５３４、アプリケーションプログラム５３５、他のプログラムモジュール５３６、プログラムデータ５３７を示す。
【００４１】
コンピュータ５１０はまた、他のリムーバブル／非リムーバブルコンピュータ記録媒体、揮発性／非揮発性コンピュータ記録媒体を含むことができる。例示であるが、図５は、非リムーバブル磁気媒体若しくは非揮発性磁気媒体から読込み、またはこれに書込むハードディスクドライブ５４０、リムーバブル磁気ディスク５５２若しくは非揮発性磁気ディスク５５２から読込み、またはこれに書込む磁気ディスク５５１、そしてリムーバブル光ディスク５５６若しくは非揮発性光ディスク５５６から読込み、またはこれに書込むＣＤ−ＲＯＭや他の光メディアのような光ディスク５５６を示す。例示的な操作環境で用いられる他のリムーバブル／非リムーバブルコンピュータ記録媒体、揮発性／非揮発性コンピュータ記録媒体は、これに限定はされないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ＲＡＭの固体素子、ＲＯＭの固体素子などを含む。一般的に、ハードディスクドライブ５４１は、インターフェース５４０のような非リムーバブルメモリインターフェースを通じてシステムバス５２０と接続されている。そして、磁気ディスクドライブ５５１および光ディスクドライブ５５５は、一般的に、インターフェース５５０のような非リムーバブルメモリインターフェースによってシステムバス５２０と接続されている。
【００４２】
ドライブおよびこれらに関連するコンピュータ記録媒体は、コンピュータ５１０用のコンピュータ読込可能構造、データ構造、プログラムモジュール、他のデータを記憶する。例えば、図５では、ハードディスクドライブ５４１はオペレーティングシステム５４４、アプリケーションプログラム５４５、他のプログラムモジュール５４６、プログラムデータ５４７をストアするものとして示されている。これらのコンポーネントが、オペレーティングシステム５３４、アプリケーションプログラム５３５、他のプログラムモジュール５３６、プログラムデータ５３７と同じでも異なってもよいことに留意されたい。ここでは、オペレーティングシステム５４４、アプリケーションプログラム５４５、他のプログラムモジュール５４６、およびプログラムデータ５４７は、それらが少なくとも異なるコピーであることを示すために、別の番号を付した。ユーザーは、キーボード５６２および一般にマウスやトラックボール、タッチパッドと呼ばれるポインティングデバイス５６１のような入力デバイスを通じて、コマンドおよび情報をコンピュータ５１０に入力することができる。他の入力デバイス（図中に示されていないもの）は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナーなどを含むことができる。これらおよび他の入力デバイスは、システムバスと結合されるユーザー入力インターフェース５６０を通じて、プロセッシングユニット５２０に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースおよびバス構造によって接続される。モニタ５９１または他の型のディスプレイデバイスもまた、ビデオインターフェース５９０のようなインターフェースを通じてシステムバス５２１と接続される。コンピュータは、モニタ以外にも、出力周辺インターフェース５９５を通じて接続されるスピーカ５９７、プリンタ５９６のような周辺出力デバイスを含むことができる。
【００４３】
コンピュータ５１０は、リモートコンピュータ５８０のような１または複数のリモートコンピュータへの論理接続を用いたネットワーク環境で動作する。リモートコンピュータ５８０は、パソコン、サーバー、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般的なネットワーク・ノードでもよく、図５で示されているのはメモリ記憶装置５８１だけであるが、一般的には、コンピュータ５１０に関連して説明した上述の要素の多くまたは全てを含む。図５で示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）５７１およびワイドエリアネットワーク（ＷＡＮ）５７３を含むが、他のネットワークをも含むことができる。このようなネットワーク環境は、オフィス、事業体規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００４４】
以上のように、本発明の例示的な実施形態を、様々なコンピューティングデバイスとの関係で説明したが、基本概念は、コンピュータデバイスまたはシステムに適用することができる。
【００４５】
本明細書に記載した様々な技術は、ハードウェア、ファームウェア、若しくはソフトウェア、または適切な場合にはこれら全ての組合せで実装することができる。したがって、本発明の方法および装置、またはそのいくつかの態様または部分は、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または他の機械読取可能は記録媒体のような有形媒体に具現化され、それがコンピュータなどの機械にロードされて実行されるときその機械が本発明を実施するための装置となる、プログラムコード（すなわち、命令）の形をとることができる。プログラム可能なコンピュータでプログラムコードを実行する場合は、コンピューティングデバイスは一般的に、プロセッサ、プロセッサで読取可能な記録媒体（揮発性および非揮発性メモリおよび／または記録要素を含む）、少なくとも１の入力デバイス、および少なくとも１の出力デバイスを含むだろう。望まれれば、この（１または複数の）プログラムをアセンブリ語または機械語で実装することができる。いずれのケースでも、言語はコンパイラ型またはインタープリタ型言語でもよく、またハードウェアの実装と組み合わせることができる。
【００４６】
本発明の方法および装置はまた、電気ワイヤリングまたはケーブリング、光ファイバ、あるいは他の任意の伝送形式など、何らかの伝送媒体を介して伝送されるプログラムコードの形で具現化することができ、プログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダなどの機械によって受け取られてロードおよび実行されると、この機械は本発明を実施するための装置になる。汎用プロセッサ上で実施されると、プログラムコードは、本発明の機能を実行するように動作する独特の装置を提供するプロセッサと結合する。さらに、本発明に用いられる記憶技術は、常にハードウェアとソフトウェアの組合せとすることができる。
【００４７】
本発明を様々な図に示した好ましい実施形態に関して説明したが、本発明から逸脱することなく、本発明の同様の機能を実行するために他の類似の実施形態を使用してよく、あるいは説明した実施形態に改変または追加を行ってもよいことが理解されるだろう。それゆえ、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲と一致した広さおよび範囲の中で解釈すべきである。
【図面の簡単な説明】
【００４８】
【図１】本発明による例示的なデスクトップバッファ構成ホストコンピュータを示すブロック図である。
【図２】本発明による例示的なデスクトップバッファ構成システムを示すブロック図である。
【図３】本発明によるデスクトップバッファ構成の例示的な方法を示すブロック図である。
【図４】本発明による他の例示的なデスクトップバッファ構成システムを示すブロック図である。
【図５】本発明の一態様として実装できる例示的なコンピューティング環境を表すブロック図である。
【図１】
2009503647.tif 000003
【図２】
2009503647.tif 000004
【図３】
2009503647.tif 000005
【図４】
2009503647.tif 000006
【図５】
2009503647.tif 000007
【国際調査報告】
2009503647.tif 000008