(57)【要約】【課題】デスクトップ共有および遠隔制御システムを提供する。【解決手段】接続装置は、PCツーPCのUSB接続ブリッジであるASICを含んでいる。ASICは、第1の標準のUSBマスストレージ装置をサーバに対して列挙し、第2の標準のUSBマスストレージ装置をクライアントに対して列挙する。サーバはサーバ側アプリケーションプログラムを実行して、そのデスクトップ画像を表すビデオデータを取得し、第1のエミュレートされたマスストレージ装置にビデオデータを送信し、かつ、ユーザインプット装置データを第1のマスストレージ装置から受信し、それらを適用してサーバを制御する。クライアントは、クライアント側アプリケーションプログラムを実行してキーボードデータおよびマウスデータを取得し、第2のエミュレートされたマスストレージ装置にデータを送信し、かつ、ビデオデータを第2のマスストレージ装置から受信し、それを表示装置に適用する。【選択図】図2
2010020757.tif 000002
【特許請求の範囲】
【請求項１】
サーバおよびクライアントに接続するための制御回路であって、前記クライアントのために、あらかじめ定められた通信プロトコルに適合する第1のマスストレージ装置をエミュレートし、前記サーバのために、前記あらかじめ定められた通信プロトコルに適合する第2のマスストレージ装置をエミュレートし、さらに、前記第1および第2のエミュレートされたマスストレージ装置の間でデータを転送する制御回路と、
前記制御回路に連結され、サーバ側アプリケーションプログラムおよびクライアント側アプリケーションプログラムを記憶するメモリであって、前記制御回路は前記クライアント側アプリケーションプログラムを前記第1のエミュレートされたマスストレージ装置に転送し、前記サーバ側アプリケーションプログラムを前記第2のエミュレートされたマスストレージ装置に転送するメモリとを備え、
前記クライアント側アプリケーションプログラムは、前記クライアントに、ユーザインターフェース装置データを前記エミュレートされた第1のマスストレージ装置に送信させ、前記エミュレートされた第1のマスストレージ装置から前記サーバのデスクトップ画像を表すビデオデータを受信させるように構成されており、
前記サーバ側アプリケーションプログラムは、前記サーバに、前記サーバのデスクトップ画像を表す前記ビデオデータを前記エミュレートされた第2のマスストレージ装置に送信させ、前記エミュレートされた第2のマスストレージ装置から前記ユーザインターフェース装置データを受信させるように構成された、クライアントによるサーバの遠隔制御を容易にするための装置。
【請求項２】
前記クライアント側アプリケーションプログラムは、前記クライアントに、前記ユーザインターフェース装置データを前記エミュレートされた第1のマスストレージ装置にパケットとして送信させるように構成され、前記サーバ側アプリケーションプログラムは、前記サーバに、前記ビデオデータを前記エミュレートされた第2のマスストレージ装置にパケットとして送信させるように構成され、前記サーバ側アプリケーションプログラムは、前記サーバに、前記ユーザインターフェース装置データを、前記第2のエミュレートされたマスストレージ装置から受信した前記パケットから抽出させ、前記抽出したデータを前記サーバに適用させるよう構成され、前記クライアント側アプリケーションプログラムは、前記クライアントに、前記ビデオデータを、前記第1のエミュレートされたマスストレージ装置から受信した前記パケットから抽出させ、それを前記クライアントの表示装置に表示させるよう構成されている、請求項1に記載の装置。
【請求項３】
前記クライアント側アプリケーションプログラムは、前記クライアントのオペレーティングシステムが提供するAPI、すなわちアプリケーションプログラムインターフェースを介して、前記ユーザインターフェース装置データを取得するよう構成され、前記サーバ側アプリケーションプログラムは、前記サーバのオペレーティングシステムが提供するAPIを介して、前記サーバのデスクトップ画像を表す前記ビデオデータを取得するよう構成されている、請求項1に記載の装置。
【請求項４】
前記あらかじめ定められた通信プロトコルは、USBプロトコル、すなわちユニバーサルシリアルバスプロトコルである、請求項1に記載の装置。
【請求項５】
前記制御回路および前記メモリは、ASIC、すなわち特定用途向け集積回路中で実行される、請求項1に記載の装置。
【請求項６】
前記クライアントに接続するための上流ポートと、前記制御回路に接続される下流ポートとを有するUSBハブをさらに備え、
前記制御回路は、一般的なUSBハブと標準のUSBマスストレージ装置とを前記クライアントに対してエミュレートし、
前記メモリは、パイロットプログラムを記憶し、前記パイロットプログラムを、前記第1のエミュレートされたマスストレージ装置および前記第2のエミュレートされたマスストレージ装置に転送し、
前記パイロットプログラムは、前記クライアントまたはサーバの前記オペレーティングシステムに、特定の一般的なUSBハブが存在するかを問い合わせるように、かつ、前記オペレーティングシステムの応答に基づき、前記クライアント側アプリケーションプログラムまたは前記サーバ側アプリケーションプログラムをロードし実行するように構成されている、請求項1に記載の装置。
【請求項７】
前記制御回路のクライアント側に接続されるGPIO回路、すなわち汎用I/O回路をさらに備え、
前記制御回路は、前記クライアントに対して、あらかじめ定められた特定の装置情報を有するストリングを備えたUSBマスストレージ装置をエミュレートし、
前記メモリは、パイロットプログラムを記憶し、前記パイロットプログラムを、前記第1のエミュレートされたマスストレージ装置および前記第2のエミュレートされたマスストレージ装置に転送し、
前記パイロットプログラムは、前記クライアントまたはサーバの前記オペレーティングシステムに、あらかじめ定められた特定の装置情報を有するストリングを備えたUSBマスストレージ装置が存在するかを問い合わせるよう構成され、かつ、前記オペレーティングシステムの応答に基づき、前記クライアント側アプリケーションプログラムまたは前記サーバ側アプリケーションプログラムをロードし実行するよう構成されている、請求項1に記載の装置。
【請求項８】
（a）サーバおよびクライアントに接続する制御回路と、前記制御回路に連結され、サーバ側アプリケーションプログラムおよびクライアント側アプリケーションプログラムを記憶するメモリとを備えた接続装置を設けるステップと、
（b）前記接続装置のクライアント側が前記クライアントに接続されたときに、前記制御回路が、前記クライアントのために、あらかじめ定められた通信プロトコルに適合する第1のマスストレージ装置をエミュレートするステップと、
（c）前記接続装置のサーバ側が前記サーバに接続されたときに、前記制御回路が、前記サーバのために、前記あらかじめ定められた通信プロトコルに適合する第2のマスストレージ装置をエミュレートするステップと、
（d）前記制御回路が、前記クライアント側アプリケーションプログラムおよび前記サーバ側アプリケーションプログラムを、それぞれ前記第1および第2のマスストレージ装置に転送するステップと、
（e）前記第2のエミュレートされたマスストレージ装置が、デスクトップ画像を表すビデオデータを、前記サーバから受信するステップと、
（f）前記制御回路が、前記ビデオデータを、前記第1のエミュレートされたマスストレージ装置に転送するステップと、
（g）前記第1のマスストレージ装置が、前記ビデオデータを、前記クライアントに出力するステップと、
（h）前記第1のマスストレージ装置が、ユーザインターフェース装置データを前記クライアントから受信するステップと、
（i）前記制御回路が、前記ユーザインターフェース装置データを、前記第2のマスストレージ装置に転送するステップと、
（j）前記第2のマスストレージ装置が、前記ユーザインターフェース装置データを、前記サーバに出力するステップとを含む、クライアントによりサーバを遠隔的に制御する方法。
【請求項９】
前記エミュレートされた第1のマスストレージ装置を介して受信される前記ユーザインターフェース装置データがパケットであり、前記エミュレートされた第2のマスストレージ装置を介して受信される前記ビデオデータがパケットであり、
（k）前記サーバが、前記ユーザインターフェース装置データを前記パケットから抽出し、前記抽出されたデータを当該サーバに適用するステップと、
（l）前記クライアントが、前記ビデオデータを前記パケットから抽出し、それを当該クライアントの表示装置に表示するステップとをさらに含む、請求項8に記載の方法。
【請求項１０】
前記クライアント側アプリケーションプログラムが、前記クライアントに、前記ユーザインターフェース装置データを、前記クライアントの前記オペレーティングシステムが提供するAPI、すなわちアプリケーションプログラムインターフェースを介して取得させ、前記サーバ側アプリケーションプログラムが、前記サーバに、前記サーバのデスクトップ画像を表す前記ビデオデータを、前記サーバの前記オペレーティングシステムが提供するAPI、すなわちアプリケーションプログラムインターフェースを介して取得させる、請求項8に記載の方法。
【請求項１１】
前記あらかじめ定められた通信プロトコルは、USBプロトコル、すなわちユニバーサルシリアルバスプロトコルである、請求項8に記載の方法。
【請求項１２】
前記制御回路および前記メモリは、ASIC、すなわち特定用途向け集積回路中で実行される、請求項8に記載の方法。
【請求項１３】
前記接続装置は、前記クライアントに接続するための上流側ポートと、前記制御回路に接続される下流側ポートとを有するUSBハブを含み、前記メモリはパイロットプログラムを記憶し、
前記ステップ（b）は、前記制御回路が、一般的なUSBハブおよび標準のUSBマスストレージ装置を、前記クライアントに対してエミュレートすることを含み、
前記ステップ（d）は、前記パイロットプログラムを、前記第1および第2のエミュレートされたマスストレージ装置に転送することを含み、
（m）前記パイロットプログラムが、前記クライアントまたはサーバの前記オペレーティングシステムに、特定の一般的なUSBハブが存在するかを問い合わせ、前記オペレーティングシステムの応答に基づき、前記クライアント側アプリケーションプログラムまたは前記サーバ側アプリケーションプログラムをロードし実行するステップをさらに含む、請求項8に記載の方法。
【請求項１４】
前記接続装置は、前記制御回路のクライアント側に接続されるGPIO、すなわち汎用I/Oを含み、前記メモリは、サーバ側パイロットプログラムおよびクライアント側パイロットプログラムを記憶し、前記制御回路は、前記クライアント側パイロットプログラムを前記第1のエミュレートされたマスストレージ装置に転送し、前記サーバ側パイロットプログラムを前記第2のエミュレートされたマスストレージ装置に転送し、
前記ステップ（b）は、前記制御回路が、あらかじめ定められた特定の装置情報を有するストリングを備えるUSBマスストレージ装置をエミュレートすることを含み、
前記ステップ（d）は、前記パイロットプログラムを前記第1および第2のエミュレートされたマスストレージ装置に転送することを含み、
（m）前記パイロットプログラムが、前記クライアントまたはサーバの前記オペレーティングシステムに、あらかじめ定められた特定の装置情報を有するストリングを備えるUSBマスストレージ装置が存在するかを問い合わせ、前記オペレーティングシステムの応答に基づき、前記クライアント側アプリケーションプログラムまたは前記サーバ側アプリケーションプログラムをロードし実行するステップをさらに含む、請求項8に記載の方法。
【請求項１５】
（a）接続装置を設けるステップ
を含む、クライアントによりサーバを遠隔的に制御する方法であって、前記接続装置が、
サーバおよびクライアントに接続するための制御回路であって、前記クライアントのために、あらかじめ定められた通信プロトコルに適合する第1のマスストレージ装置をエミュレートし、前記サーバのために、前記あらかじめ定められた通信プロトコルに適合する第2のマスストレージ装置をエミュレートし、さらに、前記第1および第2のエミュレートされたマスストレージ装置の間でデータを転送する制御回路と、
前記制御回路に連結され、サーバ側アプリケーションプログラムおよびクライアント側アプリケーションプログラムを記憶するメモリであって、前記制御回路は、前記クライアント側アプリケーションプログラムを前記第1のエミュレートされたマスストレージ装置に転送し、前記サーバ側アプリケーションプログラムを前記第2のエミュレートされたマスストレージ装置に転送するメモリとを備え、
前記クライアント側アプリケーションプログラムは、前記クライアントに、ユーザインターフェース装置データを前記エミュレートされた第1のマスストレージ装置に送信させ、前記エミュレートされた第1のマスストレージ装置から前記サーバのデスクトップ画像を表すビデオデータを受信させるように構成されており、
前記サーバ側アプリケーションプログラムは、前記サーバに、前記サーバのデスクトップ画像を表す前記ビデオデータを前記エミュレートされた第2のマスストレージ装置に送信させ、前記エミュレートされた第2のマスストレージ装置から前記ユーザインターフェース装置データを受信させるように構成されており、
当該方法が、
（b）前記接続装置のクライアント側を前記クライアントに接続するステップと、
（c）前記接続装置のサーバ側を前記サーバに接続するステップと、
（d）前記クライアントを使用して前記サーバを制御するステップとを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、2台のコンピュータの間のデスクトップ共有および遠隔制御（リモートコントロール）に関し、特に、USBケーブルを使ったデスクトップ共有および遠隔制御システムに関する。
【背景技術】
【０００２】
本出願は、2008年7月9日に出願された米国仮特許出願第61/079,434号および2008年8月31日に出願された米国特許出願第12/202,320号の優先権を主張するものであり、それらは引用により本明細書中にそのまま組み込まれる。
従来の遠隔デスクトップ制御では、ネットワークを使用してビデオ（映像）およびキーボード／マウスデータを交換している。一般にバーチャルネットワークコンピューティング（VNC）と呼ばれるこのようなシステムは、1台のコンピュータ（クライアント）が別のコンピュータ（サーバ）を遠隔制御できるようにする。サーバコンピュータおよびクライアントコンピュータは、ネットワークにより接続される。キーボードデータおよびマウスデータは、クライアントからサーバへ送信され、サーバのデスクトップ画像を表すビデオ信号がクライアントに送信され、クライアントのモニタに表示される。このようなシステムは、例えば、ITおよびテクニカルサポート人員が遠隔的に他のユーザのコンピュータを制御できるようにするために使用されてもよい。
【０００３】
USB通信ケーブルはファイル転送のために使用されてきた。例えば、米国特許出願公開第2004/0230708号は、ユニバーサルシリアルバス（USB）ファイル転送ケーブルへの適用方法について以下のように記載している。「USBファイル転送ケーブルが、マスストレージ（大容量記憶）クラスをサポートするWindows（登録商標）、Mac（商標）、Linux（商標）などのオペレーティングシステムを搭載した2台のコンピュータの間に接続されており、USBファイル転送ケーブルもマスストレージクラスをサポートしている場合、いずれのコンピュータも、USBファイル転送ケーブルに供給されるシステム情報にアクセスできる。アプリケーションプログラムはUSBファイル転送ケーブルに記録され、USBファイル転送ケーブルは、フロッピー（登録商標）ディスクドライブ、ハードディスクドライブまたはCD-ROMドライブなどの自動実行（オートラン）式のストレージ（記憶）装置としてシミュレートされるため、本発明のUSBファイル転送ケーブルは、ドライバおよびプログラムをインストールせずに、自動でファイル転送を実行することができる。このUSBファイル転送ケーブルへの適用方法は、2台のコンピュータの間で、いずれのコンピュータにもドライバおよびプログラムをインストールせずに、ファイル転送を自動で行うことができるため、ユーザに対し、プラグアンドプレイ機能を提供する。」（要約書）
台湾特許出願公開第286694号も、ファイル転送に使用されるUSBケーブル装置を記載している。同出願の図1に示されているように、USBケーブルは、マスストレージクラスをサポートする制御ユニット14と、アプリケーションプログラム162を記憶するストレージ（記憶）ユニット16とを含んでいる。ケーブルは2台のコンピュータの間に接続され、2台のコンピュータは方向性がないピアツーピア構成となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第2004/0230708号明細書
【特許文献２】台湾特許出願公開第286694号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、遠隔デスクトップ制御方法および機器に向けられている。
本発明のさらなる特徴および利点は以下の詳細な説明に記載されており、一部は詳細な説明から明らかであろうし、または本発明の実施によって理解されてもよい。本発明の目的および他の利点は、その詳細な説明および特許請求の範囲ならびに添付図面において特に指摘する構造により、実現および達成されるであろう。
【課題を解決するための手段】
【０００６】
本発明の目的に従って、これらおよび他の利点を実現するために、実施し、広範に記載するように、本発明は、サーバおよびクライアントに接続するための制御回路であって、前記クライアントのために、あらかじめ定められた通信プロトコルに適合する第1のマスストレージ装置をエミュレートし、前記サーバのために、前記あらかじめ定められた通信プロトコルに適合する第2のマスストレージ装置をエミュレートし、さらに、前記第1および第2のエミュレートされたマスストレージ装置の間でデータを転送する制御回路と、前記制御回路に連結され、サーバ側アプリケーションプログラムおよびクライアント側アプリケーションプログラムを記憶するメモリであって、前記制御回路は前記クライアント側アプリケーションプログラムを前記第1のエミュレートされたマスストレージ装置に転送し、前記サーバ側アプリケーションプログラムを前記第2のエミュレートされたマスストレージ装置に転送するメモリとを含み、前記クライアント側アプリケーションプログラムは、前記クライアントに、ユーザインターフェース装置データを前記エミュレートされた第1のマスストレージ装置に送信させ、前記エミュレートされた第1のマスストレージ装置から前記サーバのデスクトップ画像を表すビデオデータを受信させるように構成されており、前記サーバ側アプリケーションプログラムは、前記サーバに、前記サーバのデスクトップ画像を表す前記ビデオデータを前記エミュレートされた第2のマスストレージ装置に送信させ、前記エミュレートされた第2のマスストレージ装置から前記ユーザインターフェース装置データを受信させるように構成された、クライアントによるサーバの遠隔制御を容易にするための装置を提供する。
【０００７】
別の局面において、本発明は、（a）サーバおよびクライアントに接続する制御回路と、前記制御回路に連結され、サーバ側アプリケーションプログラムおよびクライアント側アプリケーションプログラムを記憶するメモリとを備えた接続装置を設けるステップと、（b）前記接続装置のクライアント側が前記クライアントに接続されたときに、前記制御回路が、前記クライアントのために、あらかじめ定められた通信プロトコルに適合する第1のマスストレージ装置をエミュレートするステップと、（c）前記接続装置のサーバ側が前記サーバに接続されたときに、前記制御回路が、前記サーバのために、前記あらかじめ定められた通信プロトコルに適合する第2のマスストレージ装置をエミュレートするステップと、（d）前記制御回路が、前記クライアント側アプリケーションプログラムおよび前記サーバ側アプリケーションプログラムを、それぞれ前記第1および第2のマスストレージ装置に転送するステップと、（e）前記第2のエミュレートされたマスストレージ装置が、デスクトップ画像を表すビデオデータを、前記サーバから受信するステップと、（f）前記制御回路が、前記ビデオデータを、前記第1のエミュレートされたマスストレージ装置に転送するステップと、（g）前記第1のマスストレージ装置が、前記ビデオデータを、前記クライアントに出力するステップと、（h）前記第1のマスストレージ装置が、ユーザインターフェース装置データを前記クライアントから受信するステップと、（i）前記制御回路が、前記ユーザインターフェース装置データを、前記第2のマスストレージ装置に転送するステップと、（j）前記第2のマスストレージ装置が、前記ユーザインターフェース装置データを、前記サーバに出力するステップとを含む、クライアントによりサーバを遠隔的に制御する方法を提供する。
【０００８】
別の局面において、本発明は、（a）接続装置を設けるステップを含む、クライアントによりサーバを遠隔的に制御する方法であって、前記接続装置が、サーバおよびクライアントに接続するための制御回路であって、前記クライアントのために、あらかじめ定められた通信プロトコルに適合する第1のマスストレージ装置をエミュレートし、前記サーバのために、前記あらかじめ定められた通信プロトコルに適合する第2のマスストレージ装置をエミュレートし、さらに、前記第1および第2のエミュレートされたマスストレージ装置の間でデータを転送する制御回路と、前記制御回路に連結され、サーバ側アプリケーションプログラムおよびクライアント側アプリケーションプログラムを記憶するメモリであって、前記制御回路は、前記クライアント側アプリケーションプログラムを前記第1のエミュレートされたマスストレージ装置に転送し、前記サーバ側アプリケーションプログラムを前記第2のエミュレートされたマスストレージ装置に転送するメモリとを備え、前記クライアント側アプリケーションプログラムは、前記クライアントに、ユーザインターフェース装置データを前記エミュレートされた第1のマスストレージ装置に送信させ、前記エミュレートされた第1のマスストレージ装置から前記サーバのデスクトップ画像を表すビデオデータを受信させるように構成されており、前記サーバ側アプリケーションプログラムは、前記サーバに、前記サーバのデスクトップ画像を表す前記ビデオデータを前記エミュレートされた第2のマスストレージ装置に送信させ、前記エミュレートされた第2のマスストレージ装置から前記ユーザインターフェース装置データを受信させるように構成されており、当該方法が、（b）前記接続装置のクライアント側を前記クライアントに接続するステップと、（c）前記接続装置のサーバ側を前記サーバに接続するステップと、（d）前記クライアントを使用して前記サーバを制御するステップとを含む、方法を提供する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る、デスクトップ共有および遠隔制御システムの構成を示す。
【図２】図1のシステムの構造を示すブロック図であり、また、ビデオ画像データおよびキーボード／マウスデータのデータフローを示す。
【図３】図2の接続装置のASICのブロック図である。
【図４】本発明の実施形態に係る、クライアントにより実行されるデータ交換処理を示す。
【図５】本発明の実施形態に係る、サーバにより実行されるデータ交換処理を示す。
【図６】クライアント／サーバ方向を区別することのできる接続装置の構造を示す、ブロック図である。
【図７】クライアント／サーバ方向を区別するために、図6の構造を使用する方法を示す。
【図８】クライアント／サーバ方向を区別することのできる、別の接続装置の構造を示すブロック図である。
【図９】クライアント／サーバ方向を区別するために、図8の構造を使用する方法を示す。
【発明を実施するための形態】
【００１０】
上記の一般的な説明および下記の詳細な説明はともに例示的および説明的であって、請求された発明についてさらなる説明を提供することを意図していることを理解すべきである。
要求に従い、本発明の詳細な例示的実施形態を本明細書において開示する。しかし、本発明に係る技術、システムおよび操作構造は、多様な形態および態様で実施されてもよく、そのうちのいくつかは開示された実施形態のものと大きく異なっていてもよい。したがって、本明細書中に開示する特定の構造および機能の詳細は単なる代表例であるが、しかしこの点で、それらは開示の目的のための最良の実施形態であり、本発明の範囲を規定する本願特許請求の範囲の根拠を提供するとみなされる。以下に、本発明の好ましい実施形態（およびいくつかの代替的な実施形態）の詳細な説明を示す。
【００１１】
本発明の実施形態に係るシステムは、2台のコンピュータがUSBケーブル装置により接続される、米国特許出願公開第2004/0230708号および台湾特許出願公開第286694号の構成に大略的に類似した構成を有しているが、本発明においてUSBケーブル装置は、デスクトップ共有および遠隔制御を達成するために使用される。2台のコンピュータは、ビデオ（映像）データおよびキーボード／マウスデータが双方向データフローであるクライアント-サーバ関係を有しており、サーバはそのデスクトップ画像を表すビデオデータをクライアントに送信し、クライアントはキーボード／マウスデータ（より一般的には、ユーザインターフェース装置データ）をサーバに送信し、サーバを制御する。
【００１２】
好ましくは、すべてのビデオデータおよびキーボード／マウスデータはオペレーティングシステムのAPI（アプリケーションユーザインタフェース）を介して取得され、次いでパケットに格納(パッケージ)されて他方側へ送信される。他方側において、データは受信したパケットからソフトウェアにより抽出されてオペレーティングシステムに送られ、クライアントとサーバとの間のデスクトップ共有および遠隔制御が達成される。
【００１３】
さらに、本発明の実施形態に係るシステムは、ハードウェア回路またはハードウェア構成要素（コンポーネント）を使用して、パイロットプログラムがクライアント側（制御する側）とサーバ側（制御される側）とを区別できるようにする。次いでパイロットプログラムは、対応するクライアント側またはサーバ側アプリケーションプログラムを呼び出し、対応するコンピュータに実行させる。
【００１４】
図1に本発明の適用を示す。図中、クライアントコンピュータはUSBケーブルを使用してKVM（キーボード、ビデオ、マウス）データをサーバコンピュータと交換し、クライアントコンピュータによるサーバコンピュータの制御を実現している。サーバコンピュータ14（遠隔側ともいう）およびクライアントコンピュータ12（ローカル側ともいう）は、接続装置16に接続されている。接続装置16は通常、小型のフォームファクタを有している。便宜上、接続装置16を本開示中でときどき「USBケーブル」と呼ぶが、これは単なるUSBケーブルではないと理解されたい。
【００１５】
接続装置16とクライアント12およびサーバ14との間のUSBケーブルは、装置16の本体と一体に形成されていてもよいし、またはそれらは、装置16の本体の各コネクタに差し込まれる物理的に別体のケーブルであっても、またはそれらの組み合わせであってもよい。
図2は、図1のシステムを示すブロック図である。接続装置16は、クライアントコンピュータとサーバコンピュータとを接続するために、回路を含んでおり、この例ではPCツーPCのUSB接続ブリッジ162であるASIC（特定用途向け集積回路）を含んでいる。図3に示すASIC162の構造は、上述の台湾特許出願公開第286694号に示すUSBケーブルと類似していてもよい。すなわち、マスストレージ（大容量記憶）クラスをサポートする制御ユニット1622と、クライアント側およびサーバ側アプリケーションプログラム（あとでより詳細に説明する）を記憶するストレージ（記憶）ユニット1624とを含んでいてもよい。制御ユニット1622はふさわしければ、独自のメモリ（図示せず）を含んでいてもよい。
【００１６】
ASIC162はクライアント12およびサーバ14に関し、USB装置制御器機能を実行する。これにより、標準のUSBマスストレージ装置（エミュレート（模倣）されたサーバ側のマスストレージ装置）をサーバ14に対して列挙し、別の標準のUSBマスストレージ装置（エミュレートされたクライアント側のマスストレージ装置）をクライアント12に対して列挙する。USBマスストレージ装置は、例えばCD-ROM、DVD-ROM、フラッシュドライブ、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブなどの、USBマスストレージクラス規格に準拠したいずれの装置であってもよい。CD-ROMは、便利な自動実行機能を提供し、それによりCD-ROM中に記憶されたプログラムを自動でホストコンピュータ（クライアントまたはサーバ）にロードし、ユーザを介在させずに実行できるため、エミュレートされた装置として好ましい。ASIC162はまた、2台のエミュレートされたマスストレージ装置の間でデータを転送する。
【００１７】
サーバAP（アプリケーションプログラム）142は、エミュレートされたサーバ側マスストレージ装置に記憶されてサーバコンピュータ14にロードされ実行される、サーバ側アプリケーションプログラムを意味している。サーバ側アプリケーションプログラム142は、サーバ14のオペレーティングシステム146が提供するAPI（アプリケーションプログラムインターフェース）144を介してサーバのデスクトップ画像のビデオデータを取得し、エミュレートされたサーバ側マスストレージ装置に書き込むことにより、USBケーブル16を通じてビデオデータをクライアント側に送信する。加えて、サーバAP142は、エミュレートされたサーバ側マスストレージ装置から読み込むことにより、クライアント側からキーボード／マウスデータを受信し、API144を使用してデータをサーバコンピュータ14に適用し、それを制御する。
【００１８】
クライアントAP（アプリケーションプログラム）122は、エミュレートされたクライアント側マスストレージ装置に記憶されてクライアントコンピュータ12にロードされ実行される、クライアント側アプリケーションプログラムを意味している。クライアント側アプリケーションプログラム122は、クライアント12のオペレーティングシステム126が提供するAPI124を介してクライアント側のキーボード／マウスデータを取得し、エミュレートされたクライアント側マスストレージ装置に書き込むことにより、USBケーブル16を通じてデータをサーバ側に送信する。加えてクライアントAP122は、エミュレートされたサーバ側マスストレージ装置から読み込むことにより、サーバ側からビデオデータを受信し、API124を使用してクライアントコンピュータ12の表示装置（図示せず）にビデオデータを表示する。サーバ14からクライアント12へのビデオ画像データのデータフロー、およびクライアント12からサーバ14へのキーボード／マウスデータのデータフローを、図2に破線により示す。
【００１９】
キーボード／マウスデータおよびビデオデータを取得し送信するために、クライアントコンピュータ12およびサーバコンピュータ14で実行される処理を、図4および図5を参照して、より詳細に説明する。図4に、クライアント側の処理フローを示す。クライアント側は、ユーザに遠隔制御インターフェイスを提供し、遠隔（サーバ）コンピュータのデスクトップ画像を表示し、クライアント側のキーボードイベントおよびマウスイベントをサーバ側へ送信する役割を負う。図4に示すように、まずクライアントが遠隔（サーバ）側とハンドシェークを行い、必要な情報を交換する（ステップS41）。成功しなかった場合（ステップS42の「N」）、ハンドシェークが繰り返される。接続の確立に成功すると（ステップS42の「Y」）、KVM（キーボード、ビデオ、マウス）データの交換を開始する（ステップS43）。2つの処理は並行して連続して行われる（ステップS44〜S45、およびS46〜S48）。ビデオデータについて、クライアントはサーバからビデオデータを受信し（ステップS44）、サーバのオペレーティングシステムが提供するAPIを使用して、受信したビデオデータに基づくデスクトップ画像を描画する（ステップS45）。Windows（登録商標）の例では、BitBltプログラムを、画像を描画するのに使用できる。ステップS44〜S45が繰り返されて、ビデオデータを連続して受信し、デスクトップ画像を描画する。
【００２０】
キーボード／マウスデータについて、ローカル側（クライアント）は、クライアントのオペレーティングシステムが提供するAPIを使用して、ローカルなキーボード／マウスデータを取得する（ステップS46）。Windows（登録商標）の例では、Windows（登録商標）メッセージを使用して、キーボードデータおよびマウスデータを取得することができる。キーボードについて、WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWNおよびWM_SYSKEYUPを使用して、キーボードのクリックを取得してもよい。マウスについて、WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MBUTTONDOWN、WM_MBUTTONDOWN、WM_MBUTTONUP、WM_RBUTTONDOWN、WM_RBUTTONUPおよびWM_MOUSEMOVEを使用して、マウスの移動／位置およびボタンのクリック状況を取得してもよい。次いで、2台のコンピュータの間であらかじめ合意した規約（とり決め）に従い、クライアントがローカルのキーボード／マウスデータをパケットに格納（パッケージ）し（ステップS47）、キーボード／マウスデータのパケットをUSBケーブルを通じて遠隔側に送信する（ステップS48）。ステップS46〜S48が繰り返されて、キーボード／マウスデータが連続して取得および送信される。
【００２１】
図5にサーバ側の処理フローを示す。サーバ側は、サーバコンピュータのデスクトップのビデオデータを取得し、クライアントからキーボード／マウスデータを受信し、サーバ上でキーボード／マウスイベントをシミュレートしてサーバを制御する役割を負う。図5に示すように、まずサーバがクライアントとハンドシェークを行う（ステップS51）。成功しなかった場合（ステップS52の「N」）、ハンドシェークが繰り返される。接続の確立に成功すると（ステップS52の「Y」）、KVM（キーボード、ビデオ、マウス）データの交換を開始する（ステップS53）。2つの処理は並行して連続して行われる（ステップS54〜S56、およびS57〜S58）。ビデオデータについて、サーバは、種々の画像交換またはクライアント側からのイベントおよび要求に基づいてデスクトップ画像を分析し、オペレーティングシステムが提供するAPIを使用して、サーバのデスクトップ画像を取得する（ステップS54）。Windows（登録商標）の例では、BitBltプログラムを、画像を取得するのに使用してもよい。サーバは、サーバのデスクトップ画像中の変化した可能性のある領域を判断し（ステップS55）、データをパケットに格納(パッケージ)し、デスクトップ画像をビデオデータパケットとして、USBケーブルを通じてクライアント側に送信する（ステップS56）。ステップS54〜S56が繰り返されて、デスクトップ画像が連続して取得および送信される。
【００２２】
キーボードおよびマウスについて、サーバは、クライアント側からキーボード／マウスデータパケットを受信し（ステップS57）、パケットからキーボード／マウスイベントを抽出し、オペレーティングシステムが提供するAPIを使用してサーバ上でキーボード／マウスイベントをシミュレートし、サーバを制御する（ステップS58）。Windows（登録商標）の例では、キーボードイベントをシミュレートするためにkeybd_eventプログラムが使用されてもよく、マウスイベントをシミュレートするためにmouse_eventプログラムが使用されてもよい。ステップS57〜S58が繰り返されて、キーボードイベントおよびマウスイベントが連続して受信および適用される。
【００２３】
クライアント側／サーバ指向性を区別する方法について、以下に記載する。システムのオペレーション（作動）はクライアント／サーバモデルに基づいているため、ケーブル16のクライアント側がクライアントコンピュータ12に差し込まれた場合に、クライアント側アプリケーションプログラム122が自動で実行されなければならず、ケーブル16のサーバ側がサーバコンピュータ14に差し込まれた場合に、サーバ側アプリケーションプログラム142が自動で実行されなければならない。ASIC162はPCツーPC（ピアツーピア）装置であり、固有の指向性を備えていない。ゆえに、指向性を与えるために、ハードウェア構成要素または回路が接続装置16中に設けられる。パイロットプログラムが接続装置16中に設けられ、それにより、ハードウェア回路または構成要素に供給された情報に基づき、クライアント側およびサーバ側の方向を区別することができ、対応するクライアント側またはサーバ側プログラムを呼び出すことができる。方向を区別するための2つの方法を以下に記載する。
【００２４】
図6を参照して、第1の方法は、接続装置16に設けられたハードウェア構成要素、すなわちUSBハブ164を使用する。ASIC162はUSBハブ164の下流側ポートに接続されており、USBハブ164の上流側ポートはクライアントコンピュータ12に接続されることになる。図7を参照して、接続装置16のクライアント側がクライアントコンピュータ12に差し込まれると、接続装置はクライアント12に対して2台のUSB装置を列挙する（ステップS71）。その一方は一般的なUSBハブであり、他方は標準のUSBマスストレージ装置（クライアント側マスストレージ装置）である。ケーブル16のクライアント側がクライアント12に差し込まれたときに、ユーザがクライアント12のデバイスマネジャーを開いた場合、ユーザは一般的なUSBハブとUSBマスストレージ装置とを見ることになる。USBケーブル16のサーバ側がサーバコンピュータ14に差し込まれたときに、USBケーブルはサーバに対し標準のUSBマスストレージ装置（サーバ側マスストレージ装置）を列挙する（ステップS71）。
【００２５】
各マスストレージ装置はクライアント／サーバ指向性を区別するためのパイロットプログラムを記憶しており、パイロットプログラムは各コンピュータが接続されたのちに実行される（ステップS72）。各パイロットプログラムは実行されると、特定の一般的なUSBハブの下流側ポートに特定のUSBマスストレージ装置が存在するかを、接続されたコンピュータのオペレーティングシステムに問い合わせる。それは、USB装置のあらかじめ規定されたUSB VID（ベンダーID）およびUSB PID（プロダクトID）により判断される（ステップS73およびS74）。そうである場合（ステップS73の「Y」およびステップS74の「Y」）、そちら側がクライアント側と判断され、クライアント側アプリケーションプログラムがUSBマスストレージ装置から、接続されているコンピュータ（クライアント）へロードされ実行される（ステップS75）。そうでない場合（ステップS73の「N」およびステップS74の「N」）、そちら側がサーバ側と判断され、サーバ側アプリケーションプログラムがUSBマスストレージ装置から、接続されているコンピュータ（サーバ）へロードされ実行される（ステップS76）。
【００２６】
図8を参照して、第2の方法は、接続装置16に設けられたハードウェア回路、すなわちGPIO（汎用I/O）回路166を使用する。GPIO166はASIC162のクライアント側に接続されており、異なるUSBマスストレージ装置をクライアント12およびサーバ14に対して列挙するための基盤を、ASIC162に提供する。図7を参照して、ケーブル16のクライアント側およびサーバ側がクライアント12およびサーバ14にそれぞれ差し込まれたとき（ステップS91）、GPIO166がASIC162に接続される方向であると、ASIC162が判断すると（ステップS92の「Y」）、その方向がクライアント側であり、ASICは接続されたコンピュータ（クライアント）に対し、あらかじめ定められた特定の装置情報を有するストリングを備えるUSBマスストレージ装置を列挙する（ステップS93）。GPIO166がない方向であると、ASIC162が判断した場合（ステップS92の「N」）、その方向がサーバ側であり、ASICは接続されたコンピュータ（サーバ）に対し、あらかじめ定められた特定の装置情報を有するストリングを備えていないUSBマスストレージ装置を列挙する（ステップS94）。このような列挙により、パイロットプログラムがサーバ方向またはクライアント方向を判断できるようになる。
【００２７】
各マスストレージ装置に記憶されているパイロットプログラムは、接続されたコンピュータ（クライアントまたはサーバ）にロードされ実行される（ステップS95）。パイロットプログラムはコンピュータのオペレーティングシステムに対し、あらかじめ定められた特定の装置情報を有するストリングを備えるUSBマスストレージ装置が存在するかを問い合わせる（ステップS96）。そうである場合、そちら側がクライアント側と判断され、クライアント側アプリケーションプログラムがUSBマスストレージ装置から、接続されているコンピュータ（クライアント）へロードされ実行される（ステップS97）。そうでない場合、そちら側がサーバ側と判断され、サーバ側アプリケーションプログラムがUSBマスストレージ装置から、接続されているコンピュータ（サーバ）へロードされ実行される（ステップS98）。
【００２８】
上記2つの方法の代替案として、指向性がASIC162自体に設けられていてもよい。すなわち、ピアツーピア装置の代わりに、ASIC162が2つの異なる方向または側を有するように設計されていてもよい。ASIC162のサーバ側は、サーバ側アプリケーションプログラムを記憶しているUSBマスストレージ装置をエミュレートすることになり、ASICのクライアント側は、クライアント側アプリケーションプログラムを記憶しているUSBマスストレージ装置をエミュレートすることになる。
【００２９】
接続装置16は、異なるオペレーティングシステムのプラットフォームに適合するよう設計することもできる。これを実現するために、異なるオペレーティングシステム用の多数のクライアント側およびサーバ側アプリケーションプログラムがASIC162に記憶され、エミュレートされたUSBマスストレージ装置を介してクライアント12およびサーバ14に与えられる。クライアント12およびサーバ14のオペレーティングシステムは、特定のオペレーティングシステムに適合するプログラムを自動で選択して実行する。
【００３０】
本発明の実施形態に係る遠隔デスクトップ制御システムおよび方法は、いくつかの利点を有している。第1に、クライアント側およびサーバ側アプリケーションプログラムが実行されるとすぐに、接続が確立される。クライアント側プログラムおよびサーバ側プログラムの双方が実行されている限り、命令にかかわらず、接続は自動で確立され、2台のコンピュータはデスクトップ共有および遠隔制御の実行を開始することができる。第2に、このシステムが使用する双方向データフローは遠隔デスクトップ制御アプリケーションにとって適切であり、他のアプリケーションに適応する点で柔軟である。第3に、これはサーバ側のために、エミュレートされたキーボード／マウス装置を使用しない。遠隔制御はソフトウェアおよびオペレーティングシステムによってのみ行われ、多様なプラットフォームとの、より大きな適合性を提供する。
【００３１】
本発明の精神または範囲を逸脱することなしに、本発明の遠隔デスクトップ制御方法および機器に種々の修正および変更を加えることができることは、当業者にとって明らかであろう。ゆえに本発明は、添付の特許請求の範囲およびその均等物の範囲内にある修正および変更を包含することを意図している。
【図１】
2010020757.tif 000003
【図２】
2010020757.tif 000004
【図３】
2010020757.tif 000005
【図４】
2010020757.tif 000006
【図５】
2010020757.tif 000007
【図６】
2010020757.tif 000008
【図７】
2010020757.tif 000009
【図８】
2010020757.tif 000010
【図９】
2010020757.tif 000011