(57)【要約】  特に、ソースコンピュータが宛先コンピュータのディスプレイ上で画像データを表示できるようにする技術が本明細書において詳述される。該技術への１つの手法において、ネットワークを通じてモニタを共有する方法が説明される。この方法は、ソースコンピュータのディスプレイドライバからグラフィック情報を取り出すことを含む。このグラフィック情報は圧縮され、ソースコンピュータから宛先コンピュータに送信される。次に、圧縮グラフィック情報は、解凍され、宛先コンピュータに付属する宛先ディスプレイで表示される。
2010529567.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを通じてモニタを共有する方法であって、
ソースコンピュータのディスプレイドライバからグラフィック情報を取り出すステップと、
前記グラフィック情報を圧縮して、圧縮グラフィック情報を生成するステップと、
前記ソースコンピュータから宛先コンピュータに前記圧縮グラフィック情報を送信するステップと、
前記圧縮グラフィック情報を解凍して、解凍グラフィック情報を生成するステップと、
前記宛先コンピュータに接続されている宛先ディスプレイに前記解凍グラフィック情報を表示するステップと、
を含む方法。
【請求項２】
前記送信するステップの前に前記グラフィック情報を暗号化するステップを更に含むことを特徴とする請求項１記載の方法。
【請求項３】
前記ディスプレイドライバは、仮想ディスプレイドライバを含むことを特徴とする請求項１記載の方法。
【請求項４】
前記ディスプレイドライバはミラーディスプレイドライバを含むことを特徴とする請求項１記載の方法。
【請求項５】
前記グラフィック情報は、前記ソースコンピュータに接続されているディスプレイに表示された画像を再生する複製画像データを含むことを特徴とする請求項１記載の方法。
【請求項６】
前記グラフィック情報は、拡張画像データを含むことを特徴とする請求項１記載の方法。
【請求項７】
前記グラフィック情報は、画像データストリームを含むことを特徴とする請求項１記載の方法。
【請求項８】
前記画像データストリームは、前の画像フレームと現在の画像フレームとの間の変更を含むことを特徴とする請求項７記載の方法。
【請求項９】
ソースコンピュータから宛先コンピュータにグラフィックデータを送信するシステムであって、
前記ソースコンピュータで動作し、前記ソースコンピュータを制御するオペレーティングシステムと、
前記オペレーティングシステム上で動作するユーザアプリケーションと、
前記オペレーティングシステムによって制御されて、情報を送信するネットワークインタフェースと、
を含み、
前記ユーザアプリケーションは、デバイスドライバからグラフィック情報を取り出し、前記グラフィック情報を圧縮し、前記ネットワークインタフェースを介して前記宛先コンピュータに圧縮グラフィック情報を送信することを特徴とするシステム。
【請求項１０】
前記ユーザアプリケーションは、前記ソースコンピュータと前記宛先コンピュータとの間の前記ネットワークインタフェースの帯域幅を決定することを特徴とする請求項９記載のシステム。
【請求項１１】
前記ユーザアプリケーションは、前記ソースコンピュータと前記宛先コンピュータとの間の前記帯域幅に基づいて複数の圧縮技術から１つを選択することを特徴とする請求項１０記載のシステム。
【請求項１２】
前記ユーザアプリケーションは、前記グラフィック情報を暗号化することを特徴とする請求項９記載のシステム。
【請求項１３】
前記デバイスドライバは、前記オペレーティングシステムのカーネル空間内で動作する仮想ディスプレイドライバを含むことを特徴とする請求項９記載のシステム。
【請求項１４】
前記デバイスドライバは、前記オペレーティングシステムのカーネル空間内で動作するミラーディスプレイドライバを含むことを特徴とする請求項９記載のシステム。
【請求項１５】
前記ユーザアプリケーションは、メモリアドレスを含む要求を前記デバイスドライバへ送信して前記メモリアドレスから前記グラフィック情報を読み出すことによって、前記デバイスドライバから前記グラフィック情報を取り出すことを特徴とする請求項９記載のシステム。
【請求項１６】
前記デバイスドライバは、前記グラフィック情報を前記メモリアドレスに直接書き込むことを特徴とする請求項１５記載のシステム。
【請求項１７】
以下のステップを実行するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
前記以下のステップは、
ディスプレイドライバにグラフィックデータを要求するステップと、
前記グラフィックデータを受信するステップと、
前記グラフィックデータを圧縮して圧縮グラフィックデータを生成するステップと、
前記圧縮グラフィックデータを送信するステップと、
を含むコンピュータ可読媒体。
【請求項１８】
前記グラフィックデータを暗号化するステップを前記コンピュータ実行可能命令が更に含むことを特徴とする請求項１７記載のコンピュータ可読媒体。
【請求項１９】
前記圧縮グラフィックデータを受信するステップと、
前記圧縮グラフィックデータを解凍して解凍グラフィックデータを生成するステップと、
前記解凍したグラフィックデータを宛先ディスプレイに出力するステップと、
を前記コンピュータ実行可能命令が更に含むことを特徴とする請求項１７記載のコンピュータ可読媒体。
【請求項２０】
前記圧縮するステップは、ランレングス符号化（ＲＬＣ）圧縮技術を前記グラフィックデータに用いるステップを含むことを特徴とする請求項１７記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータネットワーク内で、複数のコンピュータが様々なリソースを共有することができれば役立つことが多い。例えば、コンピュータは、ネットワーク上の他のシステムが該コンピュータの記憶スペースの一部を利用できるようにしてもよいしまたは、あるコンピュータに接続されたプリンタを同様に他のコンピュータが使用できてもよい。このリソースを共有する能力は、複数の冗長システムをそれほど必要としないという点において、ネットワークに付随するコストを下げる。更に、リソースの共同使用を許容することにより、共同の取り組みも改善することができる。
【０００２】
通常、ネットワークを通じてシステムリソースを共有する手法は、２つの道筋のうちの１つをたどる。１つの手法は、ハードウェアベースの解決法を用いることである。該解決法において、リソース自体が、複数のコンピュータに該リソースを利用できるようにする。このハードウェア指向の手法の例は、ネットワーク化されたプリンタ及びネットワーク接続された記憶装置を含んでおり、ハードウェアの専用の部品は、ネットワークを介して複数のシステムがアクセスできるように特に構成されている。もう１つの手法は、ソフトウェアベースの解決法を用いることである。該解決法において、ネットワークのホストシステムの構成を介して、専用リソースがそのネットワーク上の他のシステムで利用される。例えば、デスクトップコンピュータのハードドライブの一部を共有する能力、または他のコンピュータがホストシステムに直接接続されているプリンタにアクセスできるようにする能力といった上記の例の類似物は、このソフトウェア指向の手法内にある。
【発明の概要】
【０００３】
特に、ソースコンピュータが宛先コンピュータのディスプレイに画像データを表示できるようにする技術が本明細書において詳述される。該技術への１つの手法において、ネットワークを通じてモニタを共有する方法が説明される。この方法は、ソースコンピュータのディスプレイドライバからグラフィック情報を取り出すことを含む。このグラフィック情報は圧縮されており、ソースコンピュータから宛先コンピュータへ送信される。次に、圧縮されたグラフィック情報は解凍され、宛先コンピュータに接続されている宛先ディスプレイに表示される。
【０００４】
該技術への別の手法において、ソースコンピュータから宛先コンピュータにグラフィックデータを送信するシステムが説明される。該システムは、ソースコンピュータで動作するオペレーティングシステムを含み、該オペレーティングシステムはソースコンピュータを制御する。オペレーティングシステムのもとで動作するユーザアプリケーションは、デバイスドライバからグラフィック情報を取り出す。ユーザアプリケーションはまた、該グラフィック情報を圧縮し、ネットワークインタフェースを介して宛先コンピュータへ該圧縮グラフィック情報を送信する。
【０００５】
該技術への別の手法が説明される。該別の手法において、グラフィックデータは、ディスプレイドライバに要求される。該グラフィックデータは、受信されて圧縮される。次に、圧縮グラフィックデータは送信される。
【０００６】
この概要は、詳細な説明において更に以下で説明される単純化した形式の概念の選択を導くために提供される。この概要は、請求された本発明の重要な特徴または基本的特徴を識別することを意図していないし、請求された本発明の範囲を限定するために用いられることも意図していない。
【０００７】
本明細書に組み込まれておりかつ本明細書の一部をなしている添付の図面は、実施形態を説明し、本明細書とともに、請求された本発明の原理を説明するのに役立つ。
【図面の簡単な説明】
【０００８】
【図１】実施形態が実施される例示的なコンピュータシステムのブロック図である。
【図２】一実施形態による、ネットワークを通じてモニタを共有する方法のフローチャートである。
【図３】一実施形態によるコンピュータネットワークの図である。
【図４】一実施形態によるコンピュータシステムのプログラムレイヤを表す図である。
【図５】一実施形態による、ソースコンピュータと宛先コンピュータとの間のインタラクションの図である。
【図６Ａ】一実施形態による、グラフィックデータを送信する方法のフローチャートである。
【図６Ｂ】一実施形態による、ソースコンピュータから受信したグラフィックデータを表示する方法のフローチャートである。
【発明を実施するための形態】
【０００９】
ここでいくつかの実施形態が詳細に述べられる。本発明は代替実施形態と関連して説明されるが、請求された本発明をこれらの実施形態に限定することは意図されていないということが理解されるだろう。むしろ、請求された本発明は、変更態様、変化形、及び均等物に及ぶことが意図されており、それらは、添付の請求項によって画定される請求された本発明の精神及び範囲に含まれ得る。
【００１０】
更に、以下の詳細な説明において、数多くの特定の詳細は、請求された本発明に関する完全な理解を与えるために記述される。しかしながら、実施形態は、これらの特定の詳細を用いずにまたはその均等物を用いて実施されてもよいと当業者は認めるだろう。他の例において、公知の方法、手順、コンポーネント、及び回路は、本発明の態様及び特徴を不必要に曖昧にしないように詳細には説明されていない。
【００１１】
続く詳細な説明の一部は、方法の観点から示されかつ検討される。そのステップ及び順番は、この方法のオペレーションを説明している本明細書の図（例えば、図３）において開示されるが、かかるステップ及び順番は例示的なものである。かかるステップ及び順序付けは例示的である。実施形態は、本明細書の図のフローチャートにおいてかつ本明細書において図示されて説明されている以外の順序で示されている様々な他のステップまたは該ステップの変化形を実行するのに適している。
【００１２】
詳細な説明のいくつかの部分は、手順、ステップ、論理ブロック、処理、及びコンピュータメモリで実行され得るデータビットでのオペレーションの他の記号表現に関して示される。これらの説明及び表現は、データ処理技術において当業者によって用いられて他の当業者に自分たちの作業の本質を最も効果的に伝える手段である。手順、コンピュータ実行ステップ、論理ブロック、プロセス等は、本明細書でかつ通常、所望の結果に至る自己矛盾のない一連のステップまたは命令であると考えられる。ステップは、物理量の物理的処置を必要とするステップである。必ずではないが、通常、これらの量は、コンピュータシステムにおいて記憶され、送信され、組み合わされ、比較され、かつそうでなければ操作され得る電気的信号または磁気的信号の形式を取る。これらの信号を、ビット、値、要素、シンボル、キャラクタ、項、数等と呼ぶことは、主として一般的に使われているという理由で、時には便利であるとわかる。
【００１３】
しかしながら、これらの用語及び類似の用語の全ては、適当な物理量に付随することになっており、これらの量に用いられる単に便利なラベルであると念頭に置いておかなければならない。特に述べられているかまたは以下の検討から明らかである場合を除いて、全体を通して、「アクセスする」、「書き込む」、「含む」、「記憶する」、「送信する」、「詳しく検討する」、「付随する」、「識別する」等の用語を利用している検討は、コンピュータシステムまたは同様の電子コンピュータデバイスの動作及びプロセスを参照しており、それは、コンピュータシステムのレジスタ及びメモリ内に物理（電子）量として表されるデータを、コンピュータシステムのメモリもしくはレジスタまたは他のかかる情報記憶装置、送信デバイスもしくは表示デバイス内に物理量として同様に表される他のデータへと操作して変換する。
【００１４】
コンピュータシステム１１２などのコンピュータデバイスは、通常、少なくともいくつかの形式のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータデバイスがアクセスできる利用可能な媒体であってもよい。一例であって、限定ではないが、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含む。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のためのあらゆる方法または技術で実施される揮発性、不揮発性、着脱自在、固定式の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を保存するために用いることができかつコンピュータデバイスがアクセスできるあらゆる他の媒体を含むがこれらに限定されない。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の搬送メカニズムなどの変調データ信号内の他のデータを具体化し、あらゆる情報配信媒体を含む。用語「変調データ信号」は、信号内の情報をコード化するような方法で設定されるかまたは変更されるその特徴のうちの１つまたは複数を有する信号を意味する。一例であって限定ではないが、通信媒体は、有線ネットワークもしくは直接配線接続、及び音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体を含む。上記のうちのいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００１５】
いくつかの実施形態は、１つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令との一般的な関連で説明され得る。通常、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれ、それらは、特定のタスクを実行し、特定の抽象データ型を実施する。通常、プログラムモジュールの機能は、様々な実施形態において所望されるように組み合わされるかまたは分散されてもよい。
【００１６】
基本コンピュータデバイス
ここで図１を参照すると、例示的なコンピュータシステム１１２のブロック図が示されている。本明細書で説明されるコンピュータシステム１１２は、実施形態が有利に実施され得るオペレーションプラットフォームの例示的な構成を示すということが認められる。それにもかかわらず、異なった構成を有する他のコンピュータが、本発明の範囲内で本発明のコンピュータシステム１１２の代わりに用いられてもよい。即ち、コンピュータシステム１１２は、図１と関連して説明された要素以外の要素を含むことができる。更に、実施形態は、コンピュータシステム１１２のようなコンピュータシステムはもちろん、実施形態を可能にするあらゆるシステムで実施されてもよい。実施形態を、多くの異なるタイプのコンピュータシステム１１２で実施できることが理解される。デスクトップコンピュータ、ワークステーション、サーバ、メディアサーバ、ラップトップ、ゲーム用コンソール、デジタルテレビ、ＰＶＲ、及び携帯情報端末（ＰＤＡ）、並びに無線電話、メディアセンタコンピュータ、デジタルビデオレコーダ、デジタルカメラ、及びデジタル音声再生デバイスまたは音声記録デバイスなどの、計算機能及びデータ記憶機能を有する他の電子デバイスがコンピュータシステム１１２の例であるがこれらに限定されない。
【００１７】
図１を参照すると、実施形態を実施する例示的なシステムは、コンピュータシステム１１２などの汎用コンピュータシステム環境を含む。その最も基本的な構成において、コンピュータシステム１１２は、通常、少なくとも１つの処理装置１０１及びメモリ、並びに情報を通信するためのアドレス／データバス１００を含む。コンピュータシステム環境の正確な構成及びタイプにより、メモリは、揮発性（ＲＡＭ１０２など）、不揮発性（ＲＯ
Ｍ１０３、フラッシュメモリ、その他など）、または該２つのもののうちのいくつかの組み合わせであってもよい。コンピュータシステム１１２は、また、ビデオケーブル１１１などで接続されている付属のディスプレイデバイス１１０に情報を表示することによって、コンピュータユーザに情報を示す任意のグラフィックサブシステム１０５を含んでいてもよい。更に、コンピュータシステム１１２はまた、追加の特徴／機能を有することができる。例えば、コンピュータシステム１１２はまた、追加の記憶装置（着脱自在かつ／または固定式）を含み、該追加の記憶装置には磁気ディスクもしくは磁気テープまたは光学ディスクもしくは光学テープが含まれるが限定ではない。かかる追加の記憶装置は、データ記憶デバイス１０４で図１に示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の保存のためのあらゆる方法または技術で実施される、揮発性及び不揮発性、着脱自在及び固定式の媒体を含む。
【００１８】
コンピュータシステム１１２は、また、任意の英数字入力デバイス１０６、任意のカーソル制御デバイス、または任意のカーソル指示デバイス１０７、並びに１つまたは複数の信号通信インタフェース（例えば、ネットワークインタフェースカードなどの入力／出力デバイス）１０８を含む。任意の英数字入力デバイス１０６は、情報選択及び命令選択を中央処理装置１０１に伝えることができる。任意のカーソルデバイスまたは指示デバイス１０７は、ユーザ入力情報選択及びユーザ入力命令選択を中央処理装置１０１に伝えるためのバス１００に接続されている。バス１００に同様に接続されている信号通信インタフェース（入力／出力デバイス）１０８は、シリアルポートであってもよい。通信インタフェース１０８は、また、無線通信メカニズムを含むことができる。通信インタフェース１０８を用いて、コンピュータシステム１１２は、インターネットまたはイントラネット（例えば、ローカルエリアネットワーク）などの通信ネットワークを介して他のコンピュータシステムに通信可能に接続され得るかまたは、データ（例えば、デジタルテレビ信号）を受信することができる。
【００１９】
ソフトウェアモニタ共有
ネットワーク内の多くのデバイスは共有され得るが、ハードウェア手法またはソフトウェア手法のいずれによっても、モニタ及び他のディスプレイはどちらかといえば専用デバイスである。いくつかの明らかなハードウェアの例外が、この一般規則に存在する。例えば、単一のコンピュータは、複数のハードウェアディスプレイアダプタ（または、複数のハードウェアヘッドを有する単一のディスプレイアダプタ）の使用を介して、複数のモニタを使用することができる。かかるシナリオにおいて、その単一のコンピュータは、複数の専用モニタを有しており、「拡大」図または「全域」図として説明される手法である、複数の専用モニタの全てにわたって異なった情報を表示することができるか、または、「コピー作成」と説明される手法である、複数の専用モニタのうちの１つに現れる情報を別のものに複製することができる。単一のモニタを共有する複数のコンピュータのために、いくつかの種類のハードウェアスイッチが利用される。かかるスイッチは、通常、２つの形式のうちの１つに現れる。即ち、キーボード、ビデオ、マウス（ＫＶＭ）スイッチなどの専用かつ別個のデバイス、またはいくつかの異なるソースから来るモニタへの入力を可能にする選択スイッチなどのモニタ自体に統合された他のもののいずれかである。
【００２０】
以下の実施形態において、１つのコンピュータシステムがディスプレイ情報を別のシステムの付属モニタに出力できるようにする手法が、ソフトウェアについて説明される。これらの実施形態は、様々な範囲の可能な利点を提供する。例えば、発信コンピュータまたはソースコンピュータは、その現在のディスプレイ情報を複製し、受信コンピュータまたは宛先コンピュータに該ディスプレイ情報を送信する。このように、例えば、共同の取り組みを、大いに支援することができる。あるいは、いくつかの実施形態において、ソースコンピュータは、追加のディスプレイ領域を提供するために、宛先コンピュータのモニタを使用することができる。いくつかの実施形態において、宛先コンピュータのモニタが、例えば宛先コンピュータの「モニタ」が表示に適したプロジェクションシステムであるといったより望ましいいくつかの方法である場合、ソースコンピュータが宛先コンピュータのモニタに情報を表示することは役立ち得る。
【００２１】
ネットワークを通じたモニタの共有
ここで図２を参照すると、ネットワークを通じてモニタを共有する方法のフローチャート２００が、一実施形態に従って示される。特定のステップがフローチャート２００において開示されているが、かかるステップは例である。即ち、本発明の実施形態は、フローチャート２００に示した様々な他の（付加的な）ステップまたは該ステップの変化形を実行するのによく適している。フローチャート２００のステップは示されている順番と異なる順番で実行されてもよく、フローチャート２００のステップの全てが実行されなくてもよいということが認められる。
【００２２】
ここでステップ２１０を参照すると、ディスプレイ情報が、ディスプレイドライバから取り出される。より詳細に以下に説明されるように、このディスプレイ情報の性質は、異なる実施形態を通じて変化することができる。更に、ディスプレイドライバは、異なる実施形態を通じて変化することができる。示した実施形態において、ソースコンピュータが宛先コンピュータのモニタに情報を表示するために、グラフィック情報、またはフレームデータが、ソースコンピュータによって最初に生成される。他の実施形態において、レンダリングされていない情報が、宛先コンピュータに送信され、宛先コンピュータはフレームデータを構成する。
【００２３】
ステップ２２０を参照すると、取り出された情報は圧縮される。異なる実施形態において、異なる圧縮手法が利用される。いくつかの実施形態において、利用する圧縮手法の選択は、様々な要因によって決まる。１つの実施形態において、例えば、ソースコンピュータと宛先コンピュータとの間のネットワーク接続によってこの方法で圧縮されたデータを送信する適当な帯域幅が提供される場合、例えば、ランレングス符号化（ＲＬＣ）などの可逆圧縮技術が利用される。いくつかの実施形態において、可逆圧縮を、ソースコンピュータと宛先コンピュータとの間の無線接続などの低帯域幅状況で利用することができる。１つのかかる実施形態において、いくつかの可逆圧縮技術を組み合わせて、デフレートされた圧縮がその後に続くＲＬＣなどのディスプレイ情報を更に圧縮してもよい。別の実施形態において、付加逆縮技術が、宛先コンピュータ内のソースコンピュータの間の送信のための帯域幅要求を減らすために利用される。
【００２４】
ステップ２３０を参照すると、圧縮ディスプレイ情報は、ソースコンピュータから宛先コンピュータに送信される。いくつかの実施形態において、この送信は、ストリーミング手法を利用して実施される。ストリーミング手法において、圧縮ディスプレイ情報を作るパケットは、宛先コンピュータ内のソースコンピュータの間のネットワーク接続を介して連続して送信される。かかる実施形態において、宛先コンピュータのモニタは、アクティビティが生じるときに、ソースコンピュータの現在のアクティビティを表示するために用いられ得る。
【００２５】
１つのかかる実施形態において、コンピュータフレームデータよりはむしろ、ソースコンピュータの「フレーム」同士の間の差が送信される。この実施形態において、ネットワーク帯域幅に対する要求は減少される。即ち、全フレームのためのディスプレイ画像全体を再送するよりは、より少ない情報がディスプレイに生じる変更に従うために必要とされる。
【００２６】
ステップ２４０を参照すると、圧縮ディスプレイ情報は、宛先コンピュータによって解凍される。ステップ２２０に関して、利用される圧縮手法は、異なる実施形態を通じて変化することができる。
【００２７】
ステップ２５０を参照すると、解凍されたグラフィックデータは、宛先コンピュータディスプレイに出力される。
【００２８】
以下の実施形態において、上記の方法の例示的な実施例がより詳細に検討される。
【００２９】
コンピュータネットワーク
ここで図３を参照すると、コンピュータネットワーク３９０がは、一実施形態に従って示されている。コンピュータネットワーク３９０は、特定の列挙された特徴及び要素として示されているが、実施形態は、異なった、より少ない、または付加的な要素、構成、及び／または特徴を含むアプリケーションによく適している。
【００３０】
コンピュータネットワーク３９０は、ソースコンピュータ３００及び宛先コンピュータ３５０を含むように示されており、ソースコンピュータ３００及び宛先コンピュータ３５０は、ネットワーク３９９で通信可能に接続されている。ソースコンピュータ３００は、プロセッサ３０１、メモリ３０２、データ記憶デバイス３０４、グラフィックアダプタ３０５、及びネットワークインタフェースカード（ＮＩＣ）３０８を含む。ソースモニタ３１０は、グラフィックアダプタ３０５を介してソースコンピュータに接続される。ソースコンピュータ３００は、ＮＩＣ３０８を介してネットワーク３９９に接続される。示された実施形態において、宛先コンピュータ３５０は、同様に、プロセッサ３５１、メモリ３５２、データ記憶デバイス３５４、グラフィックアダプタ３５５、及びネットワークインタフェースカード３５８を含む。宛先モニタ３６０は、グラフィックアダプタ３５５を介して宛先コンピュータ３５５に接続される。宛先コンピュータ３５０は、ＮＩＣ３５８を介してネットワーク３９９に接続される。
【００３１】
表示モード
異なる実施形態において、異なるタイプのディスプレイモードがサポートされる。例えば、一実施形態において、ソースコンピュータ及び宛先コンピュータは、ソースコンピュータのディスプレイが宛先コンピュータのディスプレイに複製または「コピー作成」できるようにする方法で構成される。例えば、図３を参照すると、ソースモニタ３１０に現れる絵は、宛先モニタ３６０にも現れ得る。
【００３２】
別の実施形態において、宛先ディスプレイは、ソースディスプレイの拡張部分として機能することができる。例えば、ソースモニタ３１０に収まるには大きすぎる画像は、ソースモニタ３１０及び宛先モニタ３６０の両方にわたって「スパニングする」ことができ、どちらのモニタも単独で画像を表示するほど十分に大きくない状況にあっても、画像が十分に表示されるようにする。
【００３３】
別の実施形態において、宛先ディスプレイに送信されるグラフィックデータは、宛先ディスプレイが表示できるより大きくてもよい。例えば、宛先モニタ３６０の解像度が、１２８０×１０２４ピクセルに限定されており、ソースコンピュータ３００から送信されるグラフィックデータが、１６００×１２００ピクセルである場合、グラフィックデータの全てを同時に宛先モニタ３６０に完全に表示できるわけではない。このシナリオは、コピー作成シナリオ、スパニングシナリオ、またはあらゆる他のディスプレイシナリオにおいて生じる。この実施形態において、宛先コンピュータで実行中でかつ圧縮グラフィック情報を受信するユーザアプリケーションなどの宛先コンピュータは、画像をパンできるよう構成されており、宛先ディスプレイにそのとき現れていないグラフィック情報の一部を、例えばキーボードまたはマウスを用いてコンピュータとインタラクションしてスクリーン上の画像を移動することによって表示することができる。
【００３４】
カーネル空間及びユーザ空間
いくつかの実施形態において、フローチャート２００内の上記のステップのうちのいくつかまたはステップのうちの一部は、ソースコンピュータ及び／または宛先コンピュータのオペレーティングシステムの異なった部分に常駐するソフトウェアによって実施される。例えば、一実施形態において、オペレーティングシステムのカーネル空間部分のソースコンピュータに常駐する仮想デバイスドライバは、グラフィックデータを生成するために用いられ、一方オペレーティングシステムのユーザ空間部分に常駐するアプリケーションは、グラフィックデータの圧縮及び送信に関与する。
【００３５】
ここで図４を参照すると、コンピュータシステム４００のプログラムレイヤの表示が、一実施形態に従って示されている。図４はある特定の列挙された特徴及び要素を示しているが、実施形態は、付加的な、より少ない、または異なった特徴、配置、または要素を有するアプリケーションによく適することが理解される。
【００３６】
図４に示したように、システム４００を、抽象性を増していくレイヤを構成するように描くことができる。ハードウェアレイヤ４３０として本明細書に示された最下層は、実際の電子コンポーネントから成っていて、該電子コンポーネントは、例えば、プロセッサ３０１、メモリ３０２、またはグラフィックアダプタ３０５などのコンピュータシステムを構成する。
【００３７】
ハードウェア層４３０から１つ上のレイヤに移動すると、図４は、カーネル空間４２０を示す。カーネル空間４２０とハードウェアレイヤ４３０との間のインタラクションは、いくつかの実施形態において、例えば、デバイスドライバ４２５として本明細書に示されたデバイスドライバなどの、ソフトウェアの１つまたは複数の特定の部分のオペレーションによって実現される。更に、いくつかの実施形態において、たとえハードウェアがコンピュータシステム４００内になくても、デバイスドライバがハードウェアの機能を真似るために用いられてもよい。例えば、以下により詳細に説明されるように、仮想デバイスドライバを、ソースコンピュータシステムにないグラフィックアダプタの機能をシミュレートするために用いることができる。
【００３８】
ユーザ空間４１０として本明細書に示されている最上層は、インタフェース４１５を用いてカーネル空間４２０とインタラクションする。インタフェース４１５は、ユーザ空間４１０で実行中のアプリケーションにカーネルを介して利用可能な機能及びサービスを見えるようにする。
【００３９】
ソースコンピュータから宛先コンピュータへのグラフィックデータの送信
いくつかの実施形態において、フローチャート２００の方法は、ソフトウェアのいくつかの部分の動作を介して実施される。１つのかかる実施形態において、ソースコンピュータは、例えばユーザ空間４１０で実行中のソースユーザアプリケーション及び例えばカーネル空間４２０に常駐する専門のデバイスドライバを含む。一方、宛先コンピュータは、宛先ユーザアプリケーションを含む。かかる実施形態において、専用のデバイスドライバは、宛先ディスプレイに表示されることになっているグラフィック情報を提供する。グラフィック情報は、ソースユーザアプリケーションによって取り込まれ、圧縮され、かつ宛先コンピュータに送信される。そこで、宛先ユーザアプリケーションは、グラフィック情報を解凍して、宛先モニタに表示されるようにする。
【００４０】
ここで図５を参照すると、コンピュータネットワーク５９０が、一実施形態に従って示されている。図５は、ある特定の列挙された特徴及び要素を示すが、付加的な、より少ない、または異なった特徴、配置、または要素を有するアプリケーションによく適している。
【００４１】
図５は、ソースコンピュータ５００と宛先コンピュータ５５０との間のインタラクションを示す。ソースコンピュータ５００は、オペレーティングシステム５０１を含むように本明細書に示されている。オペレーティングシステム５０１は、ユーザ空間５１０及びカーネル空間５２０に再分割される。ソースコンピュータ５００は、また、ディスプレイアダプタ５０５を含むように示されている。ディスプレイアダプタ５０５は、ソースモニタ５３０に接続されている。ソースコンピュータ５００はまた、ネットワークアダプタ５０８を含む。ネットワークアダプタ５０８は、ネットワーク接続５９９を用いて、ソースコンピュータ５００を宛先コンピュータ５５０に通信可能に接続している。
【００４２】
示された実施形態において、カーネル空間５２０は、２つのデバイスドライバを含む。即ち、ビデオドライバ５２３及び専用のデバイスドライバ５２５である。示したように、ビデオドライバ５２３は、ソースコンピュータ５００がソースモニタ５３０に情報を表示できるようにする。一方、専用のデバイスドライバ５２５は、宛先モニタ５８０に情報を表示するために用いられる。専用のデバイスドライバ５２５の動作及び機能は、異なる実施形態を通じて変化してもよい。一実施形態において、例えば、専用のデバイスドライバ５２５は、「ミラー」デバイスドライバである。この実施形態において、専用のデバイスドライバ５２５は、ビデオドライバ５２３によって生成されてソースモニタ５３０に表示されるグラフィックデータを複製する（「ミラーリングする」または「コピーを作成する」）ために用いられる。別の実施形態において、専用のデバイスドライバ５２５は、仮想デバイスドライバである。かかる実施形態において、専用のデバイスドライバ５２５は、例えば、拡張モードまたは「スパニング」モードとして、ビデオドライバ５２３によって生成されるグラフィックデータよりはむしろ、異なるグラフィックデータを生成するために用いられる。
【００４３】
１つの特定の実施形態において、仮想デバイスドライバは、ソースコンピュータのオペレーティングシステムを介して利用可能な一般的なグラフィックデバイスインタフェース（ＧＤＩ）機能を用いて実施される。通常、ディスプレイデバイスドライバは、画像レンダリング要求の標準セットに付随する機能などの特定の予め定められた描画機能を実施することができる。一実施形態において、オペレーティングシステムは、この描画機能の標準セットのための一般的な実施を提供する。仮想デバイスドライバは、これらのＧＤＩ機能を呼び出して画像データを生成する。
【００４４】
示した実施形態において、ユーザアプリケーション５１５は、ユーザ空間５１０において、コンピュータ５００で実行中である。この実施形態において、アプリケーション５１５は、３つの機能を行う。第１に、ユーザアプリケーション５１５は、専用のデバイスドライバ５２５にアクセスし、宛先ディスプレイに表示されることになっているグラフィックデータを取り出す。第２に、ユーザアプリケーションは、グラフィックデータを宛先コンピュータに送信するのに必要なあらゆる圧縮または暗号化を行う。いくつかの実施形態において、例えば、ユーザアプリケーション５１５によって、ソースコンピュータ５００と宛先コンピュータ５５０との間で利用可能な帯域幅に適した圧縮技術が選択されるいくつかの実施形態において、ユーザアプリケーション５１５は、利用可能な帯域幅を検出するモジュールを含む。第３に、示した実施形態において、ユーザアプリケーション５１５は、（圧縮された）グラフィックデータが宛先コンピュータに送信されるようにする。
【００４５】
宛先コンピュータ５５０は、オペレーティングシステム５５１を含むように示されており、オペレーティングシステム５５１は、ユーザ空間５６０及びカーネル空間５７０へ再分割される。宛先コンピュータ５５０も、ディスプレイアダプタ５５５を含むように示されている。ディスプレイアダプタ５５５は、宛先モニタ５８０に接続される。宛先コンピュータ５５０はまた、ネットワークアダプタ５５８を含む。ネットワークアダプタ５５８は、ネットワーク接続手段５９９によって、宛先コンピュータ５５０をソースコンピュータ５００に通信可能に接続する。
【００４６】
カーネル空間５７０は、ビデオドライバ５７３を含むように示されている。ビデオドライバ５７３は、宛先コンピュータによって用いられ、ディスプレイアダプタ５５５を介して情報を渡すことによって、宛先モニタ５８０に情報を表示する。
【００４７】
ユーザ空間５６０は、ユーザアプリケーション５６５を含むように示されている。この実施形態において、ユーザアプリケーション５６５は、３つの機能を行なう。第１に、ユーザアプリケーション５６５は、ソースコンピュータ５００から（圧縮された）グラフィックデータを受信する。該グラフィックデータはユーザアプリケーション５１５によって送信された。第２に、ユーザアプリケーション５６５は、あらゆる解凍に不可欠なことまたはあらゆる暗号解読に不可欠なことを行う。最後に、ユーザアプリケーション５６５は、例えば、グラフィックデータをビデオドライバ５７３に渡してディスプレイアダプタ５５５に出力して宛先モニタ５８０に表示することによって、ソースコンピュータ５５０から受信したグラフィックデータを表示させる。
【００４８】
いくつかの実施形態において、ユーザアプリケーション５１５とユーザアプリケーション５６５とは、同一のアプリケーションであってもよい。例えば、単一のユーザアプリケーションによって、特定のコンピュータがソースコンピュータ及び／または宛先コンピュータであるように設定されてもよい。１つのかかる実施形態において、宛先コンピュータ５５０は、また、専用のデバイスドライバ５２５に類似している専用のデバイスドライバを含んでいてもよい。
【００４９】
いくつかの実施形態において、宛先コンピュータは、利用可能な複数のディスプレイ及び／またはディスプレイアダプタを有することができる。１つのかかる実施形態において、ユーザアプリケーション５６５は、宛先コンピュータ５５０で利用可能なディスプレイの中から選択できるように構成されている。
【００５０】
ユーザ空間アプリケーションとカーネル空間デバイスドライバとの間のインタラクション
いくつかの実施形態において、効果的な利点を、ソースコンピュータの専用のデバイスドライバとユーザ空間アプリケーションとの間でグラフィックデータの転送を最適化することによって利用できる。従来、デバイスドライバ（または他のカーネル空間特徴）からユーザ空間アプリケーションに渡された情報は、インタフェース４１５などのインタフェースを介して渡される。このプロセスの間、例えば、ユーザ空間アプリケーション５１５などのユーザ空間アプリケーションは、専用のデバイスドライバ５２５などのカーネル空間ドライバにデータを要求する。この要求は、ユーザ空間アプリケーションに利用可能なメモリバッファへのポインタを含む。メモリバッファで、要求されたデータは保存され得る。今度は、カーネルインタフェースが、デバイスドライバから要求された情報を取り出し、一時的バッファに該要求された情報をコピーする。次に、一時的バッファから、要求された情報が、ユーザアプリケーションの特定のメモリバッファにコピーされる。
【００５１】
いくつかの実施形態において、ユーザアプリケーション及び専用のデバイスドライバは、通常の倍のコピー手法をバイパスする。１つのかかる実施形態において、ユーザアプリケーションは、所望のメモリバッファアドレスを専用のデバイスドライバに直接渡す。専用のデバイスドライバは、次に、要求されたグラフィックデータをその指定されたメモリバッファに直接コピーする。このように、グラフィック情報は、たった１度だけコピーされており、そのことは、必要なメモリアクセス量を減らし、従って、オペレーション速度を上げる。一実施形態において、ユーザアプリケーション及び／または専用のデバイスドライバは、例えばメモリ例外が生じるなどの直接のコピープロセスの間に問題が生じる場合に、従来の２つのコピープロセスが代わりに用いられるように構成されている。
【００５２】
グラフィックデータを送信する方法
ここで図６Ａを参照すると、グラフィックデータを送信する方法のフローチャート６００が、一実施形態に従って示されている。特定のステップが、フローチャート６００において開示されているが、かかるステップは例示的である。即ち、本発明の実施形態は、フローチャート６００に示された様々な他の（付加的な）ステップまたは該ステップの変化形を実行するのによく適している。フローチャート６００のステップは、示されているのと異なる順番で行われてもよく、フローチャート６００のステップのすべてが行われるというわけではない。
【００５３】
ここでステップ６１０を参照すると、グラフィックデータが、ディスプレイドライバに要求される。いくつかの実施形態において、この要求は、要求されたグラフィックデータが保存されるメモリアドレスを含んでいる。一実施形態において、ユーザアプリケーションは、該要求をディスプレイドライバに直接渡す。別の実施形態において、ユーザアプリケーションは、該要求をカーネルインタフェースに渡すことができる。カーネルインタフェースは、今度は、ディスプレイドライバにグラフィックデータを要求し、指定されたメモリアドレスにグラフィックデータを保存する。いくつかの実施形態において、ディスプレイドライバは、仮想ディスプレイドライバである。他の実施形態において、ディスプレイドライバは、「ミラー」ディスプレイドライバである。他の実施形態において、ディスプレイドライバは、異なる方法で構成されていてもよい。
【００５４】
例えば、図５を参照すると、ユーザアプリケーション５１５は、専用のデバイスドライバ５２５にグラフィックデータを要求し、グラフィックデータが保存されるバッファへのポインタを含んでいる。
【００５５】
ここでステップ６２０を参照すると、要求されたグラフィックデータが受信される。いくつかの実施形態において、ディスプレイドライバは、要求されたグラフィックデータをユーザアプリケーションがアクセスできる指示されたメモリ位置に直接コピーする。他の実施形態において、カーネルインタフェースは、要求されたグラフィックデータをディスプレイドライバから取得して、指示されたメモリ位置に該データを書き込む。他の実施形態において、他の手法が利用される。
【００５６】
上記の例に続いて、専用のデバイスドライバ５２５は、要求されたグラフィックデータを指示されたバッファにコピーする。ユーザアプリケーション５１５は、バッファからグラフィックデータを読み出す。
【００５７】
ここでステップ６３０を参照すると、グラフィックデータが圧縮されている。いくつかの実施形態において、ユーザアプリケーションは、グラフィックデータを圧縮する。異なる実施形態において、上記に述べたように、異なる圧縮技術を、グラフィックデータを圧縮するために利用することができる。１つのかかる実施形態において、グラフィックデータは、ソースコンピュータと宛先コンピュータとの間の利用可能な帯域幅を参照して圧縮される。例えば、異なる圧縮技術を、低帯域幅状況において用いられる圧縮技術とは対照的に、高帯域幅状況において用いることができる。
【００５８】
上記の例に続いて、ユーザアプリケーション５１５は、グラフィックデータを圧縮する。利用される圧縮技術は、ネットワーク接続５９９の帯域幅を参照して選択される。該帯域幅によって、ソースコンピュータ５００が宛先コンピュータ５５０に接続される。ネットワーク接続５９９が高帯域幅接続である場合、ＲＬＣ圧縮などの可逆圧縮技術が利用され得る。ネットワーク接続５９９が無線接続などの低帯域幅接続である場合、その後にデフレート圧縮が続くＲＬＣ圧縮などの、他の可逆圧縮技術または不可逆圧縮技術が利用され得る。
【００５９】
ここでステップ６３５を参照すると、いくつかの実施形態において、グラフィックデータが暗号化される。いくつかの実施形態において、ユーザアプリケーションは、無許可の視聴者からグラフィックデータを保護するのを助けるために、グラフィックデータを暗号化する。いくつかの実施形態において、暗号化は圧縮に続く。他の実施形態において、暗号化は圧縮の前に行われる。
【００６０】
上記の例に続いて、ユーザアプリケーション５１５は、圧縮グラフィックデータを暗号化する。
【００６１】
ここでステップ６４０を参照すると、圧縮グラフィックデータは、宛先コンピュータに送信される。いくつかの実施形態において、ユーザアプリケーションは、ソースコンピュータのネットワーク接続を用いて、圧縮グラフィックデータを宛先コンピュータに送信する。
【００６２】
上記の例に続いて、ユーザアプリケーション５１５は、ネットワークアダプタ５０８を用いて、ネットワーク接続５９９を介して宛先コンピュータ５５０に暗号化されたグラフィックデータを送信する。
【００６３】
ソースコンピュータから受信したグラフィックデータを表示する方法
ここで図６Ｂを参照して、ソースコンピュータから受信したグラフィックデータを表示する方法のフローチャート６５０が、一実施形態に従って示される。特定のステップがフローチャート６５０に開示されているが、かかるステップは例示的である。即ち、本発明の実施形態は、フローチャート６５０に示したステップの様々な他の（付加的な）ステップまたは該ステップの変化形を実行するのによく適している。フローチャート６５０のステップは、示されているのと異なる順番で行われてもよく、フローチャート６５０のステップの全てが行なわれるわけではないということが認められる。
【００６４】
ステップ６６０において、圧縮グラフィックデータは、ソースコンピュータから受信される。いくつかの実施形態において、宛先コンピュータで実行中のユーザアプリケーションは、ソースコンピュータで実行中のユーザアプリケーションから圧縮されたグラフィックデータを受信する。他の実施形態において、グラフィックデータの他のソースが利用されてもよい。
【００６５】
例えば、図５を参照して、宛先コンピュータ５５０で実行中のユーザアプリケーション５６５は、ソースコンピュータ５００から圧縮グラフィックデータを受信する。圧縮グラフィックデータは、ネットワーク接続５９９を介して、ユーザアプリケーション５１５によって送信された。
【００６６】
ステップ６６５で、いくつかの実施形態において、グラフィックデータが、暗号解読される。グラフィックデータがソースコンピュータから宛先コンピュータに送信される前に暗号化されるいくつかの実施形態において、宛先コンピュータのユーザアプリケーションは暗号化されたグラフィックデータを暗号解読しなければならない。いくつかの実施形態において、暗号解読は、解凍後に起こる。いくつかの実施形態において、暗号解読は、グラフィックデータの解凍前に起こる。異なる実施形態において、異なる暗号化技術が、用いられる暗号化技術に応じて適当に利用される。
【００６７】
ステップ６７０において、圧縮グラフィックデータが解凍される。いくつかの実施形態において、宛先コンピュータの受信ユーザアプリケーションが、ソースコンピュータから受信した圧縮グラフィックデータを解凍する。異なる実施形態において、上記のように、圧縮グラフィックデータを解凍するために用いられる方法は変化する。例えば、ＲＬＣ符号化がグラフィックデータを圧縮するのに用いられた場合、ユーザアプリケーションは適当な解凍技術を利用する必要がある。
【００６８】
上記の例を続けると、ユーザアプリケーション５６５は、適当な技術を用いて、ユーザアプリケーション５１５から受信した圧縮グラフィックデータを解凍する。
【００６９】
ステップ６８０において、解凍されたグラフィックデータは、宛先コンピュータディスプレイに出力される。いくつかの実施形態において、ユーザアプリケーションは、解凍された（かつ暗号解読された）グラフィックデータを宛先コンピュータのモニタまたは他のディスプレイに表示させる。１つのかかる実施形態において、ユーザアプリケーションは、宛先コンピュータのディスプレイアダプタのためのディスプレイドライバに圧縮グラフィックデータを渡す。
【００７０】
上記の例に続いて、ユーザアプリケーション５６５は、ディスプレイアダプタ５５５に出力して宛先モニタ５８０に表示するためのビデオドライバ５７３に解凍されたグラフィックデータを渡す。
【００７１】
本発明は、構造的特徴及び／または方法論的動作に特定の言語で説明されてきたが、添付の請求の範囲において画定される本発明は、上記の特定の特徴または動作に必ずしも限定されないということが理解されなければならない。むしろ、上記の特定の特徴及び動作は、本請求の範囲を実施する例示的な形式として開示されている。
【図１】
2010529567.tif 000003
【図２】
2010529567.tif 000004
【図３】
2010529567.tif 000005
【図４】
2010529567.tif 000006
【図５】
2010529567.tif 000007
【図６Ａ】
2010529567.tif 000008
【図６Ｂ】
2010529567.tif 000009
【国際調査報告】
2010529567.tif 000010
2010529567.tif 000011