(57)【特許請求の範囲】
【請求項１】
クライアント上でのアプリケーション表示のテアリングを減らすためにサーバにおいて実行される方法であって、
命令ヒープ内の少なくとも２つの論理的に関連する描画命令を決定するステップであって、前記論理的に関連する描画命令は始まりと終わりを有する、ステップと、
前記論理的に関連する描画命令の前記始まりに開始マーカを配置し、前記論理的に関連する描画命令の前記終わりに終了マーカを配置することによって、前記論理的に関連する描画命令をまとめるステップと、
前記まとめられた論理的に関連する描画命令をパケットに挿入するステップと、
前記クライアントによって前記論理的に関連する描画命令が表示装置上に同時にレンダリングされるように、前記終了マーカを前記パケットに挿入したことに応答して通信ネットワークを介して前記パケットを前記クライアントに送信するステップと
を含む、方法。
【請求項２】
前記論理的に関連する描画命令は、画像フレームが前記論理的に関連する描画命令を含むことにより、論理的に関連する、請求項１に記載の方法。
【請求項３】
前記論理的に関連する描画命令は、１つのスレッドが各論理的に関連する描画命令を作成したことにより、論理的に関連する、請求項２に記載の方法。
【請求項４】
前記論理的に関連する描画命令は、ディスプレイの一部分に対応することにより、論理的に関連する、請求項２に記載の方法。
【請求項５】
前記始まりと前記終わりは、前記論理的に関連する描画命令を発したアプリケーションにより決定される、請求項１に記載の方法。
【請求項６】
前記アプリケーションは、前記論理的に関連する描画命令をまとめる、請求項５に記載の方法。
【請求項７】
描画命令は、ＡＰＩコールを含み、前記終了マーカは、前記論理的に関連する描画命令のグループの前記終わりを示す前記ＡＰＩへのコールを含む、請求項１に記載の方法。
【請求項８】
パケットは、送信用の最小パケットサイズを有し、前記終了マーカを前記パケットに挿入したことに応答して、前記通信ネットワークを介して前記パケットを送信することは、
前記終了マーカを前記パケットに挿入し、前記パケットが送信用の前記最小パケットサイズに達したと判断したことに応答して、前記通信ネットワークを介して前記パケットを送信すること
を含む、請求項１に記載の方法。
【請求項９】
前記アプリケーションには種類があり、
前記論理的に関連する描画命令は、前記アプリケーションの種類に基づいて論理的に関連する、請求項１に記載の方法。
【請求項１０】
通信ネットワークを介して受信した表示データを含むアプリケーション表示におけるテアリングを減らすシステムにおいて、
プロセッサと、
前記プロセッサに通信可能に接続されるメモリであって、前記プロセッサによって実行されると、前記システムに、
通信ネットワークを介して、終了マーカを備えたネットワークパケットの一部である表示データを受信するステップであって、前記パケットは、前記終了マーカが該パケットに挿入されたことに応答して当該システムに送信されたものである、ステップと、
シャドーバッファに前記表示データを記憶するステップと、
前記シャドーバッファに記憶された前記表示データ内の開始マーカと前記終了マーカとを決定するステップと、
前記シャドーバッファ内の前記終了マーカを決定したことに応答して、前記開始マーカと前記終了マーカとの間の前記シャドーバッファ内の表示データを表示面にフラッシュするステップと
を含む処理を実行させる命令を格納したメモリと
を備える、システム。
【請求項１１】
前記表示データをフラッシュすることは更に、
タイマーの終了時刻に達すると、前記開始マーカと最も新しく受信した表示データとの間の表示データをフラッシュすることを含む、請求項１０に記載のシステム。
【請求項１２】
前記表示データをフラッシュすることは更に、
前記終了マーカが決定されると、前記タイマーの終了時刻に達してから受信した全ての表示データをフラッシュする、請求項１１に記載のシステム。
【請求項１３】
前記シャドーバッファは、少なくとも１つのダーティ表示データを含み、前記表示データをフラッシュすることは更に、
ダーティ表示データのみをフラッシュすることを含む、請求項１０に記載のシステム。
【請求項１４】
クライアントにおけるアプリケーション表示のテアリングを減らすためにサーバに、
命令ヒープ内の少なくとも２つの論理的に関連する描画命令を決定するステップであって、前記論理的に関連する描画命令は始まりと終わりを有する、ステップと、
前記論理的に関連する描画命令の前記始まりに開始マーカを配置し、前記論理的に関連する描画命令の前記終わりに終了マーカを配置することによって、前記論理的に関連する描画命令をまとめるステップと、
前記まとめられた論理的に関連する描画命令をパケットに挿入するステップと、
前記論理的に関連する描画命令が表示装置上に同時にレンダリングされるように、前記終了マーカを前記パケットに挿入したことに応答して通信ネットワークを介して前記パケットを前記クライアントに送信するステップと
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テアリングのないリモートデスクトッププロトコル（ＲＤＰ）表示に関する。
【背景技術】
【０００２】
かつてコンピュータは、孤立したものであり、他のコンピュータとの情報のやり取りは最小限またはほとんどなかったが、今日のコンピュータは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）およびＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの通信ネットワークを介して、多種多様な他のコンピュータと情報のやり取りを行う。インターネット（商標）の幅広い成長に伴って、コンピュータ間の接続性は、より重要になり、多くの新しいアプリケーションおよび技術が開発されてきた。大規模ネットワークの成長、および、低価格のパーソナルコンピュータが幅広く入手できるようになったことで、多くの人々が仕事をする、情報のやり取りをする、通信する、および遊ぶ方法は、根本的に変わった。
【０００３】
人気が高まっているネットワーク形式の１つは、一般に仮想コンピューティングシステムと言われるもので、ＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）、ＩＣＡ（Ｉｎｄｅｐｅｎｄｅｎｔ  Ｃｏｍｐｕｔｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、および他のプロトコルを用いて、デスクトップおよび他のアプリケーションをリモートクライアントと共有することができる。このようなコンピューティングシステムは、通常、ネットワーク接続（例えば、インターネット）を通して、キーボードの押下、およびマウスクリックまたはマウスによる選択を、クライアントからサーバに送信し、反対の方向で画面の更新を送り返す。従って、ユーザは、ユーザの機械がＬＡＮの一部として動作しているような体験をする。実際には、クライアント装置は、サーバ側に現れるアプリケーションのスクリーンショットを送信されているだけである。
【０００４】
リモートセッションにおいて、ディスプレイ上に「スクリーンテアリング」が起こることがある。これは、新しくレンダリングされたフレームが、前にレンダリングされているフレームに部分的に重なり、表示されたオブジェクトの２つの部分が整列せずに、破れたように見えるものである。スクリーンテアリングは、ＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）セッションで、動画またはビデオの再生などのために迅速な描画を行っているときに、最もよく起こる。ＲＤＰがビットマップ符号化、バルク圧縮、およびトランスポートスタックなどのエリアに進むと、スクリーンテアリングは、より顕著になる。従って、関連するグラフィックデータをグループ化して、単一視覚単位として確実にレンダリングされるようにすること、ならびに、シャドーバッファからグループとして表示面にコピーすべき関連する描画命令を論理的にバッチ処理することが、先行技術に対する改良となろう。
【発明の概要】
【０００５】
この命令の論理的バッチ処理を、ＲＤＰサーバによって追加してよい。表示出力をＲＤＰを介して送信するアプリケーションが、「論理フレーム開始（ｂｅｇｉｎ−ｌｏｇｉｃａｌ−ｆｒａｍｅ）」マーカおよび「論理フレーム終了（ｅｎｄ−ｌｏｇｉｃａｌ−ｆｒａｍｅ）」マーカを挿入できるようにして、この追加を達成してよい。ＲＤＰシステムのコンポーネントが、受信した符号化された描画命令のストリームを調べて、それにより関連する描画命令の始まりおよび終わりを判定し、その点に、「論理フレーム開始」マーカおよび「論理フレーム終了」マーカを挿入することによって、この追加を達成してもよい。
【０００６】
ある例示的な実施形態においては、サーバが、命令ヒープ内の少なくとも２つの論理的に関連する描画命令を判定し、その命令を開始マーカおよび終了マーカでまとめる。サーバは、そのまとめられた命令を、通信ネットワークを介してクライアントに送信する。クライアントは、その命令を受信して、シャドーバッファにレンダリングする。クライアントは、終了マーカを処理して、シャドーバッファの描画命令をクライアントの表示面に移動させる。
【０００７】
本開示の１つまたは複数の様々な態様は、本明細書で言及した本開示の態様を実施するための回路および／またはプログラミングを含んでよいが、それらに限定されない、すなわち、その回路および／またはプログラミングは、実質的に、システム設計者の設計上の選択に応じて、本明細書で言及した態様を実施するように構成されたハードウェア、ソフトフェア、および／またはファームウェアの任意の組み合わせであってよいことを、当業者は理解されよう。
【０００８】
上記は概要であり、従って、必然的に、詳細を簡略化、一般化、省略している。本概要は、例示のみを目的とするものであり、何ら限定的なものではないことを、当業者は理解されよう。
【０００９】
本明細書によるシステム、方法、およびコンピュータ可読媒体を添付の図面を参照してさらに詳しく述べる。
【図面の簡単な説明】
【００１０】
【図１】本明細書に記載のテアリングのないリモート表示を具現化する例示的な汎用コンピューティング環境を示す図である。
【図２】本開示の態様を実践する動作環境を示す図である。
【図３】テアリングのないリモート表示技術を用いるＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）を介して通信するクライアントおよびサーバを示す図である。
【図４】サーバ側のテアリングのないリモート表示の例示的な動作手順を示す図である。
【図５】クライアント側のテアリングのないリモート表示の動作手順を示す図である。
【発明を実施するための形態】
【００１１】
図１は、本明細書に記載の技術を採用してよい汎用コンピューティング装置のブロック図である。コンピューティングシステム環境１２０は、適切なコンピューティング環境の一例であり、本明細書に開示する主題の使用または機能の範囲を何ら制限するものではない。コンピューティング環境１２０は、例示的な動作環境１２０に示すコンポーネントの任意の１つまたは組合せに関して、何らかの依存または要件を有するものと解釈すべきではない。一部の実施形態においては、図示の様々なコンピューティング要素は、本開示の特定の態様をインスタンス化するよう構成された回路を含んでよい。例えば、本開示において回路と言う用語は、ファームウェアまたはスイッチによって機能（単数または複数）を行うように構成された特定用途のハードウェアコンポーネントを含むことができる。他の実施形態例においては、回路と言う用語は、機能(単数または複数）を行うように動作可能な論理を具現化するソフトウェア命令によって構成された汎用処理ユニット、メモリなどを含むことができる。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例においては、実装者は、論理を具現化するソースコードを書いてよく、そのソースコードを汎用処理ユニットで処理できる機械可読コードにコンパイルすることができる。当業者が理解されるように、最新技術は、ハードウェア、ソフトウェア、またはハードウェア／ソフトウェアの組み合わせとの間の相違はほとんどないところまで進歩しているので、特定の機能を実現するためにハードウェアとソフトウェアのどちらを選ぶかの選択は、実装者にまかされた設計上の選択である。より詳細には、ソフトウェア処理は、同等のハードウェア構造に変えることができ、ハードウェア構造は、同等のソフトウェア処理に変えることができることを、当業者は理解されよう。従って、ハードウェアで実装するかソフトウェアで実装するかの選択は、設計上の選択の１つであり、実装者にまかされる。
【００１２】
コンピュータ１４１は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１４１がアクセスできる任意の入手可能な媒体であってよく、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不可能媒体の両方を含む。システムメモリ１２２は、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ））１２３およびＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１６０などの、揮発性および／または不揮発性メモリの形式のコンピュータ記憶媒体を含む。基本入出力システム１２４（ＢＩＯＳ）は、起動時などにコンピュータ１４１内の要素間の情報伝達を支援する基本ルーチンを含み、通常、ＲＯＭ１２３に記憶される。ＲＡＭ１６０は、通常、処理ユニット１５９にすぐにアクセス可能、および／または、処理ユニット１５９によって現在動作中のデータおよび／またはプログラムモジュールを含む。一例として、図１は、オペレーティングシステム１２５、アプリケーションプログラム１２６、他のプログラムモジュール１２７、およびプログラムデータ１２８を示すが、それらに限定されない。
【００１３】
コンピュータ１４１は、他の取り外し可能／取り外し不可能、揮発性／不揮発性コンピュータ記憶媒体も含んでよい。一例として、図１は、取り外し不可能な不揮発性磁気媒体に読み書きを行うハードディスクドライブ１３８、取り外し可能な不揮発性磁気ディスク１５４に読み書きを行う磁気ディスクドライブ１３９、および、ＣＤ  ＲＯＭまたは他の光媒体などの取り外し可能な不揮発性光ディスク１５３に読み書きを行う光ディスクドライブ１４０を示す。例示的な動作環境で使用できる他の取り外し可能／取り外し不可能、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含むが、それらに限定されない。ハードディスクドライブ１３８は、通常、インタフェース１３４などの取り外し不可能メモリインタフェースを介して、システムバス１２１に接続され、磁気ディスクドライブ１３９および光ディスクドライブ１４０は、通常、インタフェース１３５などの取り外し可能メモリインタフェースによって、システムバス１２１に接続される。
【００１４】
上述し、かつ、図１に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ１４１のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを記憶する。図１においては、例えば、ハードディスクドライブ１３８は、オペレーティングシステム１５８、アプリケーションプログラム１５７、他のプログラムモジュール１５６、およびプログラムデータ１５５を記憶するとして示されている。これらのコンポーネントは、オペレーティングシステム１２５、アプリケーションプログラム１２６、他のプログラムモジュール１２７、およびプログラムデータ１２８と同じであってもよく、異なっていてもよいことに留意されたい。オペレーティングシステム１５８、アプリケーションプログラム１５７、他のプログラムモジュール１５６、およびプログラムデータ１５５は、少なくとも異なったコピーであることを示すために、本明細書では所与の異なった数字が付されている。ユーザは、キーボード１５１、通常マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１５２などの入力装置を介して、コンピュータ１４１にコマンドおよび情報を入力してよい。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれてよい。これらの入力装置および他の入力装置は、システムバスに接続されたユーザ入力インタフェース１３６を介して処理ユニット１５９に接続されることが多いが、パラレルポート、ゲームポート、またはＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）などの他のインタフェースおよびバス構造によって接続してもよい。モニタ１４２または他の種類の表示装置も、ビデオインタフェース１３２などのインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１４４およびプリンタ１４３などの他の周辺出力装置を含んでもよく、それら周辺出力装置は、出力周辺インタフェース１３３を介して接続されてよい。
【００１５】
コンピュータ１４１は、リモートコンピュータ１４６などの１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク環境で動作してよい。リモートコンピュータ１４６は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードであってよく、メモリ記憶装置１４７のみを図１に示したが、通常、コンピュータ１４１に関して上述した要素の多くまたは全てを含む。図１に示す論理接続は、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）１４５およびＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）１４９を含むが、他のネットワークも含んでよい。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００１６】
ＬＡＮネットワーク環境で用いられるとき、コンピュータ１４１は、ネットワークインタフェースまたはアダプタ１３７を介して、ＬＡＮ１４５に接続される。ＷＡＮネットワーク環境で用いられるとき、コンピュータ１４１は、通常、インターネットなどのＷＡＮ１４９を介した通信を確立するためのモデム１５０または他の手段を含む。モデム１５０は、内蔵であっても外付けであってもよく、ユーザ入力インタフェース１３６または他の適切な機構を介してシステムバス１２１に接続してよい。ネットワーク環境において、コンピュータ１４１に関連して示したプログラムモジュール、またはその一部は、リモートメモリ記憶装置に記憶してよい。一例として、図１では、リモートアプリケーションプログラム１４８は、メモリ装置１４７に常駐するとして示されているが、これに限定されない。図示のネットワーク接続は、例示的なもので、コンピュータ間に通信リンクを確立する他の手段を用いてもよいことは理解されよう。
【００１７】
図２を参照すると、図２は本開示の態様を実装することができる環境の例をおおまかに示す。図２に示す要素の例は、本開示を記載するための動作の枠組みを提供するものであることを、当業者は理解されよう。従って、一部の実施形態においては、環境の物理的レイアウトは、異なる実装スキームに応じて異なってよい。従って、動作の枠組みの例は、例示的なもので、決して請求項の範囲を限定するものではない。下記の記載は導入であり、図２に示す要素は、図３から図８の動作手順の記載に詳細に記すことも当業者は理解されよう。
【００１８】
図２は、本開示の態様を含むように構成することができる端末サーバ環境の高レベルの外観をおおまかに示したものである。図２を参照すると、サーバ２０４は、端末サーバ、ならびに、例えば３つの例であるクライアント２０１、２０２、および２０３を実現するように構成された回路を含むことができるとして示されている（３つのクライアントが示されているが、実施形態のサーバ２０４は、３つより多いまたは少ないクライアントのサーバであってもよい）。例として挙げられたクライアント２０１から２０３は、コンピュータ端末を含むことができ、コンピュータ端末は、ユーザ入力をサーバ２０４に導き、サーバ２０４が生成したユーザインタフェース情報を表示するように構成されたハードウェアによって実現される。他の実施形態においては、クライアント２０１から２０３は、図１のコンピュータ２０の要素と同様の要素を含むコンピュータであってよい。これらの実施形態例においては、クライアント２０１から２０３は、オペレーティングシステムを実施するように構成された回路、および端末の機能をエミュレートするように構成された回路を含んでよい。これらの例においては、オペレーティングシステムを実現するように構成された回路は、端末をエミュレートするように構成された回路を含んでもよいことを、当業者は理解されよう。
【００１９】
図に示した例においては、サーバ２０４は、セッション１からＮ（Ｎは１より大きい整数）などの、クライアント２０１、２０２、および２０３を接続する１つまたは複数のセッションを生成するように構成されてよい。簡単に言うと、本開示の実施形態例におけるセッションは、一般的に、例えばソフトウェアコードといった複数のサブシステムで実現される動作環境を含むことができ、複数のサブシステムは、実行環境を実現し、オペレーティングシステム２１４のカーネル２１８と情報のやり取りをするように構成されている。例えば、セッションは、シェル、およびデスクトップなどのユーザインタフェース、デスクトップ内のマウスの動きを追跡するサブシステム、アイコン上でのマウスのクリックを、プログラムのインスタンスを実現するコマンドに翻訳するサブシステムなどを含むことができる。別の実施形態例においては、セッションはアプリケーションを含むことができる。この例においては、アプリケーションをレンダリングすると、デスクトップ環境は、生成され、かつ、ユーザから隠されたままであってよい。この例のセッションは、上述のセッションと同様のサブシステムを含むことができる。一般的に、例えば、サーバ２０４が、クライアント２０１などのクライアントからネットワーク接続を介して接続要求を受信すると、ユーザ上のサーバ２０４がユーザベースによってセッションを生成することができる。一般的に、接続要求は、まず、トランスポート論理２１０によって扱うことができる。トランスポート論理２１０は、例えば、サーバ２０４の回路によって実現することができる。トランスポート論理２１０は、一部の実施形態においては、ネットワークアダプタ、ファームウェア、およびソフトウェアを含むことができ、ネットワークアダプタ、ファームウェア、およびソフトウェアは、接続メッセージを聞き、そのメッセージをエンジン２１２に転送するように構成することができる。図２に示すように、セッションが生成されると、トランスポート論理２１０は、各セッションのためのプロトコルスタックインスタンスを含むことができる。一般的に、各プロトコルスタックインスタンスは、ユーザインタフェース出力を関連するクライアントにルーティングし、関連するクライアントから受信したユーザ入力を適切なセッションコア２４４にルーティングするように、構成することができる。
【００２０】
図２に示すように、セッション生成プロセス中、エンジン２１２は、セッションのためのライセンスを取得するように構成することができる。例えば、一実施形態例においては、エンジン２１２は、セッション生成プロセス中、クライアント２０１からライセンスを受信することができる。他の実施形態例においては、エンジン２１２は、ライセンスデータベース２２２からライセンスのコピーを受信することができる。本開示の一部の実施形態においては、ライセンスデータベース２２２は、図１のコンピュータ２０などのコンピュータのオペレーティングシステム上で実行することができるリレーショナルデータベース管理プログラムを含むことができる。ライセンスデータベース２２２を含むある実施形態例においては、ライセンスデータベース２２２は、クライアントがサーバ２０４からセッションを取得しようとすると、照合することができる１つまたは複数のライセンス記憶することができる。別の実施形態においては、各ライセンスそれ自体を、例えば、ユーザ名／パスワードの組み合わせ、スマートカード識別子などといったアカウント識別子に関連付けることができ、正しいアカウント識別子が提示される場合のみ、各ライセンスを照合することができる。一般的に、サーバ２０４が生成できる接続の数は、サーバ２０４を制御するエンティティがサービスプロバイダから購入したライセンスの数によって決めることができる。例えば、エンティティがライセンスを１つ購入した場合、サーバ２０４は、１つのセッションだけを許可するように構成することができる。この例において、ライセンスをアカウント識別子に関連付けると、正しいアカウント識別子を提示するユーザのみが、セッションを取得することができる。
【００２１】
本開示の実施形態例においては、各ライセンスはサービスプロバイダ２６２が認証して初めて、使用することができる。例えば、サービスプロバイダ２６２は、実施形態例においては、ライセンスおよびサーバを認証して有効にする認証局として働くことができる。これらの実施形態においては、サービスプロバイダ２６２は、ライセンスが盗まれたり、コピーされたり、または海賊版が作成されないように、保証することができる。サービスプロバイダ２６２は、ライセンスのコピーをデータベースに保存し、ライセンスをサーバ２０４に関連付けることによって、ライセンスが購入されたサーバ２０４のみがライセンスを使用することも保証することができる。
【００２２】
図２に示すように、本開示のある実施形態例におけるコンフィギュレーションマネージャ２２４は、コンピュータ可読命令を含むことができ、コンピュータ可読命令は、実行されると、セッション作成プロセス中にライセンスを受信することができるプロセスをインスタンス化し、セッションマネージャ２１６などの様々なサブシステムとインタフェースをとることによって、新しく生み出されたセッションのサービスレベルを判定する。ある実施形態におけるセッションマネージャ２１６は、例えば、セッションスペースのためのセッション識別子を生成し、セッション識別子を表に追加し、メモリをセッションスペースに割り当て、セッションスペースに割り当てられたメモリに、システム環境の変数およびサブシステムプロセスのインスタンスを生成することによって、各セッションを開始し、管理するように構成することができる。図２に示すように、ある実施形態においては、セッションマネージャ２１６は、セッションコア２４４などのカーネルモード部分を含み得るランタイムサブシステム２４０などの環境サブシステムをインスタンス化することができる。例えば、ある実施形態における環境サブシステムは、サービスのサブセットをアプリケーションプログラムに公開し、オペレーティングシステム２１４のカーネル２１８へのアクセスポイントを提供するように構成することができる。図２に示すように、一部の実施形態においては、カーネル２１８は、セキュリティサブシステム２５０およびリソースマネージャ２５６を含むことができる。ある実施形態例においては、セキュリティサブシステム２５０は、例えば、ランタイムオブジェクトプロテクションを実行することによって、サーバ２０４のセキュリティポリシーを実施することができる。これらの実施形態においては、ある実施形態におけるリソースマネージャ２５６は、ランタイムサブシステム２４０からの要求に応答して、プロセスおよびスレッドを作成し、かつ終了することができる。より詳細には、ある実施形態においては、ランタイムサブシステム２４０は、スレッドの実行を要求することができ、セッションコア２４４は、カーネル２１８のエグゼクティブ（executive）に要求を送信して、メモリをスレッドに割り当て、スレッドを実行する時刻をスケジュールすることができる。
【００２３】
図２に関する記載を続けると、ある実施形態においては、セッションコア２４４は、グラフィック表示インタフェース２４６（ＧＤＩ）および入力サブシステム２５２を含むことができる。ある実施形態例における入力サブシステム２５２は、セッションに関連するプロトコルスタックインスタンスを介してクライアント２０１からユーザ入力を受信し、その入力をセッションコア２４４に送信するように構成することができる。ユーザ入力は、一部の実施形態においては、絶対的および／または相対的なマウスの動きによるコマンドを示す信号、マウス座標、マウスクリック、キーボード信号、ジョイスティックの動きによる信号などを含むことができる。例えば、アイコン上でのマウスのダブルクリックなどのユーザ入力は、セッションコア２４４によって受信することができ、入力サブシステム２５２は、アイコンがダブルクリックに関連付けられた座標に配置されていることを判定するように構成することができる。そして、入力サブシステム２５２は、ランタイムサブシステム２４０に通知を送信するように構成することができ、ランタイムサブシステム２４０は、アイコンに関連付けられたアプリケーションのプロセスを実行することができる。
【００２４】
クライアント２０１からの入力の受信に加えて、描画コマンドは、アプリケーションおよび／またはデスクトップから受信することができ、ＧＤＩ２４６によって処理することができる。ＧＤＩ２４６は、一般的に、グラフィカルオブジェクト描画コマンドを生成することができるプロセスを含むことができる。この実施形態例のＧＤＩ２４６は、セッションのための表示ドライバをインスタンス化することができるリモート表示サブシステム２５４にコマンドを伝えるように構成することができる。ある実施形態例においては、リモート表示サブシステム２５４は、仮想表示ドライバ（単数または複数）を含むように構成することができ、仮想表示ドライバは、サーバ２０４に物理的に取り付けられているディスプレイに関連付けられていなくてもよい。例えば、サーバ２０４は、ヘッドなしに動作していてよい。この実施形態の仮想表示ドライバは、描画コマンドを受信し、その描画コマンドをセッションに関連するスタックインスタンスを介してクライアント２０１に送信するように構成することができる。
【００２５】
図３は、テアリングのないリモート表示技術を用いるＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）を介して通信するクライアント３１０およびサーバ３０２を示す。
【００２６】
テアリングのないリモート表示技術が使われていない実施形態においては、サーバ３０２は、ビデオプレーヤなどのアプリケーション３０６を実行し、その出力を、ＲＤＰサーバ３０４およびＲＤＰクライアント３１２を含むＲＤＰセッションを介して、クライアント３１０に送信している。アプリケーション３０６は、グラフィックデバイスインタフェース（ＧＤＩ）アプリケーション３０６プログラミングインタフェース（ＡＰＩ）コマンドなどの描画コマンドを発することによって絶えずディスプレイに出力する。これは、ソースビットマップから宛先ビットマップへのビットブロック転送（ＢｉｔＢｌｔ）を用いて行うことができる。これらのコマンドは、次に、表示ドライバインタフェース（ＤＤＩ）コール（例えば、Ｗｉｎ３２Ｋ  ＤＤＩコールなど）に翻訳され、リモートデスクトッププロトコル表示ドライバ（ＲＤＰＤＤ）に送られる。ＲＤＰＤＤは、ＤＤＩコールをＲＤＰ描画命令に符号化する。
【００２７】
ＲＤＰ描画命令は、ＲＤＰサーバ３０４のリモートデスクトッププロトコルウィンドウドライバ（ＲＤＰＷＤ）と共有されるメモリの「命令ヒープ」３０５に配置される。リモートデスクトッププロトコルウィンドウドライバ（ＲＤＰＷＤ）は、ＴＣＰ接続を介してキーボードおよびマウスによる入力を受信し、その入力をキーボードまたはマウスによる入力として提示するキーボードおよびマウスのドライバとして機能する。ＲＤＰＷＤは、ディスク、オーディオ、プリンタ、およびＣＯＭポートなどの他の装置の出力先変更を可能にする仮想チャネル、すなわち、これらの装置の代替として働くチャネルの作成も可能にする。仮想チャネルは、ネットワーク３０８を通してＴＣＰ接続を介してクライアント３１０に接続し、データを求めてそのチャネルにアクセスがあると、クライアント３１０に要求が知らされ、その要求は、ＴＣＰ接続を介してアプリケーション３０６に転送される。この手順全体は、ＲＤＰプロトコルが正確な転送を仲介して、端末サーバ３０２およびクライアント３１０によって行われ、アプリケーション３０６に対して完全にトランスペアレントである。
【００２８】
次に、クライアント３１０に接続されるスタックに関連付けられたＲＤＰＷＤドライバが、命令ヒープから描画命令を引き出す。そのＲＤＰＷＤは、描画命令をバルク圧縮し、ＲＤＰトランスポート構造内にまとめ、スタックを下に送り、クライアント３１０に送信する。
【００２９】
クライアント３１０は、ＲＤＰトランスポート構造のこの描画命令を受信する。クライアント３１０は、ＲＤＰトランスポート構造から描画命令を引き出し、シャドーバッファにレンダリングする。最大で所定の数の命令が、シャドーバッファにレンダリングされると、シャドーバッファのダーティ領域が、ユーザに見える表示面にコピーされる。
【００３０】
例えば、命令の所定数が２５で、クライアント３１０が、５４の命令を含むＲＤＰパケットを受信した場合、クライアント３１０は、下記のように、漸次、表示面にレンダリングする。まず、最初の２５の命令をレンダリングし、次に、第２の２５の命令をレンダリングし、その後、残りの４つの命令をレンダリングする。
【００３１】
この任意の所定数の命令（ここでは２５）のシャドーバッファ３１４から表示面３１６へのレンダリング（表示装置３１８への出力に相当する）によって、ユーザは瞬間的に不完全な画像（テアリング）を見る場合がある。各命令が即座に表示面にレンダリングされる場合も、この問題は残る。
【００３２】
テアリングのない技術を用いた実施形態においては、サーバ３０２で実行しており、クライアント３１０にリモートで表示出力を行うアプリケーション３０６は、「開始」および「終了」のフレームマーカを挿入するようＲＤＰＤＤに命令してよい。
【００３３】
このような実施形態においては、ビデオプレーヤなどのアプリケーション３０６は、サーバ３０２上で実行する。アプリケーション３０６は、ＲＤＰサーバ３０４のリモートデスクトッププロトコル表示ドライバに、アプリケーション３０６プログラミングインタフェース（ＡＰＩ）コールを通して、論理フレームを描画すべきであるとの信号を送る。このコールに応答して、ＲＤＰＤＤは、命令ヒープ３０５に「開始」マーカを追加する。命令ヒープ３０５は、処理されるための描画命令が記憶されている場所である。アプリケーション３０６は、ＧＤＩ描画コマンドを発することによって、フレームを描画する。これらのＧＤＩコマンドは、表示ドライバインタフェース（ＤＤＩ）コールに翻訳され、ＲＤＰサーバ３０４のＲＤＰＤＤドライバに送られる。ＲＤＰは、ＤＤＩコールをＲＤＰ描画命令に符号化する。これらの符号化された描画命令は、ＲＤＰＷＤドライバと共有されるメモリ内の命令ヒープ３０５に配置される。ＲＤＰＤＤは、「終了」マーカを命令ヒープ３０５に追加する。クライアント３１０に接続されるスタックに関連付けられたＲＤＰＷＤドライバは、共有メモリから描画命令を引き出す。描画命令は、バルク圧縮され、ＲＤＰトランスポート構造内にまとめられ、スタックを下に送られ、通信ネットワーク３０８を通じてクライアント３１０に送信される。
【００３４】
別の実施形態においては、サーバ３０２は、受信した符号化された描画命令のストリームを調べて、適切な所に「開始」および「終了」のフレームマーカを配置してよい。
【００３５】
このような実施形態においては、ビデオプレーヤなどのアプリケーション３０６は、サーバ３０２上で実行する。アプリケーション３０６は、ＧＤＩ描画コマンドを発することによって、視覚的な表示出力を実施する。ＧＤＩ描画コマンドは、ＤＤＩコールに翻訳され、ＲＤＰサーバ３０６のＲＤＰＤＤドライバに送られる。ＲＤＰＤＤは、ＤＤＩコールバックをＲＤＰ描画命令に符号化する。符号化された描画命令は、ＲＤＰＷＤドライバと共有されるメモリ内の命令ヒープ３０５に配置される。「ＲＤＰバッチエンジン」は、命令ヒープ内の命令をスキャンして、論理的に関連する命令があるか否かを判定する。関連する命令があれば、「開始」マーカおよび「終了」マーカを用いてまとめる。クライアント３１０に接続されるスタックに関連付けられたＲＤＰＷＤドライバは、命令ヒープから描画命令を引き出す。ＲＤＰＷＤドライバは、描画命令をバルク圧縮して、ＲＤＰトランスポート構造内にまとめ、スタックを下に送り、通信ネットワーク３０８を通してクライアント３１０に送信する。
【００３６】
クライアント３１０は、ＲＤＰトランスポート構造を次のいずれの実施形態から受信してもよい。すなわち、サーバ３０２上で実行し、かつ、クライアント３１０にリモートで表示出力を行うアプリケーション３０６が、「開始」および「終了」のフレームマーカを挿入するようＲＤＰＤＤに命令する実施形態、および、サーバ３０２が、受信した符号化された描画命令のストリームを調べて、適切な所に「開始」および「終了」のフレームマーカを配置する実施形態である。
【００３７】
クライアント３１０は、ＲＤＰトランスポート構造を受信すると、そのトランスポート構造から描画命令を引き出す。「開始」マーカに出会うと、シャドーバッファ３１４にレンダリングされる、ＲＤＰストリーム内の次の描画命令は、対応する「終了」マーカに出会うまで、表示面３１６にコピーされず、従って、表示装置３１８にコピーされない。「開始」マーカが識別されない場合、クライアント３１０は、既存のグラフィック復号化パイプラインを用いてよい。
【００３８】
図４は、サーバ側のテアリングのないリモート表示の例示的な動作手順を示す。
【００３９】
動作４０２は、命令ヒープ内の少なくとも２つの論理的に関連する描画命令を判定し、その論理的に関連する描画命令は、始まりおよび終わりを有することを示す。
【００４０】
ある実施形態においては、論理的に関連する描画命令は、画像フレームが論理的に関連する描画命令を含むので、論理的に関連している。画像フレームを構成する描画命令は、一緒に表示されることになるので、グループ化してよい。これらの論理的に関連する描画命令の始まりは、実行される第１の描画命令であってよく、終わりは、実行される最後の描画命令であってよい。これは、矩形の画像の左上の隅、および右下の隅に対応してよい。
【００４１】
ある実施形態においては、論理的に関連する描画命令は、１つのスレッドが論理的に関連する各描画命令を作成したので、論理的に関連している。マルチスレッドシステムにおいては、複数のプロセスを実行してよい。各プロセスが、描画命令を発する単一のスレッドを有する場合、異なるスレッドからの描画命令は、論理的に関連していない可能性が高く、そして、１つのスレッドから生じる描画命令は論理的に関連している可能性が高いと判定してよい。
【００４２】
スレッドは、通常、２つのインスタンスで切り替わる。第１は、スレッドが、タスクを終了して、自主的にプロセッサ上での順番を終える時である。これは、通常、スレッドが画像フレームへの描画命令の発行を終了したときに起こる。従って、ある実施形態においては、これを、スレッドがプロセッサ上でアクティブであった自分の番の間にスレッドが発した全ての描画命令が、論理的に関連しており、フレームを構成するということを意味しているものとして、用いてよい。第２のインスタンスは、スレッドが、プロセッサ上で実行するために割り当てられた時間を使い果たしたときである。この場合は、この実行期間中にスレッドが発したすべての描画命令は、論理的に関連している可能性が高いが、スレッドが次にプロセッサ上で実行する時に発する描画命令も、この現在のスレッドに論理的に関連している場合がある。ある実施形態においては、論理的に関連する描画命令は、スレッドが自主的にプロセッサの使用をやめた後、次にプロセッサを使用するときから、次にプロセッサの使用を自主的にやめるまでにわたる。
【００４３】
スレッドは、スレッドＩＤ（ＴＩＤ）に従って判定してよい。プロセスが、論理的に関連する描画命令を発する複数のスレッドを有する場合、上記と同様の技術を用いてよく、プロセスは、プロセスＩＤ（ＰＩＤ）に従って区別してよい。
【００４４】
ある実施形態においては、論理的に関連する描画命令は、ディスプレイの一部分に対応するので、論理的に関連している。アプリケーションウィンドウは、表示面の隣接する領域を含んでよい。そして、表示面の特定の部分に対応する命令が全て、単一のプロセスによって生成され、従って論理的に関連していると判定してよい。
【００４５】
ある実施形態においては、論理的に関連する描画命令は、同じような時刻に発せられたので、論理的に関連している。あるフレームに対する描画命令は、通常、互いに近い時刻に発せられ、ある描画命令から離れた時刻に発せられた描画命令より、近い時刻に発せられた描画命令の方が、該描画命令に論理的に関連している可能性が高くなる。２つの描画命令は、その２つの描画命令の間に時間的に間に入る描画命令を発せられると、論理的に関連していないと判定されてもよい。
【００４６】
ある実施形態においては、描画命令は、アプリケーションプログラミングインタフェース（ＡＰＩ）コールを含み、開始マーカおよび終了マーカは、それぞれ、ＡＰＩへのコールを含む。例えば、グラフィックデバイスインタフェース（ＤＤＩ）アプリケーションプログラミングインタフェース（ＡＰＩ）にコールを行うことによって、描画命令が発せられる場合、ＡＰＩは、特別なｂｅｇｉｎ＿ｍａｒｋｅｒ（）およびｅｎｄ＿ｍａｒｋｅｒ（）ファンクションコールに拡張されてよく、それらのファンクションコールを用いて、それぞれ、開始マーカおよび終了マーカを表す。
【００４７】
ある実施形態においては、論理的に関連する描画命令は、アプリケーションの種類に基づいて、論理的に関連している。これは、同じアプリケーションから生じる描画命令のみが論理的に関連している場合に用いられてよい。
【００４８】
動作４０４は、論理的に関連する描画命令の始まりに開始マーカを配置し、論理的に関連する描画命令の終わりに終了マーカを配置することによって、論理的に関連する描画命令をまとめることを示す。
【００４９】
ある実施形態においては、その始まりおよび終わりは、論理的に関連する描画命令が生じるアプリケーションによって決定される。このような「アウェア」アプリケーションは、どの描画命令が論理的に関連しているか追跡し、追跡したものの指示を開始マーカおよび終了マーカを挿入するコンポーネントに送信するように設計されてよい。アプリケーションは、フレームの寸法を知っている可能性が高いので、特定のフレームが描画命令を通して生成されているときは、描画命令のストリームのみを有するなんらかの後のコンポーネントが同じことして判定するよりも、論理的に関連する描画命令にマーカをつけるのが効率的であるという利点がある。
【００５０】
ある実施形態においては、アプリケーションは、論理的に関連する描画命令をまとめる。開始マーカおよび終了マーカが生じる場所の指示を送信するよりも、アプリケーションが、開始マーカおよび終了マーカを自分で挿入してよい。例えば、これらのマーカが上述のＡＰＩコールを含む場合、アプリケーションは、これらのｂｅｇｉｎ＿ｍａｒｋｅｒ（）コールおよびｅｎｄ＿ｍａｒｋｅｒ（）コールを発するエンティティであってよい。
【００５１】
ある実施形態においては、論理的に関連する描画命令は、既知の始まりおよび既知の終わりを有するスクリーンスクレイプに対応し、論理的に関連する描画命令をまとめることは、開始マーカを既知の始まりに配置し、終了マーカを既知の終わりに配置することをさらに含む。スクリーンスクレイプは、表示装置上に表示されるように、ビットマップなどの、画像データを含んでよい。スクリーンスクレイプは、画面全体を含んでもよく、画面の一部を含んでもよい。通常、「スクレイプ」されている画像の寸法は、分かっているので、始まり（通常、スクレイプが矩形の場合、上部左端のピクセル）および終わり（この場合は、通常、下部右端のピクセル）も分かり、開始マーカおよび終了マーカは、適切に配置される。
【００５２】
ある実施形態においては、終了マーカは、ＴＣＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ）フラッシュコマンドを含む。ＴＣＰフラッシュコマンドは、ネットワークプロトコルスタックのＴＣＰ層に対して、現在保持している全てのデータを、通信ネットワークを介して伝送するために、スタックの次の下位の層に送るようにという指示であってよい。ＴＣＰフラッシュコマンドは、通常、ゼロバイトの長さの空バッファを含む。エンティティが、上述のｅｎｄ＿ｍａｒｋｅｒ（）コールなどのＡＰＩコールを行って、終了マーカを設定する場合、そのコールは、ＴＣＰフラッシュコマンドをその場所に挿入するように動作してよい。
【００５３】
動作４０６は、まとめられた論理的に関連する描画命令を、論理的に関連する描画命令を全て同時に表示するようにという指示と共に、通信ネットワークを介してクライアントに送信することを示す。
【００５４】
ある実施形態においては、まとめられた論理的に関連する描画命令は、通信ネットワークを介して、パケットの形で送信され、パケットは、終了マーカがそのパケットに挿入されると、送信される。通信ネットワークを介して送信するパケットサイズを選択するときに、効率性を考慮する。各パケットはヘッダー情報を含む。従って、少量のペイロードの一連のパケットを送信することは、メタデータ（ヘッダー情報）に対して少量のデータ（ペイロード）を送信することになる。しかしながら、大きいパケットを送信すると、パケットは、ネットワーク制御パス（有線、または無線スペクトラムの一部など）上で費やす時間が長くなり、その結果、他の装置が、そのパスでその時間にパケットを送信しようとして、衝突が生じ、両方のパケットが失われ、再送信しなければならなくなる可能性が増加する。
【００５５】
この実施形態においては、全ての論理的に関連する描画命令は、単一のパケットで送信される。これによって、その描画命令が、同じ時刻にクライアント到達することが確実になる。複数のパケットで送信されると、クライアントは、論理的に関連する描画命令を表示するために、終了マーカを含む最後のパケットを待つことになる。
【００５６】
ある実施形態においては、パケットは、最小のパケットサイズを有し、パケットが最小のパケットサイズに達すると、終了マーカがパケットに挿入されて、そのパケットを送信することをさらに含む。論理的に関連する描画命令が、わずかな描画命令だけを含む場合、そのような小さいパケットを送信することは、上述の理由から、効率的ではない。この場合、最小パケットサイズになるまで、新しい描画命令を、そのパケットに追加してよく、その後、送信を行う。ある実施形態においては、パケットは、最小パケットサイズに達すると、パケットに第１の終了マーカが挿入されて、送信される。ある実施形態においては、パケットは、最小パケットサイズに達するかまたは最大パケットサイズに達して、第１の終了マーカが挿入されると、送信される。
【００５７】
ある実施形態においては、パケットは、複数のプロトコル層を介して送信され、終了マーカを検出すると、各プロトコル層が通信ネットワークに、パケットをフラッシュすることをさらに含む。ある実施形態においては、ネットワークのためのプロトコル層は、アプリケーション層（例えば、ハイパーテキスト転送プロトコル、すなわち、ＨＴＴＰ）、トランスポート層（例えば、ＴＣＰ）、インターネット層（例えば、インターネットプロトコル、すなわち、ＩＰ）、リンク層(例えば、イーサネット)、および物理層(例えば、ＲＪ４５／ＣＡＴ５)を含む。これらの層がフラッシュコマンドを有する場合、終了マーカは、各層に対するフラッシュコマンドを含んでよい、そうすると、終了マーカを挿入することによって、パケットは、全ての層を通してフラッシュされ、通信ネットワークを介して送信される。ある実施形態においては、２つの層が同じフラッシュコマンドを共有する場合、そのコマンドは各層に対して繰り返されない。
【００５８】
ある実施形態においては、まとめられた論理的に関連する描画命令は、ＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）に従って送信される。
【００５９】
図５は、クライアント側のテアリングのないリモート表示の例示的な動作手順を示す。
【００６０】
動作５０２は、通信ネットワークを介して、表示データを受信することを示す。ある実施形態においては、このデータは、動作３０６で示されたようにサーバが送信するＲＤＰパケットとして受信される。
【００６１】
動作５０４は、シャドーバッファに表示データを記憶することを示す。ある実施形態においては、シャドーバッファは、描画コマンドを描画コマンドのビットマップ表現にレンダリングする領域を、メモリ内に含む。シャドーバッファは、表示バッファに対応してよく、表示バッファには、表示装置に表示されるデータが存在する。シャドーバッファ内のデータが表示されるとき、そのデータは表示バッファにコピーされ、新しいデータが、シャドーバッファにレンダリングされてよい。ある実施形態においては、シャドーバッファおよび表示バッファは、システムのビデオメモリに存在する。ある実施形態においては、表示データは、描画コマンドを含む。別の実施形態においては、表示データは、ビットマップなどの画像を含む。
【００６２】
動作５０６は、表示データ内の開始マーカおよび終了マーカを判定することを示す。表示データが、ＡＰＩに複数の描画コマンドを含む場合、これは、ｂｅｇｉｎ＿ｍａｒｋｅｒ（）およびｅｎｄ＿ｍａｒｋｅｒ（）に対応するコマンドを識別することを含んでよい。
【００６３】
動作５０８は、開始マーカと終了マーカとの間の全ての表示データを表示面にフラッシュすることを示す。表示面が表示バッファに対応する場合、シャドーバッファ内の全てのデータを表示バッファに転送することを含んでよい。シャドーバッファ内のデータが、最後に表示バッファに移されてから、ダーティビットなどで更新されたか否かによって識別される場合、シャドーバッファのそのダーティ部分のみが、表示バッファにコピーされてよい。
【００６４】
ある実施形態においては、タイマーがあり、全ての表示データをフラッシュすることは、タイマーがタイマー終了時刻に達すると、最も新しく受信した表示データを含む、開始マーカと最も新しく受信した表示データとの間の全ての表示データをフラッシュすることを含む。終了マーカを遅らせる場合、生成中であろうとトランスポート中であろうと、エンドユーザが、セッションが応答していないことが分からないように、または、フリーズしていると思わないように、何らかの新しい表示データを表示面に表示するのが好ましい。この場合、表示バッファが更新されるたびにタイマーがリセットされ、終了マーカが受信される前に、タイマーが特定の時刻に達する場合、表示面にフラッシュされる。
【００６５】
タイマーが終了時刻に達した後、終了マーカが受信される実施形態においては、動作は、終了マーカが判定されると、タイマーの終了時刻に達してから受信した全ての表示データをフラッシュしてよい。
【００６６】
＜結論＞
様々な図面に示したように、好ましい態様に関連して本開示を記載したが、本開示から逸脱することなく、他の同様の態様を用いてもよく、本開示と同じ機能を行うために、記載の態様に変更および追加を行ってもよいことは理解されたい。従って、本開示は、任意の単一の態様に限られず、添付請求項に従った範囲で解釈すべきである。例えば、本明細書に記載の様々な手順は、ハードウェア、ソフトウェア、または、それらの組み合わせで実装してよい。従って、開示の実施形態の方法および装置、または、それらの一部の態様もしくは部分は、フロッピーディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または、任意の他の機械可読記憶媒体などの、有形媒体で具体化されるプログラムコード（すなわち、命令）の形をとってよい。プログラムコードが、コンピュータなどの機械にロードされて、実行されると、機械は、開示の実施形態を実践するように構成された装置となる。本明細書に明示した具体的な実装例に加えて、他の態様および実装例は、本明細書の内容を考慮すれば、当業者には明らかであろう。明細書および図示した実装例は、一例に過ぎない。
【図１】
0005646518.tif 000002
【図２】
0005646518.tif 000003
【図３】
0005646518.tif 000004
【図４】
0005646518.tif 000005
【図５】
0005646518.tif 000006