JP5264895B2 - ビットマップ形式の表示リモーティング - Google Patents

ビットマップ形式の表示リモーティング Download PDF

Info

Publication number
JP5264895B2
JP5264895B2 JP2010510421A JP2010510421A JP5264895B2 JP 5264895 B2 JP5264895 B2 JP 5264895B2 JP 2010510421 A JP2010510421 A JP 2010510421A JP 2010510421 A JP2010510421 A JP 2010510421A JP 5264895 B2 JP5264895 B2 JP 5264895B2
Authority
JP
Japan
Prior art keywords
client
server
bitmap
logic
screen display
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010510421A
Other languages
English (en)
Other versions
JP2010529537A (ja
Inventor
アブド ナディム
アール.シュミーダー ヴィルヘルム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010529537A publication Critical patent/JP2010529537A/ja
Application granted granted Critical
Publication of JP5264895B2 publication Critical patent/JP5264895B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Digital Computer Display Output (AREA)

Description

RDP(Remote Desktop Protocol:リモートデスクトッププロトコル)は、TS(terminal server:端末サーバー)ベースのアプリケーションへのネットワーク接続を介して、リモート表示および入力機能を提供する。例えば、RDPは、サーバー上の自身のビデオドライバーを使用して、レンダリング情報をクライアントに対するネットワーク経由の通信のためのネットワークパケット内に構築することにより、アプリケーションの表示出力をクライアントデバイスにレンダリングする。このようなネットワークパケットを受信することに応答して、クライアントはレンダリング情報を、対応するGDI(Graphical Device interface)API(Application Programming Interface)コールに復号化し、解釈する。(GDIは、典型的には、オペレーティングシステムの個々の部分と関連している。)このような復号化および解釈は、通常、クライアントが拡張インターフェイスであるRDPを復号化するように構成されるだけでなく、受信したレンダリング情報を対応するGDIコールにマッピングするように構成されることが必要である。このような動作には、典型的には、クライアントが複数の異なるデータのコンテキスト依存キャッシュを作成し、保持して、GDIベースのレンダリング動作においてフォント、ブラシ、グリフ、フラグメントなどのグラフィックオブジェクトを使用することが必要である。
これらのタスクは複雑であるため、RDPベースのクライアントの作成は、非常に時間がかかり、大きな労力を要する可能性がある。さらに、RDPベースのクライアントは、典型的には、そのような動作を実装するのにかなりの処理能力を持たなければならない。このような処理リソースは、通常、スモール・フォーム・ファクター・デバイスでは見られない。結果として、スモール・フォーム・ファクターは、典型的には、RDPベースのクライアントを実装するのに使用されない。
この概要は、以下の「発明を実施するための形態」でさらに説明する概念の選択を簡略化した形で紹介するものである。この概要は、請求される主題の重要な特徴または不可欠な特徴を特定するものではなく、請求される主題の範囲の決定を助けるものでもない。
前段落では、クライアント・コンピューティング・デバイス(「クライアント」)に結合されたサーバー・コンピューティング・デバイス(「サーバー」)によるビットマップ転送形式表示リモーティング(remoting)を説明している。一態様では、サーバー側で実行するアプリケーションは、GUIの一部をレンダリングするための動作を実装する。サーバーは、対応するレンダリング形式のコマンド(単数または複数)(例えば、GDIコマンド)を簡単なビットマップ転送コマンドに変換する。サーバーは、ビットマップ転送コマンドをクライアントに送信する。例えば、1つの実装では、サーバーはGDIコマンドを1つまたは複数のビットマップ操作動作(manipulation operation)コマンド(ラスター動作)に変換する。また、1つの実装では、サーバーはGDIコマンドに従ってレンダリング動作を実装して動作結果(単数または複数)を得る。
サーバーは、動作結果(単数または複数)をビットマップ転送コマンド(単数または複数)のビットマップ(単数または複数)としてクライアントに送信する。クライアントは、サーバーからの受信したビットマップ転送コマンドに応答して、サーバーに指示されるように、オフスクリーンの表示面からオンスクリーンの表示面に、それぞれビットマップ(単数または複数)を記憶し、描画して、ユーザーにGUI部を提示する。このようにして、サーバーは、任意の従来のRDPクライアント側のリモーティングロジック(例えば、キャッシュ管理、ビットマップのセマンティクスを超えたグラフィックオブジェクトのセマンティクスの判断および処理など)を使用せずに、またはそのようなロジックに依存せずに、ビットマップ転送コマンドのみを使用して、クライアントに指示してアプリケーションのGUIをリモーティングさせる。このような管理、セマンティクスの判断および処理は、それぞれサーバー側でサーバーにより実装され、保持される。
図面および関連した説明で、コンポーネントの符番の最も左の桁はそのコンポーネントが最初に表示された特定の図面を示す。
一実施形態のビットマップ転送形式表示リモーティングの例示的なシステムを示す図である。 一実施形態のビットマップ転送形式表示リモーティング用のリモートクライアント側の例示的なサーバーが作成した、サーバーが目的とするオフスクリーン表示面を示す図である。 一実施形態のビットマップ転送形式表示リモーティングの例示的なプロシージャを示す図である。 一実施形態のビットマップ転送形式表示リモーティングの例示的なプロシージャを示す図である。 一実施形態のビットマップ転送形式表示リモーティングの別の例示的なプロシージャを示す図である。 一実施形態のビットマップ転送形式表示リモーティングの図5の例示的なプロシージャのさらに別の態様を示す図である。 一実施形態のビットマップ転送形式表示リモーティングの図5、6の例示的なプロシージャのさらに別の態様を示す図である。
概略
ビットマップ転送形式表示リモーティングのシステムおよび方法を説明する。このシステムおよび方法は、SBTDRP(simple bitmap transfer−based display remoting protocol:簡易ビットマップ転送形式表示リモーティングプロトコル)を使用して、従来型のRDPの限界に対処するものである。SBTDRPにより、アプリケーション(単数または複数)をホストするサーバーは、任意のビットマップ記憶およびクライアント側での記憶されたビットマップ表示を指示し、制御して、サーバー上で実行するアプリケーションのGUIをクライアント上で提示できるようになる。この指示と制御により、サーバーはそれ以外にクライアント側で複雑なレンダリング動作やキャッシング動作になるものを、クライアント側で2つ以上の面で3方向または4方向のROPS(raster operations:ラスター動作)に抽象化する。COPY ROPは、この動作の一例である。ところが、従来のRDPは、この実装では、多数の異なるグラフィックオブジェクトのクライアント側のキャッシングをレンダリングロジックと緊密に結合し、サーバーのみが(例えば、サーバーによりリソースビットが記憶されている場所をクライアントへマッピングするために)キャッシュ管理ロジックを実装する。SBTDRPのシステムおよび方法のこれらのおよび他の態様をより詳細に示す。
例示的なシステム
図1は、一実施形態のビットマップ転送形式表示リモーティングの例示的なシステム100を示す図である。この実装では、図1は、例えば、ネットワーク104を介して1つまたは複数のクライアント・コンピューティング・デバイス106(「クライアント106」)に結合されるサーバー・コンピューティング・デバイス102(「サーバー102」)を含む。この実装では、サーバー102は、サーバー、PC(パーソナルコンピュータ)、ラップトップなどの任意の1つまたは複数の汎用コンピューティングデバイスを表す。クライアントデバイス106は、PC、ラップトップコンピュータ、モバイル・コンピューティング・デバイス、または汎用またはサーバー・コンピューティング・デバイスに比べて限られた処理機能やデータ記憶機能を有する任意のスモール・フォーム・ファクター・デバイス(例えば、PDA(携帯端末)、モバイルデバイス、携帯電話など)の任意の1つまたは複数の汎用コンピューティングデバイスを表す。ネットワーク104は、オフィスで一般的な通信環境、企業規模のコンピュータネットワーク、イントラネット、およびインターネットなどのLAN(local area network)と一般的なWAN(wide area network)の通信環境との任意の組み合わせを表す。
各コンピューティングデバイス102、106は、それぞれエンコードされたコンピュータプログラムモジュールを備えるシステムメモリーに結合された1つまたは複数のプロセッサーを含む。コンピュータプログラムモジュールは、プロセッサー(単数または複数)の各々により実行可能な命令を含む。このようなシステムメモリーは、さらにプログラムモジュール実行時に、コンピュータプログラム命令の各々により生成され、および/または使用されるプログラムデータを含む。例えば、サーバー102は、揮発性RAM(random access memory)や不揮発性ROM(read only memory)を示すシステムメモリー110に結合された1つまたは複数のプロセッサー108を含む。システムメモリー110は、プロセッサー(単数または複数)108により実行可能なコンピュータプログラム命令を備えるプログラムモジュール112を含む。システムメモリー112は、さらにプログラムモジュール実行時に、プログラムモジュール112の各々により生成され、および/または使用されるプログラムデータ114も含む。
この実装では、例えば、プログラムモジュール114は、端末サービスベースのアクセス用の1つまたは複数の任意のアプリケーション116(例えば、ワードプロセッサー、電子メールプログラム、スプレッドシートアプリケーションなど)、サーバー側端末サービス118、およびランタイム環境を提供するオペレーティングシステム、デバイスドライバー、ネットワーク通信ロジックなどの他のプログラムモジュール120を含む。この実装では、例えば、クライアント106側のコンピュータプログラムロジックは、クライアントベースの端末サービス122およびオペレーティングシステム、ドライバー、ネットワーク通信ロジックなどの他のプログラムモジュール124を含む。サーバーの端末サービス118およびクライアントの端末サービス122により、クライアント106のユーザーはネットワーク104を介して端末サービスセッションを確立して、サーバー102上で1つまたは複数の任意のアプリケーション116を起動して、ファイル、データベース、ネットワークリソースなどの任意の組み合わせにアクセスすることができる。実行アプリケーション(単数または複数)116は完全にサーバー102上で起動されるが、システム100はSBTDRP(simple bitmap transfer−based display remoting protocol:簡易ビットマップ転送形式表示リモーティングプロトコル)を実装して、ディスプレイ装置130を介して実行アプリケーション(単数または複数)116のGUIの要素をエンドユーザーに提示する。
SBTDRP(簡易ビットマップ転送形式表示リモーティングプロトコル)
この実装では、例えば、SBTDRPは、サーバー側端末サービス118の一部としてビットマップ転送形式表示リモーティングモジュール(またはロジック)126により、またクライアント側端末サービス122の一部としてクライアント側ビットマップ記憶・表示ロジック128により実装される。SBTDRPにより、サーバー102のビットマップ転送形式表示リモーティングロジック126(「リモーティングロジック126」)は、クライアント106側で任意のビット記憶および記憶されたビット表示を指示し、制御して、サーバーがホストする実行アプリケーション(単数または複数)116の1つまたは複数のGUIをユーザーに提示することができる。SBTDRPは、クライアントが拡張RDPを実装するために複雑なキャッシングやレンダリングのロジックを実装する必要がある従来のRDPベースの表示リモーティング動作を克服するものである。これを達成するために、SBTDRPは、従来の複雑な表示リモーティングプロトコルを、クライアント106側のサーバーが目的とする(server−purposed)オフセットスクリーン表示面(単数または複数)に対する簡易サーバー制御ビットマップ転送(ラスター)動作に抽象化する。
この実装では、例えば、SBTDRPは、以下の例示的なコマンド132(インターフェイスまたはコール)を含む。CreateSurface、SetSurfaceBits、TransferSurfaceBits、DestroySurfaceである。このコマンド132のセットは、それよりも多くても少なくてもよく、システム100の特定の実装の機能とすることができる。さらに、例示的なコマンド132に付けられた特定の名前は一例であり、各コマンドのそれぞれの実装に関連付けられた動作それぞれを説明するように考えられている。したがって、これらのインターフェイスとそれらに関連する動作は、すぐ後で詳細に説明するが、異なる名前のインターフェイスで表すことができる。
CreateSurface(...)
CreateSurfaceコマンド132はサーバー側リモーティングロジック126により発行されて、サーバーが目的とするビットマップ記憶のために特定のサイズのオフスクリーン表示面136をクライアント106に割り当てるようにクライアント側ロジック128に指示する。この実装では、例えば、CreateSurfaceのパラメータは、クライアント側ロジック128が新規に作成されたオフスクリーン表示面136にマッピングするためのサーバーが提供した(server−supplied)一意のID(識別子)と面サイズとを含む。この実装では、面サイズはビットマップの幅、高さ、色の深み(例えば、1ピクセル当たり8、16、24、32ビット)として表される。バイト数は、クライアント106およびサーバー102によりこれらの寸法から判断される(すなわち、バイト数は、1ピクセル当たりのバイトの幅、高さ、色の深みである)。可能な色の深みは、最初のプロトコル機能交換(initial protocol capability exchange)で交渉(negotiate)することができる。CreateSurfaceコマンド132の受信に応答して、クライアント側ロジック128は、要求された表示面136を割り当てて、サーバーが提供した一意の面IDを新規に割り当てられた表示面136にマッピングする。以下で説明するように、リモーティングロジック126はこのIDを利用して、次のコマンド132内のこの割り当てられた特定の面を参照する。
この実装では、例えば、従来のメッセージング技術を使用して、リモーティングロジック126は、クライアント106が任意のサーバーが目的とするビットをキャッシングするために利用することができる最大メモリー量を判断する。この判断に基づいて、リモーティングロジック126は、少なくとも1つのサブセットの最大メモリー量をオフスクリーン表示面136として割り当てるようにクライアント106に指示する。このシナリオでは、リモーティングロジック126は、サーバー102上で実行するアプリケーション116からのレンダリングコマンド/コールの検出および/またはマッピングとは無関係に、クライアント106にオフスクリーン表示面136を割り当てさせる。これが、従来のRDPベースの実装と大きく異なる点である。
SetSurfaceBits(...)
サーバー側リモーティングロジック126は、ネットワーク104を介してSetSurfaceBitsコマンド132をクライアント106に通信して、識別されたクライアント側オフスクリーン表示面136上の特定の目標位置(destination locations)でビットセットを記憶するようにクライアント側ロジック128に指示する。この実装では、例えば、SetSurfaceBitsのパラメータは、オフスクリーン表示面136とビットセットとビットの目標位置とを識別する一意のIDを含む。1つの実装では、例えば、目標位置は、左、上、右、下の座標で表される矩形の座標を識別する。あるいは、記憶する矩形は、X、Y、幅、高さを使用して識別される。別の実装では、目標位置は、矩形でない(例えば、正方形、円、任意の形状など)幾何学的オブジェクト(単数または複数)の座標を識別する。
SetSurfaceBitsコマンド132に応答して、クライアント側ロジック128は、指定されたオフスクリーン表示面136上の指示された目標位置(単数または複数)に対する指定ビットを記憶する。以下の段落0056〜0058で説明するように(また、図6を参照)、リモーティングロジック126により記憶されているビットセットが、次にレンダリングロジック126により使用される可能性があるグラフィックオブジェクトを描画するビットと一致して、サーバー102上で実行するアプリケーション116のGUIの1つまたは複数の態様をレンダリングする。しかし、クライアント106から見れば、ビットマップのビットであることとは無関係に、これらの記憶されたビットの意味またはセマンティクスは重要ではなく、つまりビットマップが任意の意味を有し、ビットがサーバー102に指示されるようにクライアント側ロジック128によりオフスクリーン表示面136に記憶されているだけである。
TransferSurfaceBits(...)
リモーティングロジック126は、TransferSurfaceBitsコマンド132を使用して、ディスプレイ装置130を介してクライアント106により提示するために特定のクライアント側オフスクリーン表示面136内にキャッシングされている特定のビット(単数または複数)を異なる表示面(例えば、オンスクリーンのレンダリング面138、別のオフスクリーン面など)に転送するようにクライアント側ロジック128に指示する。この実装では、例えば、TransferSurfaceBitsのパラメータは、以下のうちの1つまたは複数を含む。
特定のオフスクリーン表示面136を識別する一意のソース面ID。
ターゲットビットマップの目標面(例えば、オンスクリーン表示面)を識別する目標面ID。
識別された目標面に転送するためにターゲットビットマップを表すビットセットを識別するソース矩形(または他の任意の形状)。
転送されたビットマップを受信するための目標面における目標矩形(またはクリッピング領域などの他の任意の形状)。1つの実装では、TransferSurfaceBitsコマンド132は、更新のためのクリッピング領域(clipping region)(目標面の不規則なエリアを画定する矩形セット)を含む。
マスクビットマップ(または面)。例えば、MaskBltはビットマップ転送動作であり、この動作により、マスク内の対応ピクセルの値に基づいて選択的にピクセルがソース面から目標面に転送される。例えば、マスクビットマップの100,100の座標のピクセルが0(黒)に設定された場合のみ、100,100の座標のピクセルがソース面から目標面まで転送される。
クライアントロジック128がソース面から目標面へビットマップ転送を実装するためのラスター動作(すなわち、コピー、xorなど)の指示。1つの実装では、例えば、TransferSurfaceBitsコマンド132は、クライアントロジック128にマスク面動作を実装するように指示する。
1つの実装では、クライアント側ロジック128によるビットマップ転送の失敗により、クライアントロジック128は一般的な「ダーティ(dirty)」面の通知134をリモーティングロジック126に通信して、リモーティングロジック126にその面のビットが有効でないことを通知する。1つの実装では、この通知に応答して、サーバー102は、無効の面のビット/領域のためにクライアントロジック128に更新版を送信する(更新版により、その領域が有効になる)。
DestroySurface(...)
リモーティングロジック126は、DestroySurfaceコマンド132を送信して、サーバー102が開始し、目的とするオフスクリーン表示面136を破壊(再割り当て)するようにクライアントロジック128に指示する。この実装では、DeleteSurfaceのパラメータは、例えば、特定のオフスクリーン表示面136に対する一意の面IDを含む。
例示的なサーバーが目的とするビットマップ記憶及び転送
以下の実施例は、TSベースのサーバー上で実行するアプリケーションのGUIの要素をTSベースのクライアント上で表示する従来のRDPの使用を、SBTDRPの使用と比較対照したものである。これらの実施例は一例であり、これらの実施例の範囲から逸脱せずに、他の動作の順序、グラフィックオブジェクト、面などに置き換えることができる。
従来のRDPベースのロジックを使用する場合、以下の動作は、典型的には、特定の位置にブラシオブジェクトをキャッシングし、ブラシオブジェクトを使用して、主要なオンスクリーン表示面の矩形を埋めなければならない。例示するために、そのブラシは16×16ピクセルブラシで、オンスクリーン表示面のレンダリング位置は(0,0,64,16)であり、面のエリアの表示はこのような複数のブラシをカプセル化している。
サーバー(「S」)とクライアント(「C」)との間で初期プロトコル交換の一部として、キャッシュタイプ(例えば、ブラシ、グリフ、フォント、フラグメント、ビットマップなど)およびサイズを交渉することで、クライアントはキャッシュ管理動作をグラフィックオブジェクトレンダリング動作と緊密に結びつけた複雑なキャッシュ管理サービスを設定することができる。この実施例では、キャッシュタイプはブラシキャッシュである。キャッシュサイズは、例えば、100エントリを有する16(幅)×16(高さ)キャッシュ、200エントリを有する42×32キャッシュなどを含む。
サーバーは、ブラシ用のビットマップビットおよび原点を取得し、ブラシキャッシュ内のある指定された位置(例えば、位置99)でキャッシングするためにこれらをクライアントに送信する。
サーバーは、ブラシキャッシュ位置99内のブラシを使用して、オンスクリーン表示面の(0,0,64,16)における面の矩形を埋めるようにクライアントに命令する。クライアントは、RDPコマンドをキャッシュされたブラシを使用する対応GDIコールに変換することでこれに応答する。クライアントはGDIコールをクライアントのオペレーティングシステムに提出(submit)して、指示されたようにブラシを描画する。面の矩形サイズがブラシ(16×16)のサイズであれば、クライアント側のGDIは複数のブラシレンダリングコマンドを繰り返し実行して、面の矩形を埋めることになる。
上述の実施例とは対照的に、図1のシステム100は、SBTDRPを利用して、クライアント側のオフスクリーン表示面のブラシのビットマップおよび複数のサーバー開始のビットマップコピーコマンド(1回に1コマンドを連続的に)を記憶して、クライアント106側のオンスクリーン表示面の矩形を埋める。したがって、サーバーはアプリケーション116からのより複雑なレンダリングコマンド(例えば、GDIコマンド)をより簡易なビットマップ転送コマンドに分解する、または分割する。このコンテキストにおいてキャッシングと記憶との違いの1つは、RDPを使用してクライアント側でオブジェクトをキャッシングするためには、RDPベースのクライアントがキャッシュ管理ロジックに、キャッシング動作の実行およびオブジェクト転送の実行を要求する点である。一方、クライアント102におけるビットマップ記憶およびビットマップ転送は、クライアント102のいずれのキャッシュ管理とは全く無関係である。
例示し比較するために、ブラシサイズは16×16ビットであり、クライアント106側のオンスクリーン表示面(例えば、「面0」)における面の矩形の座標は(0,0,64,16)である。直前の実施例にあるように、ターゲット面の矩形を埋めるのは複数のレンダリング動作が必要であるだろう。前の実施例では、クライアントはGDIを使用してサーバーコマンドを複数のレンダリング動作に変換し、面の矩形を埋めている。一方、サーバー102は、複数の面ビット転送コマンドをクライアント102に繰り返し通信して、例示的なレンダリング動作を実行している。
リモーティングロジック126とクライアント側ロジック128とが交渉して、オフスクリーン表示面136を(例えば、初期プロトコル動作の一部として)割り当てる。例示するために、このようなオフスクリーン表示面を図2に示す。
リモーティングロジック126は、クライアント106に、サーバーが提供した(およびサーバーが保持した)一意の識別子(例えば、ID88)にマッピングされたオフクスリーン面136を作成するように命令する。1つの実装では、オフスクリーン面は少なくとも16×16である。
リモーティングロジック126は、面ID88の位置(0,0,16,16)のビットマップビットを(SetSurfaceBitsコマンド132を使用して)ブラシオブジェクトを表す特定のビットマップビットに設定するようにクライアント106に命令する。
リモーティングロジック126は、位置(0,0,16,16)の面ID88から(TransferSurfaceBitsコマンド132を使用して)ビットを位置(0,0,16,16)の面0に転送するようにクライアント106に命令する。
リモーティングロジック126は、ビットを位置(0,0,16,16)のオフスクリーン表示面ID88から位置(16,0,42,16)の面0に転送するようにクライアント106に命令する。
リモーティングロジック126は、ビットを位置(0,0,16,16)のオフスクリーン表示面ID88から位置(32,0,58,16)の面0に転送するようにクライアント106に命令する。
リモーティングロジック126は、ビットを位置(0,0,16,16)の面88から位置(48,0,64,16)の面0に転送するようにクライアント106に命令する。
SBTDRPを使用する前述の実施例では、リモーティングロジック126は面ビット転送コマンド132を繰り返し(この例では、4回)実装して、指定された目標矩形を指定されたブラシビットマップで埋めることに留意されたい。従来のシステムとは対照的に、システム100により実装される簡易プロトコルは、ビットマップブラシ処理(およびサーバー102で実行するアプリケーション116からGUIを、リモートクライアント106に結合されたディスプレイ装置132上に表示するために利用される他の動作)のために、簡易SBTDRPコマンドを使用する。その結果、クライアント106は、簡易ビットマップ/面の読み出しおよび書き込み操作を実装して、サーバー102で実行するアプリケーション116に関連付けられたGUIのそれぞれの部分をレンダリングする構成となる。すなわち、サーバー102は複雑なグラフィックレンダリングコマンド(例えば、FillRect GDIコマンド)を個々の対応するビットマップラスター動作コマンドに分割する。これは、従来のRDPシステムとは対照的な点であり、クライアントは、複数の異なるグラフィックオブジェクト固有のキャッシュを保持し、種々のグラフィックオブジェクト(グリフ、ブラシ、ビットマップなど)間のセマンティクスの差を理解し、頻繁に(例えば、ブラシキャッシュからのブラシで矩形を埋めるために)RDPレンダリングコマンドを対応するGDIコマンドに変換するように構成される。
例示的なプロシージャ
図3は、一実施形態のビットマップ転送形式表示リモーティングの例示的なプロシージャを示す図である。例示し説明するために、プロシージャ300の動作は図1の態様およびコンポーネントに関して説明する。説明では、コンポーネントの符番の最も左の数字はそのコンポーネントが最初に紹介された特定の図面を示している。図3を参照すると、ブロック302の動作は、サーバーリモーティングモジュール126(図1)により、サーバー102で実行するアプリケーション116がアプリケーションのGUIの一部をレンダリングする動作に関与すると判断する。この動作は、例えば、GUIをレンダリングするのに次に使用するためのブラシ、グリフ、フォント、フラグメントなどのグラフィックオブジェクトの作成を含む。別の実施例では、この動作は、ブラシで埋め込みコマンドなどの実際のレンダリングコマンドを含む。ブロック304の動作は、動作に関連付けられたコマンド(例えば、ブロック302参照)を対応するビットマップラスター動作コマンドに分解する、または分割する。
例えば、上述したように、アプリケーション116がGDIコマンドを生成してブラシのグラフィックオブジェクトを作成する場合、サーバーリモーティングロジック126は、ビットマップをクライアント106の特定のオフスクリーン表示面136に書き込む。別の実施例では、アプリケーション116がブラシのグラフィックオブジェクトを利用してGUIの一部に書き込む場合、サーバーリモーティングロジック126は、(1回または数回)ブラシに対応するビットマップをオンスクリーン表示面138の特定の部分に転送して、ユーザーにGUI部を提示するようにクライアント106に指示する。この転送動作は、ビットマップ読み出し及び書き込み動作を含む。
ブロック306の動作は、ビットマップラスター動作コマンド(ブロック304の動作を参照)をクライアント106に送信する。ブロック308の動作は、クライアント106により、受信されたビットマップラスター動作コマンドを復号化して、オンスクリーン表示面138に対応するビットマップを記憶/または描画して、ユーザーにGUI部を提示する。1つの実装では、コマンドは、ビットマップ(単数または複数)をオンスクリーン面に転送する前に1つのオフスクリーン面から別のオフスクリーン面にビットマップ(単数または複数)を転送するようにクライアント106に指示してもよい。ビットマップを記憶し、描画してGUI部を提示するためのクライアント106側のロジックは、クライアント実装のキャッシュ管理ロジックとは全く無関係である。さらに、クライアントロジックは、ビットマップのセマンティクスを超えたグラフィックオブジェクトのセマンティクスの任意の判断や処理とは全く無関係である。これが、従来のRDP動作とは対照的な点である。
図4は、一実施形態のビットマップ転送形式表示リモーティングの例示的なプロシージャを示す図である。例示し説明するために、プロシージャ400の動作は、図1の態様およびコンポーネントに関して説明する。説明では、コンポーネントの符番の最も左の数字はそのコンポーネントが最初に紹介された特定の図面を示している。図4を参照すると、ブロック402動作は、サーバーにより、サーバーが指示し(directed)かつ目的とするデータ記憶のためにオフスクリーン表示面を割り当てるようにクライアントに指示する。1つの実装では、サーバー102側のリモーティングロジック126は、CreateSurfaceコマンド132を使用して、このようなサーバーが指示し、サーバーが目的とするデータ記憶のためにオフスクリーン表示面136を割り当てるようにクライアント106のクライアント側ロジック128に指示する。このサーバーが指示し、サーバーが目的とするデータ記憶とは、サーバー102で実行するアプリケーション115のGUIを(例えば、ディスプレイ装置130を使用して)クライアント106のユーザーに提示することである。
ブロック404の動作は、サーバーにより、特定の位置に対するビットマップをオフスクリーン表示面上に記憶するようにクライアントに要求する。1つの実装では、例えば、この動作は、GDIまたは他のグラフィックインターフェイスを要求するアプリケーションに応答して行われ、グラフィックオブジェクト(例えば、ブラシ、グリフ、ビットマップ、フォントなど)を作成または変更してサーバー上にGUIをレンダリングする。1つの実装では、レンダリングロジック126はアプリケーション116からGDIへのコールをインターセプトする。別の実装では、例えば、この動作は、GDIに対する要求とは無関係に実行される。例えば、この動作は、GDI出力(例えば、黒い矩形など)以外のものなどを表示するように要求されるクライアントに応答して実行される。このコールがGUIをレンダリングするためのグラフィックオブジェクトの作成または変更に関連付けられる場合、レンダリングロジック126は、割り当てられたオフスクリーン表示面136上の特定の位置にグラフィックオブジェクトを表す任意のビットマップを記憶するようにクライアント側ロジックに要求する。この要求は、例えば、SetSurfaceBitsコマンド132をクライアント側ロジック128に通信するレンダリングロジック126により行われる。
ブロック406の動作は、サーバーがアプリケーションからのレンダリングコマンドをインターセプトすることに応答して行われる。ここで、レンダリングコマンドは、前に作成されたグラフィックオブジェクト(例えば、ブラシ、グリフなど)に関連付けられる。(特定のアプリケーションからレンダリングコマンドをインターセプトするのに、ミラードライバーなどの技術が既知である。)具体的には、ブロック406の動作は、サーバーにコマンドをクライアントに対して送信させて、オフスクリーン表示面からクライアント側表示面上の少なくとも1つの位置に、前に作成されたグラフィックオブジェクトに対応するビットマップを転送するようにクライアントに指示する。これらの動作は、クライアントのユーザーに提示するためのGUIの一部をレンダリングすることになる。1つの実装では、例えば、ブロック406の動作は、TransferSurfaceBitsコマンド132をクライアント側ロジック128に通信するレンダリングロジック126により実装される。クライアント側ロジック128によりこのコマンドが受信されることで、クライアント側ロジック128はサーバーが指定したビットマップを異なる表示面(例えば、オンスクリーンレンダリング面138)の目標位置に転送する。クライアント側ロジック128によるこれら任意のビットマップの転送動作は、サーバー102上で実行するアプリケーション116のGUIの一部となり、クライアント106のユーザーに提示される。ビットマップ転送形式表示リモーティングのこれらのさらに詳細な例示的なプロシージャを、図4〜図7に関してより詳細に説明する。
図5は、一実施形態のビットマップ転送形式表示リモーティングでリモートクライアントデバイスにおいてオフスクリーン表示面を作成するための別の例示的なプロシージャ500を示す図である。例示し説明するために、プロシージャ500の動作を図1の態様およびコンポーネントに関して説明する。説明では、コンポーネントの符番の最も左の数字は、そのコンポーネントが最初に紹介された特定の図面を示している。
図5では、ブロック502の動作は、サーバーによりクライアントに、サーバーが指示し、サーバーが目的とするビットマップ記憶動作に特定のサイズのオフスクリーン表示面を割り当てるように指示する。この指示は、要求された面がビットマップまたは任意の他のデータ記憶に使用されることになることをクライアント102に示す情報を全く含まない。1つの実装では、例えばサーバー102のリモーティングロジック126は、クライアント106がオフスクリーン表示面136に割り当てることができるサイズ(例えば、最大サイズ、デフォルトサイズ、またはそれ以外のサイズ)を示すようにクライアント側ロジック128に要求する。サイズの判断に応答して、リモーティングロジック126はCreateSurfaceコマンド132をクライアント106に送信する。CreateSurfaceコマンド132は、指示されたサイズのオフスクリーン表示面136を割り当てるようにクライアント側ロジック128に指示する。この通信は、さらに新規に割り当てられたオフスクリーン表示面136に関連付けるために、クライアント側ロジック128のためのサーバーが提供した一意のIDを含む。以下で示すように、リモーティングロジック126は、この特定のオフスクリーン表示面136に関連付けられたビットマップ形式の動作を実行するようにクライアント側ロジック128に指示するときに、この一意のIDを使用することになる。1つの実装では、ブロック502の動作は、リモーティングロジック126およびクライアント側ロジック128により初期プロトコル構成動作の一部として実装される。ブロック504の動作は、オフスクリーン表示面136を作成するコマンド132を(クライアント106により)受信することに応答して、クライアント106は特定の指定されたサイズまたはデフォルトサイズのオフスクリーン表示面136を割り当てる。
ブロック506の動作は、レンダリングコマンド(例えば、GDIに対するコール)をインターセプトして、実行端末サービスベースのアプリケーションのGUIを提示する。1つの実装では、例えば、リモーティングロジック126は従来のドライバーを利用して、実行アプリケーション116から(例えば、GDIロジックなどに)レンダリングコールをインターセプトして、実行アプリケーション116に関連付けられたGUIを提示する。ブロック508の動作は、インターセプトされたレンダリングコマンド(またはレンダリング関連コマンド)がグラフィックオブジェクト(例えば、ブラシ、グリフ、フラグメント、ビットマップ、フォントなど)を作成または変更するコマンド(削除/破壊(destroy)コマンドを含む)であるか否か、またはインターセプトされたレンダリングコマンドが、特定のグラフィックオブジェクトを使用してレンダリング動作(例えば、埋め込みコマンド、描画コマンドなど)を実行するコマンドであるか否かを判断する。1つの実装では、リモーティングロジック128は、既知のレンダリングコマンド解析技術(例えば、GDIコマンド解析技術など)を使用してコマンドを解析することにより、この判断を行う。ブロック510で、インターセプトされたレンダリングコマンド/コールが既存のグラフィックオブジェクトを作成または変更するためのものである場合、プロシージャ500の動作は、ページ上の「A」で示されるように、図6のブロック602で継続する。それ以外に、インターセプトされたレンダリングコールが特定のグラフィックオブジェクトを利用してレンダリング動作を実装するためのものである場合、プロシージャ500の動作は、ページ上の「B」で示されるように、図7のブロック702で継続する。1つの実装では、ブロック510の動作は、サーバー102のリモーティングロジック126により実装される。
図6は、一実施形態のビットマップ転送形式表示リモーティングの例示的なプロシージャのさらなる態様を示す図である。具体的に、図6は図5のプロシージャ500の続きである。図6を参照すると、動作はページの「A」で示されるように、ブロック602で始まる。ブロック602の動作は、インターセプトされたレンダリングコマンドが既存のグラフィックオブジェクトを作成または変更するためのものであるとの前の判断(図5のブロック510参照)に応答して実装される。ブロック602では、サーバーは、特定のオフスクリーン表示面の特定の位置でキャッシングするために、作成されたまたは変更されたグラフィックオブジェクトを表すビットをクライアントに通信する。1つの実装では、リモーティングロジック126は、SetSurfaceBitsコマンド132を使用して、サーバーが識別したオフスクリーン表示面136上のサーバー指定の位置で、クライアント側ロジック128によりキャッシングするために、作成されたまたは変更されたグラフィックオブジェクトを表すビットをクライアント側ロジック128に通信する。例示のために、このビットは、図1の「他のプログラムデータ」142の各部分として示す。
1つの実装では、例えば、SetSurfaceBitsコマンド132内の作成された、または変更されたグラフィックオブジェクトビットは、例えば、ビットマップサイズ、色、圧縮などを示している。これらのビットをクライアント106に送信する動作は、対応するビット定義またはビットのコンテキストの任意の指示をクライアント106に送信することとは全く無関係である。さらに、SetSurfaceBitsコマンド132内で指定された特定のオフスクリーン表示面136は、リモーティングロジック126が一意のIDで識別する面136である。この実装では、面136がCreateSurfaceコマンド132を使用して作成されたときに、リモーティングロジック126がこの一意のIDをクライアント側ロジック128に提供したのを思い出されたい。
ブロック604の動作は、面ビット設定コマンドの受信に応答して、面ビット設定コマンドに関連付けられた任意の(クライアント106およびクライアント側ロジック128から見て任意の)ビットを指定されたオフスクリーン表示面に記憶する。1つの実装では、例えば、クライアント側ロジック128は、SetSurfaceBitsコマンド132の受信に応答して、関連付けられた任意のビットを指定されたオフスクリーン表示面136に、面136上のサーバー指定の位置で記憶する。このシナリオでは、クライアント106は、通信されたビットはビットマップを表し、SetSurfaceBitsコマンド132は対応するビットマップのコピーまたは転送の動作を要求することを理解するように構成される。これ以外に、クライアント106の構成は、SetSurfaceBitsコマンド132で通信されたビットの定義、コンテキスト、セマンティクスなどを判断する必要が全くない。クライアント106から見れば、受信されたビットは、単にリモーティングロジック126によりクライアント106側で記憶されているセマンティクスが未知の任意のビットマップを表す。したがって、クライアント106は、任意のグラフィックオブジェクトベースのセマンティックの判断とは無関係に、受信したビットをキャッシングする。グラフィックオブジェクトベースのセマンティックの判断の例として、例えば、受信したビットはあるタイプのグラフィックオブジェクトを表しているか、そうであった場合、グラフィックオブジェクトのタイプは何かなどの質問に対する回答を判断するロジックを含む。例えば、ビットはブラシ、ビットマップ、グリフ、フラグメントなどを表すかである。従来のRDPクライアントの実装は、グラフィックオブジェクトの判断されたタイプに基づいて特別な処理を実行する。
図7は、一実施形態のビットマップ転送形式表示リモーティングの例示的なプロシージャ500のさらなる態様を示す図である。具体的には、図7は、図5および図6のプロシージャ500の続きである(図5のページの「B」を参照)。図7を参照すると、動作は、インターセプトされたコールが既存のグラフィックオブジェクトを作成または変更するためのレンダリングコールでないとの前の判断(図5のブロック510を参照)に応答して、ブロック702で始まる。したがって、インターセプトされたコールは、既存のグラフィックオブジェクトまたはレンダリングコマンドを削除するためのものであったことになる。
ブロック702の動作は、インターセプトされたコールがグラフィックオブジェクトを削除するためのコールであったか否かを判断する。そうであった場合、動作はブロック704で継続し、サーバーがクライアント側スクリーン表示面でビットを保持する必要があるか否かが判断される。この判断は任意であり、サーバー側のリモーティングロジック126の特定の実装に基づくものである。例えば、1つの実装では、サーバー側のリモーティングロジックはローカルキャッシュ142を評価して、コールで識別されたグラフィックオブジェクトに関連付けられたクライアント側オフスクリーン表示面136が、まだ有効であるか否かを判断する。この判断は、サーバー側のリモーティングロジック126の特定の実装に基づいた多くの異なる任意のパラメータに基づいて行われる。
例えば、コールによりサーバー側での削除のためにスケジュールされたグラフィックオブジェクトが、クライアント側オンスクリーン表示面136内にキャッシングされた対応ビットを有する唯一のオブジェクトである場合、リモーティングロジック126は対応ビットを次にキャッシングされる任意のビットで上書きすることを決めてもよいし、または面136を削除するようにクライアント側ロジック128に要求してもよい。別の実施例では、リモーティングロジック126は1つまたは複数のオフスクリーン面136を利用して、ブラシをキャッシングすることを考慮する。ブラシがGDIを使用してサーバー102側で削除される場合、リモーティングロジック126は、クライアント106の面でキャッシングされた対応ビットマップが占めるエリアを再び使用するように意図することを判断してもよい(すなわち、面ビットは他の何かに使用することができる)。クライアント側のブラシビットのエリアは、前述の実施例で示したように、1ブラシにつき1つの面として、または同一面136のブラシを表す複数のビットマップとして管理することができることに留意されたい。したがって、1つの実装では、リモーティングロジック126は、面136を削除することはできないが、関連する面ビットの少なくとも一部を再び使用するように意図することのみ可能である。
上述の例を見ると、面136の削除が指示された場合、ブロック704の動作は、リモーティングロジック126に、特定のオフスクリーン表示面136を削除するようにクライアント側ロジック128に指示するDeleteSurfaceコマンド132を通信させる。このコマンド132の受信に応答して、クライアント側ロジックは識別されたオフスクリーン表示面136の割り当てを解除する(破壊する)。
ブロック702の動作が、インターセプトされたコールがグラフィックオブジェクトを削除するためのコールでなかった場合、コールはレンダリング動作(例えば、描画コマンド、埋め込みコマンド)を実装するために、特定のグラフィックオブジェクトの使用に関連付けられる。したがって、プロシージャ500の動作は、ブロック706で動作を継続する。ブロック706では、サーバーは1つまたは複数の面ビット転送コマンドをクライアントに送信して、ビットを特定のオフスクリーン表示面からフレームディスプレイバッファ内の位置にコピーし、インターセプトされたGDIレンダリングコマンドのクライアント側での有効な結果をもたらす。1つの実装では、例えば、レンダリングロジック126は、1つまたは複数のTransferSurfaceBitsコマンド132をクライアント側ロジック128に送信して、特定の表示面136からフレームディスプレイバッファ内の位置にビットをコピーし、インターセプトされたレンダリングコマンドのクライアント106側での有効な結果をもたらす。コピーされる特定のビットは、レンダリングロジック126により特定のオフスクリーン表示面136に、前にキャッシングされたビットを表す。1つの実装では、リモーティングロジック126は、サーバー側キャッシュ140を使用して、サーバー102側のグラフィックオブジェクトを特定のクライアント側オンスクリーン表示面136(一意の面IDを使用して)、および面136の対応するソース位置にマッピングする。
結論
これまでの段落で、ビットマップ転送形式表示リモーティングを構造的特徴および/または方法動作もしくはアクションに固有の言葉で説明したが、添付の請求項で定義された実装は必ずしも説明した固有の特徴またはアクションに限定されない。例えば、プロシージャ500の動作(図5、図6参照)は、特定のフローおよび順序で示したが、これらの動作は一例であって、システム100の一例および例示的な実装を例示したに過ぎない。例えば、クライアント側オフスクリーン表示面136を作成する動作は、プロシージャ500のブロック502に関して説明したが、リモーティングロジック126はその特定の実装当たりの数と同じ数のオフスクリーン表示面136を作成することができる。例えば、ブロック506の動作の後、レンダリングに関するコールがインターセプトされ、(ブロック502およぶ504で説明したように)レンダリングロジック126の別の実装が、別のオフスクリーン表示面136を作成して、対応するグラフィックオブジェクトのビットをキャッシングすることができる。このことから見て、プロシージャ400および500は、システム100の特定の実装で行われる多くの異なる任意の動作フローの例である。したがって、上述したビットマップ転送形式表示リモーティングの固有の特徴および動作は、請求される主題を実装するための例示的な形態である。

Claims (7)

  1. サーバー・コンピューティング・デバイス(「サーバー」)とクライアント・コンピューティング・デバイス(「クライアント」)との間で、前記サーバーがネットワークを介して前記クライアントに結合された通信方法であって、
    前記サーバーにより前記サーバー上で実行するアプリケーションがGUI(グラフィカル・ユーザー・インターフェイス)の一部をレンダリングする動作に関与するか否かを判断するステップと
    前記判断のステップに応答して、
    少なくとも前記動作に関連付けられたコマンドのサブセットを、対応するビットマップ転送コマンドに変換するステップであって、前記ビットマップ転送コマンド(単数または複数)は、SBTDRP(簡易ビットマップ転送形式表示リモーティングプロトコル)に基づいており、前記SBTDRPは、オブジェクトがビットマップとして前記サーバー側でキャッシングされているか否かに関係なく、ビットマップを使用して複数の異なるタイプのオブジェクトを提示することを特徴とする変換するステップと、
    前記ビットマップ転送コマンド(単数または複数)のみを前記クライアントに通信するステップと
    を含み、前記ビットマップ転送コマンド(単数または複数)の受信は、前記クライアントが(a)クライアント実装キャッシュ管理ロジックもしくは(b)ビットマップセマンティクスを超えたグラフィックオブジェクトのセマンティクスの判断および処理とは無関係に、前記クライアントのユーザーに前記一部を提示するためにオンスクリーン表示面に対応するビットマップ(単数または複数)を記憶しかつ描画することをもたらし、
    前記サーバーにより、オフスクリーン表示面を割り当てるために、前記クライアントに要求するステップと、
    前記サーバーにより、前記オフスクリーン表示面上の特定の位置にビットマップを記憶するために、前記クライアントに要求するステップであって、前記ビットマップは、グラフィカルオブジェクトを表現することを特徴とする要求するステップと、
    前記サーバーにより、前記ユーザーに前記一部を表現するために、前記オンスクリーン表示面上の特定の位置に一回または複数回、前記ビットマップを書き込むために、前記クライアントに指示するステップとをさらに含み、
    前記方法は、さらに、前記グラフィカルオブジェクトを削除するためのコールがインターセプトされたとき、及び、削除されるべきグラフィカルオブジェクトが、前記オフスクリーン表示面上にキャッシングされた対応ビットを有する唯一のグラフィカルオブジェクトである場合、前記クライアントにより、前記ユーザーに前記GUIの前記一部を表示することに関連付けられた前記オフスクリーン表示面を前記クライアントが破壊するための要求を前記サーバーにより、通信するステップを含む
    ことを特徴とする方法。
  2. 前記ビットマップ転送コマンド(単数または複数)の特定のセットの受信は、前記クライアントが、前記サーバーからの任意のコマンドを対応するGDI(グラフィック・デバイス・インターフェイス)ベースのコマンドに変換することとは無関係に、前記GUI部を提示することをもたらすことを特徴とする請求項1に記載の方法。
  3. 前記ビットマップ転送コマンド(単数または複数)は、それぞれ、ブラシ、フォント、グリフおよびフラグメントの1つまたは複数のグラフィックオブジェクトを表すビットマップ(単数または複数)の読み出しおよび書き込みの1つまたは複数に向けられており、
    前記方法は、
    前記サーバーにより少なくとも1つのキャッシュを管理して、ブラシ、フォント、グリフ、フラグメントの1つまたは複数のグラフィックオブジェクトを、前記クライアント側の1つまたは複数のオフスクリーン表示面の1つまたは複数の各々の位置に記憶されている1つまたは複数の対応するビットマップにマッピングするステップ
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記対応するビットマップ(単数または複数)の1つのビットマップは、前記GUI部より小さく、少なくとも1つのサブセットのコマンドは、複数の簡易ビットマップ形式コマンドに変換され、前記方法は、
    前記サーバーにより前記一部の異なる部分をレンダリングするための前記簡易ビットマップ形式コマンドの各々を前記クライアントに通信して、前記一部をレンダリングするステップ
    をさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記サーバーにより前記特定の位置に前記ビットマップを記憶するように前記クライアントに要求するステップにおいて、前記オフスクリーン表示面上で前記サーバーにより前に記憶されている異なるビットマップの少なくとも一部を上書きすることを特徴とする、請求項に記載の方法。
  6. サーバー・コンピューティング・デバイス(「サーバー」)とクライアント・コンピューティング・デバイス(「クライアント」)との間で、前記サーバーがネットワークを介して前記クライアントに結合された前記請求項1乃至5のいずれか1項に記載の通信方法を実行するように適用されたサーバー・コンピューティング・デバイス。
  7. コンピュータに実行されたときに前記請求項1乃至5のいずれか1項に記載の通信方法をコンピュータに実施させるコンピュータ実行可能命令を含むコンピュータ可読記録媒体。
JP2010510421A 2007-05-31 2008-05-21 ビットマップ形式の表示リモーティング Active JP5264895B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/756,284 US8140610B2 (en) 2007-05-31 2007-05-31 Bitmap-based display remoting
US11/756,284 2007-05-31
PCT/US2008/064400 WO2008150709A1 (en) 2007-05-31 2008-05-21 Bitmap-based display remoting

Publications (2)

Publication Number Publication Date
JP2010529537A JP2010529537A (ja) 2010-08-26
JP5264895B2 true JP5264895B2 (ja) 2013-08-14

Family

ID=40089684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010510421A Active JP5264895B2 (ja) 2007-05-31 2008-05-21 ビットマップ形式の表示リモーティング

Country Status (5)

Country Link
US (2) US8140610B2 (ja)
EP (1) EP2171606B1 (ja)
JP (1) JP5264895B2 (ja)
CN (1) CN101681339B (ja)
WO (1) WO2008150709A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9523840B2 (en) 2014-10-27 2016-12-20 Sintai Optical (Shenzhen) Co., Ltd. Lens assembly

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140610B2 (en) 2007-05-31 2012-03-20 Microsoft Corporation Bitmap-based display remoting
EP2086236A1 (en) * 2008-01-31 2009-08-05 Hewlett-Packard Development Company, L.P. Method and system for accessing applications
US8170123B1 (en) * 2008-04-15 2012-05-01 Desktone, Inc. Media acceleration for virtual computing services
CN102067085B (zh) * 2008-04-17 2014-08-13 微系统道格有限公司 用于向远程客户机虚拟传送软件应用程序的方法和系统
EP2216959B1 (en) * 2009-02-04 2019-04-03 Alcatel Lucent Virtual customer premises equipment
CN102405631B (zh) 2009-02-20 2015-02-18 思杰系统有限公司 用于中间设备压缩通过远程显示协议传递的数据的系统和方法
US8307103B2 (en) * 2009-03-09 2012-11-06 Microsoft Corporation Tear-free remote desktop protocol (RDP) display
US20110055899A1 (en) * 2009-08-28 2011-03-03 Uplogix, Inc. Secure remote management of network devices with local processing and secure shell for remote distribution of information
US20110055367A1 (en) * 2009-08-28 2011-03-03 Dollar James E Serial port forwarding over secure shell for secure remote management of networked devices
US8761520B2 (en) 2009-12-11 2014-06-24 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting 2D patterns from source bitmaps
US20110154214A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems
US8463918B2 (en) 2010-01-22 2013-06-11 Microsoft Corporation Loss tolerant protocol for remoting desktop graphics
US9137338B2 (en) 2010-01-22 2015-09-15 Microsoft Technology Licensing, Llc Multi-link remote protocol
US9235452B2 (en) * 2010-02-05 2016-01-12 Microsoft Technology Licensing, Llc Graphics remoting using augmentation data
US20110225566A1 (en) * 2010-03-10 2011-09-15 Microsoft Corporation Testing user interfaces in multiple execution environments
US8768067B2 (en) 2010-04-15 2014-07-01 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting patterns from source bitmaps through parallel processing techniques
US8438474B1 (en) * 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation
US9600350B2 (en) * 2011-06-16 2017-03-21 Vmware, Inc. Delivery of a user interface using hypertext transfer protocol
US9514242B2 (en) 2011-08-29 2016-12-06 Vmware, Inc. Presenting dynamically changing images in a limited rendering environment
US9549045B2 (en) 2011-08-29 2017-01-17 Vmware, Inc. Sharing remote sessions of a user interface and/or graphics of a computer
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US9467305B2 (en) 2012-03-07 2016-10-11 Vmware, Inc. Multitenant access to multiple desktops on host machine partitions in a service provider network
US9043722B1 (en) 2012-06-19 2015-05-26 Surfwax, Inc. User interfaces for displaying relationships between cells in a grid
JP6221214B2 (ja) * 2012-09-26 2017-11-01 富士通株式会社 システム、端末装置および画像処理方法
US9253158B2 (en) 2013-08-23 2016-02-02 Vmware, Inc. Remote access manager for virtual computing services
CN104683449B (zh) * 2015-02-05 2017-12-12 深圳市云舒网络技术有限公司 一种基于窗口结构的远程桌面控制方法
US10382521B2 (en) * 2015-12-14 2019-08-13 Wyse Technology, L.L.C. Gateway that enables a browser-based application to communicate with a server-side application using a non-browser-compatible protocol
CN108958868A (zh) * 2018-06-30 2018-12-07 深圳市技达信息技术有限公司 显示界面的方法、装置及计算机可读存储介质
US10573057B1 (en) * 2018-09-05 2020-02-25 Citrix Systems, Inc. Two-part context-based rendering solution for high-fidelity augmented reality in virtualized environment
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US11004256B2 (en) 2019-05-08 2021-05-11 Citrix Systems, Inc. Collaboration of augmented reality content in stereoscopic view in virtualized environment
CN112346677B (zh) * 2019-08-06 2022-08-02 杭州海康威视数字技术股份有限公司 用于拼接屏的发送卡以及辅助拼接屏配屏的方法
WO2021167603A1 (en) * 2020-02-19 2021-08-26 Hewlett-Packard Development Company, L.P. Generating a graphical user interface in a pre-operating system boot environment
US11348199B2 (en) * 2020-07-06 2022-05-31 Roku, Inc. Modifying graphics rendering by transcoding a serialized command stream

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US504391A (en) 1893-09-05 Device for catching oil from crank-pin journals of connecting-rods
US581904A (en) 1897-05-04 Fastening device for shoes or other articles
US631711A (en) 1899-03-17 1899-08-22 Edgar Lee Garvey Motor.
US5043910A (en) * 1985-04-19 1991-08-27 Graphtec Kabushikikaisha Printed circuit board function testing system
US5043919A (en) * 1988-12-19 1991-08-27 International Business Machines Corporation Method of and system for updating a display unit
GB2270581A (en) 1992-09-15 1994-03-16 Ibm Computer workstation
US5381347A (en) * 1992-12-21 1995-01-10 Microsoft Corporation Method and system for displaying images on a display device using an offscreen video memory
US5581670A (en) * 1993-07-21 1996-12-03 Xerox Corporation User interface having movable sheet with click-through tools
US6317115B1 (en) * 1993-12-09 2001-11-13 Canon Kabushiki Kaisha System, apparatus and method in which a high resolution image editor is connected to a host computer for processing low resolution image data
US5481780A (en) * 1994-01-12 1996-01-09 Daneshvar; Yousef Clean air vacuum cleaners
US5734387A (en) * 1994-10-24 1998-03-31 Microsoft Corporation Method and apparatus for creating and performing graphics operations on device-independent bitmaps
US6173043B1 (en) * 1994-10-31 2001-01-09 Worldvoice Licensing, Inc. Telephonic voice message transmission control method
JP3720419B2 (ja) * 1995-06-09 2005-11-30 株式会社東芝 画像処理装置
US6016520A (en) * 1995-07-14 2000-01-18 Microsoft Corporation Method of viewing at a client viewing station a multiple media title stored at a server and containing a plurality of topics utilizing anticipatory caching
US5673401A (en) * 1995-07-31 1997-09-30 Microsoft Corporation Systems and methods for a customizable sprite-based graphical user interface
US6437803B1 (en) 1998-05-29 2002-08-20 Citrix Systems, Inc. System and method for combining local and remote windows into a single desktop environment
US5819042A (en) * 1996-02-20 1998-10-06 Compaq Computer Corporation Method and apparatus for guided configuration of unconfigured network and internetwork devices
US6084600A (en) * 1996-03-15 2000-07-04 Micron Technology, Inc. Method and apparatus for high-speed block transfer of compressed and word-aligned bitmaps
DE19918046B4 (de) * 1998-04-23 2007-02-15 Lg Electronics Inc. Speicherstruktur für Bild-in-Bild-Anzeige bei einer digitalen Videoanzeigeeinheit sowie Verfahren hierfür
EP0959452A3 (de) * 1998-05-23 1999-12-22 Mannesmann VDO Aktiengesellschaft Verfahren zur Darstellung veränderlicher Informationen
US6463459B1 (en) 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US6697942B1 (en) * 1999-02-04 2004-02-24 Earthlink, Inc. Method for remotely managing a remote device using an electronic mail message
JP2001028763A (ja) 1999-04-29 2001-01-30 Mitsubishi Electric Inf Technol Center America Inc コントローラからビデオ表示ユニットに画像データを転送する方法、ビデオ表示ユニットアダプタ、ビデオ表示システム、並びにテレビ表示画面上への提示のために画像データをダブルバッファリングする方法
US7222150B1 (en) 2000-08-15 2007-05-22 Ikadega, Inc. Network server card and method for handling requests received via a network interface
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US20030114942A1 (en) * 2001-12-17 2003-06-19 Varone John J. Remote display module
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US7447997B2 (en) * 2002-05-30 2008-11-04 Microsoft Corporation Reducing information transfer in screen capture series
DE10242919A1 (de) 2002-09-16 2004-03-25 Siemens Ag System zur virtuellen Prozessanbindung über Remote Desktop Protocol (RDP)
US8264489B2 (en) * 2003-07-11 2012-09-11 Intel Corporation Interface remoting
US7966424B2 (en) 2004-03-15 2011-06-21 Microsoft Corporation Data compression
US20050267972A1 (en) 2004-05-25 2005-12-01 Nokia Corporation Lightweight remote display protocol
KR100673599B1 (ko) * 2004-07-20 2007-01-24 에스케이커뮤니케이션즈 주식회사 이동통신 단말기를 통한 모블로그 기반의 지역 커뮤니티 시스템에서 모임 제안 방법
US7614075B2 (en) 2004-08-13 2009-11-03 Microsoft Corporation Dynamically generating video streams for user interfaces
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US7852342B2 (en) 2004-10-14 2010-12-14 Microsoft Corporation Remote client graphics rendering
US8423673B2 (en) * 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US7430681B1 (en) * 2005-03-30 2008-09-30 Teradici Corporation Methods and apparatus for interfacing a drawing memory with a remote display controller
US20060230105A1 (en) 2005-04-06 2006-10-12 Ericom Software B 2001 Ltd Method of providing a remote desktop session with the same look and feel as a local desktop
US20060282855A1 (en) 2005-05-05 2006-12-14 Digital Display Innovations, Llc Multiple remote display system
US7653749B2 (en) 2005-08-31 2010-01-26 Microsoft Corporation Remote protocol support for communication of large objects in arbitrary format
US7991916B2 (en) * 2005-09-01 2011-08-02 Microsoft Corporation Per-user application rendering in the presence of application sharing
US7765483B2 (en) * 2005-09-12 2010-07-27 Microsoft Corporation Filtering obscured data from a remote client display
JP2007241736A (ja) * 2006-03-09 2007-09-20 Victor Co Of Japan Ltd リモートデスクトップシステムのサーバ装置及びクライアント装置
US8159495B2 (en) * 2006-06-06 2012-04-17 Microsoft Corporation Remoting sub-pixel resolved characters
US8140610B2 (en) 2007-05-31 2012-03-20 Microsoft Corporation Bitmap-based display remoting
CN102405631B (zh) 2009-02-20 2015-02-18 思杰系统有限公司 用于中间设备压缩通过远程显示协议传递的数据的系统和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9523840B2 (en) 2014-10-27 2016-12-20 Sintai Optical (Shenzhen) Co., Ltd. Lens assembly

Also Published As

Publication number Publication date
US8209372B2 (en) 2012-06-26
EP2171606A1 (en) 2010-04-07
WO2008150709A1 (en) 2008-12-11
EP2171606A4 (en) 2011-01-19
CN101681339A (zh) 2010-03-24
EP2171606B1 (en) 2013-03-27
JP2010529537A (ja) 2010-08-26
US8140610B2 (en) 2012-03-20
US20080301566A1 (en) 2008-12-04
US20110227935A1 (en) 2011-09-22
CN101681339B (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
JP5264895B2 (ja) ビットマップ形式の表示リモーティング
US20230367836A1 (en) Web browser remoting across a network using draw commands
US20200252413A1 (en) Remoting application across a network using draw commands with an isolator application
JP4709166B2 (ja) コンピュータ・デバイス用セキュリティ・モデルのための方法及びシステム
US8559755B2 (en) Methods and systems for prioritizing dirty regions within an image
EP2293192B1 (en) Methods and systems for remoting three dimensional graphics
US10558824B1 (en) Application remoting using network vector rendering
US20060103654A1 (en) System And Method Of Caching Glyphs For Display By A Remote Terminal
JP5313225B2 (ja) ディスプレイ・データ管理技法
US20040008214A1 (en) Tagging repeating images for improved compression
US6226017B1 (en) Methods and apparatus for improving read/modify/write operations
US11301950B2 (en) Systems and methods for providing a visible watermark in a remote session
CN113672321A (zh) 支持客户端窗口坐标的轻量级wayland合成器的实现方法
US20040008212A1 (en) Reshaping irregularly-shaped images for improved compression
CN114820272A (zh) 数据交互的方法、装置、存储介质及电子设备
US20040008205A1 (en) Tagging single-color images for improved compression
US20070229520A1 (en) Buffered Paint Systems
JP5536093B2 (ja) 改良されたコマンドリモーティング技術
US7046250B1 (en) Caching fonts for improved bandwidth of transmitted text
CN114904274A (zh) 云游戏的画面渲染方法、装置、电子设备以及存储介质
US10706824B1 (en) Pooling and tiling data images from memory to draw windows on a display device
KR20020048229A (ko) 혼합 컨텐츠 서버-클라이언트 시스템
Wen et al. PaperWork: Exploring the Potential of Electronic Paper on Office Work
CN118037923A (zh) 图像渲染方法、装置、存储介质及电子设备
CN118247401A (zh) 一种图像渲染方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130430

R150 Certificate of patent or registration of utility model

Ref document number: 5264895

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250