(57)【要約】本発明の実施には、受信側コンピュータシステムで表示されるように意図されたデータを生成する送信側コンピュータシステムでホストされる１つまたは複数のアプリケーションが含まれる。送信側コンピュータシステムのミラードライバは、共有データをビットマップにレンダリングし、これが受信側コンピュータシステムに送信される。また、ミラードライバは表示されるように意図されていない非共有データの代わりとなる１つまたは複数のシンプルなイメージファイルをレンダリングし、この代替イメージを受信側コンピュータシステムに送信する。次に、受信側コンピュータシステムはその既存のリソースを使用して受信したデータをレンダリングする。一実施では、送信側コンピュータシステムのドライバインターフェイスは、データを生成する１つまたは複数のアプリケーション、１つまたは複数のディスプレイドライバ、およびミラードライバの間を仲介する。このように、ドライバインターフェイスは標準のディスプレイドライバだけでなく、ミラードライバにもデータを渡し、ミラードライバは必要に応じてデータをフィルタリングする。
2009508262.tif 000002
【特許請求の範囲】
【請求項１】
送信側コンピュータシステムがネットワーク接続を介してデスクトップの表示を受信側コンピュータシステムと共有するように設定されたコンピュータ化されたシステムにおいて、前記送信側コンピュータシステムの共有アプリケーションの描画コマンドと隠しアプリケーションの描画コマンドとをフィルタリングする方法であって、
受信側コンピュータシステムで表示されるように意図された１つまたは複数の共有描画コマンドを識別する動作と、
前記受信側コンピュータシステムから隠されるように意図された１つまたは複数の隠し描画コマンドを識別する動作と、
前記１つまたは複数の共有描画コマンドをビットマップにレンダリングする動作と、
前記１つまたは複数の隠し描画コマンドの代わりに代替イメージを送信できるように、該代替イメージを前記ビットマップにレンダリングする動作と
を含むことを特徴とする方法。
【請求項２】
前記１つまたは複数の共有描画コマンドは、前記送信側コンピュータでも表示されるように意図されていることを特徴とする請求項１に記載の方法。
【請求項３】
前記１つまたは複数の隠し描画コマンドは、前記送信側コンピュータでは表示されるが、前記受信側コンピュータシステムのディスプレイには表示されないように意図されていることを特徴とする請求項１に記載の方法。
【請求項４】
前記１つまたは複数の共有描画コマンドと前記１つまたは複数の隠し描画コマンドをドライバインターフェイスで受信する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ドライバインターフェイスと前記ミラードライバはカーネルモードで動作することを特徴とする請求項４に記載の方法。
【請求項６】
前記１つまたは複数の共有描画コマンドと前記１つまたは複数の隠し描画コマンドを前記送信側コンピュータシステムにおいてローカルディスプレイドライバに送信する動作をさらに含むことを特徴とする請求項４に記載の方法。
【請求項７】
前記１つまたは複数の共有描画コマンドを前記ビットマップにレンダリングするためにミラードライバに送信する動作と、
前記代替イメージを前記１つまたは複数の隠し描画コマンドとともに前記ミラードライバに送信する動作とをさらに含み、該代替イメージは前記１つまたは複数の隠し描画コマンドを生成する隠しアプリケーションから前記ドライバインターフェイスに提供されることを特徴とする請求項４に記載の方法。
【請求項８】
前記１つまたは複数の共有描画コマンドは現在隠しアプリケーションと関係があるという指示をミラードライバにおいて受信する動作をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ビットマップにレンダリングされた前記１つまたは複数の共有描画コマンドを前記代替イメージで置き換える動作をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ミラードライバは、リモートデスクトッププロトコルドライバであり、前記方法は前記レンダリングされたデータをネットワークパケットとしてリモートデスクトッププロトコルを通して前記受信側コンピュータシステムに送信する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記受信側コンピュータシステムにおいて、
前記送信側コンピュータシステムから前記ネットワークパケットを受信する動作と、
前記１つまたは複数の共有描画コマンドは意図されたとおりに表示され、前記１つまたは複数の隠し描画コマンドは前記代替イメージによって表示されるように、前記ネットワークパケットを表示用にレンダリングする動作と
をさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記１つまたは複数の共有描画コマンドあるいは前記１つまたは複数の隠し描画コマンドのいずれかを生成したアプリケーションから停止命令を受信する動作と、
前記１つまたは複数の共有描画コマンドおよび前記１つまたは複数の隠し描画コマンドのいずれかの少なくとも一部を停止イメージファイルで置き換える動作と
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
ミラードライバは、前記アプリケーションから前記停止コマンドを受信することと、前記ミラードライバは前記共有描画コマンドあるいは前記隠し描画コマンドのいずれかの代わりに前記停止イメージファイルを前記ビットマップにレンダリングすることとを特徴とする請求項１２に記載の方法。
【請求項１４】
コンピュータ化されたシステムのサーバーにおいて、前記サーバーはネットワーク接続を介してデスクトップの表示をクライアントと共有するように設定されており、クライアントコンピュータシステムと表示を共有するときに停止機能を実施する方法であって、
１つまたは複数のアプリケーションからの複数の描画コマンドをサーバーにおいて識別する動作であって、該複数の描画コマンドの少なくとも１つは前記サーバーで表示されかつクライアントで表示されるように意図されている、前記複数の描画コマンドを識別する動作と、
前記サーバーにおいて前記１つまたは複数のアプリケーションのいずれかからの停止命令をドライバインターフェイスで受信する動作と、
いずれかの前記複数の描画コマンドの代わりに停止イメージがネットワークを経由して前記クライアントに送信されるように、ミラードライバで前記停止イメージをビットマップにレンダリングする動作と
を含むことを特徴とする方法。
【請求項１５】
ディスプレイドライバが前記複数の描画コマンドを前記サーバーで表示するためにレンダリングするように、前記ドライバインターフェイスは前記複数の描画コマンドをサーバーの前記ディスプレイドライバに送信する動作を含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ミラードライバは、カーネルモードで動作するリモートデスクトッププロトコルドライバであり、前記ミラードライバはアプリケーションから受信したグラフィックスコマンドをキャプチャし、前記アプリケーションの命令に従って前記グラフィックスコマンドを置き換えるように設定されていることを特徴とする請求項１４に記載の方法。
【請求項１７】
リモートデスクトッププロトコルを通じて、前記レンダリングされた停止イメージをデータストリームで前記クライアントに送信する動作をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記１つまたは複数のアプリケーションからの前記複数の描画コマンドは、前記クライアントで表示されるデータと、前記サーバーでは表示されるが前記クライアントでは表示されないデータとを含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記停止命令は前記複数の描画コマンドの少なくとも１つの代わりに使用される前記停止イメージを含むことを特徴とする請求項１４に記載の方法。
【請求項２０】
前記ネットワークサーバーがネットワーク接続を経由してデスクトップの表示を受信側コンピュータシステムと共有するように設定されたコンピュータ化されたシステムの送信側コンピュータシステムにおいて、それに格納されたコンピュータ実行可能命令を備えるコンピュータプログラム製品であって、実行される際に、前記送信側コンピュータシステムの１つまたは複数のプロセッサに対して、
受信側コンピュータシステムで表示されるように意図された１つまたは複数の共有描画コマンドを識別する動作と、
前記受信側コンピュータシステムから隠されるように意図された１つまたは複数の隠し描画コマンドを識別する動作と、
前記１つまたは複数の共有描画コマンドをビットマップにレンダリングする動作と、
前記１つまたは複数の隠し描画コマンドの代わりに代替イメージを送信できるように、前記代替イメージを前記ビットマップにレンダリングする動作と
を含むメッソドを実行させることを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リモートクライアントのディスプレイからの隠し（ｏｂｓｃｕｒｅｄ）データをフィルタリングする（ｆｉｌｔｅｒｉｎｇ）方法に関する。
【背景技術】
【０００２】
コンピュータ化されたシステムは、ますます普及しており、このため規模の大小を問わないネットワーク内でコンピュータシステムのファイルと処理リソース（資源）を分散する必要がある。一般に、コンピュータシステムと関連のデバイスは、たとえば個人的な電子メッセージの交換、商品の販売、アカウント情報の提示など、さまざまな理由でネットワークを経由して情報を伝達する。しかし、コンピュータシステムとその関連のアプリケーションはますます機能が向上しているので、ネットワーク上のデータとリソースの共有に関連する問題も増えていることがわかるであろう。
【０００３】
組織的なネットワーク内でリソースを分散する現在のいくつかの方法には、集中コンピューティング（ｃｅｎｔｒａｌｉｚｅｄ  ｃｏｍｐｕｔｉｎｇ）のシナリオが含まれており、その集中コンピューティングはそのようなソースをローカルにインストールしていない１つまたは複数のクライアントとリソースを共有する集中ネットワークサーバー（ｃｅｎｔｒａｌｉｚｅｄ  ｎｅｔｗｏｒｋ  ｓｅｒｖｅｒ）を含んでいる可能性がある。このような機能のために使用されている当該プロトコルは、リモートデスクトッププロトコル（”ＲＤＰ”：Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ  Ｐｒｏｔｏｃｏｌ）である。リモートデスクトッププロトコルを使用すると、クライアントコンピュータシステムは対象のリソースをホストする集中ネットワークサーバーにアクセスできる。クライアントコンピュータシステムは、ちょうどこうしたリソースがあたかもローカルにインストールされているかのように、こうしたリソースと交信する（たとえば、マウスイベントやキーボードイベントなどを送信する）。
【０００４】
次に、ネットワークサーバーはこうした対話を処理し、サーバー自体のビデオドライバを使用してデータの対応するレンダリング情報を作成し、処理されたデータと作成されたレンダリング情報の両方をクライアントに返送する。そして、クライアントコンピュータシステムはこうしたデータとレンダリング情報を受信し、クライアント側のビデオドライバを使用して受信したデータをローカルにレンダリングし、表示する。こうしたクライアントコンピュータシステムとネットワークサーバーとのこの対話は、あたかもクライアントコンピュータシステムがそれ自体にインストールされたリソースを使用して実際にデータをローカルに処理しているかのように途切れなく（シームレスに）実行されるのが理想的である。残念ながら、こうしたシステムはネットワークスループット（処理能力、処理量）の制約による影響を受けやすく、結果として、負荷が大きい場合は対話と処理の点からローカルクライアントコンピュータシステムでの表示間で「ラグ（ｌａｇ）」（通信の時間差による遅れ）となる可能性がある。さらに、こうしたシステムにはサーバーで表示されるいくつかのウィンドウは、あるローカルクライアントでも表示されるが他のローカルウィンドウでは表示されないというような、「共有（ｓｈａｒｅｄ）」リソースと「非共有（ｕｎｓｈａｒｅｄ）」リソースのコンセプト（概念）を有していないのが一般的である。むしろ、クライアントセッションに関してネットワークサーバーで開かれているすべては、クライアントコンピュータシステムに配信することができるものである。
【０００５】
いくつかの点で前述の集中共有モデル（ｃｅｎｔｒａｌｉｚｅｄ  ｓｈａｒｉｎｇ  ｍｏｄｅｌ）と同様である別のタイプのシステムには、ネットワーク上の他の受信クライアントコンピュータシステムにウィンドウデータの情報を送信するように設定されたブロードキャスト（または「送信側」）クライアントコンピュータシステムが含まれる。この機能は、「デスクトップ共有（ｄｅｓｋｔｏｐ  ｓｈａｒｉｎｇ）」と呼ばれることもある。この例では、ブロードキャストコンピュータ（たとえば学習環境の「インストラクタ」）と受信側コンピュータシステム（たとえば「受講生」）は、普通にインストールされているアプリケーションプログラムを使用して接続し、インストラクタ用コンピュータのデスクトップの表示とローカルにインストールされたアプリケーションとを共有できるようにする。集中コンピューティングシステムのシナリオと同様に、クライアントのコンピュータシステムは、インストラクタのコンピュータで表示されるウィンドウがあたかも受講生のコンピュータ自体のウィンドウであるかのように、それらウィンドウで情報のやりとりができる可能性がある。
【０００６】
前述のＲＤＰを使用したクライアント−サーバーモデルとは対照的に、こうしたシステムでは共有ウィンドウデータと非共有ウィンドウデータの概念を実施できる。たとえば、インストラクタはインストラクタが開いているウィンドウのすべてを受講生と共有したいとは限らない場合（たとえば、インターネットブラウザが銀行口座を開いている場合）があるが、このような場合は、解答を含むウィンドウは共有するが、機密情報を含むウィンドウは共有しないように指定できる。とは言うものの、インストラクタのコンピュータシステムは非共有ウィンドウからのデータをそれでも暗号化（ｅｎｃｏｄｅ）してから、共有ウィンドウデータと非共有ウィンドウデータの両方を受講生のコンピュータシステムに送信することになる。その結果として、受講生のコンピュータシステムで共有ウィンドウは正確にレンダリングされるものの、非共有ウィンドウのデータはそれが独自に暗号化されているため、処理しようとしてもレンダリングできないこととなる。それ故に、受講生のコンピュータシステムでは、本来非共有ウィンドウデータが表示されるはずの場所に、いくつかのデフォルトの一般的なラインや正方形が生成されることになろう。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述の集中ＲＤＰモデルと同様に、このインストラクタ／受講生（すなわち送信機／受信機）タイプのシステムにもいくつかの欠点があるため、集中デスクトップ共有環境への適用は困難になっている。たとえば、共有概念と非共有概念が適切に管理されるように、同じアプリケーションプログラムと対応する更新をローカルにインストールするためには、こうしたシステムでは典型的に送信プログラムと受信プログラムの両方を必要としている。さらに、非共有データを暗号化した場合に、受信側コンピュータが非共有ウィンドウデータの復号化を試行し、レンダリングできない場合に表示するものを決定するということを必要としていることは、一定の効率の悪さがある。さらに、非共有データを送信する場合は、暗号化されていても、悪徳（ｕｎｓｃｒｕｐｕｌｏｕｓ）エージェントがこの非共有データを取得し、復号化に成功する場合がないとは言い切れないという可能性が依然として存在しているので、セキュリティ上の問題が存在し得る。
【０００８】
それに対して、共有ウィンドウデータと非共有ウィンドウデータの概念を考慮する場合は、ＲＤＰなどのようなプロトコルを更新するだけでも簡単なことではない。具体的に言うと、こうしたプロトコルを更新することは、一般的に、プロトコルを介してサーバーからのリソースを共有する、サーバーと各クライアントコンピュータシステムの両方において対応する拡張を提供しインストールすることに、アドミニストレータ（運営管理者）が時間をかける必要があることを含んでいる。
【０００９】
したがって、現在のリソース共有プロトコルにはさまざまな側面（ａｓｐｅｃｔ）があるため、デスクトップ共有環境でこうしたプロトコルの利点を組み合わせることを困難にしている。
【課題を解決するための手段】
【００１０】
本発明の実施により、ネットワーク化されたコンピュータシステム間でアプリケーションの表示の共有についての効率を高めるシステム、方法、およびコンピュータプログラム製品を使用して、前述の技術的な問題の１つまたは複数が解決される。特に、本発明の少なくとも１つの実施には、共有するように意図されたディスプレイ画面の領域と、さらに共有しないように意図されたディスプレイ画面の領域とを識別するサーバー（または送信側コンピュータ）が含まれる。そして、サーバーは非共有コンテンツを１つまたは複数のシンプルなイメージファイル（単純な画像ファイル）に置き換え、非共有コンテンツの代わりにそのシンプルなイメージファイルを送信する。従って、機密情報を隠すことができ、クライアントコンピュータシステムからの何らかの顕著なプロセスアクション（ｐｒｏｃｅｓｓｉｎｇ  ａｃｔｉｏｎ）を要求する必要はない。
【００１１】
たとえば、本発明の１つまたは複数の実施による共有アプリケーションの描画コマンドと隠しアプリケーションの描画コマンドとをフィルタリングする１つの方法には、少なくとも１つのリモートクライアントにおいて表示されるように意図された１つまたは複数の共有描画コマンドを識別することが含まれる。本方法には、さらにリモート（遠隔）クライアントから隠されるように意図された１つまたは複数の隠し描画コマンドを識別することも含まれる。さらに、本方法には、１つまたは複数の共有描画コマンドをビットマップにレンダリングすることと、同様に１つまたは複数の隠し描画コマンドの代替イメージをビットマップにレンダリングすることとが含まれる。そういう次第なので、隠さなければならないと意図されたコンテンツの代わりに代替イメージを送信できる。
【００１２】
さらに、リモートクライアントと表示を共有する場合に停止（ｐａｕｓｅ）機能を実施する方法は、サーバーシステムの１つまたは複数のアプリケーションからの複数の描画コマンドを識別する動作が含まれる。この場合は、複数の描画コマンドの少なくとも１つはクライアントコンピュータシステムで表示されるように意図されている。さらに、本方法には、サーバーの１つまたは複数のアプリケーションのいずれかからの停止命令を受信することと、さらにミラードライバが対応する停止イメージをビットマップにレンダリングすることとが含まれる。このような事情なので、複数の描画コマンドの代わりに停止イメージをクライアントコンピュータシステムに送信できる。
【００１３】
「課題を解決するための手段」では、いくつかの概念について、後述の「発明を実施するための最良の形態」で詳細に説明する前に、簡略化した形で紹介している。この項は、特許請求の範囲に記載されている内容の重要な特徴または必須の特徴を示すものではない。また、こうした主題の範囲を判断するための補助として使用するものでもない。
【００１４】
本発明のその他の特徴と利点は、この後の説明で示すが、こうした説明からある程度は明らかになるであろうし、あるいは、本発明の実施によって理解できるであろう。本発明の特徴と利点は、添付の特許請求の範囲に詳細に記載する手段と組み合わせによって実現され、達成される。本発明の前述の特徴およびその他の特徴は、以下の説明と添付の特許請求の範囲によってさらに明らかになるであろうし、あるいは、本明細書の以下の部分に示す本発明の実施によっても理解できるものである。
【００１５】
本発明の前述の利点と特徴およびその他の利点と特徴を実現する方法を説明するために、以上で簡単に説明した本発明のより詳細な説明をその特定の実施形態に関連付けて記述し、添付の図面に示す。これらの図面が本発明の例示的な実施形態を示すにすぎないこと、したがって本発明の範囲を限定するものとは見なされないことを理解した上で、添付の図面を使用しながら本発明についてより具体的に説明する。
【発明を実施するための最良の形態】
【００１６】
本発明の実施は、ネットワークを介して接続されたコンピュータシステム間でアプリケーションの表示の共有に関する効率を高めるシステム、方法、およびコンピュータプログラム製品にまで及ぶ。具体的に、本発明の少なくとも１つの実施には、共有するように意図されたディスプレイ画面の領域と共有しないように意図されたディスプレイ画面の領域とを識別するサーバー（または送信側コンピュータ）が含まれる。ここで、サーバーは非共有コンテンツを１つまたは複数のシンプルなイメージファイルに置き換え、非共有コンテンツの代わりにこのシンプルなイメージファイルを送信する。このようにして機密情報を隠すことができ、必ずしもクライアントコンピュータシステムが重要なプロセスアクションを実行する必要はない。
【００１７】
本明細書および特許請求の範囲からより詳細に理解されるように、こうしたフィルタの動作は非常にシンプルなリモート表示プロトコルを使用して実行でき、必ずしもサーバー側またはクライアント側から膨大な処理を実行する必要はない。一般に、「リモートビュー（ｒｅｍｏｔｅ  ｖｉｅｗ）」、「リモート表示（ｒｅｍｏｔｅ  ｖｉｅｗｉｎｇ）」、または「リモート共有（ｒｅｍｏｔｅ  ｓｈａｒｉｎｇ）」という用語は、遠隔地に配置された別のコンピュータシステムの少なくとも１つのディスプレイ画面データを表示する１つのコンピュータシステムの一般的な概念を示している。また、リモート表示は本明細書で機能について説明されているが、表示および隠し表示に関するかなりきめ細かな情報を受信側コンピュータシステムに送信できるので、必ずしも大きなネットワーク帯域幅を必要とはしない。さらに、こうした共有アプリケーション領域と隠しアプリケーション領域のリモート表示手続きを使用した通信は、リモートデスクトッププロトコル（すなわち”ＲＤＰ”）などの既存のプロトコルを使用して実行できるので、サーバー側からもクライアント側からもプロトコルの大幅な変更や関連の管理は必ずしも必要ではない。
【００１８】
図１Ａに示すように、たとえば、送信側コンピュータ１００はネットワーク１４０を経由してアプリケーションデータを受信側コンピュータ１５０に送信する。たとえば、受信側コンピュータ１５０（たとえばクライアントコンピュータシステム）は送信側コンピュータ１００（たとえばサーバーコンピュータシステム）に接続してアプリケーション１１０などのさまざまなリソースを共有し、これを受信側コンピュータ１５０のディスプレイ１５５にローカルに表示する。あるいは、送信側コンピュータ１００のエンドユーザー（端末使用者）は受信側コンピュータ１５０のエンドユーザーとディスプレイ画面を共有する。ただし、送信側コンピュータ１００のディスプレイ画面１０５にはアプリケーション１１０のデータとアプリケーション１１５のデータが表示されている。いずれにしても、送信側コンピュータ１００のディスプレイ画面１０５に表示できるデータの少なくとも一部は、受信側コンピュータ１５０のディスプレイ画面１５５に表示できるように意図されている。さらに、図１Ａはアプリケーション１１０が共有され、アプリケーション１１５は隠されることを示している。たとえば、アプリケーション１１５には別の受信側コンピュータシステム（図示せず）からアクセスできる。つまり、送信側コンピュータ１００のエンドユーザーが受信側コンピュータ１５０には表示したくないデータ（たとえば銀行口座が表示されたブラウザなど）は別のコンピュータに表示される。
【００１９】
アプリケーション１１０、１１５がディスプレイ１０５で目に見える変化となる描画操作を実行すると、ドライバインターフェイス１２５はこのデータをディスプレイドライバ１３０に渡す。１つの実施では、ドライバインターフェイス１２５は、デバイスインターフェイスコンポーネント（たとえば、グラフィックスデバイスインターフェイス（”ＧＤＩ：Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ”））であり、アプリケーションプログラムからのグラフィカルな関数の呼び出しを取得し、対応するグラフィカルな命令を適切なデバイスドライバに供給する。一般に、ドライバインターフェイス１２５は、アプリケーションプログラムとディスプレイドライバの間を仲介でき、さらに場合によっては以下でより詳細に説明するフィルタ機能性を提供するように設定された任意のコンピュータプログラムコードであるとすることができる。
【００２０】
たとえば、図１Ａはドライバインターフェイス１２５が共有アプリケーション１１０から共有表示データ１２０を受信し、隠しアプリケーション１１５から隠し表示データ１２１を受信することを示している。一般に、データ１２０および１２１は少なくとも幾何学的な描画データを備えており、こうしたデータを使用して、対応するアプリケーションで生成されたイメージをレンダリングできる。ここで、ドライバインターフェイス１２５は、ローカル（現地）ディスプレイ用の適切なディスプレイドライバ（この場合はドライバ１３０）を識別し、識別されたディスプレイドライバにデータ１２０および１２１を渡す。これでディスプレイドライバ１３０はデータをレンダリングでき、これをサーバーのディスプレイ１０５にローカルに表示するのが一般的である。具体的に、アプリケーションはサーバー１００でローカルにホストされ、表示されるため、ドライバインターフェイス１２５はローカルなフィルタ情報またはフィルタ機能を提供する必要はない。
【００２１】
また、図１Ａはドライバインターフェイス１２５がミラードライバ１３５と通信することも示している。ミラードライバは、「リモートビュー」ドライバ（たとえばＲＤＰドライバ）と通信し、アプリケーション１１０、１１５から受信した描画コマンドをそのドライバに提供する。一般に、ミラードライバ１３５は、元は１つのディスプレイデバイスドライバ用であった描画コマンドの複製の描画コマンドを受信でき、こうした複製（または「ミラー（ｍｉｒｒｏｒｅｄ）」）の形の描画コマンドをレンダリングできる任意のタイプのコンポーネントまたはモジュールであるとすることができる。図示しているように、たとえば、ミラードライバ１３５はドライバインターフェイス１２５から描画コマンドを受信する。こうしたコマンドは、同時にディスプレイドライバ１３０にも送信される。
【００２２】
しかし、図１Ａはドライバインターフェイス１２５が共有データ１２０をディスプレイドライバ１３０に送信するのと同様にミラードライバ１３５に送信するが、フィルタリング命令１２３と隠しデータ１２１もミラードライバ１３５に送信することも示している。１つの実施では、ドライバインターフェイス１２５は、描画命令が特定の領域（たとえば共有ディスプレイ画面）に関連する場合にこうした命令のみをミラードライバ１３５に送信するように設定することもできる。いずれの場合も、フィルタリング命令１２３は非共有アプリケーション１１５用の幾何学的な命令と、データ１２１は共有されないという指示を備えることができる。または、アプリケーション１１５（またはアプリケーション１１０、あるいは図示されていない別のコンポーネント）によって選択された任意のイメージファイルを備えることもできる。受信時に、ミラードライバ１３５はデータ１２０および１２３を処理し、対応する描画を送信機側ビットマップ１３７ａに作成する。
【００２３】
しかし、この場合は、ミラードライバ１３５はイメージをデータ１２０（すなわち「アプリケーション１１０」）に対応する送信機側ビットマップ１３７ａとして描画し、メッセージ１２３に含まれる新しい命令に基づいて、隠しデータ１２１の代わりとなる別の代替イメージ１３１を送信機側ビットマップ１３７ａとして準備する。送信側コンピュータ１００は、次いでこうしたイメージを適切なプロトコル（たとえばＲＤＰ）によるグラフィックスコマンドとして準備し、さらにこうしたグラフィックスコマンドに対応するネットワークパケットを準備する。次に、送信側コンピュータ１００はネットワーク１４０を経由してこうしたネットワークパケットを送信し、最終的には受信側コンピュータ１５０において対応する受信機側ビットマップ１３７ｂとなる。このようなネットワークパケットには、描画コマンドに対応する生のデータに加えて、代替イメージ１３１に付随する命令（たとえば、代替イメージ１３１を並べて表示（ｔｉｌｅ）か、拡大して表示か、またはそれ以外の何らかの方法で表示かなどについて）を含めることもできる。
【００２４】
受信側コンピュータ１５０で、対応するビューアーアアプリケーション（図示せず）は受信機側ビットマップ１３７ｂからネットワークパケットのデータストリームを、データ１２０および代替イメージ１３１（および対応する表示命令）として読み込み、このデータをドライバインターフェイス１２７に送信する。使用するプロトコル（たとえばＲＤＰなど）によって、受信側コンピュータ１５０は代替イメージ１３１をキャッシュに保存して後で利用することも、代替イメージ１３１を代わりに使用する他の特定のイメージに置き換えることもできる。次に、ドライバインターフェイス１２７はデータをディスプレイドライバ１４５に渡し、ディスプレイドライバはデータをレンダリングしてクライアントのディスプレイ画面１５５に表示する。このようにして、クライアントのディスプレイ画面１５５には送信側コンピュータのディスプレイ画面１０５とほとんど同じ、アプリケーション１１０の同一のコピーが表示される。しかしながら、ディスプレイ画面１０５とは異なり、ディスプレイ画面１５５ではアプリケーション１１５は隠されるため、アプリケーション１１５の代わりにフィルタリング命令１２３（またはそれ以外の特定の選択された代替イメージ）が表示される。
【００２５】
従って、送信側コンピュータ１００は隠しアプリケーションデータ領域と共有アプリケーションデータ領域を決定するための該当する処理のほとんどすべてを実行し、受信側コンピュータシステム１５０は単に受信したデータを読み込んでレンダリングするだけですむ。これにより、受信側コンピュータシステム１５０は、すでに適切に装備されている機能を実行するだけでよく、受信側コンピュータシステムにインストール済みのリソースに対する追加の更新または拡張を受信する必要はない。さらに、このことにより、本発明の実施は古いバージョンのリモート表示クライアント／サーバーモデルおよび／または関連のプロトコルと容易に互換できる。
【００２６】
前述の原理のそれ以外の態様は、データのフィルタを、アプリケーションを介したユーザーモードでなくドライバインターフェイスおよび／または対応するドライバによってカーネルモードで追跡できることである。そういう次第なので、さまざまなドライバは本質的に同期およびファンネリング（ｆｕｎｎｅｌｉｎｇ）エージェントとして動作でき、共有するものはどれか、共有しないものはどれかという直接的な認識に基づいて、イメージをレンダリングして送信することができる。たとえば、アプリケーションが共有とするか非共有とするかを示す指定を受信すると、この指定をアプリケーションの送信データ（たとえば、１２０、１２１）に直接関連付けることができ、さらにミラードライバ１３５およびドライバインターフェイス１２５に送信できる。アプリケーションデータが共有されないという指定をミラードライバ１３５が受信したときには、ミラードライバ１３５は送信機側ビットマップ１３７ａ内にデフォルトのイメージを直ちに描画するか、または送信機側ビットマップ１３７ａ内で隠しコンテンツを特定のデフォルトのイメージで置き換える。このように、共有および非共有の概念と、受信したデータとの同期はミラードライバ１３５で実現できるので、ミラードライバ１３５はアプリケーションから同期情報を受信する場合のいく分かの遅延によって非共有データを送信する状況を回避できる。
【００２７】
図１Ｂは、リモート表示環境またはリモート共有環境で前述の技術を実施できる別の方法を示している。具体的に、図１Ｂはブロードキャストコンピュータシステム（たとえば、学習環境で送信側コンピュータ１００を使用するインストラクタ）がシンプルなリモート共有プロトコル（たとえばＲＤＰ）を使用して表示（ｐｒｅｓｅｎｔａｔｉｏｎ）を停止できる方法を示している。停止コマンドを実施すると、すべてのデータが１つまたは複数の対応する任意の受信側コンピュータシステム（たとえば受信側コンピュータ１５０）に送信される前に、代替イメージによって隠すことができる。
【００２８】
たとえば、図１Ｂは図１Ａと同様にドライバインターフェイス１２５が共有データ１２０と隠しデータ１２１を受信することを示している。しかし、図示されたケースでは、ドライバインターフェイス１２５はたとえば共有アプリケーション１１０からコラボレーション（ｃｏｌｌａｂｏｒａｔｉｏｎ）ＡＰＩを使用してさらに停止命令１６０も受信する。ドライバインターフェイス１２５は、ここで前と同様にデータ１２０および１２１をディスプレイドライバ１３０に渡し、さらにデータ１２０および１２１に加えて停止命令１６０をドライバインターフェイス１２５からミラードライバ１３５に渡す。停止命令１６０を使用する場合は、たとえば、送信ユーザー（インストラクタなど）は隠そうとしているアプリケーションの前面の表示に使用するアプリケーションを変更してもよい。インストラクタは、隠しアプリケーションが新しいウィンドウまたはアプリケーションを閉じるとき、または開くときに瞬間的に表示されることがないように、受信側コンピュータシステムのディスプレイ画面全体を瞬間的な停止イメージで隠したい場合がある。それに応じて、インストラクタは対応するアプリケーションに停止命令１６０を送信するように要求する。
【００２９】
ドライバインターフェイス１２５は、ミラードライバ１３５に、アプリケーション１１０、１１５から送信されたアプリケーションデータを渡し、さらに停止命令１６０を渡す。命令１６０は、対応するアプリケーション（たとえば１１０および／または１１５）が現在の表示の境界（ｂｏｒｄｅｒｓ）に関して識別した情報と、これに続くこうした境界の間の少なくとも一部を適切に選択された停止イメージで置き換えるという命令の準備に基づくことができる。ミラードライバ１３５は、データ１２０および１２１を受信すると同時に停止イメージ１６１に置き換えることができる。
【００３０】
いずれの場合も、ミラードライバは適切な停止イメージを送信機側ビットマップ１３７ａに描画し、データ１２０および１２１の一部またはすべてを、停止イメージ１６１に置き換える。図１Ａで説明したように、ここで送信側コンピュータ１００はネットワーク１４０を経由してこのデータをネットワークパケットの形で受信機側ビットマップ１３７ｂに送信する。受信側コンピュータ１５０は、次いで必要に応じてこのデータを読み込み、中継し、さらにレンダリングし、最終的に停止イメージ１６１をディスプレイ１５５に表示する。さらに、受信側コンピュータ１５０は停止イメージ１６１をキャッシュに保存して後で使用できる。また、必要に応じて停止イメージ１６１を適切に選択された別の停止イメージで置き換えることもできる。しかし、レンダリングされ、表示されるにもかかわらず、受信側コンピュータ１５０は送信側コンピュータ１００が特に隠されるようにまたは表示されないように意図されたコンテンツを少なくとも部分的には表示できない。まず、最初に、こうしたコンテンツは送信側コンピュータ１００から受信されないためである。
【００３１】
たとえば、概略図１Ａ〜図１Ｂと対応する説明文には、デスクトップ共有環境で共有データの概念と隠し（あるいは非共有または非表示）データの概念を実施できる多くのコンポーネントおよび手段が提供されている。本発明の実施については、方法を実現する一連の動作の観点から説明することもできる。たとえば、図２と図３はリモート表示環境で共有アプリケーションの描画コマンドと隠しアプリケーションの描画コマンドとをフィルタリングする方法、および停止機能をリモートで実施する方法のそれぞれについて、その一連の動作を表す流れ図を示している。図２と図３については、図１Ａ〜図１Ｂのコンポーネントおよびモジュールを参照しながら以下で詳細に説明する。
【００３２】
具体的に、図２は送信側コンピュータで共有アプリケーションの描画コマンドと隠しアプリケーションの描画コマンドとをフィルタリングする方法は、共有描画コマンドを識別する動作２００を備えることを示している。動作２００には、リモートクライアントで表示されるように意図された１つまたは複数の共有描画コマンドを識別する動作が含まれる。たとえば、ドライバインターフェイス１２５は、共有アプリケーション１１０から描画コマンド１２０を受信する。描画コマンド１２０には、描画コマンドによって定義されたイメージが共有されること、すなわち受信側コンピュータ１５０で表示できることを示す命令が関連付けられている。さらに、図２は本方法がさらに隠し描画コマンドを識別する動作２１０を備えることも示している。動作２１０には、リモートクライアントから隠されるように意図された１つまたは複数の隠し描画コマンドを識別する動作が含まれる。たとえば、ミラードライバ１３５は（インターフェイス１２５を経由して、またはアプリケーション１１５から直接）データ１２１を受信する。このデータは、受信側コンピュータ１５０で表示されないように意図された描画コマンドを表している。
【００３３】
さらに、図２は本方法がさらに共有描画コマンドをレンダリングする動作２２０を備えることも示している。動作２２０には、１つまたは複数の共有描画コマンドをビットマップにレンダリングする動作が含まれる。たとえば、ミラードライバ１３５はデータ１２０をアプリケーション１１０から直接またはドライバインターフェイス１２５を経由して受信する。ミラードライバ１３５はこれが共有コンテンツであることを認識するので、ミラードライバ１３５はこのデータを送信機側ビットマップ１３７ａ（すなわちアプリケーション１１０のイメージ）に描画し、ネットワーク１４０を経由してパケット形式で送信されるように準備する。
【００３４】
さらに、本方法は代替イメージをレンダリングする動作２３０も含む。動作２３０には、隠されるように意図されたコンテンツの代わりに代替イメージを送信できるように、１つまたは複数の隠し描画コマンドの代替イメージをビットマップにレンダリングする動作が含まれる。たとえば、ミラードライバ１３５がデータメッセージ１２０および１２１とフィルタリング命令１２３を受信する。この命令は、ディスプレイで隠し境界（ｂｏｕｎｄａｒｉｅｓ）に関する幾何学的なデータと、メッセージ１２０および１２１に含まれるデータは表示されるように意図されていないことを示している。代わりに、フィルタリング命令１２３にはデータ１２０および１２１の代わりに実際に使用される代替イメージが含まれる。したがって、ミラードライバ１３５は代替イメージ１３１を送信機側ビットマップ１３７ａに描画する。
【００３５】
図３は、本発明の実施による類似ではあるが別の方法を示している。この方法には、停止機能を実施する場合に共有アプリケーションの描画情報および／または隠しアプリケーションの描画情報をフィルタリングする動作が含まれる。たとえば、図３は本方法が１つまたは複数のサーバーアプリケーションによる複数の描画コマンドを識別する動作３００を備えることを示している。動作３００には、１つまたは複数のサーバーアプリケーションによる複数の描画コマンドの少なくとも１つはクライアントコンピュータシステムでも表示されるように意図されている場合に、こうした複数の描画コマンドを識別する動作が含まれている。たとえば、図１Ｂに示すように、ミラードライバ１３５は、たとえばドライバインターフェイス１２５を経由して、アプリケーション１１０、１１５などからデータ１２０、１２１のメッセージを受信する。この情報は、たとえば、送信側コンピュータ１００からネットワーク１４０を経由して１つまたは複数の他の受信側コンピュータシステムに送信された表示の間に受信できる。
【００３６】
さらに、図３は本方法がさらに停止命令を受信する動作３１０を備えることを示している。動作３１０には、サーバーでホストされる１つまたは複数のアプリケーションから停止命令を受信する動作が含まれる。たとえば、サーバー１００のドライバインターフェイス１２５は停止命令１６０を受信し、これを直接ミラードライバ１３５に渡す。あるいは、ミラードライバ１３５は停止命令１６０をアプリケーション１１０または１１５から直接受信する。さらに、図３は本方法が任意の描画コマンドの代わりに停止イメージをレンダリングする動作３２０を備えることを示している。動作３２０には、停止イメージが任意の複数の描画コマンドの代わりにクライアントコンピュータシステムに送信されるように、停止イメージをビットマップにレンダリングする動作が含まれる。たとえば、図１Ｂはドライバインターフェイス１２５が停止イメージ１６１（または対応する同等の命令）をミラードライバ１３５に送信することを示している。次に、ミラードライバ１３５は、データ１６０がパケット化され、ネットワーク１４０を経由して受信側コンピュータ１５０に送信される前に、データ１６０を送信機側ビットマップ１３７ａに描画する。
【００３７】
したがって、本発明の実施は、共有アプリケーションまたは非共有アプリケーションから送信されたデータに対応する共有データおよび非共有データ（または隠しデータ）を効率的にレンダリングするための多くのコンポーネントおよび方法を提供する。特に、本発明の実施は、実行する必要のある多くの処理が一般に他の方法に比べてシンプルであるため、多くの技術的な利点を提供する。さらに、より複雑な処理の側面は送信側コンピュータでのみ実行すればよい。このように、本発明の実施はすでにリモート共有プロトコル（たとえばＲＤＰ）が組み込まれているシステムに容易に適用でき、非常に多くの共有表示情報／非共有表示情報を提供でき、既存のリソースおよびプロトコルの更新または拡張は必ずしも必要ではない。
【００３８】
本発明の実施形態は、以下で詳説するように、さまざまなコンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを備えていてもよい。特に、本発明の範囲に含まれる実施形態には、コンピュータ実行可能命令またはデータ構造を格納して運搬したり所持したりするための、コンピュータ可読媒体を含めることもできる。こうしたコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータからアクセスできる任意の媒体でよい。例として、こうしたコンピュータ可読媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭなどの光ディスクストレージ、磁気ディスクストレージなどの磁気ストレージデバイス、あるいは必要なプログラムコード手段を汎用コンピュータまたは専用コンピュータからアクセスできるコンピュータ実行可能命令の形またはデータ構造の形で運搬し、格納するために使用できる他の任意の媒体を含めることができるが、これらに限定はされない。
【００３９】
情報がネットワークまたは別の通信接続（有線、無線、有線と無線の組み合わせのいずれかを問わない）を経由してコンピュータに転送または提供されると、コンピュータはこうした接続をコンピュータ可読媒体として適切に表示する。したがって、こうした任意の接続をコンピュータ可読媒体と呼ぶのは適切である。上記の組み合わせも、コンピュータ可読媒体の範囲内に含まれるものとする。
【００４０】
コンピュータ実行可能命令は、たとえば汎用コンピュータ、専用コンピュータ、または専用の処理デバイスが特定の機能または機能グループを実行するための命令およびデータを含む。本主題について、構造上の特徴および／または方法論的な動作に固有のことばで説明してきたが、添付の特許請求の範囲によって定義される本主題は必ずしも前述の特定の機能および動作には限定されないことを理解されたい。むしろ、前述の特定の機能および動作は、特許請求の範囲を実施する例示的な形態として開示されている。
【００４１】
本発明は、その精神または本質的な特性を逸脱することなく、他の特定の形態でも具体化できる。以上に説明されている実施形態は、あらゆる態様において例示的なものにすぎず、限定的なものではない。したがって、本発明の範囲は、前述の説明ではなく、添付の特許請求の範囲によって指定される。特許請求の範囲と同等の意味および範囲を逸脱しないすべての変更は、本発明の特許請求の範囲に含まれるものとする。
【図面の簡単な説明】
【００４２】
【図１Ａ】本発明の実施によるアプリケーション共有環境において、ドライバインターフェイスが共有アプリケーションからの描画コマンドと隠しアプリケーションからの描画コマンドとをフィルタリングすることを示す概略図である。
【図１Ｂ】図１Ａに示す概略図においてドライバインターフェイスがアプリケーションから受信した停止命令に応答することを示す概略図である。
【図２】本発明の実施によるアプリケーション共有環境において共有描画コマンドと隠し描画コマンドとをフィルタリングする方法の一連の動作を示す流れ図である。
【図３】本発明の実施によるアプリケーション共有環境において停止機能を実施する方法の一連の動作を示す流れ図である。
【図１Ａ】
2009508262.tif 000003
【図１Ｂ】
2009508262.tif 000004
【図２】
2009508262.tif 000005
【図３】
2009508262.tif 000006
【国際調査報告】
2009508262.tif 000007
2009508262.tif 000008