(57)【要約】  リモーティングシステムのリージョンデータおよびグラフィックスデータが、同期して収集され、リージョンデータとグラフィックスデータの間のシンクロニシティを維持しながらリモートディスプレイに送信される。一実施形態で、同期化されたリージョンデータおよび同期化されたグラフィックスデータが、１つのディスプレイドライバに収集される。リモートディスプレイについて、入ってくるリージョンデータは、対応する同期化されたグラフィックスデータに先立ち、その結果、グラフィックスデータが、同期式リージョンデータに従って表示される。【特許請求の範囲】
【請求項１】
クライアントディスプレイ上にリモートでサーバデスクトップのリージョンを表示するためのリージョンデータを同期式に収集することであって、前記リージョンデータは、前記リージョンの形状および位置を記述する、収集することと、
前記リージョンのグラフィックスデータを同期式に収集することであって、前記グラフィックスデータは、前記リージョンのビジュアルコンテンツを記述する、収集することと、
前記リージョンデータと前記グラフィックスデータとの間のシンクロニシティを維持しながら、前記リージョンデータおよび前記グラフィックスデータをクライアントに送信することと
を備えることを特徴とする方法。
【請求項２】
前記リージョンデータおよび前記グラフィックスデータは、単一のディスプレイドライバに収集されることを特徴とする請求項１に記載の方法。
【請求項３】
前記リージョンデータおよび前記グラフィックスデータは、リモーティングプロトコルのフォーマットで収集され、保管されることを特徴とする請求項２に記載の方法。
【請求項４】
前記リージョンデータは、前記形状および位置情報を含むために作成されるディスプレイドライバレベルウィンドウオブジェクトによって同期式に収集されることを特徴とする請求項３に記載の方法。
【請求項５】
前記グラフィックスデータは、前記ディスプレイドライバによって同期式に収集されることを特徴とする請求項３に記載の方法。
【請求項６】
前記ディスプレイドライバは、前記サーバのオペレーティングシステムのグラフィックスデバイスインターフェースサブシステムに発行される描画コマンドを収集することによってグラフィックスデータを同期式に収集することを特徴とする請求項５に記載の方法。
【請求項７】
前記送信することは、さらに、リージョンデータおよびグラフィックスデータのシーケンスを形成することを含み、前記リージョンデータは、前記グラフィックスデータに先立つことを特徴とする請求項１に記載の方法。
【請求項８】
リモーティングプロトコルのルールを使用して前記グラフィックスデータに先立つように前記リージョンデータをシーケンシングすることをさらに備えることを特徴とする請求項７に記載の方法。
【請求項９】
クライアントでの表示のために前記リージョンデータおよび前記グラフィックスデータを受け取ることと、先立つリージョンデータに従って前記グラフィックスデータを表示することとをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記送信することのための帯域幅は、前記リージョンデータおよび前記グラフィックスデータを送信するのに少なすぎるようになる場合に、リージョンデータを送信せず、前記サーバデスクトップ全体のグラフィックスデータを送信することによって、送信されるデータの量を減らすことを特徴とする請求項１に記載の方法。
【請求項１１】
前記送信することのための帯域幅は、前記リージョンデータおよび前記グラフィックスデータを送るのに少なすぎるようになる場合に、前記リージョンのサブセットのリージョンデータを送信することおよび前記サブセットのグラフィックスデータを送信することによって、送信されるデータの量を減らすことを特徴とする請求項１に記載の方法。
【請求項１２】
前記サブセットは、記述するのにより少ないリージョンデータを必要とするジオメトリを有することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記送信することのための帯域幅は、前記リージョンデータおよび前記グラフィックスデータを送るのに少なすぎるようになる場合に、記述するのにより少ないデータを必要とするより大きいリージョンを用いて前記リージョンを囲むことと、前記より大きいリージョンに合わせて前記リージョンの前記ビジュアルコンテンツを拡大することとによって、送信されるデータの量を減らすことを特徴とする請求項１に記載の方法。
【請求項１４】
前記リージョンデータおよび前記グラフィックスデータを受信することと、
前記リージョンデータによって記述されるクライアントデスクトップのリージョンに、前記グラフィックスデータをグラフィックスとして表示することと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１５】
クライアント上にリモートで表示されるディスプレイデスクトップのリージョンを記述するリージョンデータを同期式に収集するリージョンデータ収集モジュールであって、前記リージョンデータは、前記リージョンの形状およびデスクトップ位置を記述する、リージョンデータ収集モジュールと、
グラフィックスデータを同期式に収集するグラフィックスデータ収集モジュールであって、前記グラフィックスデータは、前記リージョンのビジュアルコンテンツを記述する、グラフィックスデータ収集モジュールと、
前記同期式に収集されたリージョンデータおよび前記同期式に収集されたグラフィックスデータを集め、前記リージョンデータと前記グラフィックスデータとの間のシンクロニシティを維持しながら前記リージョンデータおよび前記グラフィックスデータを前記クライアントに送信するディスプレイドライバと
を備えることを特徴とするリモーティング同期化エンジン。
【請求項１６】
前記リージョンデータおよび前記グラフィックスデータをシーケンスで前記クライアントに送信する、前記ディスプレイドライバに関連するデータ出力スケジューラをさらに備え、前記リージョンデータは、前記リージョンデータに同期化された前記グラフィックスデータに先立つことを特徴とする請求項１５に記載のリモーティング同期化エンジン。
【請求項１７】
低帯域幅の条件中に、前記同期化されたリージョンデータおよび前記同期化されたグラフィックスデータに関するセキュリティを維持する帯域幅コンペンセータをさらに備えることを特徴とする請求項１６に記載のリモーティング同期化エンジン。
【請求項１８】
リージョンデータおよび前記リージョンデータに同期化されたグラフィックスデータの同期式収集をスケジューリングするデータ収集スケジューラをさらに備えることを特徴とする請求項１５に記載のリモーティング同期化エンジン。
【請求項１９】
グラフィックスデータと同期化されたリージョンデータを受け取り、前記リージョンデータに基づいてクライアントディスプレイのリージョンを指定するリージョンサブシステムと、
前記リージョンデータに同期化された前記グラフィックスデータを受け取り、前記グラフィックスデータに基づいて前記リージョン内にグラフィックスを表示するグラフィックスサブシステムと
を備えることを特徴とする同期化データレシーバ。
【請求項２０】
クライアントにリモート表示されるビジュアルコンテンツを作る手段と、
前記ビジュアルコンテンツのビジュアルリージョンを指定する手段と、
前記ビジュアルリージョンのジオメトリを記述するリージョンデータを収集する手段であって、収集されるリージョンデータは、前記ビジュアルリージョン内の前記ビジュアルコンテンツを記述するグラフィックスデータと同期している、手段と、
前記ビジュアルリージョン内の前記ビジュアルコンテンツを記述する前記グラフィックスデータを収集する手段であって、収集されるグラフィックスデータは、前記ビジュアルリージョンの前記ジオメトリを記述する前記リージョンデータと同期している、手段と、
前記リージョンデータおよび前記グラフィックスデータを前記クライアントに送信する手段であって、特定のグラフィックスデータと同期しているリージョンデータは、前記特定のグラフィックスデータに先立つ、手段と
を備えることを特徴とする同期化リモーティングシステム。
【請求項２１】
クライアントで前記リージョンデータおよび前記グラフィックスデータを受信する手段と、
前記リージョンデータによって記述されるクライアントデスクトップのリージョンにグラフィックスとして前記グラフィックスデータを表示する手段と
をさらに備えることを特徴とする請求項２０に記載の同期化リモーティングシステム。
【請求項２２】
データストリーム構造であって、
リモート表示されるビジュアルリージョンのジオメトリを記述するリージョンデータと、
前記ビジュアルリージョンのビジュアルコンテンツを記述するグラフィックスデータであって、前記リージョンデータは、前記データストリーム構造内で前記グラフィックスデータに先立つ、グラフィックスデータと
を備えることを特徴とするデータストリーム構造。
【請求項２３】
前記リージョンデータおよび前記グラフィックスデータは、互いに同期して収集されたことを特徴とする請求項２２に記載のデータストリーム構造。
【請求項２４】
クライアントディスプレイにリモート表示されるコンピューティングサーバディスプレイのビジュアルリージョンのリージョンデータおよびグラフィックスデータを同期式に収集することと、
帯域幅は前記リージョンデータおよび前記グラフィックスデータを前記クライアントに送信するのに十分である場合に、前記リージョンデータおよび前記グラフィックスデータを前記クライアントに送信することであって、グラフィックスデータと同期しているリージョンデータは、前記グラフィックスデータの前に送信される、送信することと、
帯域幅は前記リージョンデータおよび前記グラフィックスデータを前記クライアントに送信するのに十分でない場合に、
クライアントは前記コンピューティングサーバディスプレイに表示可能な情報の全体を所有する場合に、前記コンピューティングサーバディスプレイのビジュアルコンテンツ全体を記述するグラフィックスデータだけを送信し、
クライアントは前記コンピューティングサーバディスプレイに表示可能な情報の全体を所有しない場合に、
前記ビジュアルリージョンのビジュアルコンテンツを切り捨てることができる場合に、前記ビジュアルリージョンに内接するより小さいビジュアルリージョンを選択し、前記より小さいビジュアルリージョンに関連する同期化されたリージョンデータおよび同期化されたグラフィックスデータを送信し、
前記ビジュアルリージョンのビジュアルコンテンツを切り捨てることができない場合に、前記ビジュアルリージョンに外接するより大きいビジュアルリージョンを選択し、前記より大きいビジュアルリージョンに関連する同期化されたリージョンデータおよび同期化されたグラフィックスデータを送信し、前記より大きいビジュアルリージョンに合わせて前記ビジュアルリージョンのビジュアルコンテンツのサイズを変更することと
を備えることを特徴とする方法。
【請求項２５】
クライアントディスプレイ上にリモートでサーバデスクトップのビジュアルリージョンを表示するためにリージョンデータを同期式に収集することであって、前記リージョンデータは、前記リージョンの形状および位置を記述する、収集することと、
同期化されたリージョンデータおよび同期化されたグラフィックスデータを入手するために前記ビジュアルリージョンのグラフィックスデータを同期式に収集することであって、前記同期化されたグラフィックスデータは、前記ビジュアルリージョンのビジュアルコンテンツを記述する、収集することと、
前記リージョンデータと前記グラフィックスデータとの間のシンクロニシティを維持しながら、前記同期化されたリージョンデータおよび前記同期化されたグラフィックスデータを前記クライアントに送信することと
を含む動作を実行するためにコンピューティングデバイスによって実行可能な命令を備えることを特徴とする１つまたは複数のコンピューティングデバイス読み取り可能な媒体。
【請求項２６】
シンクロニシティを維持することは、さらに、前記クライアントに送信されるグラフィックスデータを、前記グラフィックスデータと同期化された前記リージョンデータに先立たせることを含むことを特徴とする請求項２５に記載の１つまたは複数のコンピューティングデバイス読み取り可能な媒体。
【請求項２７】
前記リージョンデータおよび前記グラフィックスデータは、１つのディスプレイドライバに同期して収集されることを特徴とする請求項２５に記載の１つまたは複数のコンピューティングデバイス読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書の主題は、全般的にはコンピューティングデバイスのアプリケーション共有に関し、具体的には、グラフィックスリモーティング（ｒｅｍｏｔｉｎｇ）システムの同期化されたグラフィックスデータおよびリージョンデータに関する。
【背景技術】
【０００２】
グラフィックスリモーティングシステムは、コンピューティングデバイスネットワーククライアントが、サーバに接続し、サーバで表示されるかサーバによって出力されるグラフィックスの少なくとも一部のビジュアル表現を受け取ることを可能にする。しばしば、ネットワーククライアントは、セッションに関連するすべてのグラフィックス出力を表示することができる。同様に、クライアントは、セッションと相互作用し、クライアントに接続されたマウスまたはキーボードなどのデバイスから生成されたユーザ入力をサーバセッションに注入することを可能にされる場合がある。クライアントが「ログオンセッション」に接続することを可能にするそのようなサーバを、時々、「リモートサーバ」または「リモーティングサーバ」と称する。リモートログオンセッションおよびグラフィックスリモーティングを実行するコンピューティングデバイスサブシステムを、時々、「ターミナルサービスサブシステム（ｔｅｒｍｉｎａｌ  ｓｅｒｖｉｃｅｓ  ｓｕｂｓｙｓｔｅｍ）」と称する。
【０００３】
グラフィックスリモーティングシステムは、クライアントに送信されるグラフィックスの量を制御でき、その結果、クライアントが、リモーティングサーバで表示（すなわち「それによって出力」）されるものの一部を見なくなる。３つのカテゴリによって、サーバとクライアントの間で共有されるグラフィックスの度合が都合よく分類される。「デスクトップリモーティング（ｄｅｓｋｔｏｐ  ｒｅｍｏｔｉｎｇ）」では、クライアントが、サーバに直接に接続されたディスプレイのキャンバスで見られるものの実質的にすべてを見る。「ウィンドウリモーティング（ｗｉｎｄｏｗ  ｒｅｍｏｔｉｎｇ）」では、クライアントが、サーバのデスクトップからのウィンドウまたはペイン（あるいはウィンドウまたはペインの組）を見るが、各ウィンドウは、通常は、あるアプリケーションに対応するグラフィカル出力および／またはユーザインターフェース（ＵＩ）についてサーバのオペレーティングシステムによって射影される。したがって、サーバ側で、ワードプロセッサアプリケーションが、１つのウィンドウを所有することができ、電子メールアプリケーションが、別のウィンドウを所有することができるが、おそらく、ワードプロセッサウィンドウだけが、クライアントと共有される。「リージョンリモーティング（ｒｅｇｉｏｎ  ｒｅｍｏｔｉｎｇ）」では、サーバのデスクトップのサブセットだけが、クライアントと共有されるが、共有されるリージョンは、必ずしもウィンドウに対応しない。実際に、共有されるリージョンを任意とすることができる。
【０００４】
リモーティングサーバとログオンしたクライアントの間のこのグラフィカルリモーティング「遠隔作用」を達成するために、ある量のテレメトリが必要である。クライアントの展望から、サーバ側の計装（ｉｎｓｔｒｕｍｅｎｔａｔｉｏｎ）が、「グラフィックスデータ」すなわち、デスクトップまたはデスクトップの１リージョンのビジュアルコンテンツを構成する情報を記録し、このグラフィックスデータをクライアントに送り返す。グラフィックスデータは、テキスト、イメージコンテンツ、および／またはＵＩの特徴（サーバによって生成されるスクロールバーおよびクリッカブルボタンなど）を記述することができる。グラフィックスデータは単独で、上で説明したデスクトップリモーティングに十分な情報とすることができるが、ウィンドウタイプおよびリージョンタイプのリモーティングには不十分である。リモーティングのこの後者のタイプでは、サーバ側の第２の計装が、共有されるリージョンのジオメトリ（すなわち形状）を測定し、このジオメトリ情報をクライアントに送信しなければならない。サーバ側の第２の計装またはさらに別の第３の計装も、サーバのデスクトップに関する共有されるリージョンの相対的配置（以下では「位置」と称する）を測定し、この第３のタイプの情報をクライアントに送り返さなければならない。したがって、サーバのデスクトップからのリージョンをそれ自体のディスプレイに正確に表示するために、クライアントは、そのリージョンの現在のグラフィックスデータ、形状、および位置（後者の２つが「リージョンデータ」である）を知らされなければならない。リージョンデータ（形状情報および位置情報）のクライアントのビューを用いて、クライアントが、サーバデスクトップを可視リージョンおよび不可視リージョンすなわち、関連グラフィックスデータを表示するリージョンと関連グラフィックスデータを表示しないリージョンに分割することができる。次に、クライアントは、表示されるリージョンにグラフィックスデータを書き込むか、少なくとも、グラフィックスデータを、表示されないリージョンの境界でクリッピングする。
【０００５】
従来、共有される、リージョンの上述のグラフィックスデータは、第１計装によって継続的に感知され、追跡され、かつ／または収集され、形状情報および位置情報と独立にクライアントに送信される。この第１計装は、通常、オペレーティングシステムのカーネルグラフィックス処理サブシステムの、よく開発された部分からなるか、これに非常に依存するものとなっている。というのは、グラフィックストラッキングの多くが、サーバがリモーティングサーバでない場合に使用されるものと同一であるからである。
【０００６】
リージョンデータは、従来、グラフィックスデータを継続的に収集するカーネルコンポーネントと完全に異なるスケジューラである第２計装によって、非同期の形で収集される。たとえば、リージョンデータは、ポーリングメカニズムによって、ユーザモードで収集することができる。さらに、リージョンデータは、グラフィックスデータと非同期化されてクライアントに送られる、または、言い換えると、グラフィックスデータとリージョンデータがリモーティングプロトコルによって単一データストリームに組み合わされる場合に、その組合せおよびリモーティングプロトコルルールの厳守は、グラフィックスデータに関するリージョンデータの非同期性を矯正しない（リージョンデータの非同期収集は、１つには、リージョンデータ収集がグラフィックスデータ収集と独立にすなわち、リージョンデータのセグメントとのグラフィックスデータのセグメントのマッチングに無関係に動作することを意味する）。
【０００７】
受け取られるグラフィックスデータおよびリージョンデータは、クライアントによって一緒に融合されて、最終的なディスプレイが作られる。歴史的に、グラフィックスデータとリージョンデータを非同期に収集するために多かれ少なかれ互いに独立して働く２つの命令を使用することは、おそらく、グラフィックスデータを収集するオペレーティングシステムカーネル内のメカニズムが、リモーティングが実践され始めた時に既によく開発されており、リージョンデータの収集が、遅参者または後知恵として追加されたので生じた。これらは、遅参者なので、リージョンデータを非同期に収集する方法は、通常は、オペレーティングシステムカーネル（グラフィックスデータ収集の領域である）をかき乱すのを避ける。
【０００８】
グラフィックスデータおよびリージョンデータが、リージョンリモーティングのために非同期に収集されたならば、これらのデータは、通常、ＭＩＣＲＯＳＯＦＴ（登録商標）  ＲＥＭＯＴＥ  ＤＥＳＫＴＯＰ  ＰＲＯＴＯＣＯＬ（ＲＤＰ）またはＣＩＴＲＩＸ  ＩＮＤＥＰＥＮＤＥＮＴ  ＣＯＭＰＵＴＩＮＧ  ＡＲＣＨＩＴＥＣＴＵＲＥ（ＩＣＡ）  ＰＲＯＴＯＣＯＬなどのプロトコルに従ってパケット化され、クライアントに送信される（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ、米国ワシントン州レッドモンド；Ｃｉｔｒｉｘ  Ｃｏｒｐｏｒａｔｉｏｎ、米国フロリダ州フォートローダーデール）。たとえば、ＲＤＰプロトコルは、多数のグラフィックスリモーティングプロトコルの１つにすぎない、すなわち、多数のグラフィックスリモーティングプロトコルが、デスクトップのウィンドウまたはリージョンを共有するためにリージョンリモーティングを追加するのに十分に拡張可能である。ＲＤＰが、リモートディスプレイテレメトリのデータ送信コンポーネントとして使用される場合に、ＲＤＰが、Ｔ．１２０プロトコルファミリ標準規格に基づき、これの拡張であることに留意しなければならない。ＲＤＰは、別々の仮想チャネルがサーバからデバイス通信データおよびプレゼンテーションデータを伝え、暗号化されたクライアントマウスデータおよびキーボードデータを伝えることを可能にするマルチチャネル対応プロトコルである。
【０００９】
従来、グラフィックスデータおよびリージョンデータは、非同期収集によって初めから非同期化され、データがネットワークレイヤを介して渡されてクライアントに送信され、クライアントによって受け取られる時にデータがどのように扱われるかに依存して、さらに非同期化される可能性がある。ＲＤＰプロトコルは、非同期化を直さない。類推によって論じると、優れた双眼鏡を用いる素早い雉の追跡を同期化させておかない（双眼鏡がよいにもかかわらず）バードウォッチャに似て、非同期化されたグラフィックスデータおよびリージョンデータ（リモーティングプロトコルがよいにもかかわらず）を受け取るリモーティングクライアントは、サーバデスクトップの所望のターゲットを見失うだけではなく、実際に、サーバデスクトップ上の、彼が見ると思われないものを見る可能性がある。
【００１０】
図１に、グラフィックスリモーティングシステム１００の、サーバディスプレイ１０２およびクライアントディスプレイ１０４を含む部分を示す。クライアントと共有されるウィンドウ１０６が、サーバディスプレイ１０２上で、サーバのデスクトップの秘密のプライベート情報１０８の「禁止されたビジュアルリージョン」と一緒に表示されている。どの時点でも、ウィンドウ１０６の内容を記述するグラフィックスデータならびにウィンドウ１０６の形状およびプレースメントを記述するリージョンデータは、同期化されず、クライアントディスプレイ１０４は、所期のウィンドウ１０６’を不正に表示する。たとえば、ウィンドウ１０６’が、サーバディスプレイ１０２のデスクトップで左から右に移動するか移動され、グラフィックスデータおよびリージョンデータが、収集される時および／またはクライアントに送信される時に同期化されない場合に、クライアントディスプレイ１０４に、ウィンドウが前に位置決めされていた１１０が、現在は秘密の情報を表示している、サーバデスクトップのリージョンの表示が継続される場合がある。
【００１１】
この非同期化は、２つの問題を引き起こす：提示されなければならないコンテンツを表示しないことと、提示してはならないコンテンツを表示することである。第１に、クライアントディスプレイ１０４は、グラフィックスリモーティングシステム１００がクライアントに表示することを意図する、サーバディスプレイ１０２のサブセットを表示しない。すなわち、表示を意図されたウィンドウ１０６に、ビジネス判断を行うのに必要な情報が含まれる場合に、その判断は、正しいデータが表示されるまで停止される。第２に、クライアントディスプレイ１０４は、束の間ではあるが、意図されない秘密の情報１１２すなわち、グラフィックスリモーティングシステム１００がクライアントと共有することを意図していない、サーバディスプレイ１０２のサブセットを表示することができる。したがって、非同期化は、「トップシークレット」情報が、正しいクリアランスなしでクライアントに暴かれる場合に、セキュリティリスクを提示する。残念ながら、グラフィックスデータとリージョンデータの間の同期化の問題は、ほとんどの既知のグラフィックスリモーティングシステムに存在し、この場合に、クライアントは、しばしばサーバデスクトップ上の意図されない部分を見る。
【発明の開示】
【課題を解決するための手段】
【００１２】
リモーティングシステムのリージョンデータおよびグラフィックスデータが、同期式に収集され、リージョンデータとグラフィックスデータの間のシンクロニシティ（ｓｙｎｃｈｒｏｎｉｃｉｔｙ）を維持しながらリモートディスプレイに送信される。一実施形態で、同期化されたリージョンデータおよび同期化されたグラフィックスデータが、１つのディスプレイドライバに収集される。リモートディスプレイについて、入ってくるリージョンデータは、対応する同期化されたグラフィックスデータに先立ち、その結果、グラフィックスデータが、同期リージョンデータに従って表示される。
【発明を実施するための最良の形態】
【００１３】
概要
本明細書の主題では、リージョンデータおよびグラフィックスデータを同期式に収集し、両方のタイプのデータをグラフィックスリモーティングサーバを介して同期式にチャネリングすることによって可能にされるセキュアで正確なグラフィックスリモーティングシステムを説明する。例示的リモーティング同期化エンジン（ＲＳＥ）に、クライアントとリモート共有されるサーバデスクトップのウィンドウまたはリージョンのリージョンデータおよびグラフィックスデータを同期式にキャプチャすることができるディスプレイドライバが含まれる（「ウィンドウ」および「リージョン」は、「ウィンドウリモーティング」と「リージョンリモーティング」の間の差にかかわらず、本明細書で多少交換可能に使用される）。ＲＳＥは、リージョンデータとグラフィクスデータを非同期化する遅延のインタージェクション（ｉｎｔｅｒｊｅｃｔｉｏｎ）を避け、同期化されたデータをリモーティングプロトコルに従って送信することができ、この送信では、リージョンデータが関連するグラフィックスデータに先立つ。サーバの観点からは、グラフィックスデータに関連する正しく更新されたリージョンデータがまず送信されない限り、クライアントにグラフィックスデータは送信されない。クライアントの観点からは、最も最近に受信されたリージョンデータに対応するために、クライアントによって受信されたグラフィックスデータに頼ることができる。
【００１４】
例示的システム
図２に、リモーティングサーバ（「サーバ」）２０２がネットワーク２０６を介してクライアント２０４に通信的に結合される例示的リモーティングシステム２００を示す。サーバディスプレイ２０８に、クライアント２０４と共有され、クライアントディスプレイ２１２に表示されるウィンドウ２１０が示されている。サーバ２０２に含まれるかこれに関連するリモーティング同期化エンジン（「ＲＳＥ」）２１４が、ウィンドウ２１０を記述するグラフィックスデータおよびリージョンデータを同期式に収集し、同期化されたグラフィックスデータおよびリージョンデータをクライアント２０４に送信する。いくつかの実施形態で、クライアント２０４に、同期化データレシーバ２１５が含まれて、同期化されたリージョンデータおよび関連する同期化されたグラフィックスデータが受け取られ、グラフィックスデータが、リージョンデータによって記述されるクライアントディスプレイ２１２のリージョン２１０’にグラフィックスとして表示される。他の実施形態で、例示的ＲＳＥ２１４が、同期化されたデータを出力し、このデータによって、クライアント２０４が、普通のメカニズムを使用して同期化されたリージョンデータによってクリッピングされたグラフィックスデータを正しく表示できる場合に、別個の同期化データレシーバ２１５が不要になる場合がある。サーバ２０２またはクライアント２０４としての使用に適する例示的コンピューティングデバイスを、下で図１１を参照して説明する。
【００１５】
共有されるウィンドウ２１０は、テキスト「Ｈｅｌｌｏ！」と太陽のイメージを含むグラフィックスコンテンツ２１６を所有する。ウィンドウ２１０のグラフィックスコンテンツ２１６は、ＲＳＥ２１４によって同期式に収集されたグラフィックスデータのセットによって記述することができる。ウィンドウ２１０は、サーバディスプレイ２０８のデスクトップおよび／またはディスプレイキャンバス上の形状ジオメトリ２１８および配置位置２２０も所有する。配置位置２２０は、時々、通常はサーバディスプレイ２０８の左上端ピクセルとして選択される座標の原点（０，０）からの２次元のオフセットを記述する「ｘ軸」座標および「ｙ軸」座標の順序付きの対によって表される。この実施形態で、ウィンドウ形状ジオメトリ２１８および配置位置２２０は、集合的に、ＲＳＥ２１４によって同期式に収集されるリージョンデータのセットによって記述される。
【００１６】
グラフィックスデータおよびリージョンデータが、ＲＳＥ２１４によって同期化されるので、クライアントディスプレイ２１２で表示される時に、ウィンドウ２１０’は、サーバディスプレイ２０８で表示され、かつ／またはサーバ２０２によってクライアント２０４に出力されるウィンドウ２１０のグラフィックスコンテンツ２１６、形状ジオメトリ２１８、および配置位置２２０を正確に複製する。クライアントディスプレイ２１２で示されるウィンドウ２１０’の絶対サイズは、サーバディスプレイ２０８のサイズと比較したクライアントディスプレイ２１２の相対サイズに応じて、サーバディスプレイ２０８に示されるサイズと異なる場合がある。
【００１７】
例示的ＲＳＥ２１４が、リージョンデータおよびグラフィックスデータを送信するのに、ＲＤＰなどの既知のリモーティングプロトコルを使用する場合に、クライアント２０４は、同期化データレシーバ２１５なしで、リージョン２１０’に同期化されたグラフィックスを正しく表示できる場合がある。しかし、例示的ＲＳＥ２１４の一部の実施形態は、既知のリモーティングプロトコルを使用しないことができる。たとえば、本明細書の主題を、既知のプロトコルを使用しないコンピューティング環境および／またはマルチメディア環境で実践することができる。本明細書の主題は、サーバ２０２とクライアント２０４の間で同期化されたリージョンデータおよびグラフィックスデータを送信するのに使用されるデータトランスポート媒介物によって制限されない。したがって、いくつかの実施形態で、通常はクライアント２０４に含まれる同期化データレシーバ２１５に、リージョンサブシステム２２２およびグラフィックスサブシステム２２４が含まれる。リージョンサブシステム２２２は、グラフィックスデータと同期化され、リージョンデータに基づいてクライアントディスプレイ２１２のリージョン２１０’を指定されて入ってくるリージョンデータを受け取る。データバッファをクライアント２０４でまたは同期化データレシーバ２１５で使用して、入ってくる同期化されたデータストリームを受け取り、保管することができる。したがって、リージョンデータとグラフィックスデータの両方を、さらなるデータストリームを受信する間に保管することができる。グラフィックスサブシステム２２４は、リージョンデータと同期化されたグラフィックスデータを受け取り、グラフィックスデータに基づいてリージョン２１０’にグラフィックスを表示する。
【００１８】
例示的エンジン
図３に、図２の例示的ＲＳＥ２１４を詳細に示す。例示的ＲＳＥ２１４は、グラフィックスデータおよびリージョンデータを同時に同一の場所に収集する。したがって、グラフィックスデータ収集モジュール３００、リージョンデータ収集モジュール３０２、データ収集スケジューラ３０４、クロック３０６、ディスプレイドライバ３０８、およびネットワークインターフェース３１０が、図示のように通信的に結合される。ディスプレイドライバ３０８に、さらに、リモーティングプロトコル３１２、データ出力シーケンサ３１４、帯域幅コンペンセータ３１６、およびセキュリティロジック３１８を含めることができる。図示された例示的ＲＳＥ２１４は、リージョンリモーティングのためにグラフィックスデータとリージョンデータを同期化することができるＲＳＥ２１４の１つの例にすぎない。この主題を実行することができる他の例示的エンジンは、異なる構成を有することができる。
【００１９】
グラフィックスデータ収集モジュール３００は、グラフィックスデータを同期式に収集するが、このグラフィックスデータは、上で説明したように、共有されるリージョンのビジュアルイメージコンテンツ（テキスト、イメージ、アイコン、境界、ＵＩコントロール、メニュー、スクロールバーなど）からなる。リージョンのコンテンツは、通常は経時的に変化するので、グラフィックスデータは、離散的なインターバルで収集し、継続的にスキャンし、かつ／またはストリーミングすることができる。一実施形態で、データ収集スケジューラ３０４は、グラフィックスデータ収集モジュール３００に関する、１５０ミリ秒などのタイムインターバルをセットして、リージョンデータの収集に関する類似するタイムドサイクルと一致するグラフィックスデータ収集サイクルを実行する。そのようなタイムドサイクルは、多数のオペレーティングシステムがストリームで継続的にグラフィックスデータを収集するので、グラフィックスデータとリージョンデータを同期化する１つの構造である。いくつかのモーダリティで、前のサイクルからのグラフィックスデータに対する変更だけが、収集される必要があり、グラフィックスデータの完全なセットを一から収集する必要はない。
【００２０】
一実施形態で、グラフィックスデータ収集モジュール３００は、ディスプレイドライバ３０８の固有の部分または別個の部分である。すなわち、ＷＩＮＤＯＷＳ（登録商標）グラフィクスディスプレイドライバなどのディスプレイドライバ３０８が、ＷＩＮＤＯＷＳ（登録商標）グラフィクスデバイスインターフェース（ＧＤＩ）サブシステムに発行されるプリミティブ描画コマンドを収集することによって、グラフィックスデータを収集する。これらの描画プリミティブは、ＲＤＰなどのリモーティングプロトコル３１２を使用してエンコードされ、ネットワーク２０６を介して１つまたは複数のＲＤＰクライアント２０４に送信される。そのような実施形態では、グラフィックスデータ収集モジュール３００に、ＷＩＮ３２Ｋ．ＤＬＬおよびＷＩＮＤＯＷＳ（登録商標）ＧＤＩサブシステムに関連する他のコンポーネントを含めることができる。いくつかの実施形態で、クロック３０６および／またはデータ収集スケジューラを、システムクロックとすることができ、あるいは、クロック機能を、グラフィックスデータの収集またはストリーミングに関するオペレーティングシステムの固有のものとすることができる。
【００２１】
リモーティングプロトコル３１２を使用してクライアント２０４に送信されるリージョンデータも、リージョンデータ収集モジュール３０２を介して、ディスプレイドライバ３０８内で収集される。ウィンドウまたはリージョンの形状ジオメトリおよび配置位置は、通常は経時的に変化するので、このリージョンデータは、クライアント２０４を更新するために、離散的なインターバルで収集でき、あるいは、理想的には、継続的にスキャンし、かつ／またはストリーミングすることができる。一実施形態で、データ収集スケジューラ３０４が、リージョンデータ収集モジュール３０２に関する１５０ミリ秒などのタイムインターバルをセットして、対応するグラフィックスデータの収集の類似するタイムドサイクルと一致するリージョンデータ収集サイクルを実行する。いくつかの実施形態で、前のサイクルに収集されたリージョンデータの前のセットに対する変更だけを考慮する必要がある。
【００２２】
一実施形態で、リージョンデータ収集モジュール３０２は、ＷＩＮＤＯＷＳ（登録商標）サーバドライバデベロップメントキット（ＤＤＫ）を介して作成されるウィンドウオブジェクト「ＷＮＤＯＢＪ」を含め、かつ／または備えることによって、関連するリージョンデータを同期式に収集（かつ／または追跡）する。ＷＮＤＯＢＪは、ビジュアルリージョンの形状ジオメトリおよび配置位置に関する情報すなわちリージョンデータを含めるために作成することができるドライバレベルウィンドウオブジェクトである。共有されるアプリケーションリージョンに対応するＷＮＤＯＢＪを作成することによって、ディスプレイドライバ３０８が、ビジュアルリージョンの形状ジオメトリおよび配置位置の変化を表すリージョンデータを追跡することができる。
【００２３】
ディスプレイドライバ３０８が、共有されるリージョンのリージョンデータの変化を追跡できるようにする例示的ＷＮＤＯＢＪ構造体を、下の表１に示す。
【００２４】
【表１】
2007509408.tif 000002
【００２５】
表１の例示的ＷＮＤＯＢＪのメンバに、下記が含まれる。
【００２６】
ｃｏＣｌｉｅｎｔ  これは、ウィンドウのクライアントリージョンを記述するＣＬＩＰＯＢＪ構造体を指定する。ｉＤＣｏｍｐｌｅｘｉｔｙがＤＣ＿ＲＥＣＴであり、ｒｃｌＢｏｕｎｄｓの左エッジが右エッジ以上であるか、上エッジが下エッジ以上である場合に、そのクライアントリージョンは見えない。
【００２７】
ｐｖＣｏｎｓｕｍｅｒ  これは、この特定のＷＮＤＯＢＪ構造体を識別するドライバ定義の値をポイントする。この値は、ＷＮＤＯＢＪ＿ｖＳｅｔＣｏｎｓｕｍｅｒ関数を呼び出すことによってセットすることができる。
【００２８】
ｒｃｌＣｌｉｅｎｔ  これは、ウィンドウのクライアント領域をスクリーン座標で記述するＲＥＣＴＬ構造体を指定する。この長方形は、右下排他的（ｌｏｗｅｒ−ｒｉｇｈｔ  ｅｘｃｌｕｓｉｖｅ）であり、これは、このリージョンの下エッジおよび右エッジが含まれないことを意味する。
【００２９】
ｐｓｏＯｗｎｅｒ  これは、このＷＮＤＯＢＪが作成された時にＥｎｇＣｒｅａｔｅＷｎｄに渡されたＳＵＲＦＯＢＪ構造体をポイントする。
【００３０】
クライアント２０４と共有されるリージョンのリージョンデータは、ＷＮＤＯＢＪ＿ｃＥｎｕｍＳｔａｒｔ関数およびＷＮＤＯＢＪ＿ｂＥｎｕｍ関数を呼び出すことによって列挙することができる。ディスプレイドライバ３０８は、ＷＮＤＯＢＪ＿ｖＳｅｔＣｏｎｓｕｍｅｒ関数を呼び出すことによって、それ自体のデータをＷＮＤＯＢＪに関連付けることができる。
【００３１】
例示的ＲＳＥ２１４の同期化する要素として、ディスプレイドライバ３０８は、ＷＮＤＯＢＪのパブリックメンバにアクセスすることができる。これらのパブリックメンバは、ＥｎｇＣｒｅａｔｅＷｎｄ関数またはＷＮＤＯＢＪが与えられる関数で、ＧＤＩサブシステムに供給されるドライバコールバックルーチンのコンテキスト内でのみ変化しないままになることが保証される。
【００３２】
ディスプレイドライバ３０８は、グローバル変数を維持するのではなく、ディスプレイドライバのＰＤＥＶハンドルなど、ＷＮＤＯＢＪに関連するドライバ固有の状態を取り出すために、ｐｓｏＯｗｎｅｒがポイントするＳＵＲＦＯＢＪを使用しなければならない。
【００３３】
クライアント２０４と共有されるリージョンを確立するために、アプリケーションは、ＷＩＮ３２アプリケーションプログラムインターフェース（ＡＰＩ）を使用して、ディスプレイドライバ３０８によって実装されるＷＮＤＯＢＪ＿ＳＥＴＵＰ機能性にアクセスすることができる。アクセスは、ＷＩＮ３２  ＥｘｔＥｓｃａｐｅ関数を介して得られる。前述のＧＤＩサブシステムは、ＤｒｖＥｓｃａｐｅを用いてこのエスケープ呼出しをディスプレイドライバ３０８に渡すが、このＤｒｖＥｓｃａｐｅは、ｉＥｓｃの値についてＷＮＤＯＢＪ＿ＳＥＴＵＰを用いてディスプレイドライバ３０８によって実装される。
【００３４】
サーバ２０２とクライアント２０４の間で共有されるアプリケーションは、ＥｘｔＥｓｃａｐｅ（ｈｄｃ，ＷＮＤＯＢＪ＿ＳＥＴＵＰ，…）を呼び出し、ディスプレイドライバ３０８への入力バッファを介してアプリケーション作成のウィンドウ（ＣｒｅａｔｅＷｉｎｄｏｗまたは同等のＷＩＮ３２関数によって作成された）へのハンドルを渡す。ディスプレイドライバ３０８が、リージョンに関連する収集されたリージョンデータを受け取らなければならない場合に、ディスプレイドライバ３０８は、ＥｘｔＥｓｃａｐｅ呼出しのコンテキスト内でＥｎｇＣｒｅａｔｅＷｎｄを呼び出して、所与のウィンドウのＷＮＤＯＢＪ構造体を作成する。したがって、その時点から、アプリケーション作成のウィンドウに関する形状ジオメトリの変化および配置位置の変化が、ディスプレイドライバ３０８に渡されるようになる。
【００３５】
上で説明した実施形態の適当なディスプレイドライバ３０８が、表２に示されたものに似た形でＥｘｔＥｓｃａｐｅ呼出しを処理する。
【００３６】
【表２】
2007509408.tif 000003
【００３７】
ウィンドウオブジェクトの作成に、特殊なウィンドウリソースをロックすることが含まれ、したがって、ＥｎｇＣｒｅａｔｅＷｎｄは、ＤｒｖＥｓｃａｐｅまたはＤｒｖＳｅｔＰｉｘｅｌＦｏｒｍａｔのＷＮＤＯＢＪ＿ＳＥＴＵＰエスケープのコンテキストでのみ呼び出さなければならない。
【００３８】
ＥｎｇＣｒｅａｔｅＷｎｄ関数は、複数のディスプレイドライバ３０８のそれぞれによるリージョンデータの収集さえもサポートする。ＥｎｇＣｒｅａｔｅＷｎｄを介して、各ディスプレイドライバ３０８は、対応するリージョンに対する変更についてＧＤＩサブシステムが呼び出す、ディスプレイドライバ自体のコールバックルーチンを識別する。この特徴によって、たとえば、ＯｐｅｎＧＬディスプレイドライバ３０８がＯｐｅｎＧＬウィンドウ内の変更に対応するリージョンデータを収集している間に、ライブビデオのディスプレイドライバ３０８が、ライブビデオウィンドウ内での変更に対応するリージョンデータを収集できるようになる。
【００３９】
ＧＤＩサブシステムは、新しいＷＮＤＯＢＪがＤｒｖＳｅｔＰｉｘｅｌＦｏｒｍａｔまたはＥｘｔＥｓｃａｐｅで作成される場合に、最新のリージョンデータを用いてディスプレイドライバ３０８をコールバックする。ＧＤＩサブシステムは、ＷＮＤＯＢＪによって参照されるリージョンが破棄される時にも、ディスプレイドライバ３０８をコールバックする。
【００４０】
リージョンの形状および／またはプレースメントの変化を表すリージョンデータの収集は、ＷＮＤＯＢＪ構造体をサポートするために提供される３つのコールバック関数の使用を伴う場合がある。クライアント２０４で可視のリージョンは、ＷＮＤＯＢＪ＿ｃＥｎｕｍＳｔａｒｔコールバック関数およびＷＮＤＯＢＪ＿ｂＥｎｕｍコールバック関数を呼び出すことによって列挙することができる。ディスプレイドライバ３０８は、ＷＮＤＯＢＪ＿ｖＳｅｔＣｏｎｓｕｍｅｒコールバック関数を呼び出すことによって、それ自体のデータをＷＮＤＯＢＪに関連付けることができる。
【００４１】
したがって、説明したばかりの実施形態では、ＷＮＤＯＢＪが、クライアント２０４で可視のリージョンに対する変更についてディスプレイドライバ３０８に同期式に知らせる。この実施形態では、ディスプレイドライバ３０８が、ＧＤＩ  ＡＰＩを介してグラフィックスプリミティブが同期式に収集される場でもあるので、同期化されたリージョンデータおよびグラフィックスデータを、互いに相関させ（または互いに相関された状態に保ち）、たとえば、まず所与のタイムインターバルの終りで最新の更新されたリージョンデータとその後のそのリージョンデータに対応するグラフィックスデータなど、クライアント２０４にセキュアで同期化された形で送信することができる。例示的ＲＳＥ２１４内の１つの接合点への、またはより具体的には例示的ディスプレイドライバ３０８内の１つの接合点へのグラフィックスデータおよびリージョンデータの収集は、本明細書の主題によって記述される同期化を可能にする１つの態様である。この接合点から、グラフィックスデータおよびリージョンデータが、クライアント２０４への配送まで（配送を含む）同期した状態に保たれる。
【００４２】
クライアント２０４と共有されるサーバデスクトップのリージョンが、アプリケーションウィンドウである必要はない。グラフィックスデータと同期化することができるリージョンデータを有するディスプレイキャンバスのリージョンを記述する多数の形がある。ビューポートリージョン４０２の手動作成の例示的方法４００を示す図４からわかるように、サーバ側またはクライアント側のいずれかのユーザは、関連するディスプレイスクリーン（たとえば２０８、２１２）に長方形または他の形状を手で描いて、たとえば手動で「マウスドラッグされる」ビューポートリージョン４０２を作成することができる。ビューポートリージョン４０２は、クライアント２０４と共有されるすべてのものを視覚的に囲む。言い換えると、ディスプレイドライバ３０８は、形状ジオメトリおよび配置位置すなわちリージョンデータを有するディスプレイスクリーンリージョンとしてビューポートリージョン４０２を保管し、ビューポートリージョン４０２のグラフィックスデータを送信する前にこのリージョンデータを送信することができる。その結果、表示されるグラフィックスは、記述されたビューポートリージョン４０２によって正確にクリッピングされる。これによって、例示的ＲＳＥ２１４のリージョンデータ収集モジュール３０２に関して上で提示したデータ収集メカニズムと比較して、同期化されたリージョンデータを作る代替のメカニズムが提示される。
【００４３】
図３に戻ると、データ出力シーケンサ３１４は、リモーティングプロトコル３１２の使用を指示し、監督して、リージョンデータ（たとえば、所与のインターバル、サイクル、または「タイムスライス」に関連する）が、それに対応するグラフィックスデータと関連したままであることを保証する。対応する同期化されたリージョンデータと同期化されたグラフィックスデータの間の関連を維持する形の１つが、関連を表すある順序でこの２タイプのデータを送信すること（関連とその関連を表すシーケンシャル順の両方を理解するクライアントによってクライアント側で処理されること）である。したがって、一実施形態で、リージョンデータは、必ずそれに対応するグラフィックスデータに先立つ。これは、同期式リージョンデータが、必ず対応する同期式グラフィックスデータの前にクライアント２０４に送信されることを意味するが、より重要なことに、これは、関連するリージョンデータがクライアント２０４に送信される場合に、クライアント２０４が、リージョンデータに対応するグラフィックスデータを処理する前にまずリージョンデータを更新することを意味する。したがって、セキュアなリンケージ（「シンクロニシティ」）が、リージョンデータとグラフィックスデータの間で形成される。クライアント２０４は、受信するすべてのグラフィックスデータについて、現在のリージョンデータの処理に頼ることができる。言い換えると、クライアント２０４は、受信されるすべてのグラフィックスデータが、前に受信されたリージョンデータに対応することを知っている。クライアントディスプレイ２１２に適用されるグラフィックスデータは、最新のリージョンデータを用いて示され（または「クリッピングされ」）、共有されるリージョンの正しく同期化された表示がもたらされる。これによって、例示的ＲＳＥ２１４は、クライアント２０４との共有を意図された可視リージョン内のグラフィックスデータが、非表示にならず、クライアント２０４の不可視リージョン内のグラフィックスデータが、誤って表示されないことを保証することをねらう。
【００４４】
図５からわかるように、データ出力シーケンサ３１４は、通常はＲＤＰなどのリモーティングプロトコル３１２を介して、例示的データ構造５００を作成する。データ出力シーケンサ３１４は、リモーティングプロトコル３１２の使用を制御して、クライアント２０４にまずリージョンデータ５０２を送信する。リージョンデータ５０２が送信された後に限って、データ出力シーケンサ３１４は、先立つリージョンデータ５０２に同期化され、したがってこれに関係するグラフィックスデータ５０４を送信する。クライアント２０４は、対応するグラフィックスデータ５０４を受信しながら、リージョンデータ５０２を保管することができる。したがって、データ出力シーケンサ３１４は、リモーティングプロトコル３１２を使用して、データパケット（またはプロトコルデータユニット（ＰＤＵ））シーケンス５０６でリージョンデータ５０２およびグラフィックスデータ５０４をパケット化する。シーケンス５０６内の個々のパケットは、クライアント２０４にランダムに、順序はずれで到着することができるが、パケットは、通常、正しいデータパケットシーケンス５０６の再アセンブルのために、めいめいのヘッダ内にシーケンス番号を有する。したがって、リージョンデータ５０２が、実際にまずクライアント２０４によって受信されない場合に、クライアント２０４が、入ってくるパケットをバッファリングし、その結果、クライアントから見て、リージョンデータ５０２が、それに対応する同期化されたグラフィックスデータ５０４に先立ち、その表示を変更するようになるので、シーケンス５０６は再構成可能である。
【００４５】
ＲＤＰのバージョンに関して、本明細書の主題は、グラフィックスデータ５０４のパケット化の前に所与のリージョンデータ更新、タイムスライス、および／または反復についてリージョンデータ５０２をパケット化するＲＤＰ代替副ＰＤＵを作成する。最初のパケット５０８に、現在のリージョンデータ５０２のための容量が欠けている場合に、残りのリージョンデータ５０２を、次のパケット５１０で送信することができる。同様に、グラフィックスデータ５０４は、リージョンデータ５０２に続き、リージョンデータ５０２の現在のセットに関連する進行中の同期化されたグラフィックスデータ５０４の送信の必要に応じて複数のパケット（たとえば５１２個）を満たす。
【００４６】
リージョンデータ５０２が変化しない、すなわち、複数の連続するタイムスライスにまたがって変化しない場合に、リージョンデータ５０２がもう一度変化するまで、それに続くリージョンデータ５０２をクライアント２０４に送信する必要はなく、クライアント２０４に送信されるそれに続くグラフィックスデータ５０４は、単純に、最も最近に送信され、受信されたリージョンデータ５０２を参照する。
【００４７】
上で述べたように、リージョンデータ５０２には、通常、共有されるリージョンの形状ジオメトリならびに共有されるリージョンのデスクトップ配置位置の記述が含まれる。形状ジオメトリの記述は、共有されるリージョンの形状を近似する長方形のエンコードされたコレクションからなる（ピクセルディスプレイは、通常、長方形のコレクションとしてイメージを描く）。データ出力シーケンサ３１４は、共有されるリージョンの形状を記述するのに使用される最大個数の長方形を確立することができる。この最大個数を超えると、データ出力シーケンサ３１４は、帯域幅コンペンセータ３１６およびセキュリティロジック３１８を呼び出して、特にクライアントへの伝送帯域幅が制限されている場合に、セキュリティを危険にさらさずに、リージョンデータ５０２の量を減らす。たとえば、共有されるワードプロセッサアプリケーションウィンドウを、単一の単純な長方形によって記述することができる。共有されないアプリケーションからのメニューウィンドウが、共有されるワードプロセッサアプリケーションウィンドウの途中に（かつその上に）開かれる時に、リージョンデータ５０２によって記述されるワードプロセッサウィンドウ形状が、複雑なドーナツ型になる。この時に、単一の単純な長方形ではなく、複数の長方形が、ワードプロセッサウィンドウを記述するのに必要になり、より多くのリージョンデータ５０２が必要になる。共有されるウィンドウまたはリージョンは、非常に複雑になる可能性があり、大量のリージョンデータを必要とする可能性がある。たとえば、網目と羽を含む人気のあるムービースキンからなるウィンドウは、記述に約１００００個の長方形を必要とする。複雑な共有されるウィンドウ形状に起因する帯域幅制限の時間中に継続されるリモーティングのためのセキュアな解決策を、下で図６から図８に関してさらに説明する。
【００４８】
リージョンデータのデスクトップ配置位置コンポーネントは、通常は、共有されるリージョンの形状ジオメトリより少ない帯域幅を必要とする。ディスプレイスクリーンの原点（０，０）（たとえば、左上端のピクセルとしての（０，０））からの共有されるリージョンの左上端部分のオフセット座標によって、共有されるリージョンの位置を効果的に記述することができる。さらに、共有されるリージョンが単純な長方形である場合に、共有されるウィンドウの左上端と共有されるウィンドウの右下端を記述する２セットのオフセット座標によって、長方形の配置位置と形状ジオメトリの両方を効果的に記述することができる。
【００４９】
グラフィックスデータ５０４を同期化されたリージョンデータ５０２に先立たせる例示的技法を実施するシーケンス５０６を含む、データ出力シーケンサ３１４によって指定されるデータシーケンス（たとえば５０６）は、通常は、普通のリモーティングＰＤＵからなる普通のデータシーケンスよりかなり多い帯域幅を占めない。ＲＤＰは、実際に、それ自体のバルク圧縮エンジンを有する。リージョンデータ５０２に、形状ジオメトリを記述するために長方形ごとに割り当てられる６４ビットと、記述されるリージョンごとに割り当てられる３２ビットの追加ビットを含めることができる。したがって、あるリージョンが１つの長方形だけを有する場合に、９６ビットが必要であり、リージョンが２つの長方形を有する場合には、１６０ビットが必要である。長方形は規則的である傾向があるので、このタイプの長方形データを約５０％から約９０％のレートで非常に圧縮することができ、同期化されたリージョンデータ５０２および同期化されたグラフィックスデータ５０４をクライアントに送信するのに必要なビット数を減らすように適合可能とすることのできるエンコーディングアルゴリズムが、入手可能である。
【００５０】
ＲＤＰは、多数の先在するルールを有する。本明細書に記載の主題は、グラフィックスデータ５０４が、関連する同期化されたリージョンデータ５０２の前に送信されないことというルールを追加し、あるいは、一実施形態で、グラフィックスデータ５０４が、関連する同期化されたリージョンデータ５０２の前に送信される場合に、グラフィックスデータ５０４が、リージョンデータ５０２の前に処理されないこというルールを追加する。このルールは、マウスポインタ位置データ（リージョンデータ５０２に先立ってパケット化することができる）、会議コントロールデータ、サービス品質（ＱｏＳ）データなど、同期化されたリージョンデータ５０２と同期化されたグラフィックスデータ５０４の間のまたはこれらと散在する他のタイプの情報５１４を除外しない。これらの他のタイプの補助データは、同期化されたリージョンデータ５０２と後続の関連するグラフィックスデータ５０４の前、後、および／またはその間に散在させることができる。
【００５１】
要点を繰り返すと、例示的ＲＳＥ２１４は、リージョンデータ５０２およびグラフィックスデータ５０４の両方のデータを、データのシンクロニシティを失わずに、１つの接合点（ｊｕｎｃｔｉｏｎ  ｐｏｉｎｔ）に同期式に収集する。ウィンドウリージョンデータの収集にＷＮＤＯＢＪが使用されるかどうか、またはグラフィックスデータの収集にＷＩＮＤＯＷＳ（登録商標）グラフィクスディスプレイドライバが使用されるかどうかにかかわらず、例示的ＲＳＥ２１４がリージョンデータ５０２およびグラフィックスデータ５０４を同期化された形で収集する限り、本明細書の主題を実践することができる。上で述べたように、ＲＤＰプロトコルは、リージョンリモーティングを追加でき、したがって説明した主題を実践するのに使用可能であるのに十分に拡張可能な多数のグラフィックスリモーティングプロトコルの１つにすぎない。
【００５２】
一実施形態で、帯域幅コンペンセータ３１６は、データ出力シーケンサ３１４によって実行されるデータシーケンシングに影響力を働かせることができる。いくつかの情況で、データパケットをクライアント２０４に送信する帯域幅が、一時的に不十分になる場合がある。帯域幅コンペンセータ３１６は、いくつかの実施形態でセキュリティロジック３１８に基づいて、不十分な帯域幅をどのように扱うかを判断する。セキュリティロジック３１８には、さまざまなシナリオのセキュリティ対策および異なるセキュリティプロトコルが含まれる。
【００５３】
セキュリティ実施形態
例示的ＲＳＥ２１４は、多くのタイプのアプリケーションおよびシナリオで使用することができる。アプリケーションのタイプによって、低帯域幅の情況で使用される特定のセキュリティ対策を決定することができる。例示的ＲＳＥ２１４が、低帯域幅の条件でグラフィックスデータとリージョンデータのシンクロニシティをどのように維持するかは、アプリケーションと、所望のおよび／またはアプリケーションに適当なセキュリティのレベルに依存する。低帯域幅条件は、リージョンデータおよび／またはグラフィックスデータが、現状で使用可能な帯域幅より大きくなる時に生じる可能性がある。たとえば、リモートに共有されるワードプロセッサウィンドウは、通常は、移動しない長方形ウィンドウを維持するのに必要なリージョンデータより多くの、進行中のタイピングに起因する進行中のグラフィックスデータを有する。コンスタントに変化するアニメーションを有するリモートに共有されるインターネットブラウザウィンドウは、通常、リモートに共有されるウィンドウを記述するのに必要なリージョンデータを小さく見せるグラフィックスデータを有する。複雑なグラフィックスと複雑な形状の両方を有するアプリケーションは、同期化されたグラフィックスデータおよびリージョンデータのリモーティングを維持するのに必要な帯域幅を越える可能性がある。例示的ＲＳＥ２１４の３つ異なるタイプのアプリケーション環境６００、７００、および８００を、下で説明して、例示的ＲＳＥ２１４が低帯域幅条件に応答できる形を示す。
【００５４】
図６に、クライアント６０２がネットワーク６０８を介してリモーティングサーバ６０６にアクセスするためにログオン信任証６０４を使用するリモートアプリケーション共有環境６００を示す。この環境６００では、ウィンドウリモーティングまたはリージョンリモーティングに必要な同期化されたリージョンデータおよびグラフィカルデータのすべてを送信するのに十分なネットワーク容量がないか、他の内部的な割当を超え、帯域幅制限が引き起こされる、低帯域幅状況が生じる可能性がある。低帯域幅は、共有されるウィンドウの形状が、使用可能な帯域幅を使用するリージョンデータで記述するのに複雑すぎる（たとえば、長方形が多すぎる）ようになったので発生する可能性がある。
【００５５】
データ出力シーケンサ３１４が、帯域幅制限に起因して同期化されたリージョンデータおよび後続の関連するグラフィックスデータのすべての送信をもはや継続できなくなった時に、リモートアプリケーション共有環境６００に関連するセキュリティロジック３１８が、帯域幅コンペンセータ３１６に、データを送信している形を変更するか、データ自体を変更するように知らせることができる。
【００５６】
１つのシナリオで、データ出力シーケンサ３１４は、帯域幅制限がなかったかのように、しかしゆっくりと、リージョンデータおよびグラフィックスデータを送信する。セキュリティロジック３１８に含まれるこのタイプの解決策は、少なくとも一時的に、帯域幅が増えるか、「１回だけの」複雑なリージョンデータが受信され、その後比較的変化しなくなる（複雑な形のウィンドウが画面上で移動しなくなる）まで、共有されるウィンドウのクライアントの表示をハングまたはフリーズさせる可能性がある。
【００５７】
例のリモートアプリケーション共有環境６００に関する代替解決策に、リージョンリモーティングを放棄し、少なくとも一時的にデスクトップリモーティングに切り替えることが含まれる。デスクトップリモーティングは、リモートアプリケーション共有環境６００で意図されたものより多くの情報をクライアント６０２に表示するが、クライアント６０２が、ログオン信任証６０４に起因してセッション６１０を「所有」し、リージョンリモーティングがワークフローを改善するために行われているので、クライアントが見るクリアランスを有する情報の限られたユニバースのより大きいサブセットをクライアント６０２で示す際に、セキュリティリークはない。したがって、リモートアプリケーション共有環境６００でリージョンリモーティングを実行するのに不十分な帯域幅に直面した時に、帯域幅コンペンセータ３１６は、デスクトップリモーティングに切り替えることができ、これによって、リージョンデータと同期化の必要とを一時的に放棄する。
【００５８】
図７に、第１クライアント７０２、第２クライアント７０４、…、および「第ｎ」クライアント７０６などの複数のクライアントが、ネットワーク７０８を介して、例示的ＲＳＥ２１４を含むリモーティングサーバ７１０と通信的に結合される、マルチパーティ会議環境または「コラボレーション」環境７００を示す。リージョンリモーティングは、たとえば、「会議ノートのみを表示」オプションが選択された時に、サーバのデスクトップのサブセットを各クライアントで同時に表示する。各クライアントは、入力を送信して、共有されるウィンドウ７１４またはリージョンに影響することができる。たとえば、第１クライアント７０２が、自分のディスプレイキャンバスでマウスを使用して共有されるウィンドウ７１４をドラッグする場合に、ウィンドウ７１４は、他のすべてのクライアントのディスプレイスクリーンでもドラッグされる。同様に、「第ｎ」クライアント７０６が、共有されるウィンドウ７１４またはリージョンでボタンをクリックする場合に、そのボタンがクリックされることによってサーバで行われるアクションが、すべてのクライアント７０２、７０４、…、７０６に影響する。
【００５９】
このコラボレーション環境７００では、どのクライアントもセッションを所有しない。したがって、共有されるウィンドウ７１４またはリージョン以外のものをクライアントに示すことは、セキュリティリスクである（図１に図示）。普通のシステムでは、クライアントの１つが、サーバデスクトップで、共有されない別のアプリケーションウィンドウをまたいで、共有されるウィンドウ７１４をうっかり移動する時に、リージョンデータとグラフィックスデータの間の同期化がないので、共有されないウィンドウがちらりと見えることが、しばしば、クライアントのそれぞれのディスプレイスクリーンで短時間だけ可視になる。
【００６０】
たとえばリージョンデータが、共有されるウィンドウ７１４またはリージョンの普通でない形状に起因して複雑になりすぎた時、またはネットワークのサービスの品質がぐらつく時など、比較的低帯域幅の条件で、帯域幅コンペンセータ３１６は、データ出力シーケンサ３１４が、コラボレーション環境７００でリージョンデータおよびグラフィックスデータの送信をどのように継続しなければならないかを判断することができる。クライアントは、サーバデスクトップ全体を見るクリアランスを有しない場合があるので、リージョンデータを減らすためにデスクトップリモーティングに切り替えることは、コラボレーション環境７００でのセキュリティロジック３１８のオプションに含まれない。例示的ＲＳＥ２１４が、帯域幅制約内でリージョンデータを大きく減らす共有されるリージョンのサブセットを示すことができる場合に、この解決策を、セキュリティロジック３１８からのオプションとして選択することができる。その場合に、ＲＳＥ２１４のディスプレイドライバ３０８は、複雑すぎる共有されるリージョン７１４内で、より小さいリージョン７１６を、単純な長方形などの単純な形状に内接させる。これによって、新しい内接する形状を記述するのに必要な長方形の数がより少ない場合に、リージョンデータの量を大きく減らすことができるが、共有されるリージョンの一部がクリッピングされる可能性もある。たとえば、テキストおよびイメージならびにクリック可能なアイコンおよびボタンと、プルダウンメニューと、スクロールバーとの一部が、より小さいリージョン７１６を表示する時に可視性からクリッピングされる場合がある。これは、一時的と期待される望ましくない動作の不便（可用性の問題）をもたらすが、サーバデスクトップの許可されない部分がクライアント７０２、７０４、…、７０６に表示されないことを例示的ＲＳＥ２１４が信頼性のある形で保証するので、セキュリティは維持されている。
【００６１】
図８に、リモーティングサーバに含まれるかマルチメディアハブ８０２に関連する例示的ＲＳＥ２１４が、クライアント８０８での表示のためにメディアストリーム８０４を送信する（たとえばマルチメディアストレージ８０６から）のに使用される、マルチメディア環境８００を示す。この場合に、クライアント８０８は、クライアントディスプレイ８１０を駆動する、コンピューティングデバイスまたはテレビジョンセットトップボックスとすることができる。１つのシナリオで、メディアストリーム８０４自体を、帯域外チャネルで、ＲＤＰなどのリモーティングプロトコル３１２の外で、ターミナルサービスプロトコルの外でなどで送信することができる。
【００６２】
このタイプの応用例で、例示的ＲＳＥ２１４は、クライアント８０８がメディアストリーム８０４をデコードし、使用中のリモーティングプロトコル３１２および／またはターミナルサービスプロトコルの「上」でそれを再生する形を提供する、すなわち、メディアストリーム８０４は、リモーティングプロトコル３１２および／またはターミナルサービスプロトコルを使用しているクライアント８０８で再生されるが、メディアストリーム８０４自体は、リモーティングプロトコル３１２および／またはターミナルサービスプロトコルによって送信されてはいない。例示的ＲＳＥ２１４は、メディアストリーム８０４を再生するためにウィンドウ８１２またはリージョンの形状およびクライアントデスクトップ配置位置のリージョンデータを管理し、これによって、たとえば帯域外チャネルから到着するメディアストリーム８０４を描画する場所についてクライアント８０８に知らせる。
【００６３】
たとえば、ウィンドウ８１２の複雑な形状によってリージョンデータ増えることによって引き起こされる、マルチメディア環境８００での低帯域幅シナリオに応答して、セキュリティロジック３１８に、メディアストリームディスプレイウィンドウ８１２に関するより単純な形状を選択する、帯域幅コンペンセータ３１６の対策を含めることができる。より単純な形状によって、リージョンデータの量が減る。この場合に、マルチメディア環境８００でセキュリティが、大して危険でない（たとえば、マルチメディア環境８００が、単に家庭のマルチメディアネットワークである場合）と仮定すると、例示的ＲＳＥ２１４は、記述に多すぎるリージョンデータを必要とする元の複雑なウィンドウ８１２に、元のウィンドウ８１２より大きい、新規のより単純なウィンドウ８１４を外接させることができる。新規のより大きいウィンドウ８１４は、秘密情報を含む可能性があるサーバデスクトップのより大きい部分ではなく、単に、メディアストリーム８０４の拡大された版がそれを介して示される広げられたビューポートである、すなわち、メディアストリーム８０４の可視「フットプリント」が、より大きいウィンドウに合わせてサイズを変更される。このより大きいウィンドウ８１４は、複雑なウィンドウ形状の問題を解決するために元のウィンドウ８１２より小さいウィンドウが選択された場合に発生するメディアコンテンツの切り捨て（たとえば、映画の一部を失うこと）を防ぐ。しかし、より大きいウィンドウ８１４は、メディアストリーム８０４を制御するためのユーザインターフェース８１６のオンスクリーンコントロールの一部を切り捨てるか、完全に隠す可能性がある。これは、クライアントのディスプレイキャンバスの一部がより大きいメディアストリームウィンドウによって覆われるので、望ましくない動作の不便さをもたらすが、低帯域幅状況のこの解決策は、一時的と期待される可能な可用性問題だけをもたらす。マルチメディア環境８００内のセキュリティは、低帯域幅に関する適用されるセキュリティ対策によって危険にさらされていない。
【００６４】
例示的方法
図９に、グラフィックスリモーティングシステムでリージョンデータとグラフィックスデータを同期化する例示的方法９００を示す。例示的方法９００は、図２および３の例示的ＲＳＥ２１４などのデバイスによって実行することができる。この流れ図では、動作が、個々のブロックに要約されている。この動作は、ハードウェアでおよび／またはプロセッサによって実行できる機械読み取り可能な命令（ソフトウェアまたはファームウェア）として実行することができる。
【００６５】
ブロック９０２で、サーバデスクトップのリージョンをクライアントディスプレイでリモートに表示するためのリージョンデータを、同期式に収集する。リージョンデータは、サーバデスクトップでのリージョンの形状および位置などのリージョンジオメトリおよび／またはリージョンがクライアントのデスクトップで占める位置を記述することができる。
【００６６】
ブロック９０４で、リージョンのグラフィックスデータを同期式に収集する。グラフィックスデータは、リージョンがクライアントで実行される時にリージョン内に表示されるビジュアルコンテンツを記述する。あるいは、別の観点から、リージョンデータは、グラフィックスデータを、リージョンデータによって指定されるジオメトリ（形状および位置）にクリッピングする。
【００６７】
ブロック９０６で、リージョンデータおよびグラフィックスデータを、リージョンデータとグラフィックスデータの間のシンクロニシティを維持しながら、クライアントに送信する。シンクロニシティの維持に、リージョンデータおよびグラフィックスデータのそれぞれを表す異なるデータストリームの処理での遅延の追加を避けること；同期化されたデータを送信するのにリモートティングプロトコルを正しく使用すること；クライアントがグラフィックスデータを関連するリージョンデータに関係させられるように、所与の量のリージョンデータを関連するグラフィックスデータと共にシーケンシングすることなどを含めることができる。
【００６８】
図１０に、低帯域幅、たとえばサーバ２０２とクライアント２０４の間の一時的低帯域幅の条件中にグラフィックスリモーティングシステムのためにリージョンデータおよびグラフィックスデータを同期させてプライベート情報のセキュリティを維持する例示的方法１０００を示す。例示的方法１０００は、図２および図３に示された例示的ＲＳＥ２１４などのデバイスによって実行することができる。この流れ図では、動作が、個々のブロックに要約されている。この動作は、ハードウェアでおよび／またはプロセッサによって実行できる機械読み取り可能な命令（ソフトウェアまたはファームウェア）として実行することができる。
【００６９】
ブロック１００２で、リージョンデータおよびグラフィックスデータを同期して収集する。
【００７０】
ブロック１００４で、例示的方法１０００は、たとえばリモーティングプロトコル３１２によって指定される時間制約の中で、同期化されたリージョンデータおよびグラフィックスデータを送信するのに十分な帯域幅があるかどうかを問い合わせる。十分な帯域幅がない場合には、例示的方法１０００は、ブロック１００６に分岐する。十分な帯域幅がある場合には、例示的方法１０００は、ブロック１００８に分岐する。
【００７１】
ブロック１００６では、同期化されたリージョンデータおよび同期化されたグラフィックスデータをクライアントに送信する。
【００７２】
ブロック１００８では、例示的方法１０００が、クライアントがセッション全体を所有するかどうかを問い合わせる。クライアントがセッション全体を所有する場合には、例示的方法はブロック１０１０に分岐する。クライアントがセッション全体を所有しない場合には、例示的方法はブロック１０１２に分岐する。
【００７３】
ブロック１０１０では、サーバデスクトップ全体のグラフィックスデータをクライアントに送信するが、リージョンデータは送信しない。
【００７４】
ブロック１０１２で、例示的方法１０００は、共有されるリージョンのビジュアルコンテンツを切り捨てることができるかどうかを問い合わせる。共有されるリージョンのビジュアルコンテンツを切り捨てることができる場合には、例示的方法１０００はブロック１０１４および１０１６に分岐する。共有されるリージョンのビジュアルコンテンツを切り捨てることができない場合には、例示的方法１０００はブロック１０１８、１０２０、および１０２２に分岐する。
【００７５】
ブロック１０１４では、元の共有されるリージョン内に内接するより単純でより小さい新しい共有されるリージョンを選択する。
【００７６】
ブロック１０１６で、新規リージョンの同期化されたリージョンデータおよび同期化されたグラフィックスデータをクライアントに送信する。
【００７７】
その一方で、ブロック１０１８では、元の共有されるリージョンに外接するより単純でより大きい新しい共有されるリージョンを選択する。
【００７８】
ブロック１０２０で、新規リージョンの同期化されたリージョンデータおよび同期化されたグラフィックスデータをクライアントに送信する。
【００７９】
ブロック１０２２で、元の共有されたリージョンのビジュアルコンテンツのサイズを、新規のより大きい共有されるリージョンに合わせて変更することができる。しかし、サーバデスクトップグラフィックスは、新規のより大きいウィンドウのうちで、元の共有されたリージョンの外にある部分を満たすのに使用されない。というのは、これによって、例示的方法１０００のセキュリティ機能が無効にされる可能性があるからである。ブロック１０１８、１０２０、および１０２２によって提供されるオプションは、グラフィックスデータが、ディジタルストリームからのマルチメディアストリームなど、サーバの外部のソースからのものである時に有用である。
【００８０】
例示的コンピューティングデバイス
図１１に、たとえば例示的ＲＳＥ２１４をホスティングするリモートサーバサーバ２０２としてまたはクライアント２０４として、本明細書の主題の態様を実践する環境として適する例示的コンピューティングデバイス１１００を示す。コンピューティングデバイス１１００のコンポーネントに、処理ユニット１１２０、システムメモリ１１３０、およびシステムメモリ１１３０を含むさまざまなシステムコンポーネントを処理ユニット１１２０に結合するシステムバス１１２１を含めることができるが、これに制限はされない。システムバス１１２１は、メモリバス、メモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。制限ではなく例として、そのようなアーキテクチャに、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびメザニンバスとも称するＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスが含まれる。
【００８１】
例示的コンピューティングデバイス１１００に、通常は、さまざまなコンピューティングデバイス読み取り可能な媒体が含まれる。コンピューティングデバイス読み取り可能な媒体は、コンピューティングデバイス１１００によってアクセスできるすべての使用可能な媒体とすることができ、揮発性媒体および不揮発性媒体、取り外し可能媒体および固定媒体の両方が含まれる。制限ではなく例として、コンピューティングデバイス読み取り可能な媒体に、コンピューティングデバイス記憶媒体および通信媒体を含めることができる。コンピューティングデバイス記憶媒体に、コンピューティングデバイス読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージのための任意の方法またはテクノロジで実施される、揮発性および不揮発性の、取り外し可能および固定の媒体が含まれる。コンピューティングデバイス記憶媒体に、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリテクノロジ、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは、所望の情報を保管するのに使用でき、コンピューティングデバイス１１００によってアクセスできる他のすべての媒体が含まれるが、これに制限はされない。通信媒体は、通常は、搬送波または他のトランスポートメカニズムなどの変調されたデータ信号中にコンピューティングデバイス読み取り可能な命令、データ構造、プログラムモジュール、または他のデータを具現化し、すべての情報伝達媒体が含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードする形でその特性の１つまたは複数を設定または変更された信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せも、コンピューティングデバイス読み取り可能な媒体の範囲に含まれなければならない。
【００８２】
システムメモリ１１３０には、読取専用メモリ（ＲＯＭ）１１３１およびランダムアクセスメモリ（ＲＡＭ）１１３２などの、揮発性および／または不揮発性メモリの形のコンピューティングデバイス記憶媒体が含まれる。スタートアップ中などにコンピューティングデバイス１１００内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム１１３３（ＢＩＯＳ）が、通常はＲＯＭ１１３１に保管される。ＲＡＭ１１３２には、通常は、処理ユニット１１２０によって即座にアクセス可能および／または処理ユニット１１２０によって現在操作されつつあるデータおよび／またはプログラムモジュールが含まれる。制限ではなく例として、図１１に、オペレーティングシステム１１３４、アプリケーションプログラム１１３５、他のプログラムモジュール１１３６、およびプログラムデータ１１３７を示す。例示的ＲＳＥ２１４は、ランダムアクセスメモリ１１３２内のソフトウェアとして図示されているが、例示的ＲＳＥ２１４の他の実施形態を、ハードウェアまたはソフトウェアとハードウェアの組合せとすることができる。
【００８３】
例示的コンピューティングデバイス１１００に、他の取り外し可能／固定の、揮発性／不揮発性のコンピューティングデバイス記憶媒体も含めることができる。例としてのみ、図１１に、固定の不揮発性磁気媒体から読み取るかこれに書き込むハードディスクドライブ１１４１、取り外し可能不揮発性磁気ディスク１１５２から読み取るかこれに書き込む磁気ディスクドライブ１１５１、およびＣＤ  ＲＯＭまたは多の光媒体などの取り外し可能不揮発性光ディスク１１５６から読み取るかこれに書き込む光ディスクドライブ１１５５を示す。この例示的オペレーティング環境で使用することができる他の取り外し可能／固定、揮発性／不揮発性コンピューティングデバイス記憶媒体に、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、および類似物が含まれるが、これに制限はされない。ハードディスクドライブ１１４１は、通常は、インターフェース１１４０などの固定メモリインターフェースを介してシステムバス１１２１に接続され、磁気ディスクドライブ１１５１および光ディスクドライブ１１５５は、通常は、インターフェース１１５０などの取り外し可能メモリインターフェースを介してシステムバス１１２１に接続される。
【００８４】
上で説明し、図１１に示したドライブおよびそれに関連するコンピューティングデバイス記憶媒体は、コンピューティングデバイス１１００のコンピューティングデバイス読み取り可能な命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図１１では、たとえば、ハードディスクドライブ１１４１が、オペレーティングシステム１１４４、アプリケーションプログラム１１４５、他のプログラムモジュール１１４６、およびプログラムデータ１１４７を保管するものとして示されている。これらのコンポーネントを、オペレーティングシステム１１３４、アプリケーションプログラム１１３５、他のプログラムモジュール１１３６、およびプログラムデータ１１３７と同一または異なるもののいずれかとすることができることに留意されたい。オペレーティングシステム１１４４、アプリケーションプログラム１１４５、他のプログラムモジュール１１４６、およびプログラムデータ１１４７は、最低限でもこれらが異なるコピーであることを示すために、本明細書では異なる符号を与えられている。ユーザは、キーボード１１４８および、一般にマウス、トラックボール、またはタッチパッドと称するポインティングデバイス１１６１などの入力デバイスを介して、例示的コンピューティングデバイス１１００にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、または類似物を含めることができる。これらおよび他の入力デバイスは、しばしば、システムバスに結合されるユーザ入力インターフェース１１６０を介して処理ユニット１１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することができる。モニタ１１６２または他のタイプのディスプレイデバイスも、ビデオインターフェース１１９０などのインターフェースを介してシステムバス１１２１に接続される。モニタ１１６２の他に、コンピューティングデバイスに、スピーカ１１９７およびプリンタ１１９６など、出力周辺インターフェース１１９５を介して接続することができる、他の周辺出力デバイスも含めることができる。
【００８５】
例示的コンピューティングデバイス１１００は、リモートコンピューティングデバイス１１８０などの１つまたは複数のリモートコンピューティングデバイスへの論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピューティングデバイス１１８０は、パーソナルコンピューティングデバイス、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、通常は、コンピューティングデバイス１１００に関して上で説明した要素の多数またはすべてが含まれるが、図１１にはメモリストレージデバイス１１８１だけを示した。図１１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１１７１および広域ネットワーク（ＷＡＮ）１１７３が含まれるが、他のネットワークも含めることができる。そのようなネットワーキング環境は、オフィス、会社全体のコンピューティングデバイスネットワーク、イントラネット、およびインターネットで平凡なものである。
【００８６】
ＬＡＮネットワーキング環境で使用される時に、例示的コンピューティングデバイス１１００は、ネットワークインターフェースまたはネットワークアダプタ１１７０を介してＬＡＮ  １１７１に接続される。ＷＡＮネットワーキング環境で使用される時に、例示的コンピューティングデバイス１１００に、インターネットなどのＷＡＮ  １１７３を介する通信を確立する、モデム１１７２または他の手段が含まれる。モデム１１７２は、内蔵または外付けとすることができるが、ユーザ入力インターフェース１１６０または他の適当なメカニズムを介してシステムバス１１２１に接続することができる。ネットワーク化された環境では、例示的コンピューティングデバイス１１００に関して示したプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに保管することができる。制限ではなく例として、図１１に、メモリデバイス１１８１に常駐するリモートアプリケーションプログラム１１８５を示す。図示のネットワーク接続が例示的であり、コンピューティングデバイスの間の通信リンクを確立する他の手段を使用できることを理解されたい。
【００８７】
結論
上に記載の主題を、ハードウェアで、ソフトウェアで、またはハードウェアおよびソフトウェアの両方で、実施できることに留意されたい。ある実施形態で、例示的システム、エンジン、および関連する方法を、テレビジョンセットトップボックスによっておよび／またはコンピューティングデバイスによって実行される、プログラムモジュールなどのコンピューティングデバイス実行可能命令の全般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。上に記載の主題は、通信ネットワークを介してリンクされたリモート処理デバイスによって無線通信を介してタスクが実行される分散通信環境で実践することもできる。無線ネットワークでは、プログラムモジュールを、メモリストレージデバイスを含むローカルとリモートの両方の通信デバイス記憶媒体に配置することができる。
【００８８】
前述の議論で、グラフィックスリモーティングシステムのリージョンデータおよびグラフィックスデータを同期化する例示的システムおよび方法を説明した。本明細書の主題を、構造的特徴および／または方法論的動作に固有の言葉で説明したが、請求項で定義される主題が、必ずしも説明された特定の特徴または動作に制限されないことを理解されたい。そうではなく、特定の特徴および動作は、請求項を実施する例示的形として開示されたものである。
【図面の簡単な説明】
【００８９】
【図１】従来のグラフィックスリモーティングシステムで発生する従来の問題を示すグラフィック表現である。
【図２】リージョンデータとグラフィックスデータが同期化される例示的グラフィックスリモーティングシステムを示すブロック図である。
【図３】例示的リモーティング同期化エンジン（ＲＳＥ）を示すブロック図である。
【図４】例示的同期化リモーティングの共有リージョンの確立の例示的代替技法を示すグラフィック表現である。
【図５】例示的データストリーム構造を示すグラフィック表現である。
【図６】低帯域幅条件中にクライアントがログオンセッションを所有し、セキュリティが維持される、例示的リモートアプリケーション共有システムを示すブロック図である。
【図７】低帯域幅条件中にセキュリティが維持される、例示的コラボレーションリモーティングシステムを示すブロック図である。
【図８】低帯域幅条件中にセキュリティが維持される、例示的マルチメディアリモーティングシステムを示すブロック図である。
【図９】グラフィックスリモーティングシステムでリージョンデータとグラフィックスデータを同期化する例示的方法を示す流れ図である。
【図１０】リージョンデータとグラフィックスデータが同期化される例示的グラフィックスリモーティングシステムで低帯域幅条件中にセキュリティを維持する例示的方法を示す流れ図である。
【図１１】本明細書の主題の一部の態様を実践するのに適する例示的コンピューティングデバイスを示すブロック図である。
【図１】
2007509408.tif 000004
【図２】
2007509408.tif 000005
【図３】
2007509408.tif 000006
【図４】
2007509408.tif 000007
【図５】
2007509408.tif 000008
【図６】
2007509408.tif 000009
【図７】
2007509408.tif 000010
【図８】
2007509408.tif 000011
【図９】
2007509408.tif 000012
【図１０】
2007509408.tif 000013
【図１１】
2007509408.tif 000014
【国際調査報告】
2007509408.tif 000015