(57)【要約】【課題】機能豊富なグラフィカル・コンテンツの遠隔送信時に帯域幅を削減すること。【解決手段】クライアント・コンピュータ（ＣＰと略す）への接続時に、第一のより高レベルのグラフィクス命令（Ｇ命令と略す）を第一のアプリケーション・プログラム（ＡＰと略す）から生成して、グラフィクス・ストリームを多重化し、その後に分離する。第一のＡＰを表す第一の識別子を第一のより高レベルのＧ命令に関連付け、第二のより高レベルのＧ命令は第二のＡＰから生成され、第二のＡＰを表す第二の識別子を第二のＧ命令に関連付ける。第一と第二のＧ命令はＣＰに送信される。この結果、サーバ・コンピュータは、ＣＰからの１つ又は複数のＡＰへのアクセスを可能にする。サーバは、ＡＰの１つからより高レベルのＧ命令を抽出する合成器と、ＣＰがグラフィクスの生成に使用するために抽出したＧ命令をパッケージするリモート・ディスプレイ・ドライバ、を備える。【選択図】図８
2006190255.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境における方法において、
クライアント・コンピュータに接続すること、
第一のアプリケーション・プログラムから第一のより高レベルのグラフィクス命令を生成すること、
前記第一のアプリケーション・プログラムを表す第一の識別子を、前記第一のより高レベルのグラフィクス命令に関連付けること、
第二のアプリケーション・プログラムから第二のより高レベルのグラフィクス命令を生成すること、
前記第二のアプリケーション・プログラムを表す第二の識別子を、前記第二のより高レベルのグラフィクス命令に関連付けること、および
前記第一のより高レベルのグラフィクス命令と前記第二のより高レベルのグラフィクス命令を前記クライアント・コンピュータに送信すること
を備えることを特徴とする方法。
【請求項２】
前記第一のより高レベルのグラフィクス命令と前記第二のより高レベルのグラフィクス命令を前記クライアント・コンピュータで受信すること、および
前記第一と第二の識別子に基づき、前記第二のより高レベルのグラフィクス・コマンドから前記第一のより高レベルの生成グラフィクスを分離すること
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記第一のアプリケーション・プログラムから前記第一のより高レベルのグラフィクス命令を生成することは、専用スレッドを使用することを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記第一のより高レベルのグラフィクス命令を前記クライアント・コンピュータに送信することは、前記第一のアプリケーション・プログラムの既存のグラフィクス表現を変更するのに使用される高レベルのアップデート情報を送信することを備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記第一のより高レベルのグラフィクス・コマンドで前記第一のアプリケーション・プログラムをアップデートすること、および
前記第二のより高レベルのグラフィクス・コマンドで前記第二のアプリケーション・プログラムをアップデートすること
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記第一のより高レベルのグラフィクス命令に関連付けられた前記識別子は、接続識別子、チャネル・ハンドルおよびリソース・ハンドルのうちの少なくともひとつに対応することを特徴とする請求項１に記載の方法。
【請求項７】
コンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記命令は実行されると、
クライアント・コンピュータで、第一のアプリケーション・プログラムに関連付けられ、前記第一のアプリケーション・プログラムに対応する識別子と関連付けられた第一のより高レベルのグラフィクス命令と、第二のアプリケーション・プログラムに関連付けられた第二のより高レベルのグラフィクス命令からなるストリームを受信すること、
前記第一のより高レベルのグラフィクス・コマンドを処理し、前記第一のアプリケーション・プログラムに対応する前記クライアント・コンピュータ上の第一のユーザ・インターフェースをアップデートすること、および
前記第二のより高レベルのグラフィクス・コマンドを処理し、前記第二のアプリケーション・プログラムに対応する前記クライアント上の第二のユーザ・インターフェースをアップデートすること
を備える各ステップを遂行することを特徴とするコンピュータ読取可能媒体。
【請求項８】
前記第一のより高レベルのグラフィクス・コマンドを処理することは、前記第一の識別子に基づいて前記第二のより高レベルのグラフィクス・コマンドから前記第一のより高レベルの生成グラフィクスを分離することを備えることを特徴とする請求項６に記載のコンピュータ読取可能媒体。
【請求項９】
前記第一のより高レベルのグラフィクス命令に関連付けられた前記識別子は、接続識別子、チャネル・ハンドルおよびリソース・ハンドルのうちの少なくともひとつに対応することを特徴とする請求項６に記載のコンピュータ読取可能媒体。
【請求項１０】
前記第一のユーザ・インターフェースをアップデートする前記第一のより高レベルのグラフィクス・コマンドを処理することは、前記第一のユーザ・インターフェースに対応する保持モードのレンダリング木構造を変更するコマンドの少なくともいくつかを使用することを備えることを特徴とする請求項６に記載のコンピュータ読取可能媒体。
【請求項１１】
前記第二のより高レベルのグラフィクス命令は、前記第二のアプリケーション・プログラムに対応する第二の識別子に関連付けられ、さらに、前記クライアント・コンピュータで、第三のアプリケーション・プログラムに関連付けられた第三のより高レベルのグラフィクス命令を備えるストリームを受信することを備えるコンピュータ実行可能命令を、さらに有することを特徴とする請求項６に記載のコンピュータ読取可能媒体。
【請求項１２】
クライアント・コンピュータによってアクセスされるひとつまたは複数のアプリケーション・プログラムと、
前記アプリケーション・プログラムのひとつから、より高レベルのグラフィクス・コマンドを抽象化する合成器と、
グラフィクスを生成する前記クライアント・コンピュータによる使用のために、前記より高レベルのグラフィクス・コマンドをパッケージするリモート・ディスプレイ・ドライバと
を備えることを特徴とするサーバ・コンピュータ。
【請求項１３】
プレアプリケーション（pre-application）識別子を、前記アプリケーション・プログラムのひとつに対応する、より高レベルのグラフィクス・コマンドの各集合に関連付けるための手段をさらに備えることを特徴とする請求項１２に記載のサーバ・コンピュータ。
【請求項１４】
前記リモート・ディスプレイ・ドライバは、少なくともひとつの伝送パイプに統合するためにシリアライズされたパケットにタグ付けすることにより、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項１２に記載のサーバ・コンピュータ。
【請求項１５】
前記リモート・ディスプレイ・ドライバは、物理的境界を越えて伝送するために、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項１２に記載のサーバ・コンピュータ。
【請求項１６】
前記リモート・ディスプレイ・ドライバは、マシンの境界を越えて伝送するために、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項１２に記載のサーバ・コンピュータ。
【請求項１７】
前記リモート・ディスプレイ・ドライバは、プロセスの境界を越えて伝送するために、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項１２に記載のサーバ・コンピュータ。
【請求項１８】
前記サーバでローカル的にグラフィクスをレンダリングする手段をさらに備えることを特徴とする請求項１２に記載のサーバ・コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント・コンピュータとの接続時に、第一のアプリケーション・プログラムから第一のより高レベルのグラフィクス命令を生成することを含み、グラフィクス・ストリームを多重化すること（multiplexing）、および分離すること（de-multiplexing）に関する。
【背景技術】
【０００２】
サーバ・コンピュータは、リモート・コンピュータに代表されるクライアント・マシンによってアクセスされるアプリケーション・プログラムを、そのホストとして動作させることができる。このような技術の一例は、ターミナル・サービス・プラットフォームであり、たとえばＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎのＷｉｎｄｏｗｓ（登録商標）サーバベース・オペレーティング・システムが挙げられ、このシステムでは、アプリケーション・プログラムが、中央のサーバ上で実行され、その間、そのプログラムに対応するユーザ・インターフェースがクライアント・マシン上に提示される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のような構成におけるアプリケーション・プログラムのユーザ・インターフェースには、複雑なグラフィクスが含まれることがある。しかしながら、サーバからクライアント・マシンへの機能豊富（rich）なグラフィカル・コンテンツの遠隔送信は、大量の帯域幅を消費することがある。消費される帯域幅の量を削減するひとつの方法は、レンダリングされたインスタンスを送るのではなく、送信媒体を通じてグラフィクスの高レベルの記述を送る方法である。たとえば、ビットマップの代わりに、ベクトル描画プリミティブ（ベクトル・ドローイング・プリミティブズ: vector drawing primitives）を送ってもよい。しかしながら、ベクトル描画プリミティブを送るメカニズムを用いても、複雑なグラフィクスのためのベクトル描画プリミティブを伝送するのに依然として大量の帯域幅が必要となることが多い。
【課題を解決するための手段】
【０００４】
第一のアプリケーション・プログラムを表す第一の識別子が、第一のより高レベルのグラフィクス命令に関連付けられる。第二のより高レベルのグラフィクス命令が、第二のアプリケーション・プログラムから、第二のより高レベルのグラフィクス命令に関連付けられた第二のアプリケーション・プログラムを表す第二の識別子と共に生成される。第一のより高レベルのグラフィクス命令と第二のより高レベルのグラフィクス命令は、クライアント・コンピュータに送られる。
【０００５】
サーバ・コンピュータは、ひとつまたは複数のアプリケーション・プログラムがクライアント・コンピュータによってアクセスされるのを可能とする。このサーバは、アプリケーション・プログラムのひとつからのより高レベルのグラフィクス・コマンドを抽出する合成器と、グラフィクスを生成するクライアント・コンピュータの使用を目的に、より高レベルのグラフィクス・コマンドをパッケージするリモート・ディスプレイ・ドライバを備える。
【０００６】
その他の利点は、図面と共に以下の詳細な説明を読むことによって明らかとなる。
【０００７】
本発明は、それだけで制限されないが、添付の図面を使用して説明され、図中、同様の要素には同様の参照番号が付与されている。
【発明を実施するための最良の形態】
【０００８】
オペレーティング環境の例  
図１は、本発明を実装できる、適当なコンピューティング・システム環境１００の例を示す。コンピューティング・システム環境１００は適当なコンピューティング環境の一例にすぎず、本発明の使用または機能性の範囲に関し、いかなる限定も示唆するものではない。また、コンピューティング環境１００には、オペレーティング環境の一例である１００に示されているコンポーネントのひとつまたはいくつかの組合せに関する依存性または必要性がある、とも解釈されるべきではない。
【０００９】
本発明は、多数の他の汎用または特定用途コンピューティング・システム環境または構成でも運用できる。本発明との使用に適した周知のコンピューティング・システム、環境および／または構成の例には、これらに限定されないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドもしくはラップトップ・デバイス、タブレット・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベース・システム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムまたはデバイスのいずれかを含む分散型コンピューティング環境等がある。
【００１０】
本発明は、コンピュータにより実行される、プログラム・モジュール等のコンピュータ実行可能命令の一般的文脈において説明することができる。一般に、プログラム・モジュールには、特定の作業を実行し、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ・ストラクチャ等がある。本発明はまた、通信ネットワークを通じて連結された遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境においても実践できる。分散型コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよび／またはリモート・コンピュータ記憶媒体に置くこともできる。
【００１１】
図１において、本発明を実装するためのシステムの一例には、コンピュータ１１０の形での汎用コンピューティング・デバイスが含まれる。コンピュータ１１０のコンポーネントとしては、これに限定されないが、処理ユニット１２０、システム・メモリ１３０と、システム・メモリを処理ユニット１２０に接続する等、各種のシステム・コンポーネントを連結するシステム・バス１２１がある。システム・バス１２１は、メモリ・バスもしくはメモリ・コントローラ、周辺バス、各種のバス・アーキテクチャのいずれかを用いるローカル・バスを含めたさまざまなバス・ストラクチャのいずれでもよい。たとえば、これに限定されないが、このようなアーキテクチャには、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、メザニン・バスとも呼ばれるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス等がある。
【００１２】
コンピュータ１１０は通常、さまざまなコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータ１１０によってアクセスできる、入手可能などのような媒体でもよく、揮発性および不揮発性媒体や取り外し可能および取り外し不能媒体のすべてがこれに含まれる。たとえば、これに限定されないが、コンピュータ読取可能媒体はコンピュータ記憶媒体と通信媒体であってもよい。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ・ストラクチャ、プログラム・モジュールその他のデータ等の情報を記憶するためのいずれかの方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不能媒体が含まれる。コンピュータ記憶媒体には、これに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）もしくはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置その他の磁気記憶デバイス、あるいは所望の情報を記憶するのに使用でき、コンピュータ１１０によってアクセスされる上記以外の媒体がある。通信媒体は、一般に、搬送波その他の送信メカニズム等の変調データ信号の形で、コンピュータ読取可能命令、データ・ストラクチャ、プログラム・モジュールまたは、その他を、具体化し、および、あらゆる情報伝達媒体を含む。「変調データ信号」という言葉が意味する信号とは、その特性のひとつまたは複数が、その信号中の情報を符号化するような方法で設定または変更されている信号を意味する。たとえば、これに限定されないが、通信媒体は有線ネットワークまたは直接有線接続等の有線媒体と、音響、ＦＲ、赤外線その他の無線媒体等の無線媒体を含む。上記のいずれかを組み合わせたものも、コンピュータ読取可能媒体の範囲に含まれる。
【００１３】
システム・メモリ１３０は、リード・オンリ・メモリ（ＲＯＭ）１３１とランダム・アクセス・メモリ（ＲＡＭ）１３２等の揮発性および／または不揮発性メモリの形態でのコンピュータ記憶媒体を含む。起動時等にコンピュータ１１０内のデバイス間の情報伝達を助ける基本的ルーチンを含むベーシック入出力システム１３３（ＢＩＯＳ）が通常、ＲＯＭ１３１に記憶されている。ＲＡＭ１３２は一般に、処理ユニット１２０によってダイレクトにアクセス可能で、および／または現在、オペレーション中のデータおよび／またはプログラム・モジュールを含む。たとえば、これに限定されないが、図１にはオペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６およびプログラム・データ１３７が描かれている。
【００１４】
コンピュータ１１０はまた、他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体を含んでいてもよい。たとえば、図１には、取り外し不能の不揮発性磁気媒体の読み書きを行うハードディスク・ドライブ１４１、取り外し可能の不揮発性磁気ディスク１５２の読み書きを行う磁気ディスク・ドライブ１５１、ＣＤ  ＲＯＭその他の光媒体等の取り外し可能の不揮発性光ディスク１５６の読み書きを行う光ディスク・ドライブ１５５が描かれている。このオペレーティング・システムの例で使用できるその他の取り外し可能または取り外し不能、揮発性または不揮発性コンピュータ記憶媒体には、これに限定されないが、磁気テープカセット、フラッシュ・メモリ・カード、デジタル・バーサタイル・ディスク、デジタル・ビデオ・テープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等がある。ハードディスク・ドライブ１４１は通常、インターフェース１４０等の取り外し不能メモリ・インターフェースを通じてシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１と光ディスク・ドライブ１５５は通常、インターフェース１５０のような取り外し可能メモリ・インターフェースによってシステム・バス１２１に接続されている。
【００１５】
上で説明し、図１に描かれているドライブとこれに関連付けられたコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ読取可能命令、データ・ストラクチャ、プログラム・モジュールその他のデータを記憶する。たとえば、図１において、ハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６およびプログラム・データ１４７を記憶しているように描かれている。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６およびプログラム・データ１３７と同じであっても、違ってもよい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６およびプログラム・データ１４７には、ここでは、少なくともこれらが別のコピーであることを示すために、異なる番号が付与されている。ユーザは、タブレットまたは電子デジタイザ１６４、マイクロフォン１６３、キーボード１６２および、一般にマウス、トラック・ボールまたはタッチ・パッドと呼ばれるポインティング・デバイス１５１等の入力デバイスを通じてコンピュータ１１０にコマンドや情報を入力することができる。図１に示されていないその他の入力デバイスとしては、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナその他がある。これらおよびその他の入力デバイスはしばしば、システム・バスに接続されるユーザ入力インターフェース１６０を通じて処理ユニット１２０に接続されているが、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス（ＵＳＢ）等の他のインターフェースやバス・ストラクチャによって接続されていてもよい。モニタ１９１またはその他のタイプのディスプレイ・デバイスもまた、ビデオ・インターフェース１９０等のインターフェースを介してシステム・バス１２１に接続される。モニタ１９１は、タッチ・スクリーン・パネルその他と一体化されていてもよい。モニタおよび／またはタッチ・スクリーン・パネルは、タブレット・タイプのパーソナル・コンピュータ等のように、コンピューティング・デバイス１１０が格納されているハウジングに物理的に接続させることもできる。さらに、コンピュータ・デバイス１１０等のコンピュータは、スピーカ１９５とプリンタ１９６等の周辺出力装置を備えていてもよく、これらは出力周辺機器インターフェース１９４その他を通じて接続される。
【００１６】
コンピュータ１１０は、リモート・コンピュータ１８０等、１台または複数のリモート・コンピュータとの論理結合を使って、ネットワーク環境で運用できる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイスその他の一般的なネットワーク・ノードでもよく、一般的には、コンピュータ１１０に関して上述したようなデバイスの多くまたは全部を備えるが、図１においては、メモリ記憶デバイス１８１だけが描かれている。図１の論理結合には、ローカル・エリア・ネットワーク（ＬＡＮ）１７１と広域ネットワーク（ＷＡＮ）１７３があるが、その他のネットワークでもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００１７】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０はネットワーク・インターフェースまたはアダプタ１７０を通じてＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は通常、インターネット等のＷＡＮ１７３上での通信を確立するためのモデム１７２その他の手段を備える。モデム１７２は、内蔵でも外付けでもよいが、ユーザ入力インターフェース１６０またはその他の適当なメカニズムを介してシステム・バス１２１に接続されていてもよい。ネットワーク環境において、コンピュータ１１０に関連して説明したプログラム・モジュールまたはその一部は、リモート・メモリ記憶デバイスに記憶することができる。たとえば、これに限定されないが、図１では、リモート・アプリケーション・プログラム１８５がメモリ・デバイス１８１に備えられているように描かれている。図のネットワーク接続は例であり、コンピュータ間の通信リンクを確立するためのその他の手段も利用できると理解されるであろう。
【００１８】
境界を越えるグラフィクス・ストリーム（graphics streams across boundaries）  
ここで説明する技術のさまざまな態様は、クライアント・マシンに送信するために、各種のサーバ・アプリケーション・プログラムからの命令を、時として複雑なグラフィクスに変更する命令を多重化するのに使用できるメカニズムと方法に関する。ここで一般的に説明するひとつの実施形態において、このメカニズムはサーバとリモート・クライアント・マシンとが一体になって機能する。しかしながら、容易に理解できるように、本発明はリモート・マシンには限定されず、これらの例を、サーバと同じマシンで動作するクライアント、単独のクライアント・マシンのために機能する複数の分散型サーバ等、他の状況にも応用できる。さらに、グラフィクスの表示に使用するためだけでなく、プリンタ、ファイル、一般的なデバイス等に出力するためなど、本発明を実装する多数の方法がある。したがって、本発明はここで使用される特定の例のいずれにも限定されず、コンピューティング全般において利益と利点を提供するさまざまな方法で使用できる。
【００１９】
図２は、クライアント−サーバ・コンピューティング環境の例２００を表すブロック図である。コンピューティング環境の例２００には、ネットワーク２１５で連結された複数のクライアント・コンピュータ２１０1−２１０3に接続されたサーバ・コンピュータ２０５（たとえば、図１のコンピュータ・システム１１０）が含まれる。この例では３台のクライアント・マシン２１０1−２１０3が示されているが、任意の現実的な数とすることができる。
【００２０】
一般に、ひとつまたは複数のアプリケーション・プログラム３２２（図３）が、クライアント・コンピュータ２１０1−２１０3のためにサーバ・コンピュータ２０５上で実行される。後述のように、アプリケーション・プログラムは、最終的にリモートクライアントコンピュータ２１０1−２１０3のディスプレイ・デバイス上でグラフィクスを生成するのに使用されるグラフィクス・コマンドを生成する。ここではディスプレイ・デバイス上のグラフィクスについて説明するが、この例はプリンタ出力等、他の同等の出力にも応用される。
【００２１】
コンピューティング環境２００は、たとえばモデムによる直接ダイアルアップ、企業ＬＡＮ（ローカル・エリア・ネットワーク）、ＷＡＮ（広域ネットワーク）およびインターネット等、さまざまなアーキテクチャを代表する一例にすぎない。ネットワーク２１５は、有線ベースの技術や無線技術を含め、このようなネットワーキングの状況をサポートするさまざまな方法で実装できる。ここで説明する技術の各種の態様は、ひとつの特定のネットワーク・アーキテクチャまたはネットワーク技術に限定されない。
【００２２】
サーバ・コンピュータ２０５は、Ｗｉｎｄｏｗｓ（登録商標）のオペレーティング・システム・ベースのサーバとして実装されているが、他のサーバ・プラットフォームに基づくものとすることもできる。サーバ・コンピュータ２０５は、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより定義されるリモート・デスクトップ・プロトコル（ＲＤＰ）またはリモート・プロシージ・ャコール（ＲＰＣ）等の通信プロトコルを通じて、クライアント・コンピュータ２１０によりアクセスされるひとつまたは複数のアプリケーション・プログラム３２２をサポートし、あるいはそのホストとなる。通信プロトコルを通じて、サーバ・コンピュータ２０５は、クライアント・コンピュータ２１０のうちの１台のクライアント・コンピュータが比較的高レベルのグラフィクス・コマンドで、アプリケーション・プログラムから受け取られ、サーバ・コンピュータ２０５でローカル的にグラフィクスを生成するのに使用されるコマンド、を使ってグラフィクスを生成することができるか否かを判断する。このような、より高レベルのグラフィクス・コマンドの例には、描画プリミティブ、コマンドおよび／またはデータを備える保持モード描画命令があり、合成（またはレンダリング）ツリー構造の中のノードとして表されることがある。
【００２３】
クライアント・コンピュータ２１０は、ネットワーク２１５上でサーバ２０５に接続できる各種のコンピュータまたはコンピューティング・デバイスを表す。たとえば、２１０1の番号が付与されたクライアント・コンピュータは従来のデスクトップ・パーソナル・コンピュータとすることが可能であり、これは、ローカル・オペレーティング・システム、処理ユニット、記憶システムを含んでいる。クライアント・コンピュータ２１０2は、携帯用ラップトップコンピュータとして描かれており、これは従来のネットワーク・カードまたはモデム接続を介してネットワークに接続することができる。クライアント・コンピュータ２１０2は、自己のオペレーティング・システム、処理ユニットおよび記憶システムで構成することのできるスタンドアローン・コンピュータであってもよい。クライアント・コンピュータ２１０3は、一般的に、汎用コンピュータより少ない機能を処理するハンドヘルドＰＣとすることもできる。
【００２４】
ディスプレイ・モニタを備え、キーボードやマウス等の入力デバイスを有するものと考えることのできるディスプレイ・デバイス２２０をサーバ２０５にローカルで接続することができる。ディスプレイ・デバイス２２０と付属の入力デバイスは、サーバ・コンピュータ２０５上にあるアプリケーション・プログラムへのローカル・ユーザ入力を提供する。一般に、グラフィクスはサーバ・コンピュータ２０５の中に常駐するグラフィクス合成エンジンによってディスプレイ・デバイス２０５で生成され、このグラフィクス合成エンジンは、常駐アプリケーション・プログラムからより高レベルのグラフィクス・コマンドを受け取る。
【００２５】
サーバ・コンピュータ２０５上に常駐するアプリケーション・プログラム３２２（図３）は、グラフィクス・コマンド／データ／プリミティブを含む、比較的高レベルのグラフィクス命令によってグラフィクスを特定することができる。たとえば、保持モードのグラフィクス・レンダリング（合成）ツリー構造に対応するプリミティブを、プレゼンテーション・サブ・システム／メディア・インテグレーション・レイヤ（ＭＩＬ）が提供することが可能である。アプリケーション・プログラム３２２は、オペレーティング・システムによって提供されるグラフィクス・コンポーネントを活用し、これによってアプリケーション・プログラム３２２は、ユーザ・インターフェースを指定するノードによってグラフィクスを指定できる、比較的高レベルのグラフィクス・コマンドを生成することが可能である。
【００２６】
図３は、サーバ・コンピュータ２０５とクライアント・コンピュータ（たとえば２１０1）のコンポーネントの例を示す。サーバ・コンピュータ２０５は、少なくともひとつのアプリケーション・プログラム３２２と、ソフトウェア・グラフィクス・コンポーネント３２５を含む。ソフトウェア・グラフィクス・コンポーネント３２５は、複数のコンポーネントを含むことができる。一般に、ソフトウェア・グラフィクス・コンポーネント３２５は、アプリケーション・プログラム３２２からより高レベルのグラフィクス・コマンドを受け取ることができる。より高レベルのグラフィクス・コマンドは、ディスプレイ・デバイス２２０上で表示されることになるグラフィクスをローカルで生成するのに使用される。「シャドウイング（shadowing）」と呼ばれるコンセプトを実行することができ、この場合、サーバ・コンピュータ上で生成され、クライアント・コンピュータ２１０1で表示されるものと同じグラフィクスが、サーバ・コンピュータ２０５でもローカルでレンダリングされ、表示される。
【００２７】
サーバ・コンピュータ２０５はクライアント・コンピュータ２１０1と交信し、クライアント・コンピュータ２１０1がより高レベルのグラフィクス・コマンドを使ってグラフィクスを生成することが可能か否かを判断する。可能であれば、サーバ・コンピュータ２０５はより高レベルのグラフィクス・コマンドをクライアント・コンピュータ２１０1に送る。可能でなければ、サーバ・コンピュータ２０５は、より高レベルのグラフィクス・コマンドから生成したビットマップ等の、より低レベルのグラフィクスをレンダリングし、そのより低レベルのグラフィクス・コマンドをクライアント・コンピュータに送ることができる。
【００２８】
説明のために、以下に、より高レベルのグラフィクス・コマンドがクライアント・コンピュータ２１０1に送られる例を挙げる。このように、クライアント・コンピュータ２１０1のグラフィクス・コンポーネント３３５はより高レベルのグラフィクス・コマンドを受け取り、クライアント・コンピュータ２１０1のディスプレイ・デバイス２１５上で表示されるグラフィクスを生成する。
【００２９】
図４は、サーバ・コンピュータ２０５とクライアント・コンピュータ２１０1における詳細な実装形態の例を示す。これらのアーキテクチャの実装例は、フォーマットされたグラフィクス命令という形態のより高レベルのグラフィクス・コマンドを、このような高レベルのグラフィクス・コマンドを使ってグラフィクスを生成することのできるクライアント・コンピュータに、供給するよう特に設計されている。
【００３０】
図４において、図３のアプリケーション・プログラム３２２によって示されるような、ひとつまたは複数のアプリケーション・プログラム３２２1−３２２Nは、サーバ・コンピュータ２０５でホストされ、クライアント・コンピュータ（たとえば、２１０1）によりアクセスされる。アプリケーション・プログラム３２２1−３２２Nは、レンダリング（合成）ツリー構造に対応する保持モード・グラフィクス・プリミティブとデータ等の、比較的高レベルのグラフィクス命令を提供する。より高レベルのグラフィクス・プリミティブの例は、形状（shapes）、テキスト、ボタン、変換（トランスフォーム: transform）その他を表すノードのそれである。
【００３１】
アプリケーション・プログラム３２２1−３２２Nのいずれも、グラフィクス合成またはグラフィックス生成のための専用スレッドを備えることができ、この専用スレッドは、合成器／ＵＣＥ（ユニファイド・コンポジション・エンジン）４２８1−４２８Nの接続に使用される通信プロトコル（たとえば、ＲＤＰまたはＲＰＣ）をモニタするのに使用される。専用の合成器またはＵＣＥは、アプリケーション・プログラムの各々について設置することができる。
【００３２】
合成器／ＵＣＥモジュール４２８1−４２８Nは、メディア・インテグレーション・レイヤ（ＭＩＬ）をサポートするビジュアル・コンポジション・モジュールであり、メディア・インテグレーション・レイヤ（ＭＩＬ）は、ひとつまたは複数のクライアント・コンピュータ・プラットフォームによって使用されるグラフィック情報を提供する。たとえば、合成器／ＵＣＥ（たとえば４２８1）は、対応するアプリケーション・プログラム３２２1からのより高レベルのグラフィクス命令を処理または抽出することができる。より高レベルのグラフィクス命令は、連続して処理され、クライアント・コンピュータ、たとえば、クライアント・コンピュータ２１０1に送信される。
【００３３】
ひとつまたは複数のアプリケーション・プログラム３２２1−３２２Nがデスクトップまたはウィンドウ環境で実行されているとき、ディスプレイまたはグラフィクス画像が示され、これにはアプリケーション・プログラム３２２1−３２２Nの中のひとつまたはいくつかおよびデスクトップからのグラフィクスのほか、ウィンドウ環境からのグラフィクスも含まれる。デスクトップ・マネージャ／ＵＣＥ４４０は、デスクトップまたはウィンドウ環境によって提供されるグラフィクスのためのより高レベルのグラフィクス命令を提供し、これらは後述のように、アプリケーション・プログラム３２２1−３２２Nのうちのひとつまたはいくつかからのグラフィクスと組み合わされる。
【００３４】
ひとつの実装形態において、合成器／ＵＣＥ４２８1−４２８Nとデスクトップ・マネージャ／ＵＣＥ４４０は、アプリケーション・プログラム・インターフェース（ＡＰＩ）エクスポーザ４４５に、より高レベルのグラフィクス命令を提供する。ＡＰＩエクスポーザ４４５は、合成器／ＵＣＥ４２８1−４２８Nとデスクトップ・マネージャ／ＵＣＥ４４０がディスプレイ・ドライバ・ローダ４５０と通信できるようにするインターフェースを備える。
【００３５】
ディスプレイ・ドライブ・ローダ４５０は、リモート・ディスプレイ・ドライバ４６０とローカル・ディスプレイ・ドライバ４６５のロードする（取り込む）。より高レベルのグラフィクス命令が、リモート・ディスプレイ・ドライバ４６０に送られ、このリモート・ディスプレイ・ドライバ４６０は、グラフィクス・コマンドを、サーバ２０５とクライアント２１０1によって使用される通信プロトコルにより定義される適当なフォーマットへとフォーマッティングする。たとえば、リモート・ディスプレイ・ドライバ４６０は、グラフィクス・コマンドをパッケージし、これについてキャッシングを実行し、および／またはこれを圧縮する。
【００３６】
ローカル・ディスプレイ・ドライバ４６５は、サーバ・コンピュータ２０５においてローカルにグラフィクスの中に生成されるより高レベルのグラフィクス・コマンドを受け取る。ローカル・ディスプレイ・ドライバ４６５は、ローカル的にグラフィクスを表示するとき、および／またはシャドウイングの際に使用される。シャドウイングまたはリモート・アシスタンスは、クライアント・コンピュータ２１０1に送られるグラフィクス画像（つまり、より高レベルまたは低レベルのグラフィクス・コマンド）が、図２のディスプレイ・デバイス２２０のようなローカル・ディスプレイ・デバイスで閲覧されるときに実行される。
【００３７】
リモート・ディスプレイ・ドライバ４６０からのフォーマットされた高レベルのグラフィクス・コマンドは、ひとつまたは複数のネットワーク上でクライアント・コンピュータ２１０1に送信するためのトランスポート・ドライバ４７０に供給される。トランスポート・ドライバ４７０は、トランスミッション・コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）等のいくつかのトランスポート・プロトコルのひとつに基づくものでよい。トランスポート・ドライバ４７０は、フォーマットされたグラフィクス・プリミティブまたはグラフィクス・データをデータ・パケットにパッケージする。
【００３８】
グラフィクス・コマンド（つまり、データ・パケット）は、リモート・デバイス・インターフェース４７５を通じてクライアント・コンピュータ２１０1で受け取られる。リモート・デバイス・インターフェース４７５は、サーバ・コンピュータ２０５とクライアント・コンピュータ２１０1の間の通信プロトコルに基づくものとすることができる。
【００３９】
リモート・デバイス・インターフェース４７５は、より高レベルのグラフィクス命令プロセッサ４８０（および／または、より低レベルのグラフィクス・コマンドのため、たとえば、他のサーバに接続されているときの、より低レベルのグラフィクス・コマンドを扱うためのＧＤＩ／ＧＤＩ＋レンダリング・エンジン４８５）を備える。クライアント・コンピュータ２１０1がより高レベルのグラフィクス命令という形でグラフィクスを受け取ると、より高レベルのグラフィクス命令プロセッサ４８５は、サーバ・コンピュータ２０５から受け取ったデータ・ストリームから、高レベルグラフィクス命令を含むデータ・パケットを抽出する。受け取られたコマンドが低レベルグラフィクス・コマンドの場合、これらはＧＤＩ／ＧＤＩ＋レンダリング・エンジン４８５によって処理され、ＧＤＩ／ＧＤＩ＋グラフィクス・ドライバ４９０に送られ、これによってグラフィクスが生成される。生成されたグラフィクスは、図３のディスプレイ・デバイス２１５等のローカル（クライアント）ディスプレイ・デバイス上で示される。
【００４０】
クライアント・コンピュータ２１０1がグラフィクス生成のための高レベルのグラフィクス命令を受け取ると、クライアント・コンピュータ・コネクタ４９５は高レベル・グラフィクス・コマンド・プロセッサ４８０からデータのパケットを受信し、このパケットを解析して高レベルのグラフィクス命令にする。解析された高レベル・グラフィクス命令は、クライアント・コンピュータ・コネクタ４９５からクライアント合成器／ＵＣＥ４９９へと送られ、これが高レベル・グラフィクス・コマンドを使ってグラフィクスを生成する。
【００４１】
このように、サーバからリモート・クライアント・マシンへの機能豊富（rich）なグラフィカル・コンテンツの伝送は、ビットマップではなく、ベクトル描画プリミティブとその他のグラフィクス命令を送ることによって有利となる。本発明によれば、帯域幅の使用量はアップデート・プロセス中にさらに削減される。この目的のために、クライアント側のグラフィクスのアップデートが必要となると、デスクトップ全体をレンダリングするためのグラフィクス命令に対応する情報ではなく、細分化した（granular）高レベルのアップデート情報を送信するほうがより効率的である。たとえば、ユーザがウィンドウを動かすとき、ウィンドウ全体および／またはデスクトップのコンテンツ全体を描きなおすグラフィクス命令を再送信するよりも、そのウィンドウの位置を変更するための命令を送るほうがより効率的である。
【００４２】
高レベルの命令を送ってこれを、細分化した態様でアップデートするために、描画プリミティブの相対的な位置と相互関係を説明する伝送構造情報（transport structural information）が送られる。ローカルの場合、合成（またはレンダリング）ツリー構造を使って、これらのプリミティブの階層的位置（たとえば、重複）と相互関係（たとえば、透明性）を記述することができる。
【００４３】
ここで説明する技術の各種の態様は、この合成ツリー構造の階層をクライアント・マシンに効率的に伝送し、レンダリングとアップデートがクライアントで行われるようにすることに関する。最初にツリー構造を構築するのと同じトランスポート・メカニズムにより、個々のノードを細分化してアップデートすることが可能となる。このトランスポート方法は、マシンまたはプロセスの境界を越えて伝送する間に、単独または複数の木構造の階層的な関係を保持するのに使用できる。
【００４４】
ひとつの実装形態において、マルチスレッドの合成インフラストラクチャが、プロセス間伝送のローカル使用のよい例である。マルチスレッド合成アーキテクチャを用い、複数のスレッドにまたがってレンダリングを分散させることにより、プロセッサ・パワーを活用できる。ここで例として説明するトランスポート・メカニズムは、この種のアーキテクチャが、複数のプロセスにまたがるツリー構造のアップデートを整理（marshal）することを可能にする。
【００４５】
マシンの境界、プロセスの境界またはその両方の境界を越える伝送を可能にするために、いくつかの異なるプロセスおよび／またはマシンからの情報を連続させてひとつのストリームにすることが、ローカルの場合とリモートの場合の両方において必要となる可能性がある。伝送後、この情報ストリームを、その当初のデバイスおよび／またはプロセスに関する情報が損なわれないまま保たれるようにアンパッキング（unpack）する必要がある。このことは、各プロセスおよび／またはデバイスが、独立してアップデートを受け取ることを可能にする。
【００４６】
この目的のために、境界の片側で定義され、その境界を越えて伝送され、反対側でレンダリングされるコンテンツへの細分化されたアップデートを可能にする各種のメカニズムと方法について説明する。このメカニズムと方法は、以下に説明するように、多くの階級からなる境界を越えた伝送にも適用される。パッキングとアンパッキングからなるこのスケーラブルで効率的な伝送は、その完全な定義が、全体を繰り返し送信するには帯域幅消費の点であまりにも付加が重い機能豊富（rich）なグラフィクスに対し、的を絞った細分化されたアップデートを行うことが可能となる。ここで紹介する実装例は、別の情報源については、特定のメカニズムを必要としないかもしれない点に注意すべきである。たとえば、デスクトップ・ウィンドウ・マネージャからのコンテンツは、アプリケーション・プログラムからのコンテンツと同じ送信媒体（パイプ）を通じて移動でき、その後同じ方法でアンパッキングすることができる。
【００４７】
前述のように、アプリケーション・プログラム３２２は、グラフィクス命令のストリームを生成して、何らかのコンテンツを出力し、レンダリングシステムがこのストリームを、たとえばディスプレイ・モニタ、プリンタ等で見ることのできる何かに変換することができる。アプリケーションをリモート化する場合（つまり、ディスプレイが別のマシンで行われる場合）、同時にグラフィクスを生成している複数のアプリケーションで共有される１つのトランスポートがあるだけである可能性がある。
【００４８】
ひとつのアプリケーションによって生成されるグラフィクス命令と別のアプリケーションにより生成される命令とを区別するために、各グラフィクス・パケット（またはバッチ）はその伝送で送られる準備ができた際に、リモート側で、それが特定のアプリケーションに属すると特定されることが可能なように、各アプリケーションのための固有の識別子がパケットに追加され。
【００４９】
パケットがリモート側に到達すると、ストリームはこの固有の識別子によって分離され、その結果、各グラフィクス・ストリームは原形を保ち、類似のストリームで同じトランスポートを使用した可能性のある別のアプリケーションとは独立してレンダリングされる。つまり、固有の識別子は、各種のアプリケーションおよび／またはデスクトップからの命令の多重化と分離を可能とし、それによってグラフィカル・アップデート情報の送信を容易とする。
【００５０】
個々の合成（composition）に関連付けられたパケットを識別することにより、パケットは、その発生源のデバイスおよび／またはプロセスに関する情報を失うことなく、シリアライズさせることができる。この目的のために、シリアライズされたパケットには、これらを統合して伝送のためのパイプにするたびに、タグが付けられる。これらのパイプからアンパッキングすると、各パケットは適切な合成（composition）を使用して再び関連付けられる。
【００５１】
図５は、独立した個々の合成における情報が、境界を越えて伝送されるために統合される様子を示している（境界は点線で示されている）。統合の潜在的なレベルには、ひとつのプロセス内のコンテンツをひとつのパイプにシリアライズするもの（ローカル・クライアントの場合等）、多数のプロセスの中のコンテンツを１セッションにつき１つのパイプにシリアライズするもの（リモート・デスクトップの場合等）、多くのセッションの中のコンテンツを各マシンにつき１つのパイプにシリアライズするもの、多くのマシンからのコンテンツをサブネットにつき１つのパイプにシリアライズするものがある。
【００５２】
ここで説明する実装例のひとつは、これらの各々の場合に使用されるよう一般化できるようなシリアライズを提供する。この目的のために、図６に示されているように、各パケットには、マルチプレクサ／ＩＤ修飾メカニズム６０２により、ひとつまたは複数の識別子でタグ付けされる。この例は、パイプの統合の各段階において、発生源のプロセスを区別する一連の固有の識別子で構成されるプロセス識別子（ＰＩＤ）を示している。マシンまたはセッション識別子等、その他の識別子を使って、発生源のデバイスとセッションの区別をつけることもできる。マージの前のストリームの発生源を個々に識別することのできる他の方法も使用可能である。図６において、パケットは、仮定に基づく順序で共通のトランスポートに乗せられたように描かれている。
【００５３】
図７は、境界の反対側での情報のアンパッキングを示しており、その後、各情報バンドルは個別に処理され、レンダリングされる。これにより、各プロセスのコンテンツが、別のプロセスのコンテンツとは独立してアップデートすることが可能となる。独立した処理により、複雑なグラフィクスを伝送するとき等、トランスポート・パイプを詰まらせることなく、このコンテンツの細分化されたアップデートが可能となる。
【００５４】
図８は、グラフィクスまたは他のコンテンツが境界の片側で定義され、境界の反対側で処理される（たとえば、レンダリングおよび表示される）際に、これらのグラフィクスまたはその他のコンテンツを効率的にレンダリングすることのできる各種のメカニズムと方法の論理を説明する。たとえば、２つのアプリケーションが、図８において、ブロック８０１−８０４に一般的に示されるように、別のレンダリング・ツリー構造（たとえば、アプリケーション固有情報を有するユーザ・インターフェース、つまりＵＩツリー構造）を生成することができる。ステップ８０５、８０６で判断される各々のリモート・レンダリングについて、それぞれのツリー構造の記述は、伝送用に提出される前に、各アプリケーションの固有のＩＤと組み合わせることができる（ステップ８０７、８０８）。ひとつのパケット内の修飾としては、目的地、発生源、プロセスＩＤ（クライアント側でのアプリケーションを区別するため）がある。固有のＩＤにより、情報のツリー構造と伝送の独立した管理、クライアント側の平行コンテンツの実行および／またはアプリケーション間の安全確実な境界の設置が可能となる。たとえば、このメカニズムは、認証されたパケットだけを使用し、セキュリティ度を高めることもできる。さらに、このメカニズムにより、ターミナルサービスをトランスポート・レイヤの最上部にあるＩＰレイヤの最上部のＴＣＰレイヤに似たものとすることができる。
【００５５】
ステップ８１０によって表されるように、ストリームが多重化のためにマージされると、トランスポートは、その木構造がどのアプリケーションをアップデートするのに使用されるかを特定する固有のＩＤを収容する。リモート・トランスポーティングに加えて、あるいはこれに代わって行われるローカル・レンダリングを、ステップ８１５によって表す。
【００５６】
ステップ８１２は、デ・マルチプレックスする動作を表し、この動作において、固有の識別子が使用されて、グラフィクス命令のマージされたストリームを分離する。ステップ８１６，８１７は、独立したストリームのレンダリングを表す。
【００５７】
トランスポート・サブシステムの例示的な構造と機能に説明を移すと、トランスポート・サブシステムのひとつの態様は、合成ツリー構造の変更に影響を与えるためにアプリケーションが使用するスレッドから（つまり、アプリケーションのＵＩスレッドから）合成スレッド（composition thread）を分離することに関する。概ね、図９、図１０は、ストリームの修飾とストリームの生成の例を示す。この目的のために、チャネル・コンセプトが導入され、サーバ・マシン上で動作中のアプリケーションの中からコマンドを生成するパラレル・スレッド内のリソースをアドレス指定する。チャネルは、トランスポート・インスタンスの中に存在する。トランスポートは、次に、グラフィクス・ストリームの修飾に使用される固有の識別子に接続コンテクストをマッピングする。
【００５８】
図９は、このような合成プロセスにかかわるオブジェクトの簡略図を示し、データフローにかかわるサブシステムと共に、データがシステム内の境界を越えてどのように移動するかを表している。データが越える境界には、図９のトランスポート利用図に一般的に示されように、スレッド、プロセスおよび／またはマシンの境界がある。
【００５９】
図９に示される情報交換にかかわる要素には、スレッド・アフィニティを提供するＵＩコンテクスト９０１−９０４、合成時に使用される管理されていないリソースのためのオブジェクト・モデル・インターフェースである管理されたリソース、そして合成物の伝達パス中に使用されるグラフィクス・オブジェクトからなる管理されていないリソース、が含まれる。また、管理されていない合成ツリー構造を構成する合成インフラクストラクチャ９１３も描かれている。
【００６０】
図９の実装例は、管理されたリソースについて発行されたＡＰＩコールに応答して管理されていないリソースをアップデートすること、管理されていないリソースの寿命（lifetime）を管理されたリソースによって管理すること、およびコマンドをその発行順と同じ順序で実行する必要のある範囲を画定すること、等、データ転送上の多数の問題を解決する。
【００６１】
この解決策は、ＵＩスレッドについてはできるだけロックを取得せず、合成スレッドではまったくロックを取得しない。合成スレッドのロックは、管理されたリソースについてのＡＰＩコールをコマンドに翻訳し、次に、このコマンドをコマンド変更キューへと待ち行列化することによって不要となる。このコマンド待ち行列の実行の結果、管理されていないリソースのアップデートが行われる。管理されたリソースから変更待ち行列にコマンドを送るためのパイプは、合成スレッドのロックを回避するほか、コマンド・シーケンスを保持することを不要にするのに利用できる。しかしながら、このパイプには、さらに別の構造が必要となる。なぜなら、管理されたリソースは、複数のスレッドからアクセスされる可能性があり、また、ＵＩスレッドの境界を越えたロックを最低限にする必要があるからである。
【００６２】
コマンド・アップデート、寿命管理およびコマンド順序保護の必要性に対応するために、チャネルのコンセプトが定義され、このチャネルがＵＩコンテクストと関連付けられる。このチャネルは、ＵＩコンテクストの境界の中での管理されていないリソースの管理された通信を実装するための、順序保護コマンド・パイプ（order-preserving command pipe）を提供する。
【００６３】
データ転送のクライアント側とサーバ側の両方について、そのチャネルは管理されたリソースが管理されていないリソースをアップデートすること、管理されていないリソースの寿命を管理すること、を可能にするアドレス方式を提供する。このアドレス方式は、ハンドル値を管理されていないリソースの管理されたペアに関連付け、これをリソース・ハンドルと呼ぶ。管理されたリソースがＵＩコンテクストの中で使用されると、管理されたリソースはＵＩコンテクストのチャネルを使って、そのチャネル上にこれと対応する管理されていないリソースを作る。ＵＩコンテクストに関連付けられたチャネルはまた、ハンドル（チャネル・ハンドル）によって識別される。複数のＵＩコンテクストの上で使用できる管理されたリソースについて、管理されていないリソースが、それが使用されるチャネルの各々のために作られる。合成器を使用するプロセス／アプリケーションの各ドメインについて、ＵＩコンテクストと同じだけのチャネルを収容する接続が定義される。図９は、管理されたオブジェクトと管理されていないオブジェクトの関係（relationship）を示し、図１０は論理的なチャネルの使用とリソースのアドレス指定を示しており、管理されていないリソースの管理されたペアがそれに対応するチャネルとどのように関連しているかが描かれている。
【００６４】
管理されたリソースとこれに対応する管理されていないリソースの間のマッピングは、したがって、接続ＩＤ、チャネル・ハンドルおよびリソース・ハンドルによって認定される。
【００６５】
データは管理されたリソースから管理されていないリソースに流れるだけでなく、管理されていないリソースから管理されたリソースにも流れることに注意されたい。管理されていないリソースから発生し、ＵＩコンテクストで消費されるデータは、たとえば、管理されていないリソースの中で発生している特定の状況を示すために送られる通知を備えることができる。
【００６６】
本発明には、さまざまな変更や代替構成が可能であるが、その特定の実施例を図面に示し、上で詳細に説明した。しかしながら、本発明は開示された特定の形態に限定されるものではなく、反対に、本発明の精神と範囲に含まれるすべての改変、代替構成および同等の構成のすべてを含むものである。
【図面の簡単な説明】
【００６７】
【図１】本発明の各種の態様を取り入れることのできる汎用コンピューティング環境の例を示す図である。
【図２】サーバ・コンピュータと、このサーバ・コンピュータに接続可能な各種のクライアント・コンピュータの例を示すブロック図である。
【図３】それぞれがグラフィクス・コンポーネントを含むサーバ・コンピュータとクライアント・コンピュータを示すブロック図である。
【図４】サーバ・コンピュータとクライアント・コンピュータでグラフィクスを生成する、より高レベルのグラフィクス・コマンド、を処理するのに使用されるサーバおよびクライアンとコンピューティング環境のブロック図である。
【図５】境界を越えてでマルチプレックスおよびデ・マルチプレックスされる合成を表す図である。
【図６】境界を越えた伝送のために。パケットを識別子で修飾する多重化（multiplexing）メカニズムを表す図である。
【図７】境界を越えて伝送されるパケットをデ・マルチプレックスするために、パケット識別子を使用するメカニズムを表す図であり、図６のストリームがクライアント側で分離された後に、レンダリング可能な状態になっていることを示す図である。
【図８】リモート送信用のパケットを識別子で修飾する方法を一般に表すフロー図である。
【図９】識別子を伴うトランスポートの使用を一般に示す図である。
【図１０】論理的なチャネルの使用とリソースのアドレス指定を示す図である。
【符号の説明】
【００６８】
１１０    コンピュータ
１２０    処理ユニット
１２１    システム・バス
１３０    システム・メモリ
１３１    （ＲＯＭ）
１３２    （ＲＡＭ）
１３３    ＢＩＯＳ
１３４    オペレーティング・システム
１３５    アプリケーション・プログラム
１３６    他のプログラム・モジュール
１３７    プログラム・データ
１４０    取り外し可能不揮発性メモリ・インターフェース
１４１    ハードディスク・ドライブ
１５０    取り外し不能不揮発性メモリ・インターフェース
１５１    磁気ディスク・ドライブ
１５２    不揮発性磁気ディスク
１５５    光ディスク・ドライブ
１５６    不揮発性光ディスク
１６０    ユーザ入力インターフェース
１７０    ネットワーク・インターフェース
１７１    ローカル・エリア・ネットワーク
１７２    モデム
１７３    広域ネットワーク
１８０    リモート・コンピュータ
１８１    メモリ記憶デバイス
１８５    リモート・アプリケーション・プログラム
１９０    ビデオ・インターフェース
１９１    モニタ
１９４    出力周辺インターフェース
１９５    スピーカ
１９６    プリンタ
１６１    マウス
１６２    キーボード
１６４    タブレット
１６３    マイクロフォン
２０５    サーバ・コンピュータ
２１０−１    デスクトップ・クライアント
２１０−２    ラップトップ・クライアント
２１０−３    ハンドヘルドＰＣ
２２０    ディスプレイ・デバイス
２１５    ネットワーク
３２２    アプリケーション・プログラム
３２５    ソフトウェア・グラフィクス・コンポーネント
３３５    グラフィクス・コンポーネント
３２２−１    アプリケーション・プログラム１
３２２−２    アプリケーション・プログラム２
３２２−Ｎ    アプリケーション・プログラムＮ
４２０−１    合成器／ＵＣＥ
４２０−２    合成器／ＵＣＥ
４２０−Ｎ    合成器／ＵＣＥ
４４５    ＡＰＩエクスポーザ
４４０    デスクトップ・マネージャ／ＵＣＥ
４５０    ディスプレイ・ドライバ・ローダ
４６０    リモート・ディスプレイ・ドライバ
４６５    ローカル・ディスプレイ・ドライバ
４７０    トランスポート・ドライバ
４７５    リモート・デバイス・インターフェース
４８０    より高レベルのグラフィクス命令プロセッサ
４８５    ＧＤＩ／ＧＤＩ＋レンダリング・エンジン
４９０    ＧＤＩ／ＧＤＩ＋グラフィクス・ドライバ
４９５    クライアント・コンピュータ・コネクタ
【図１】
2006190255.tif 000003
【図２】
2006190255.tif 000004
【図３】
2006190255.tif 000005
【図４】
2006190255.tif 000006
【図５】
2006190255.tif 000007
【図６】
2006190255.tif 000008
【図７】
2006190255.tif 000009
【図８】
2006190255.tif 000010
【図９】
2006190255.tif 000011
【図１０】
2006190255.tif 000012