(57)【要約】【課題】仮想化サーバ装置の機能と仮想化クライアント装置の機能を一つの装置に共存させることによって、ネットワーク上の装置、及び装置の備えている機能をより柔軟に利用できるようにするデバイス制御装置を提供する。【解決手段】第一のデバイスを制御するデバイス制御手段と、第一の情報処理装置から送られてくる第１の制御要求に従ってデバイス制御手段を制御し、第一の情報処理装置に第一のデバイスが直接接続しているようにシミュレートさせる仮想化通信手段を備えた仮想化クライアント機能と、第二のデバイスを直接接続しているようにシミュレートする仮想化制御手段と、第二のデバイスに対する第２の制御要求を生成し、第二の情報処理装置を介して第二のデバイスに送信する制御要求送信手段を備えた仮想化サーバ機能を一つの装置に共存させる。【選択図】図１
2014142924.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された第一の情報処理装置によって自装置に接続されている第一のデバイスを制御するとともに、ネットワークを介して接続された第二の情報処理装置に接続されている第二のデバイスを制御するデバイス制御装置であって、
前記第一のデバイスを制御するデバイス制御手段と、
前記第一の情報処理装置から送られてくる第１の制御要求に従って前記デバイス制御手段を制御し、前記第一の情報処理装置に前記第一のデバイスが直接接続しているようにシミュレートさせる仮想化通信手段と、
前記第二のデバイスを直接接続しているようにシミュレートする仮想化制御手段と、
前記第二のデバイスに対する第２の制御要求を生成し、前記第二の情報処理装置を介して前記第二のデバイスに送信する制御要求送信手段と、を備えること
を特徴とするデバイス制御装置。
【請求項２】
前記第二のデバイスを直接制御する第１の制御モードと前記第二のデバイスを間接制御する第２の制御モードとを有し、
前記仮想化制御手段は、前記第１の制御モードにおいては自ら前記第二のデバイスを制御し、前記第２の制御モードにおいては前記仮想化通信手段と接続し、前記第一の情報処理装置と前記第二の情報処理装置のデータ送受信を中継すること
を特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
自らが具備する所定の機能を前記第一のデバイスとして識別させるための仮想デバイス識別情報を記憶する識別情報記憶手段と、
前記仮想デバイス識別情報を前記第一の情報処理装置に送信する識別情報送信手段と、
前記第一の情報処理装置が前記仮想デバイス識別情報に応じて識別した前記第一のデバイスを制御する際、前記第一のデバイスとの間のデータ送受信は第１のデータ形式に変換し、前記第一の情報処理装置との間のデータ送受信は第２のデータ形式に変換して制御する仮想デバイス制御手段と、
を有することを特徴とする請求項１又は２に記載のデバイス制御装置。
【請求項４】
前記第二のデバイスを制御する制御ドライバを前記デバイス制御装置内に具備するか否かを判断するデバイスドライバ切替手段を更に備え、
前記デバイスドライバ切替手段は、
前記第二のデバイスを制御するための前記制御ドライバを具備すると判断した場合、前記第１の制御モードを選択し、
前記第二のデバイスを制御するための前記制御ドライバを具備しないと判断した場合、前記第２の制御モードを選択することを特徴とする請求項３に記載のデバイス制御装置。
【請求項５】
ネットワークを介して接続された第一の情報処理装置によって自装置に接続されている第一のデバイスを制御するとともに、ネットワークを介して接続された第二の情報処理装置に接続されている第二のデバイスを制御するデバイス制御装置におけるデバイス制御方法であって、
前記第一のデバイスを制御するデバイス制御ステップと、
前記第一の情報処理装置から送られてくる第１の制御要求に従ってデバイス制御手段を制御し、前記第一の情報処理装置に前記第一のデバイスが直接接続しているようにシミュレートさせる仮想化通信ステップと、
前記第二のデバイスを直接接続しているようにシミュレートする仮想化制御ステップと、
前記第二のデバイスに対する第２の制御要求を生成し、前記第二の情報処理装置を介して前記第二のデバイスに送信する制御要求送信ステップと、を備えること
を特徴とするデバイス制御方法。
【請求項６】
前記第二のデバイスを直接制御する第１の制御モードと前記第二のデバイスを間接制御する第２の制御モードとを有し、
前記仮想化制御ステップは、前記第１の制御モードにおいては自ら前記第二のデバイスを制御し、前記第２の制御モードにおいては仮想化通信手段と接続し、前記第一の情報処理装置と前記第二の情報処理装置のデータ送受信を中継すること
を特徴とする請求項５に記載のデバイス制御方法。
【請求項７】
前記デバイス制御装置が具備する所定の機能を前記第一のデバイスとして識別させるための仮想デバイス識別情報を記憶する識別情報記憶ステップと、
前記仮想デバイス識別情報を前記第一の情報処理装置に送信する識別情報送信ステップと、
前記第一の情報処理装置が前記仮想デバイス識別情報に応じて識別した前記第一のデバイスを制御する際、前記第一のデバイスとの間のデータ送受信は第１のデータ形式に変換し、前記第一の情報処理装置との間のデータ送受信は第２のデータ形式に変換して制御する仮想デバイス制御ステップと、
を有することを特徴とする請求項５又は６に記載のデバイス制御方法。
【請求項８】
デバイスドライバ切替手段が、前記第二のデバイスを制御するための制御を前記デバイス制御装置内に具備するか否かを判断するデバイスドライバ切替ステップを更に備え、
前記デバイスドライバ切替ステップは、
前記第二のデバイスを制御するための前記制御ドライバを具備すると判断した場合、前記第１の制御モードを選択し、
前記第二のデバイスを制御するための前記制御ドライバを具備しないと判断した場合、前記第２の制御モードを選択することを特徴とする請求項４乃至６の何れか１項に記載のデバイス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してプリンタなどのデバイスを制御するためデバイス制御装置およびその制御方法に関する。
【背景技術】
【０００２】
従来、パーソナルコンピュータなどの情報処理装置（以下，ＰＣと呼ぶ）をクライアントとしてネットワークを介してプリンタ、ストレージ、およびスキャナなどのデバイス（周辺機器）を利用するシステムが知られている。このようなシステムにおいて、クライアントがネットワーク上のデバイスをローカル接続されたデバイスとして認識させて制御（以下、仮想化制御と呼ぶ）させて、ネットワーク上のクライアントからデバイスをアクセスできるようにしたものがある。
【０００３】
例えば、本出願人は、ＬＡＮなどのネットワークに接続されたデバイスサーバ（デバイス制御装置）にローカル接続されたデバイスを、ネットワーク上のＰＣから制御する為に、デバイスサーバのデバイス制御部（ホストコントローラ）をＰＣから制御できるようにしたデバイス制御システムを提案している（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特願２０１１−２２３４５９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したデバイス制御システムでは、仮想化制御する側の装置（以下、仮想化サーバ装置と呼ぶ）、仮想化制御される側の装置（以下、仮想化クライアント装置と呼ぶ）が予め決まっている。しかしながら、ネットワーク上には様々な装置が接続されている。そのため、例えば、一方でネットワーク上のある装置からは仮想化制御される側の仮想化クライアント装置として動作し、もう一方ではネットワーク上の別の装置に対し仮想化サーバ装置として動作する、というように両方の形態で利用したい場合がある。
【０００６】
そこで、本発明は、このような場合も考慮し、本出願人が先に提案したデバイス制御システムの機能をさらに拡張・発展させて、仮想化サーバ装置の機能と仮想化クライアント装置の機能を一つの装置に共存させることによって、ネットワーク上の装置、及び装置の備えている機能をより柔軟に利用できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、本発明によるデバイス制御装置は、ネットワークを介して接続された第一の情報処理装置によって自装置に接続されている第一のデバイスを制御するとともに、ネットワークを介して接続された第二の情報処理装置に接続されている第二のデバイスを制御するデバイス制御装置であって、前記第一のデバイスを制御するデバイス制御手段と、前記第一の情報処理装置から送られてくる第１の制御要求に従って前記デバイス制御手段を制御し、前記第一の情報処理装置に前記第一のデバイスが直接接続しているようにシミュレートさせる仮想化通信手段と、前記第二のデバイスを直接接続しているようにシミュレートする仮想化制御手段と、前記第二のデバイスに対する第２の制御要求を生成し、前記第二の情報処理装置を介して前記第二のデバイスに送信する制御要求送信手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、デバイス制御装置に仮想化サーバ装置の機能（仮想化サーバ機能）と仮想化クライアント装置の機能（仮想化クライアント機能）を共存させることで、ネットワーク上の装置の機能が利用できるようになると共に、デバイス制御装置自身の機能をネットワーク上の装置から利用させることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態によるデバイス制御システムの一例を示すブロック図である。
【図２】図１に示す仮想デバイス識別情報の一例を示す図である。
【図３】図１に示すデバイス制御システムのデバイス制御装置によって仮想化制御する際の動作を説明するためのシーケンス図である。
【図４】本発明の第２の実施形態によるデバイス制御システムの一例を示すブロック図である。
【図５】図４に示すデバイス制御システムにおいて、デバイス制御装置を介して携帯端末の内部デバイスを情報処理装置が仮想化制御する際の動作を説明するためのシーケンス図である。
【図６】本発明の第３の実施形態によるデバイス制御システムの一例を示すブロック図である。
【図７】図６に示すデバイス制御システムにおいて、デバイス制御装置と携帯端末がそれぞれ接続相手の内部デバイスを仮想化制御する際の動作を説明するためのシーケンス図である。
【図８】本発明の第４の実施形態によるデバイス制御システムの一例を示すブロック図である。
【図９】図８に示すデバイス制御システムにおいて、内部デバイスを情報処理装置で仮想化制御する際と、内部デバイスをデバイス制御装置で仮想化制御する際の動作を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態によるデバイス制御システムの一例について図面を参照して説明する。
【００１１】
［第１の実施形態］
図１は、本発明の第１の実施形態によるデバイス制御システムの一例を示すブロック図である。
【００１２】
＜システム構成＞
図１のデバイス制御システムは、情報処理装置１００、携帯端末２００、デバイス制御装置３００、外部デバイス４００から構成されている。情報処理装置１００及び携帯端末２００は、例えば、有線回線又は無線回線でローカルエリアネットワーク（ＬＡＮ）などのネットワーク６００を介してデバイス制御装置３００に接続されている。そして、デバイス制御装置３００には、外部デバイス４００が接続ケーブル５００などによってローカル接続されている。
【００１３】
＜情報処理装置１００の構成＞
情報処理装置１００は、例えば、パーソナルコンピュータ（ＰＣ）などであって、図１には示されていないが、ハードウェア構成として、ＣＰＵ、入力部、表示部、メモリ、通信部、および記憶部などを備え、これらハードウェアは内部バスで相互に接続されている。
【００１４】
ＣＰＵは情報処理装置１００全体の制御を司る。入力部は、例えば、キーボードおよびマウスを備えている。表示部として、例えば、液晶ディスプレイが用いられる。メモリはＲＡＭおよびＲＯＭなどである。
【００１５】
通信部はネットワーク６００に接続するためのインターフェースであって、デバイス制御装置３００とデータ送受信を行う。これによって、情報処理装置１００はデバイス制御装置３００にローカル接続された外部デバイス４００とデータ送受信することが可能となる。
【００１６】
記憶部には、図示していないソフトウェアであるオペレーティングシステム（以下、ＯＳと呼ぶ）と、アプリケーション１０１、デバイスドライバ１０２、仮想化制御部１０３、通信制御部１０４が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、ＣＰＵの制御に従い動作する。
【００１７】
アプリケーション１０１は、デバイスドライバ１０２に対してデータ入出力要求を指示することによって、デバイス制御装置３００、外部デバイス４００を制御するためのソフトウェアプログラムである。
【００１８】
デバイスドライバ１０２は、ＯＳ又はアプリケーション１０１からのデータ入出力要求を、外部デバイス４００に応じたデータ形式のデータ（以下、制御コマンドと呼ぶ）に変換して、当該制御コマンドを仮想化制御部１０３に送る。さらに、デバイスドライバ１０２は制御コマンドに対する応答をアプリケーション１０１に通知する。
【００１９】
仮想化制御部１０３は、デバイスドライバ１０２から送られた制御コマンド（つまり、データ入出力要求）をＵＳＢデータ形式に準拠したパケットデータ（以下、ＵＳＢデータと呼ぶ）に変換する。また、仮想化制御部１０３は通信制御部１０４から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ１０２に送る。
【００２０】
さらに、仮想化制御部１０３は、外部デバイス４００に対するデータ送受信要求に対して、外部デバイス４００が情報処理装置１００に直接的に接続（ローカル接続）されている際と同様の振る舞いをシミュレートする機能（以下、仮想化制御と呼ぶ）を備えている。この仮想化制御によって、情報処理装置１００は外部デバイス４００をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
【００２１】
通信制御部１０４は、仮想化制御部１０３から送られるＵＳＢデータとネットワーク６００を介してデバイス制御装置３００と通信する際のネットワークパケットとの変換処理を行って、デバイス制御装置３００との間でデータ送受信の制御を行う。また、通信制御部１０４は仮想化制御部１０３から送られるデータ送受信要求に応じて、デバイス制御装置３００との間のセッションの接続および切断の制御を行う。
【００２２】
＜携帯端末２００の構成＞
携帯端末２００は、ハードウェア構成として、図１には示されていないが、ＣＰＵ、メモリ、通信部、および記憶部などを備えるとともに、内部デバイス２５０（後述）を備え、これらハードウェアは内部バスで相互に接続されている。例えば、携帯電話機、ＰＤＡ、スマートフォンなどの機器であるが、これらに限定されるものではない。
【００２３】
ＣＰＵは携帯端末２００全体の制御を司る。内部デバイス２５０である表示デバイス２５０Ａは、例えば、液晶ディスプレイが用いられる。入力デバイス２５０Ｂとして、例えば、キーボード、テンキーおよびマウスなどの入力機器若しくはこれらの機能をソフトウェアで実現したソフトウェアキーボードなどである。メモリはＲＡＭおよびＲＯＭなどである。
【００２４】
通信部はネットワーク６００に接続するためのインターフェースであって、デバイス制御装置３００とデータ送受信を行う。
【００２５】
記憶部には、ソフトウェアであるＯＳ（図示せず）、アプリケーション２０１、仮想デバイス制御部２０２、仮想化通信部２０３、通信制御部２０４が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、ＣＰＵの制御に従い動作する。
【００２６】
アプリケーション２０１は、携帯端末２００で様々な制御を実行させるためのソフトウェアプログラム群であり、仮想化制御の切り替え、終了などを指示するソフトウェア（ユーザインターフェース）などが含まれている。
【００２７】
仮想デバイス制御部２０２は、仮想デバイス識別情報２０２Ａおよびデータ形式変換処理部２０２Ｂを備えている。さらに、仮想デバイス制御部２０２は、内部デバイス２５０を仮想的なＵＳＢデバイスに切り替えるユーザインターフェースなどの切替部（不図示）を備えている。
【００２８】
仮想デバイス識別情報２０２Ａは、デバイス制御装置３００に携帯端末２００の内部デバイス２５０を自装置にローカル接続されているように認識させるために用いられる。内部デバイス２５０である表示デバイス２５０Ａおよび入力デバイス２５０Ｂは、外部デバイス４００のように、機器を個別に識別するための個体識別情報に相当する情報を有していないので、デバイス制御装置３００は内部デバイス２５０を認識することができない。
【００２９】
そこで、個体識別情報に相当する仮想デバイス識別情報２０２Ａを表示デバイス２５０Ａおよび入力デバイス２５０Ｂの各々に割り当てて、デバイス制御装置３００に外部デバイス４００と同様に、表示デバイス２５０Ａおよび入力デバイス２５０ＢをＵＳＢデバイスとして認識させる。ここでは、ＵＳＢデバイスのデータ構造を定義する構成情報（以下、ＵＳＢディスクリプタと呼ぶ）を疑似的に作成したものを仮想デバイス識別情報とする。
【００３０】
仮想デバイス識別情報２０２Ａは、仮想デバイス制御部２０２に予め記憶されたものであるが、仮想デバイス制御部２０２によって生成するようにしてもよい。  
【００３１】
図２は、図１に示す仮想デバイス識別情報２０２Ａの一例を示す図である。
【００３２】
表示デバイス２５０Ａはディスプレイに対応し、入力デバイス２５０Ｂはキーボードおよびマウスに対応している。これらキーボード、マウス、およびディスプレイをＵＳＢデバイスとして認識させるために疑似的なＵＳＢディスクリプタ（つまり、仮想デバイス識別情報２０２Ａ）を割り当てている。
【００３３】
図２に示す疑似的なＵＳＢディスクリプタは、ベンダーＩＤ、プロダクトＩＤ、シリアル番号、クラス、サブクラス、プロトコル、およびインターフェースから構成されている。
【００３４】
ベンダーＩＤは、各企業や製造会社毎に割り当てられる識別情報であり、プロダクトＩＤは、ベンダーＩＤを持つ企業や会社が各製品や機種毎に重複しないよう割り振るコードである。本実施形態では、携帯端末２００に割り当てられているベンダーＩＤおよびプロダクトＩＤが用いられる。
【００３５】
また、クラス、サブクラス、プロトコル、およびインターフェースは、キーボード、マウス、およびディスプレイなどデバイスの種類に応じてＵＳＢ規格で規定されている情報である。そして、ベンダーＩＤおよびプロダクトＩＤと、クラス、サブクラス、プロトコル、およびインターフェースとを関連付けた疑似的なＵＳＢディスクリプタを作成して、仮想デバイス制御部２０２が仮想デバイス識別情報２０２Ａとして保持（記憶）する。
【００３６】
いま、入力デバイス２５０Ｂに対してユーザ操作などによって内部デバイス２５０への接続を開始させるための接続操作が行われると、仮想デバイス制御部２０２は仮想デバイス識別情報２０２Ａを仮想化通信部２０３に送る。一方、終了操作が行われると、仮想化通信部２０３は内部デバイス２５０の仮想化制御を終了する。
【００３７】
データ形式変換処理部２０２Ｂは、仮想化通信部２０３から送られるＵＳＢデータ形式に準拠したパケットデータ（以下、ＵＳＢデータと呼ぶ）と内部デバイス２５０で処理可能なデータ形式のデータとの変換処理を行う。これにより、内部デバイス２５０と接続された入力インターフェースおよびディスプレイインターフェースとデバイス制御装置３００との間のデータの送受信を可能にしている。
【００３８】
＜入力デバイス／表示デバイスの仮想化制御とデータ形式変換について＞
本実施形態において、仮想デバイス制御部２０２は、キーボードおよびマウスなどの入力デバイス２５０Ｂに係る仮想デバイス識別情報２０２Ａとして、ＨＩＤクラスを識別したＵＳＢディスクリプタを仮想化通信部２０３に送る。また、データ形式変換処理部２０２Ｂは、入力デバイス２５０Ｂから入力された入力データをＨＩＤクラスのＵＳＢデータに変換し、入力インターフェースを介して仮想化通信部２０３に送る。
【００３９】
さらに、仮想デバイス制御部２０２は、ディスプレイなどの表示デバイス２５０Ａに係る仮想デバイス識別情報２０２Ａとして、ベンダー固有情報（ベンダークラス）を識別したＵＳＢディスクリプタを仮想化通信部２０３に送る。また、データ形式変換処理部２０２Ｂは、仮想化通信部２０３から送られるＵＳＢデータを表示デバイス２５０Ａのデータ形式に変換して、ディスプレイインターフェースを介して表示デバイス２５０Ａに送る。
【００４０】
例えば、携帯端末２００に備えられたタッチパネルからネットワーク上のデバイス制御装置３００を遠隔操作する際には、タッチパネルからの切り替え操作に応じて上述したような仮想デバイス識別情報２０２Ａがネットワーク上のデバイス制御装置３００へ送られる。それに応じて、内部デバイス２５０であるタッチパネル（つまり、キーボード入力およびディスプレイ出力）がネットワーク上のデバイス制御装置３００からの仮想化制御に切り替わる。これによって、携帯端末２００に備えられたタッチパネルからネットワーク上のデバイス制御装置３００を遠隔操作することができるようになる。
【００４１】
仮想化通信部２０３は、内部デバイス２５０があたかもデバイス制御装置３００にローカル接続されているかのように認識させて制御できるようにするため、デバイス制御装置３００の仮想化制御部３２３からの制御要求に従って（連動して）内部デバイス２５０の制御を行う。
【００４２】
通信制御部２０４は、デバイス制御装置３００との間で行われる入出力データなどの送受信を制御する。
【００４３】
＜内部デバイス２５０の構成＞
前述のように、内部デバイス２５０は、表示デバイス２５０Ａおよび入力デバイス２５０Ｂなどの入出力装置であって、表示デバイス２５０Ａおよび入力デバイス２５０Ｂはそれぞれ入力インターフェースおよびディスプレイインターフェースを介して内部バスに接続される。入力デバイスは、キーボード、マウス、およびテンキーなどからの入力を処理し、デバイス制御装置３００の操作の際に用いられる。
【００４４】
表示デバイス２５０Ａには、例えば、液晶ディスプレイが用いられる。表示デバイス２５０Ａはタッチパネルを備えるようにしてもよく、この場合には、表示デバイス２５０Ａは入力部としての機能を備えることになる。内部バスは、デバイス制御装置３００の各ブロックを相互に接続して各種のデータの送受信を行うとともに、電力を供給する。
【００４５】
＜デバイス制御装置３００の構成＞
デバイス制御装置３００は、例えば、プリンタ又は複合機などの周辺機器であって、ハードウェア構成として、ＣＰＵ、メモリ、通信部、および記憶部（ともに図示せず）などを備え、これらハードウェアは内部バスで相互に接続されている。
【００４６】
ＣＰＵはデバイス制御装置３００全体の制御を司る。入力デバイスは、例えば、キーボード、テンキーおよびマウスなどの入力機器若しくはこれらの機能をソフトウェアで実現したソフトウェアキーボードなどである。表示デバイスとして、例えば、液晶ディスプレイが用いられる。メモリはＲＡＭおよびＲＯＭなどである。
【００４７】
通信部はネットワーク６００に接続するためのインターフェースであって、情報処理装置１００および携帯端末２００とデータ送受信を行う。
【００４８】
記憶部には、ソフトウェアであるＯＳ（図示せず）とともに、情報処理装置１００との間で仮想化制御するための仮想化クライアント機能部３１０と、携帯端末２００との間で仮想化制御するための仮想化サーバ機能部３２０と、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリに読み出されて、ＣＰＵの制御に従い動作する。
【００４９】
仮想化クライアント機能部３１０は、情報処理装置１００によって外部デバイス４００の仮想化制御を実行させるためのソフトウェアであるデバイス制御部３１１、仮想化通信部３１２、通信制御部３１３を備えた構成である。
【００５０】
デバイス制御部３１１は、デバイス制御装置３００に接続ケーブル５００で接続された外部デバイス４００を制御する。
【００５１】
仮想化通信部３１２は、通信制御部３１３を介して情報処理装置１００の仮想化制御部１０３と連動してデバイス制御部３１１を制御する。
【００５２】
通信制御部３１３は、ネットワーク６００と接続して情報処理装置１００との間の通信を制御する。
【００５３】
このような構成によって、情報処理装置１００は、外部デバイス４００がローカル接続されたときと同様に制御することができる。
【００５４】
仮想化サーバ機能部３２０は、携帯端末２００の内部デバイス２５０を仮想化制御するためのソフトウェアであるアプリケーション３２１、デバイスドライバ３２２、仮想化制御部３２３、通信制御部３１３を備えた構成である。
【００５５】
アプリケーション３２１は、デバイスドライバ３２２に対してデータ入出力要求を指示することによって、携帯端末２００の内部デバイス２５０を制御するためのソフトウェアプログラムである。
【００５６】
デバイスドライバ３２２は、ＯＳ又はアプリケーション３２１からのデータ入出力要求を、携帯端末２００の内部デバイス２５０に応じたデータ形式のデータ（以下、制御コマンドと呼ぶ）に変換して、当該制御コマンドを仮想化制御部３２３に送る。さらに、デバイスドライバ３２２は制御コマンドに対する応答をアプリケーション３２１に通知する。
【００５７】
仮想化制御部３２３は、デバイスドライバ３２２から送られた制御コマンド（つまり、データ入出力要求）をＵＳＢデータ形式に準拠したパケットデータ（以下、ＵＳＢデータと呼ぶ）に変換する。また、仮想化制御部３２３は通信制御部３１３から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ３２２に送る。
【００５８】
さらに、仮想化制御部３２３は、携帯端末２００の内部デバイス２５０に対するデータ送受信要求に対して、携帯端末２００の内部デバイス２５０がデバイス制御装置３００に直接的に接続（ローカル接続）されている際と同様の振る舞いをシミュレートする機能（以下、仮想化制御と呼ぶ）を備えている。この仮想化制御によって、デバイス制御装置３００は携帯端末２００の内部デバイス２５０をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
【００５９】
通信制御部３１３は、ネットワーク６００と接続して携帯端末２００との間の通信を制御する。仮想化制御部３２３から送られるＵＳＢデータとＬＡＮを介して携帯端末２００と通信する際のネットワークパケットとの変換処理を行って、携帯端末２００との間でデータ送受信の制御を行う。また、通信制御部３１３は仮想化制御部３２３を介してアプリケーション３２１又はデバイスドライバ３２２から送られるデータ送受信要求に応じて、携帯端末２００との間のセッションの接続および切断の制御を行う。
【００６０】
なお、図１に示してある通信制御部３１３は１つであるが、情報処理装置１００との間の制御を行う通信制御部と携帯端末２００との間の制御を行う通信制御部をそれぞれ別個に設ける構成であってもよい。
【００６１】
＜外部デバイス４００の構成＞
外部デバイス４００は、例えば、キーボード、マウス、およびテンキーなどの入力デバイス、ＣＲＴ又は液晶ディスプレイなどの表示デバイス、ＨＤＤやＵＳＢメモリなどの記憶装置などである。そして、外部デバイス４００はデバイス制御装置３００にＵＳＢインターフェースなどの通信インターフェースによって接続される。
【００６２】
図３は、図１に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンス図である。
【００６３】
＜１．情報処理装置１００が外部デバイス４００の仮想化制御する際のシーケンス＞
まず、図１に示すデバイス制御システムにおいて、情報処理装置１００がデバイス制御装置３００に接続された外部デバイス４００を仮想化制御する際の動作を説明する。この場合、情報処理装置１００は仮想化サーバ装置、デバイス制御装置３００は仮想化クライアント装置として制御が行われる。
【００６４】
図示の例では、デバイス制御装置３００に外部デバイス４００をＵＳＢインターフェースなどの通信インターフェースで接続することによって仮想化制御が開始される。
【００６５】
まず、外部デバイス４００をデバイス制御装置３００に接続する（ステップＳ１０１）。外部デバイス４００の個体識別情報がデバイス制御装置３００のデバイス制御部３１１に送信されることにより外部デバイス４００の接続通知がなされる（ステップＳ１０２）。
【００６６】
デバイス制御部３１１は接続通知を受け取ると、この個体識別情報を含む接続通知を仮想化通信部３１２に送る（ステップＳ１０３）。仮想化通信部３１２は、通信制御部３１３を介し、情報処理装置１００に対して当該個体識別情報を外部デバイス４００の接続通知として送信する（ステップＳ１０４）。
【００６７】
情報処理装置１００は、通信制御部１０４を介して受信したデバイス制御装置３００かの接続通知（外部デバイス４００の個体識別情報）を、仮想化制御部１０３に送る。仮想化制御部１０３は、この個体識別情報をアプリケーション１０１に送る（ステップＳ１０５）。
【００６８】
アプリケーション１０１は、接続通知を受け取ると、仮想化制御部１０３に外部デバイス４００の仮想化制御の開始を指示し、仮想化制御部１０３は外部デバイス４００の仮想化制御を開始する。
【００６９】
情報処理装置１００による外部デバイス４００の仮想化制御が開始されると、情報処理装置１００では、アプリケーション１０１がデバイスドライバ１０２とデータ送受信し（ステップＳ１０６）、デバイスドライバ１０２が仮想化制御部１０３とデータ送受信し（ステップＳ１０７）、仮想化制御部１０３が通信制御部１０４を介してデバイス制御装置３００とデータ送受信を行う（ステップＳ１０８）。
【００７０】
デバイス制御装置３００では、通信制御部３１３を介して仮想化通信部３１２と情報処理装置１００がデータ送受信し、仮想化通信部３１２とデバイス制御部３１１がデータ送受信し（ステップＳ１０９）、デバイス制御部３１１が通信部のＵＳＢインターフェースを介して外部デバイス４００とデータ送受信を行う（ステップＳ１１０）。
【００７１】
上述したステップＳ１０６〜ステップＳ１１０のデータ送受信処理によって、デバイス制御装置３００を介して、ネットワーク６００上の情報処理装置１００が外部デバイス４００をローカル接続した場合と同一の状態であると認識して制御を実行する。
【００７２】
情報処理装置１００による外部デバイス４００の仮想化制御を終了させる場合、所定のユーザ操作などによって、外部デバイス４００から終了操作（例えば、終了ボタンの押下）を実行する（ステップＳ１１１）。外部デバイス４００の仮想化制御の終了を通知（以下、制御終了通知と呼ぶ）がデバイス制御装置３００のデバイス制御部３１１に送信される（ステップＳ１１２）。なお、終了操作は、情報処理装置１００、デバイス制御装置３００、外部デバイス４００の何れの装置からでも実行することが可能である。
【００７３】
デバイス制御装置３００のデバイス制御部３１１は、仮想化通信部３１２に外部デバイス４００の制御終了通知を送信する（ステップＳ１１３）。仮想化通信部３１２は、この制御終了通知を通信制御部３１３を介し、情報処理装置１００に対して送信する（ステップＳ１１４）。
【００７４】
情報処理装置１００は、通信制御部１０４を介して受信したデバイス制御装置３００からの制御終了通知を、仮想化制御部１０３に送る。仮想化制御部１０３は、制御終了通知を受け取ると、アプリケーション１０１に外部デバイス４００の制御終了通知を送る（ステップＳ１１５）。
【００７５】
アプリケーション１０１は、制御終了通知を受け取ると、仮想化制御部１０３に外部デバイス４００の仮想化制御の終了を指示し、仮想化制御部１０３は、外部デバイス４００の仮想化制御を終了する。
【００７６】
＜２．デバイス制御装置が携帯端末の内部デバイスを仮想化制御する際のシーケンス＞
次に、図１に示すデバイス制御システムにおいて、デバイス制御装置３００に接続された携帯端末２００の内部デバイス２５０を仮想化制御する際の動作を説明する。この場合、携帯端末２００は仮想化クライアント装置、デバイス制御装置３００は仮想化サーバ装置として制御が行われる。
【００７７】
まず、ユーザは所定の操作によって表示デバイス２５０Ａに操作画面を表示させ、入力デバイス２５０Ｂによる接続操作（例えば、接続ボタンの押下）を実行すると（ステップＳ２０１）、仮想デバイス制御部２０２に対して、内部デバイス２５０の接続要求が送られる（ステップＳ２０２）。
【００７８】
仮想デバイス制御部２０２は、この接続要求を検出すると、仮想化通信部２０３に対して表示デバイス２５０Ａおよび入力デバイス２５０Ｂの仮想デバイス識別情報２０２Ａを送信することにより内部デバイス２５０の接続通知を送る（ステップＳ２０３）。
【００７９】
仮想化通信部２０３は、この接続通知を受け取ると、通信制御部３１３を介してデバイス制御装置３００に接続通知を送信する（ステップＳ２０４）。
【００８０】
デバイス制御装置３００は、通信制御部３１３を介して受信した携帯端末２００からの接続通知を仮想化制御部３２３へ送る。仮想化制御部３２３は、この接続通知を受け取ると、アプリケーション３２１に対して携帯端末２００の内部デバイス２５０の接続通知を送る（ステップＳ２０５）。
【００８１】
アプリケーション３２１は、接続通知を受け取ると、仮想化制御部３２３に内部デバイス２５０の仮想化制御の開始を指示し、仮想化制御部３２３は、携帯端末２００の内部デバイス２５０の仮想化制御を開始する。
【００８２】
デバイス制御装置３００による携帯端末２００の内部デバイス２５０の仮想化制御が開始されると、デバイス制御装置３００では、アプリケーション３２１とデバイスドライバ３２２がデータ送受信し（ステップＳ２０６）、デバイスドライバ３２２が仮想化制御部３２３とデータ送受信し（ステップＳ２０７）、仮想化制御部３２３が通信制御部３１３を介して携帯端末２００とデータ送受信を行う（ステップＳ２０８）。
【００８３】
携帯端末２００では、通信制御部２０４を介して仮想化通信部２０３がデバイス制御装置３００とデータ送受信し、仮想化通信部２０３と仮想デバイス制御部２０２がデータ通信し（ステップＳ２０９）、仮想デバイス制御部２０２が内部バスに接続されたディスプレイインターフェース、入力インターフェースを介して表示デバイス２５０Ａと入力デバイス２５０Ｂとデータ送受信を行う（ステップＳ２１０）。
【００８４】
上述したステップＳ２０６〜ステップＳ２１０により、アプリケーション３２１は、携帯端末２００の内部デバイス２５０をローカル接続した場合と同一の状態であると認識して制御を実行する。
【００８５】
なお、上述したステップＳ２０９、ステップＳ２１０において、仮想デバイス制御部２０２のデータ形式変換処理部２０２Ｂでは、仮想化通信部２０３から送られるＵＳＢデータを表示デバイス２５０Ａのデータ形式（第１のデータ形式）に変換して、ディスプレイインターフェースを介してデータ送受信する。なお、変換が不要なデータ形式の場合は、変換処理を実行せずにデータ送受信を行う。
【００８６】
また、携帯端末２００の仮想デバイス制御部２０２のデータ形式変換処理部２０２Ｂは、入力デバイス２５０Ｂによる操作で入力されたデータを入力インターフェースを介して受信し、この入力データをＵＳＢデータ（第２のデータ形式）に変換して仮想化通信部２０３に送信する。
【００８７】
このようにして、携帯端末２００の表示デバイス２５０Ａにデバイス制御装置３００から送られてくる画面データ（例えば、デバイス制御装置３００に接続された液晶ディスプレイに表示される画面）が表示される。また、入力デバイス２５０Ｂを操作することによって、デバイス制御装置３００に対してキーボードやテンキーと同様の入力操作を行うことができる。
【００８８】
デバイス制御装置３００による携帯端末２００の内部デバイス２５０の仮想化制御を終了させる場合、携帯端末２００の入力デバイス２５０Ｂで所定の終了操作（例えば、終了ボタンを押下）を実行する（ステップＳ２１１）と、仮想デバイス制御部２０２に対して、内部デバイス２５０の制御終了要求が送られる（ステップＳ２１２）。
【００８９】
仮想デバイス制御部２０２は、制御終了要求を受け取ると、仮想化通信部２０３に制御終了通知を送る（ステップＳ２１３）。
【００９０】
仮想化通信部２０３は、制御終了通知を受け取ると、通信制御部２０４を介して、デバイス制御装置３００に制御終了通知を送信する。
【００９１】
デバイス制御装置３００は、通信制御部３１３を介して携帯端末２００からの制御終了通知を受け取ると、この制御終了通知を仮想化制御部３２３へ送る（ステップＳ２１４）。仮想化制御部３２３は、制御終了通知を受け取ると、アプリケーション３２１に対して内部デバイス２５０の制御終了通知を送る（ステップＳ２１５）。
【００９２】
アプリケーション３２１は、制御終了通知を受け取ると、仮想化制御部３２３に内部デバイス２５０の仮想化制御の終了を指示し、仮想化制御部３２３は、携帯端末２００の内部デバイス２５０の仮想化制御を終了する。
【００９３】
このように、本発明の第１の実施形態では、デバイス制御装置に仮想化サーバ機能と仮想化クライアント機能を共存させることによって、情報処理装置から要求されたデバイスを仮想化制御し、また、自身が仮想化制御したいデバイスも制御することができる。
【００９４】
［第２の実施形態］
図４は、本発明の第２の実施形態によるデバイス制御システムの一例を示すブロック図である。
【００９５】
第２の実施形態は、仮想化サーバ機能部と仮想化クライアント機能部を併せ持つ装置において、これらを内部で連携させて仮想化制御する点に特徴がある。本実施形態では、デバイス制御装置３００の仮想化サーバ機能部３２０と仮想化クライアント機能部３１０を連携させることにより、デバイス制御装置３００Ａを介して、情報処理装置１００Ａのデバイスドライバ１０２を使って携帯端末２００Ａの内部デバイス２５０を仮想化制御する。
【００９６】
＜システム構成＞
図４のデバイス制御システムは、情報処理装置１００Ａ、携帯端末２００Ａ、デバイス制御装置３００Ａから構成されており、図１で示したデバイス制御システムと以下の構成が異なっている。
【００９７】
情報処理装置１００Ａが携帯端末２００Ａの表示デバイス２５０Ａを制御する表示ドライバ１０２Ａを具備しているが、デバイス制御装置３００Ａが表示ドライバを具備していない構成である。その他の接続構成や構成要素は、図１と同じであるため、図１に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
【００９８】
デバイス制御装置３００Ａは、情報処理装置１００Ａによって携帯端末２００Ａの内部デバイス２５０を仮想化制御させるために、第１の実施形態で説明した機能に加えて、仮想化クライアント機能部３１０と仮想化サーバ機能部３２０を連動させる機能を備えている。具体的には、以下のような機能を備えている。
【００９９】
仮想化サーバ機能部３２０の仮想化制御部３２３は、「制御モード」を設定する仮想化ブリッジ設定機能を備え、予め設定する「制御モード」に従って仮想化制御を実行する。
【０１００】
「制御モード」には、該当する内部デバイスのデバイスドライバを持っている場合に設定する「直接制御モード」と、他の機器のデバイスドライバを使って仮想化制御する場合に設定する「間接制御モード」がある。
【０１０１】
また、「間接制御モード」の場合に必要となる内部デバイスのデバイス情報（ＵＳＢデバイスの場合、ＵＳＢクラスなどの情報）と、当該内部デバイスの仮想化制御を実行させる装置の宛先情報（例えば、ＩＰアドレスなど）を関連付けた設定情報をデバイス制御装置３００Ａ内のメモリに予め記憶させておく。
【０１０２】
そして、仮想化制御部３２３は、仮想化制御の対象となる内部デバイスを持つ装置からの接続通知、ここでは、携帯端末２００Ａの内部デバイス２５０からの接続通知を受け取ると、内部デバイス２５０からの接続通知に基づいて「制御モード」を判断して該当する制御モードによる仮想化制御を実行する。
【０１０３】
「直接制御モード」に設定されている場合、仮想化制御部３２３は、内部デバイス２５０に適したデバイスドライバを自装置内で備えていると判断し、第1の実施形態で説明したデバイス制御装置３００Ａと携帯端末２００Ａの内部デバイス２５０の仮想化制御と同じ制御を実行する。即ち、図３で説明したステップＳ２０５〜ステップＳ２１５と同じシーケンスを実行するので、その説明は省略する。
【０１０４】
「間接制御モード」に設定されている場合、仮想化制御部３２３は、内部デバイス２５０に適したデバイスドライバを自装置内で持っていないと判断し、仮想化クライアント機能部３１０の仮想化通信部３１２と接続し、内部デバイス２５０からの接続通知とともに、当該内部デバイス２５０に応じた設定情報を読み出して仮想化通信部３１２に送信する。また、仮想化通信部３１２から受信した情報を通信制御部３１３を介して内部デバイス２５０を持つ装置（携帯端末２００Ａ）に送信する。
【０１０５】
仮想化クライアント機能部３１０の仮想化通信部３１２は、仮想化サーバ機能部３２０の仮想化制御部３２３が「間接制御モード」に設定されている場合、仮想化制御部３２３と接続し、仮想化制御部３２３から送られてくる内部デバイス２５０からの接続通知と設定情報を受け取ると、この設定情報をデバイス制御装置３００Ａ内のメモリに記憶しておく。
【０１０６】
そして、設定情報に含まれる宛先情報の装置（ここでは、情報処理装置１００Ａ）に対し、通信制御部３１３を介して、内部デバイス２５０からの接続通知を送信する。また、情報処理装置１００Ａから通信制御部３１３を介して受信したデータに含まれるデバイス識別情報と、記憶しておいた設定情報に基づいて仮想化ブリッジ設定が「間接制御モード」であると判断すると、仮想化制御部３２３に対して受信したデータを送信する。
【０１０７】
＜図４のデバイス制御システムにおける仮想化制御のシーケンス＞
図５は、図４に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンス図である。
【０１０８】
図４に示すデバイス制御システムにおいて、携帯端末２００Ａの内部デバイス２５０を、デバイス制御装置３００Ａを介して、情報処理装置１００Ａによって仮想化制御する際の動作を説明する。この場合、携帯端末２００Ａが仮想化クライアント装置、デバイス制御装置３００Ａが仮想化サーバ装置及び仮想化クライアント装置、情報処理装置１００Ａが仮想化サーバ装置として制御が行われる。
【０１０９】
携帯端末２００Ａから内部デバイス２５０の仮想化制御を開始させる。まず、ユーザは、携帯端末２００Ａで所定の操作を行い、表示デバイス２５０Ａに操作画面を表示させ、入力デバイス２５０Ｂで接続操作（例えば、接続ボタンの押下など）を実行すると、仮想デバイス制御部２０２に対して、内部デバイス２５０の接続要求が送られる（ステップＳ３０１）。
【０１１０】
仮想デバイス制御部２０２は、この接続要求を検出すると、仮想化通信部２０３に表示デバイス２５０Ａおよび入力デバイス２５０Ｂそれぞれの仮想デバイス識別情報２０２Ａを送信して内部デバイス２５０の接続通知を送る（ステップＳ３０２）。仮想化通信部２０３は、この接続通知を受け取ると、通信制御部３１３を介してデバイス制御装置３００Ａに接続通知を送信する（ステップＳ３０３）。
【０１１１】
デバイス制御装置３００Ａは、携帯端末２００Ａから接続通知を受け取ると、通信制御部３１３を介して仮想化制御部３２３に接続通知を送る。仮想化制御部３２３では、接続通知から携帯端末２００Ａの内部デバイス２５０に対する仮想化ブリッジ設定を判断し、仮想化制御を開始する。以下、仮想化ブリッジ設定が「間接制御モード」に設定されている場合のシーケンスについて説明する。
【０１１２】
仮想化ブリッジ設定が「間接制御モード」の場合、仮想化制御部３２３は、仮想化通信部３１２と接続し、表示デバイス２５０Ａからの接続通知とともに、当該内部デバイス２５０に応じた設定情報を仮想化通信部３１２に送信する（ステップＳ３０４）。
【０１１３】
仮想化通信部３１２は、仮想化制御部３２３から送られてくる設定情報を記憶し、通信制御部３１３を介して、設定情報に含まれる宛先情報の情報処理装置１００Ａに対して、表示デバイス２５０Ａからの接続通知を送信する（ステップＳ３０５）。
【０１１４】
情報処理装置１００Ａは、通信制御部１０４を介して、デバイス制御装置３００Ａから受信した接続通知を仮想化制御部１０３に送る。仮想化制御部１０３は、この接続通知をアプリケーション１０１に送る（ステップＳ３０６）。アプリケーション１０１は、接続通知を受け取ると、仮想化制御部１０３に表示デバイス２５０Ａの仮想化制御の開始を指示し、仮想化制御部１０３は、携帯端末２００Ａの表示デバイス２５０Ａの仮想化制御を開始する。
【０１１５】
情報処理装置１００Ａでは、アプリケーション１０１から表示ドライバ１０２Ａに対して、データ入出力（制御）の要求を送る（ステップＳ３０７）。表示ドライバ１０２Ａは、表示デバイス２５０Ａに係るパラメータを要求する第１の転送要求（以下、転送要求１）を生成して、仮想化制御部１０３に渡す（ステップＳ３０８）。
【０１１６】
仮想化制御部１０３は、転送要求１からデバイス制御装置３００Ａの仮想化制御部３２３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送要求１を生成し、通信制御部３１３を介して当該デバイス転送要求１をデバイス制御装置３００Ａに送信する（ステップＳ３０９）。
【０１１７】
デバイス制御装置３００Ａは、情報処理装置１００Ａから受信したデバイス転送要求１を仮想化通信部３１２に送る。仮想化通信部３１２は、このデバイス転送要求１から仮想化制御部３２３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだ転送要求２を生成する。そして、ステップＳ３０５で記憶しておいた設定情報から仮想化ブリッジ設定が「間接制御モード」であると判断し、生成した転送要求２を仮想化制御部３２３に渡す（ステップＳ３１０）。
【０１１８】
仮想化制御部３２３は、転送要求２から携帯端末２００Ａの仮想化通信部２０３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送要求２を生成し、通信制御部３１３を介して当該デバイス転送要求２を携帯端末２００Ａに送信する（ステップＳ３１１）。
【０１１９】
携帯端末２００Ａは、通信制御部２０４を介してデバイス制御装置３００Ａからデバイス転送要求２を受け取ると、仮想化通信部２０３によって当該デバイス転送要求２に含まれるデバイス識別情報に応じてデータ転送を行うべき表示デバイス２５０Ａを特定する。
【０１２０】
そして、仮想化通信部２０３は、デバイス転送要求２に含まれる要求パラメータを、仮想デバイス制御部２０２に渡すデータ形式に変換した転送要求３を生成し、仮想デバイス制御部２０２に渡す（ステップＳ３１２）。仮想デバイス制御部２０２は、この転送要求３を表示デバイス２５０Ａに適ったデータ形式に変換した「要求」を表示デバイス２５０Ａに送る（ステップＳ３１３）。
【０１２１】
仮想デバイス制御部２０２のデータ形式変換処理部２０２Ｂでは、仮想化通信部２０３から送られるＵＳＢデータを表示デバイス２５０Ａのデータ形式（第１のデータ形式）に変換して、ディスプレイインターフェースを介してデータ送受信する。なお、変換が不要なデータ形式の場合は、変換処理を実行せずにデータ送受信を行う。
【０１２２】
ステップＳ３１３で情報処理装置１００Ａから携帯端末２００Ａの表示デバイス２５０Ａへの要求が送られる。この要求に対する応答は、以下の処理ステップＳ３１４〜ステップＳ３２０のシーケンスに従って行われる。
【０１２３】
表示デバイス２５０Ａは、ステップＳ３１３で受け取った要求に対する制御結果である応答データを仮想デバイス制御部２０２に送る（ステップＳ３１４）。仮想デバイス制御部２０２は、この応答データを仮想化通信部２０３とのデータ通信に適ったデータ形式（ＵＳＢデータ）に変換した転送応答３を仮想化通信部２０３に渡す（ステップＳ３１５）。
【０１２４】
仮想化通信部２０３は、転送応答３からデバイス制御装置３００Ａの仮想化制御部３２３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送応答３を生成し、通信制御部２０４を介して当該デバイス転送応答３をデバイス制御装置３００Ａに送信する（ステップＳ３１６）。
【０１２５】
デバイス制御装置３００Ａは、携帯端末２００Ａから受信したデバイス転送応答３を仮想化制御部３２３に送る。仮想化制御部３２３は、「間接制御モード」に設定されているので、このデバイス転送応答３から仮想化通信部３１２に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだ転送応答２を生成し、仮想化通信部３１２に渡す（ステップＳ３１７）。
【０１２６】
仮想化通信部３１２は、転送応答２から情報処理装置１００Ａの仮想化制御部１０３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送応答２を生成し、通信制御部３１３を介して当該デバイス転送応答２を情報処理装置１００Ａに送信する（ステップＳ３１８）。
【０１２７】
情報処理装置１００Ａは、通信制御部１０４を介してデバイス制御装置３００Ａからデバイス転送応答２を受け取ると、仮想化制御部１０３に渡す。仮想化制御部１０３は、当該デバイス転送応答２から表示ドライバ１０２Ａに渡すパラメータのみを応答パラメータとして取り出して転送応答１を生成し、表示ドライバ１０２Ａに渡す（ステップＳ３１９）。
【０１２８】
表示ドライバ１０２Ａは、転送応答１から応答パラメータを取り出してアプリケーション１０１に渡す（ステップＳ３２０）。アプリケーション１０１は、要求に対する応答を確認する。
【０１２９】
このようにして、デバイス制御装置３００Ａを介して情報処理装置１００Ａが携帯端末２００Ａの表示デバイス２５０Ａの仮想化制御を実行する。
【０１３０】
また、携帯端末２００Ａから終了操作を行い、デバイス制御装置３００Ａを介した仮想化制御を終了させる場合について説明する。
【０１３１】
携帯端末２００Ａで所定の操作を行い、終了操作（例えば、終了ボタンの押下）を実行すると、仮想デバイス制御部２０２に対して、制御終了要求が送られる（ステップＳ３２１）。
【０１３２】
仮想デバイス制御部２０２は、制御終了要求を受け取ると、仮想化通信部２０３に制御終了通知を送る（ステップＳ３２２）。
【０１３３】
仮想化通信部２０３は、制御終了通知を受け取ると、通信制御部２０４を介して、デバイス制御装置３００Ａに制御終了通知を送信する。
【０１３４】
デバイス制御装置３００Ａは、通信制御部３１３を介して携帯端末２００Ａからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部３２３へ送る（ステップＳ３２３）。仮想化制御部３２３は、制御終了通知を受け取ると、「間接制御モード」に設定されているので、仮想化通信部３１２へ制御終了通知を送る（ステップＳ３２４）。
【０１３５】
仮想化通信部３１２は、制御終了通知を受け取ると、通信制御部３１３を介して、情報処理装置１００Ａに制御終了通知を送信する（ステップＳ３２５）。
【０１３６】
情報処理装置１００Ａは、通信制御部１０４を介してデバイス制御装置３００Ａからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部１０３へ送る。仮想化制御部１０３は、制御終了通知を受け取ると、アプリケーション１０１に対して表示デバイス２５０Ａの制御終了通知を送る（ステップＳ３２６）。
【０１３７】
アプリケーション１０１は、制御終了通知を受け取ると、仮想化制御部１０３に表示デバイス２５０Ａの仮想化制御の終了を指示し、仮想化制御部１０３は、携帯端末２００Ａの表示デバイス２５０Ａの仮想化制御を終了する。
【０１３８】
なお、上述の例では、デバイス制御装置３００が表示ドライバを具備していない構成で説明したが、これに限定されない。デバイス制御装置３００がデバイスドライバ３２２（表示ドライバおよび入力ドライバ）を複数具備し、仮想化制御しようとする内部デバイスに適したデバイスドライバがデバイス制御装置３００内にある場合には「制御モード」を「直接制御モード」に設定し、適したデバイスドライバがデバイス制御装置３００内にない場合には「制御モード」を「間接制御モード」に設定するように構成することもできる。
【０１３９】
上述したシーケンスによる制御の別の適用例として、情報配信可能なデバイス、例えば、内部デバイス２５０がカメラの場合に、当該カメラを「直接制御モード」かつ「間接制御モード」に設定することにより、カメラで撮った映像をアプリケーション３２１とアプリケーション１０１に配信することが可能となる。
【０１４０】
このように、第２の実施形態では、サーバ機能とクライアント機能を連携させ、情報処理装置１００Ａのデバイスドライバを使って携帯端末２００Ａの内部デバイス２５０を制御させるために、デバイス制御装置３００Ａ内の仮想化制御部３２３と仮想化通信部３１２を接続し、情報処理装置１００Ａと携帯端末２００Ａのデータ送受信を中継することで、サーバ機能で仮想化したデバイスに対応するドライバがデバイス制御装置内に存在しない場合でも、他の装置のドライバを利用して制御させることが可能となる。
【０１４１】
［第３の実施形態］
図６は、本発明の第３の実施形態によるデバイス制御システムの一例を示すブロック図である。
【０１４２】
第３の実施形態は、ネットワークを介して接続された装置が互いに接続相手の装置の内部デバイスを仮想化制御する点に特徴がある。本実施形態では、デバイス制御装置３００Ａと携帯端末２００Ａそれぞれがサーバ機能／クライアント機能を実行することで、互いの装置が具備している内部デバイスの仮想化制御を実行する。
【０１４３】
＜システム構成＞
図６のデバイス制御システムは、携帯端末２００Ｂ、デバイス制御装置３００Ｂから構成されており、ネットワーク６００（有線又は無線）を介して接続されている。なお、図１、図４に示す構成要素と同一の構成要素については同一の参照番号を付して、説明を省略する。
【０１４４】
デバイス制御装置３００Ｂは、仮想化サーバ機能部３２０と、仮想化クライアント機能部３３０を備えている。本実施形態では、プリンタとストレージ機能を備えた複合機として説明する。ハードウェア構成としては、図１のデバイス制御装置３００Ｂと同様、ＣＰＵ、メモリ、通信部、および記憶部（ともに図示せず）などを備え、更に、印刷機能を持つプリンタ３５０Ａ、データを蓄積する機能を持つストレージ３５０Ｂを内部デバイス３５０として備えており、これらハードウェアは内部バスで相互に接続されている。内部デバイス３５０以外は図１と同じ構成であるため、説明は省略する。
【０１４５】
仮想化サーバ機能部３２０は、携帯端末２００Ｂの内部デバイス２５０を仮想化制御するためのソフトウェアを備えており、図１で示したデバイス制御装置３００Ｂの仮想化サーバ機能部３２０と同等のソフトウェア構成であるため、その説明を省略する。
【０１４６】
仮想化クライアント機能部３３０は、携帯端末２００Ｂによって内部デバイス３５０の仮想化制御を実行させるためのソフトウェアである仮想デバイス制御部３３５、仮想化通信部３３４、通信制御部３１３から構成される。
【０１４７】
仮想デバイス制御部３３５は、仮想デバイス識別情報３３５Ａおよびデータ形式変換処理部３３５Ｂを備えている。さらに、内部デバイス３５０を仮想的なＵＳＢデバイスに切り替えるユーザインターフェースなどの切替部を備えている。
【０１４８】
仮想デバイス識別情報３３５Ａは、内部デバイス３５０を自装置にローカル接続されているように認識させるために用いられる。この仮想デバイス識別情報３３５Ａを内部デバイス３５０であるプリンタ３５０Ａおよびストレージ３５０Ｂの各々に割り当てて、携帯端末２００Ｂに外部デバイス４００と同様に、プリンタ３５０Ａおよびストレージ３５０ＢをＵＳＢデバイスとして認識させる。ここでは、ＵＳＢデバイスのデータ構造を定義する構成情報（以下、ＵＳＢディスクリプタと呼ぶ）を疑似的に作成したものを仮想デバイス識別情報とする（図２参照）。
【０１４９】
データ形式変換処理部３３５Ｂは、仮想化通信部３３４から送られるＵＳＢデータ形式に準拠したパケットデータ（ＵＳＢデータ）と内部デバイス３５０で処理可能なデータ形式のデータとの変換処理を行って携帯端末２００Ｂとの間のデータの送受信を可能にしている。
【０１５０】
＜プリンタ／ストレージの仮想化制御とデータ形式変換について＞
本実施形態において、仮想デバイス制御部３３５は、仮想デバイス識別情報として、プリンタ３５０Ａおよびストレージ３５０Ｂを識別したＵＳＢディスクリプタをそれぞれ仮想化通信部３３４に送る。また、データ形式変換処理部３３５Ｂは、内部デバイス３５０から入出力された入出力データをプリンタ３５０Ａおよびストレージ３５０ＢのＵＳＢデータに変換し、入出力インターフェースを介して仮想化通信部３３４に送る。
【０１５１】
携帯端末２００Ｂは、仮想化サーバ機能部２２０と、仮想化クライアント機能部２１０を備えている。ハードウェア構成としては、図１の携帯端末２００と同等の構成を備えているので、説明を省略する。なお、内部デバイス２５０として、図１の表示デバイス２５０Ａおよび入力デバイス２５０Ｂの機能を兼ね備えたタッチパネル２５０Ｃを備える。
【０１５２】
仮想化サーバ機能部２２０は、デバイス制御装置３００Ｂの内部デバイス３５０を仮想化制御するためのソフトウェアであるアプリケーション２２１、デバイスドライバ２２２、仮想化制御部２２３、通信制御部２０４から構成されている。
【０１５３】
アプリケーション２２１は、デバイスドライバ２２２に対してデータ入出力要求を指示することによって、デバイス制御装置３００Ｂの内部デバイス３５０を制御するためのソフトウェアプログラムである。
【０１５４】
デバイスドライバ２２２は、ＯＳ又はアプリケーション２２１からのデータ入出力要求を、デバイス制御装置３００Ｂの内部デバイス３５０に応じたデータ形式のデータ（以下、制御コマンドと呼ぶ）に変換して、当該制御コマンドを仮想化制御部２２３に送る。さらに、デバイスドライバ２２２は制御コマンドに対する応答をアプリケーション２２１に通知する。ここでは、プリンタ３５０Ａに対応したプリンタドライバ２２２Ａ、ストレージ３５０Ｂに対応したストレージドライバ２２２Ｂのことを示す。
【０１５５】
仮想化制御部２２３は、デバイスドライバ２２２から送られた制御コマンド（つまり、データ入出力要求）をＵＳＢデータ形式に準拠したパケットデータ（以下、ＵＳＢデータと呼ぶ）に変換する。また、仮想化制御部２２３は通信制御部３１３から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ２２２に送る。さらに、仮想化制御部２２３は、携帯端末２００Ｂの内部デバイス２５０に対するデータ送受信要求に対して、携帯端末２００Ｂの内部デバイス２５０がデバイス制御装置３００Ｂに直接的に接続（ローカル接続）されている際と同様の振る舞いをシミュレートする機能（以下、仮想化制御と呼ぶ）を備えている。この仮想化制御によって、デバイス制御装置３００Ｂは、携帯端末２００Ｂの内部デバイス２５０をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
【０１５６】
仮想化クライアント機能部２１０は、デバイス制御装置３００Ｂによって内部デバイス２５０の仮想化制御を実行させるためのソフトウェアである仮想デバイス制御部２１２、仮想化通信部２１３、通信制御部２０４を備えた構成である。
【０１５７】
仮想デバイス制御部２１２は、仮想デバイス識別情報２１２Ａおよびデータ形式変換処理部２１２Ｂを備えている。さらに、内部デバイス２５０を仮想的なＵＳＢデバイスに切り替えるユーザインターフェースなどの切替部を備えている。
【０１５８】
仮想デバイス識別情報２１２Ａは、内部デバイス３５０を自装置にローカル接続されているように認識させるために用いられる。この仮想デバイス識別情報２１２Ａを内部デバイス２５０であるタッチパネル２５０Ｃに割り当てて、図１に示す外部デバイス４００と同様、タッチパネル２５０ＣをＵＳＢデバイスとして認識させる。ここでは、ＵＳＢデバイスのデータ構造を定義する構成情報（以下、ＵＳＢディスクリプタと呼ぶ）を疑似的に作成したものを仮想デバイス識別情報とする（図２参照）。
【０１５９】
データ形式変換処理部２１２Ｂは、仮想化通信部２１３から送られるＵＳＢデータ形式に準拠したパケットデータ（ＵＳＢデータ）と内部デバイス２５０で処理可能なデータ形式のデータとの変換処理を行ってデバイス制御装置３００Ｂとの間のデータの送受信を可能にしている。
【０１６０】
＜タッチパネルの仮想化制御とデータ形式変換について＞
本実施形態において、仮想デバイス制御部２１２は、キーボードおよびタッチパネルなどの入力デバイス２５０Ｂに係る仮想デバイス識別情報として、ＨＩＤクラスを識別したＵＳＢディスクリプタを仮想化通信部３３４に送る。また、データ形式変換処理部３３５Ｂは、入力デバイス２５０Ｂから入力された入力データをＨＩＤクラスのＵＳＢデータに変換し、入力インターフェースを介して仮想化通信部３３４に送る。
【０１６１】
さらに、仮想デバイス制御部２１２は、ディスプレイなどの表示デバイス２５０Ａに係る仮想デバイス識別情報２０２Ａとして、ベンダー固有情報（ベンダークラス）を識別したＵＳＢディスクリプタを仮想化通信部２１３に送る。また、データ形式変換処理部２０２Ｂは、仮想化通信部２１３から送られるＵＳＢデータを表示デバイス２５０Ａのデータ形式に変換して、ディスプレイインターフェースを介して表示デバイス２５０Ａに送る。
【０１６２】
例えば、携帯端末２００Ｂに備えられたタッチパネル２５０Ｃからネットワーク上のデバイス制御装置３００Ｂを遠隔操作する際には、タッチパネル２５０Ｃからの切り替え操作に応じて上述したような仮想デバイス識別情報２１２Ａがネットワーク上のデバイス制御装置３００Ｂへ送られ、内部デバイス２５０であるタッチパネル２５０Ｃ（つまり、タッチ入力およびディスプレイ出力）がネットワーク上のデバイス制御装置３００Ｂからの仮想化制御に切り替わる。これによって、携帯端末２００Ｂに備えられたタッチパネル２５０Ｃからネットワーク上のデバイス制御装置３００Ｂを遠隔操作することができるようになる。
【０１６３】
＜図６のデバイス制御システムにおける仮想化制御のシーケンス＞
図７は、図６に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンス図である。
【０１６４】
まず、デバイス制御装置３００Ｂによって、携帯端末２００Ｂのタッチパネル２５０Ｃの仮想化制御を開始させる。まず、ユーザは、携帯端末２００Ｂで所定の操作を行い、タッチパネル２５０Ｃに操作画面を表示させ、接続操作（例えば、接続ボタンの押下など）を実行する（ステップＳ４０１）。仮想デバイス制御部２１２に対して、内部デバイス２５０、即ち、タッチパネル２５０Ｃの接続要求が送られる（ステップＳ４０２）。
【０１６５】
仮想デバイス制御部２１２は、この接続要求を検出すると、仮想化通信部２１３に対してタッチパネル２５０Ｃの仮想デバイス識別情報２１２Ａを送信してタッチパネル２５０Ｃの接続通知を送る（ステップＳ４０３）。仮想化通信部２１３は、この接続通知を受け取ると、通信制御部２０４を介してデバイス制御装置３００Ｂに接続通知を送信する（ステップＳ４０４）。
【０１６６】
デバイス制御装置３００は、通信制御部３１３を介して受信した携帯端末２００Ｂからの接続通知を仮想化制御部３２３へ送る。仮想化制御部３２３は、この接続通知を受け取ると、アプリケーション３２１に対して携帯端末２００Ｂのタッチパネル２５０Ｃの接続通知を送る（ステップＳ４０５）。
【０１６７】
アプリケーション３２１は、接続通知を受け取ると、仮想化制御部３２３にタッチパネル２５０Ｃの仮想化制御の開始を指示し、仮想化制御部３２３は、携帯端末２００Ｂの仮想化通信部２１３を介してタッチパネル２５０Ｃの仮想化制御を開始する。
【０１６８】
デバイス制御装置３００Ｂによる携帯端末２００Ｂのタッチパネル２５０Ｃの仮想化制御が開始されると、携帯端末２００Ｂでは、タッチパネル２５０Ｃで入力操作が行われると、タッチパネル２５０Ｃと内部バスに接続された入出力インターフェースを介して接続された仮想デバイス制御部２１２にデータを送り（ステップＳ４０６）、仮想デバイス制御部２１２と仮想化通信部２１３がデータ送受信し（ステップＳ４０７）、仮想化通信部２１３が通信制御部２０４を介してデバイス制御装置３００Ｂとデータ送受信を行う（ステップＳ４０８）。
【０１６９】
デバイス制御装置３００Ｂでは、通信制御部３１３を介して携帯端末２００Ｂとデータ送受信し、仮想化制御部３２３がデバイスドライバ３２２とデータ送受信し（ステップＳ４０９）、デバイスドライバ３２２はアプリケーション３２１とデータ送受信する（ステップＳ４１０）。
【０１７０】
上述したステップＳ４０５〜ステップＳ４１０により、デバイス制御装置３００Ｂのアプリケーション３２１は、携帯端末２００Ｂのタッチパネル２５０Ｃをローカル接続した場合と同一の状態であると認識して制御を実行する。
【０１７１】
このとき、携帯端末２００Ｂのタッチパネル２５０Ｃには、デバイス制御装置３００Ｂから送られてくる画面データ（例えば、デバイス制御装置３００Ｂに接続された液晶ディスプレイに表示される画面）が表示される。また、タッチパネル２５０Ｃを操作することによって、デバイス制御装置３００Ｂに対してキーボードやテンキーと同様の入力操作を行うことができる。
【０１７２】
また、上述したステップＳ４０５において、デバイス制御装置３００Ｂのアプリケーション３２１は、仮想化制御部３２３に対してタッチパネル２５０Ｃの仮想化制御に接続開始を指示するとともに、自装置の内部デバイス３５０の接続要求を仮想化制御部３２３に送る（ステップＳ４１１）。
【０１７３】
仮想化制御部３２３は、接続要求を受け取ると、仮想デバイス制御部３３５に対して内部デバイス３５０の接続通知を送り（ステップＳ４１２）、仮想デバイス制御部３３５は仮想化通信部３３４に内部デバイス３５０の接続通知を送る（ステップＳ４１３）。仮想化通信部３３４は、接続通知を受け取ると、通信制御部３１３を介して、携帯端末２００Ｂに接続通知を送信する（ステップＳ４１４）。
【０１７４】
携帯端末２００Ｂは、通信制御部２０４を介してデバイス制御装置３００Ｂからの接続通知を受け取ると、この接続通知を仮想化制御部２２３へ送る。仮想化制御部２２３は、接続通知を受け取ると、アプリケーション２２１に対してタッチパネル２５０Ｃの接続通知を送る（ステップＳ４１５）。アプリケーション２２１は、仮想化制御部３２３に内部デバイス３５０の仮想化制御の開始を指示し、仮想化制御部３２３は、デバイス制御装置３００Ｂの内部デバイス３５０の仮想化制御を開始する。
【０１７５】
内部デバイス３５０の仮想化制御が開始されると、携帯端末２００Ｂでは、内部デバイス３５０に対するデータの入出力が可能となる（ステップＳ４１６）。データ入出力が実行されると、アプリケーション２２１とデバイスドライバ２２２がデータ送受信し（ステップＳ４１７）、デバイスドライバ２２２は仮想化制御部２２３とデータ送受信し（ステップＳ４１８）、仮想化制御部２２３が通信制御部２０４を介してデバイス制御装置３００Ｂとデータ送受信を行う（ステップＳ４１９）。
【０１７６】
デバイス制御装置３００Ｂでは、通信制御部３１３を介して仮想化通信部３３４が携帯端末２００Ｂとデータ送受信し、仮想化通信部３３４と仮想デバイス制御部２１２がデータ通信し（ステップＳ４２０）、仮想デバイス制御部３３５が内部バスに接続された入出力インターフェースを介して内部デバイス３５０とデータ送受信を行う（ステップＳ４２１）。
【０１７７】
上述したステップＳ４１５〜ステップＳ４２１により、携帯端末２００Ｂのアプリケーション２２１は、デバイス制御装置３００Ｂの内部デバイス３５０をローカル接続した場合と同一の状態であると認識して制御を実行する。
【０１７８】
このようにして、携帯端末２００Ｂとデバイス制御装置３００Ｂがそれぞれ相手装置の内部デバイスの仮想化制御を行う。
【０１７９】
携帯端末２００Ｂ、デバイス制御装置３００Ｂによる相手装置の内部デバイスの仮想化制御を終了させる場合、携帯端末２００Ｂで所定の操作を行う。タッチパネル２５０Ｃに操作画面を表示させ、終了操作（例えば、終了ボタンの押下）を実行する（ステップＳ４２２）と、仮想デバイス制御部２１２に対して、タッチパネル２５０Ｃの制御終了要求が送られる（ステップＳ４２３）。
【０１８０】
仮想デバイス制御部２１２は、制御終了要求を受け取ると、仮想化通信部２１３に制御終了通知を送る（ステップＳ４２４）。
【０１８１】
仮想化通信部２１３は、制御終了通知を受け取ると、通信制御部２０４を介して、デバイス制御装置３００Ｂに制御終了通知を送信する。
【０１８２】
デバイス制御装置３００Ｂは、通信制御部３１３を介して携帯端末２００Ｂからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部３２３へ送る（ステップＳ４２５）。仮想化制御部３２３は、制御終了通知を受け取ると、アプリケーション３２１に対してタッチパネル２５０Ｃの制御終了通知を送る（ステップＳ４２６）。
【０１８３】
アプリケーション３２１が仮想化制御部３２３に携帯端末２００Ｂのタッチパネル２５０Ｃの仮想化制御の終了を指示し、仮想化制御部３２３は、タッチパネル２５０Ｃの仮想化制御を終了する。
【０１８４】
また、アプリケーション３２１は、仮想化制御部３２３にタッチパネル２５０Ｃの仮想化制御の終了を指示するとともに、デバイス制御装置３００Ｃの内部デバイス３５０の制御終了要求を送る（ステップＳ４２７）。
【０１８５】
仮想化制御部３２３は、制御終了要求を受け取ると、仮想化通信部３３４に内部デバイス３５０の制御終了通知を送る（ステップＳ４２８）。仮想化通信部３３４は、制御終了通知を受け取ると、通信制御部３１３を介して、携帯端末２００Ｂに制御終了通知を送信する（ステップＳ４２９）。
【０１８６】
携帯端末２００Ｂは、通信制御部２０４を介してデバイス制御装置３００Ｂからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部２２３へ送る。仮想化制御部２２３は、制御終了通知を受け取ると、アプリケーション２２１に対して内部デバイス３５０の制御終了通知を送る（ステップＳ４３０）。
【０１８７】
アプリケーション２２１は、制御終了通知を受け取ると、仮想化制御部２２３に内部デバイス３５０の仮想化制御の終了を指示し、仮想化制御部３２３は、デバイス制御装置３００Ｂの内部デバイス３５０の仮想化制御を終了する。
【０１８８】
このように、第３の実施形態では、一台のデバイス制御装置内にサーバ機能とクライアント機能を共存させ、デバイス制御装置同士を接続して、互いに接続した相手方装置の機能（内部デバイス）を仮想化制御させる。これにより、相手方装置が持っている機能（内部デバイス）を自装置に直接接続された装置の機能と同様に制御することが可能となり、互いの装置のデバイスドライバを組み込まなくてもアプリケーションがデバイスを利用できるメリットがある。
【０１８９】
［第４の実施形態］
図８は、本発明の第４の実施形態によるデバイス制御システムの一例を示すブロック図である。
【０１９０】
第４の実施形態は、仮想化サーバ機能部と仮想化クライアント機能部を併せ持つ装置において、デバイスドライバ切替部３２４と仮想デバイス制御部３１４と使用することにより、仮想化制御の接続先を切り替えできる点に特徴がある。本実施形態では、デバイス制御装置３００Ｃ内にデバイスドライバ切替部３２４と仮想デバイス制御部３１４を備え、内部デバイスまたは外部デバイスの仮想化制御を実行させる宛先の情報を参照することで、仮想化制御の接続先を切り替える。
【０１９１】
＜システム構成＞
図８のデバイス制御システムは、情報処理装置１００Ｃ、携帯端末２００Ｃ、デバイス制御装置３００Ｃから構成されている。図４に示す構成要素に対し、デバイス制御装置３００Ｃが仮想デバイス制御部３１４とデバイスドライバ切替部３２４とデバイスドライバ３２２内に表示ドライバ３２２Ａを具備している点が異なる。加えて、携帯端末２００Ｃには、外部デバイス４００Ｃが接続ケーブル５００などによってローカル接続されている点が異なる。表示ドライバ３２２Ａは、情報処理装置１００Ｃ内の表示ドライバ１０２Ａと同等の役割を行う。また、その他の接続構成や構成要素は、図４と同じであるため、図４に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
【０１９２】
デバイスドライバ切替部３２４と仮想デバイス制御部３１４の機能部について説明する。デバイスドライバ切替部３２４は、デバイス制御装置３００Ｃ内に内部デバイス２５０を接続するためのデバイスドライバが無い場合に、携帯端末２００Ｃから通知された内部デバイス２５０のデバイス情報（ＵＳＢデバイスの場合、ＵＳＢクラスなどの情報）を基に、デバイス制御装置３００Ｃ内に仮想デバイス制御部３１４を生成する。また、デバイス制御装置３００Ｃ内に内部デバイス２５０を接続するためのデバイスドライバが有る場合には、デバイス制御装置３００Ｃ内に仮想デバイス制御部３１４を生成することなく、デバイス制御装置３００Ｃ内で仮想化制御を実施する。
【０１９３】
仮想デバイス制御部３１４は、携帯端末２００Ｃの内部デバイス２５０のデバイス情報と当該内部デバイス２５０の仮想化制御を実行させる情報処理装置１００Ｃの宛先情報（例えば、ＩＰアドレスなど）を仮想化通信部３１２に通知する。仮想化通信部３１２に処理が渡った後の動作は、第２の実施形態で説明した処理と同等なので、説明を省略する。
【０１９４】
仮想デバイス制御部３１４は、仮想化制御される内部デバイス毎に生成され、各内部デバイスの仮想化制御が終了する度に削除される。
【０１９５】
内部デバイス２５０の仮想化制御の接続先に関する宛先情報は、デバイス制御装置３００Ｃ内のメモリ内（不図示）に予め記憶させておく。このメモリ内の宛先情報は、例えばユーザがデバイス制御装置３００Ｃのユーザインターフェースなどを使用することで変更可能である。このメモリ内の宛先情報を参照することで、仮想化制御の接続先の切り替えが可能になる。
【０１９６】
なお、デバイス制御装置３００Ｃ内に携帯端末２００Ｃの内部デバイス２５０を接続するためのデバイスドライバが有る場合でも、内部デバイス２５０の仮想化制御の接続先に関する宛先情報を情報処理装置１００Ｃに設定することで、デバイス制御装置３００Ｃ内に内部デバイス２５０を接続するためのデバイスドライバが無い場合と同様に、デバイス制御装置３００Ｃ内に仮想デバイス制御部３１４を生成し、内部デバイス２５０を仮想化制御する接続先をデバイス制御装置３００Ｃではなく、情報処理装置１００Ｃにすることができる。
【０１９７】
外部デバイス４００Ｃについても内部デバイス２５０の仮想化制御と同様に、情報処理装置１００Ｃで仮想化制御を実施できる。
【０１９８】
＜図８のデバイス制御システムにおける仮想化制御のシーケンス＞
図８に示すデバイス制御システムにおける仮想化制御の動作を説明するためのシーケンスを図９にて説明する。図９は、内部デバイス２５０を情報処理装置１００Ｃで仮想化制御する場合と、内部デバイス２５０をデバイス制御装置３００Ｃで仮想化制御する場合の２つのシーケンスが記載されている。
【０１９９】
最初に、内部デバイス２５０を情報処理装置１００Ｃで仮想化制御する場合のシーケンスについて説明する。接続構成や構成要素は、図４と同じであるため、図４に示す構成要素と同一の構成要素については同一の参照番号を付して説明を省略し、異なる点についてのみ説明する。
【０２００】
携帯端末２００Ｃから内部デバイス２５０の仮想化制御を開始させる。まず、ユーザは、携帯端末２００Ｃで所定の操作を行い、表示デバイス２５０Ａに操作画面を表示させ、入力デバイス２５０Ｂで接続操作（例えば、接続ボタンの押下など）を実行すると、仮想デバイス制御部２０２に対して、内部デバイス２５０の接続要求が送られる（ステップＳ５０１）。
【０２０１】
仮想デバイス制御部２０２は、この接続要求を検出すると、仮想化通信部２０３に表示デバイス２５０Ａおよび入力デバイス２５０Ｂそれぞれの仮想デバイス識別情報２０２Ａを送信して内部デバイス２５０の接続通知を送る（ステップＳ５０２）。仮想化通信部２０３は、この接続通知を受け取ると、通信制御部３１３を介してデバイス制御装置３００Ｃに接続通知を送信する（ステップＳ５０３）。
【０２０２】
仮想化制御部３２３は、ステップＳ５０１〜ステップＳ５０３による接続通知をデバイスドライバ切替部３２４に通知する（ステップＳ５０４）。
【０２０３】
デバイスドライバ切替部３２４が接続通知を受け取ると、本シーケンスではデバイス制御装置３００Ｃ内に携帯端末２００Ｃの内部デバイス２５０を接続するためのデバイスドライバが無いので、デバイスドライバ切替部３２４は、内部デバイス２５０のデバイス情報を基に、デバイス制御装置３００Ｃ内に仮想デバイス制御部３１４を生成する。仮想化制御部３２３は、仮想デバイス制御部３１４が生成されると、接続通知を仮想デバイス制御部３１４に通知する（ステップＳ５０５）。仮想デバイス制御部３１４は、内部デバイス２５０のデバイス情報と当該内部デバイス２５０の仮想化制御を実行させる情報処理装置１００Ｃの宛先情報を仮想化通信部３１２に通知する（ステップＳ５０６）。
【０２０４】
仮想化通信部３１２は、仮想化制御部３２３から送られてくる設定情報を記憶し、通信制御部３１３を介して、設定情報に含まれる宛先情報の情報処理装置１００Ｃに対して、表示デバイス２５０Ａからの接続通知を送信する（ステップＳ５０７）。
【０２０５】
情報処理装置１００Ｃは、通信制御部１０４を介して、デバイス制御装置３００Ｃから受信した接続通知を仮想化制御部１０３に送る。仮想化制御部１０３は、この接続通知をアプリケーション１０１に送る（ステップＳ５０８）。アプリケーション１０１は、接続通知を受け取ると、仮想化制御部１０３に表示デバイス２５０Ａの仮想化制御の開始を指示し、仮想化制御部１０３は、携帯端末２００Ｃの表示デバイス２５０Ａの仮想化制御を開始する。
【０２０６】
情報処理装置１００Ｃでは、アプリケーション１０１から表示ドライバ１０２Ａに対して、データ入出力（制御）の要求を送る（ステップＳ５０９）。表示ドライバ１０２Ａは、表示デバイス２５０Ａに係るパラメータを要求する第１の転送要求（以下、転送要求１）を生成して、仮想化制御部１０３に渡す（ステップＳ５１０）。
【０２０７】
仮想化制御部１０３は、転送要求１からデバイス制御装置３００Ｃの仮想化制御部３２３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送要求１を生成し、通信制御部３１３を介して当該デバイス転送要求１をデバイス制御装置３００Ｃに送信する（ステップＳ５１１）。
【０２０８】
仮想化通信部３１２は、仮想化制御部１０３から受けたデバイス転送要求１を仮想デバイス制御部３１４に渡し、仮想デバイス制御部３１４は仮想化制御部３２３に通知するパラメータのみを要求パラメータとして取り出し、転送要求２を生成する（ステップＳ５１２）。仮想デバイス制御部３１４は、転送要求２を仮想化制御部３２３に送信する（ステップＳ５１３）。
【０２０９】
仮想化制御部３２３は、転送要求２から携帯端末２００Ｃの仮想化通信部２０３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送要求２を生成し、通信制御部３１３を介して当該デバイス転送要求２を携帯端末２００Ｃに送信する（ステップＳ５１４）。
【０２１０】
携帯端末２００Ｃは、通信制御部２０４を介してデバイス制御装置３００Ｃからデバイス転送要求２を受け取ると、仮想化通信部２０３によって当該デバイス転送要求２に含まれるデバイス識別情報に応じてデータ転送を行うべき表示デバイス２５０Ａを特定する。
【０２１１】
そして、仮想化通信部２０３は、デバイス転送要求２に含まれる要求パラメータを、仮想デバイス制御部２０２に渡すデータ形式に変換した転送要求３を生成し、仮想デバイス制御部２０２に渡す（ステップＳ５１５）。仮想デバイス制御部２０２は、この転送要求３を表示デバイス２５０Ａに適ったデータ形式に変換した「要求」を表示デバイス２５０Ａに送る（ステップＳ５１６）。
【０２１２】
ステップＳ５１６で情報処理装置１００Ｃから携帯端末２００Ｃの表示デバイス２５０Ａへの要求が送られる。この要求に対する応答は、以下の処理ステップＳ５１７〜ステップＳ５２４のシーケンスに従って行われる。
【０２１３】
表示デバイス２５０Ａは、ステップＳ５１６で受け取った要求に対する制御結果である応答データを仮想デバイス制御部２０２に送る（ステップＳ５１７）。仮想デバイス制御部２０２は、この応答データを仮想化通信部２０３とのデータ通信に適ったデータ形式（ＵＳＢデータ）に変換した転送応答３を仮想化通信部２０３に渡す（ステップＳ５１８）。
【０２１４】
仮想化通信部２０３は、転送応答３からデバイス制御装置３００Ｃの仮想化制御部３２３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送応答３を生成し、通信制御部２０４を介して当該デバイス転送応答３をデバイス制御装置３００Ｃに送信する（ステップＳ５１９）。
【０２１５】
仮想化制御部３２３は、仮想化通信部２０３から受け取ったデバイス転送応答３から仮想デバイス制御部３１４に通知するパラメータのみを要求パラメータとして取り出し、転送応答３を生成し、仮想デバイス制御部３１４に通知する（ステップＳ５２０）。
【０２１６】
仮想デバイス制御部３１４は、転送応答３から仮想化通信部３１２に通知するパラメータのみを要求パラメータとして取り出し、仮想化制御を実行させる情報処理装置１００Ｃの宛先情報を加え、転送応答２を生成する。そして、仮想デバイス制御部３１４は、生成した転送応答２を仮想化通信部３１２に送信する（ステップＳ５２１）。
【０２１７】
仮想化通信部３１２は、転送応答２から情報処理装置１００Ｃの仮想化制御部１０３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送応答２を生成し、通信制御部３１３を介して当該デバイス転送応答２を情報処理装置１００Ｃに送信する（ステップＳ５２２）。
【０２１８】
情報処理装置１００Ｃは、通信制御部１０４を介してデバイス制御装置３００Ｃからデバイス転送応答２を受け取ると、仮想化制御部１０３に渡す。仮想化制御部１０３は、当該デバイス転送応答２から表示ドライバ１０２Ａに渡すパラメータのみを応答パラメータとして取り出して転送応答１を生成し、表示ドライバ１０２Ａに渡す（ステップＳ５２３）。
【０２１９】
表示ドライバ１０２Ａは、転送応答１から応答パラメータを取り出してアプリケーション１０１に渡す（ステップＳ５２４）。アプリケーション１０１は、要求に対する応答を確認する。
【０２２０】
また、携帯端末２００Ｃから終了操作を行い、デバイス制御装置３００Ｃを介した仮想化制御を終了させる場合について説明する。
【０２２１】
携帯端末２００Ｃで所定の操作を行い、終了操作（例えば、終了ボタンの押下）を実行すると、仮想デバイス制御部２０２に対して、制御終了要求が送られる（ステップＳ５２５）。
【０２２２】
仮想デバイス制御部２０２は、制御終了要求を受け取ると、仮想化通信部２０３に制御終了通知を送る（ステップＳ５２６）。
【０２２３】
仮想化通信部２０３は、制御終了通知を受け取ると、通信制御部２０４を介して、デバイス制御装置３００Ｃに制御終了通知を送信する。デバイス制御装置３００Ｃは、通信制御部３１３を介して携帯端末２００Ｃからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部３２３へ送る（ステップＳ５２７）。
仮想化制御部３２３は、デバイスドライバ切替部３２４に制御終了通知を通知する（ステップＳ５２８）。デバイスドライバ切替部３２４は、制御終了通知を受け取ると、仮想デバイス制御部３１４へ制御終了通知を通知する（ステップＳ５２９）。
【０２２４】
仮想デバイス制御部３１４は、制御終了通知を受け取ると、情報処理装置１００Ｃの宛先情報を付加し、仮想化通信部３１２へ制御終了通知を通知する（ステップＳ５３０）。
【０２２５】
仮想化通信部３１２は、制御終了通知を受け取ると、通信制御部３１３を介して、情報処理装置１００Ｃに制御終了通知を送信する（ステップＳ５３１）。
【０２２６】
情報処理装置１００Ｃは、通信制御部１０４を介してデバイス制御装置３００Ｃからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部１０３へ送る。仮想化制御部１０３は、制御終了通知を受け取ると、アプリケーション１０１に対して表示デバイス２５０Ａの制御終了通知を送る（ステップＳ５３２）。
【０２２７】
アプリケーション１０１は、制御終了通知を受け取ると、仮想化制御部１０３に表示デバイス２５０Ａの仮想化制御の終了を指示し、仮想化制御部１０３は、携帯端末２００Ｃの表示デバイス２５０Ａの仮想化制御を終了する。
【０２２８】
ここまでが、携帯端末２００Ｃの内部デバイス２５０を情報処理装置１００Ｃで仮想化制御する場合のシーケンスの説明である。
【０２２９】
次に、本シーケンスでは、携帯端末２００Ｃの内部デバイス２５０をデバイス制御装置３００Ｃで仮想化制御する際の動作を説明する。
【０２３０】
携帯端末２００Ｃから内部デバイス２５０の仮想化制御を開始させる。まず、ユーザは、携帯端末２００Ｃで所定の操作を行い、表示デバイス２５０Ａに操作画面を表示させ、入力デバイス２５０Ｂで接続操作（例えば、接続ボタンの押下など）を実行すると、仮想デバイス制御部２０２に対して、内部デバイス２５０の接続要求が送られる（ステップＳ６０１）。
【０２３１】
仮想デバイス制御部２０２は、この接続要求を検出すると、仮想化通信部２０３に表示デバイス２５０Ａおよび入力デバイス２５０Ｂそれぞれの仮想デバイス識別情報２０２Ａを送信して内部デバイス２５０の接続通知を送る（ステップＳ６０２）。仮想化通信部２０３は、この接続通知を受け取ると、通信制御部３１３を介してデバイス制御装置３００Ｃに接続通知を送信する（ステップＳ６０３）。
【０２３２】
デバイス制御装置３００Ｃは、携帯端末２００Ｃから接続通知を受け取ると、通信制御部３１３を介して仮想化制御部３２３に接続通知を送る。仮想化制御部３２３では、接続通知から携帯端末２００Ｃの内部デバイス２５０に対する仮想化ブリッジ設定を判断し、仮想化制御を開始する（ステップＳ６０４）。
【０２３３】
デバイスドライバ切替部３２４が接続通知を受け取ると、本シーケンスではデバイス制御装置３００Ｃ内に内部デバイス２５０を接続するためのデバイスドライバが有るので、デバイスドライバ切替部３２４は、仮想デバイス制御部３１４を作ることなく、デバイス制御装置３００Ｃ内のアプリケーション３２１に接続通知を送信する（ステップＳ６０５）。
【０２３４】
デバイス制御装置３００Ｃでは、アプリケーション３２１から表示ドライバ３２２Ａに対して、データ入出力（制御）の要求を送る（ステップＳ６０６）。
【０２３５】
表示ドライバ３２２Ａは、アプリケーション３２１からの要求を転送要求１として仮想化制御部３２３に通知する（ステップＳ６０７）。
【０２３６】
仮想化制御部３２３は、転送要求１から携帯端末２００Ｃの仮想化通信部２０３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送要求１を生成し、通信制御部３１３を介して当該デバイス転送要求１を携帯端末２００Ｃに送信する（ステップＳ６０８）。
【０２３７】
携帯端末２００Ｃは、通信制御部２０４を介してデバイス制御装置３００Ｃからデバイス転送要求１を受け取ると、仮想化通信部２０３によって当該デバイス転送要求１に含まれるデバイス識別情報に応じてデータ転送を行うべき表示デバイス２５０Ａを特定する。
【０２３８】
そして、仮想化通信部２０３は、デバイス転送要求１に含まれる要求パラメータを、仮想デバイス制御部２０２に渡すデータ形式に変換した転送要求２を生成し、仮想デバイス制御部２０２に渡す（ステップＳ６０９）。仮想デバイス制御部２０２は、この転送要求２を表示デバイス２５０Ａに適ったデータ形式に変換した「要求」を表示デバイス２５０Ａに送る（ステップＳ６１０）。
【０２３９】
ステップＳ６１０で情報処理装置１００Ｃから携帯端末２００Ｃの表示デバイス２５０Ａへの要求が送られる。この要求に対する応答は、以下の処理ステップＳ６１１〜ステップＳ６１５のシーケンスに従って行われる。
【０２４０】
表示デバイス２５０Ａは、ステップＳ６１０で受け取った要求に対する制御結果である応答データを仮想デバイス制御部２０２に送る（ステップＳ６１１）。仮想デバイス制御部２０２は、この応答データを仮想化通信部２０３とのデータ通信に適ったデータ形式（ＵＳＢデータ）に変換した転送応答２を仮想化通信部２０３に渡す（ステップＳ６１２）。
【０２４１】
仮想化通信部２０３は、転送応答２からデバイス制御装置３００Ｃの仮想化制御部３２３に渡すパラメータのみを要求パラメータとして取り出し、表示デバイス２５０Ａを特定するためのデバイス識別情報を含んだデバイス転送応答２を生成し、通信制御部２０４を介して当該デバイス転送応答２をデバイス制御装置３００Ｃに送信する（ステップＳ６１３）。
【０２４２】
仮想化制御部３２３は、仮想化通信部２０３から受け取ったデバイス転送応答２から表示ドライバ３２２Ａに通知するパラメータのみを要求パラメータとして取り出し、転送応答１を生成し、表示ドライバ３２２Ａに通知する（ステップＳ６１４）。
【０２４３】
表示ドライバ３２２Ａは、転送応答１から応答パラメータを取り出してアプリケーション３２１に渡す（ステップＳ６１５）。アプリケーション３２１は、要求に対する応答を確認する。
【０２４４】
携帯端末２００Ｃで所定の操作を行い、終了操作（例えば、終了ボタンの押下）を実行すると、仮想デバイス制御部２０２に対して、制御終了要求が送られる（ステップＳ６１６）。
【０２４５】
仮想デバイス制御部２０２は、制御終了要求を受け取ると、仮想化通信部２０３に制御終了通知を送る（ステップＳ６１７）。
【０２４６】
仮想化通信部２０３は、制御終了通知を受け取ると、通信制御部２０４を介して、デバイス制御装置３００Ｃに制御終了通知を送信する。デバイス制御装置３００Ｃは、通信制御部３１３を介して携帯端末２００Ｃからの制御終了通知を受け取ると、この制御終了通知を仮想化制御部３２３へ送る（ステップＳ６１８）。
【０２４７】
仮想化制御部３２３は、デバイスドライバ切替部３２４に制御終了通知を通知する（ステップＳ６１９）。
【０２４８】
デバイスドライバ切替部３２４は、制御終了通知をアプリケーション３２１に通知する（ステップＳ６２０）。
【０２４９】
このように、第４の実施形態では、サーバ機能とクライアント機能を連携させ、デバイス制御装置３００Ｃ内にデバイスドライバ切替部３２４と仮想デバイス制御部３１４を具備することで、デバイス制御装置３００Ｃ内に内部デバイス２５０、または、外部デバイス４００を接続するためのデバイスドライバの有無、および、内部デバイスの仮想化制御の接続先に関する宛先情報の設定に基づき、内部デバイス２５０を仮想化制御する接続先を切り替えることが可能になる。
【０２５０】
加えて、今回は仮想化制御の接続完了後、データの送受信時にデバイスドライバ切替部３２４を通らない場合について説明したが、データ送受信時にデバイスドライバ切替部３２４を通る場合も同様に考えられる。
【０２５１】
また、第４の実施形態で説明した、デバイスドライバ切替部３２４と仮想デバイス制御部３１４を使用する点や、仮想化制御の接続先を切り替えることができるという点については、第３の実施形態でも同様に適用できる。
【０２５２】
以上、本発明について実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【０２５３】
上述した第１〜第４の実施形態に示すデバイス制御システムは、情報処理装置１００、携帯端末２００、デバイス制御装置３００、および外部デバイス４００がそれぞれ１台で構成されているが、情報処理装置１００、携帯端末２００、デバイス制御装置３００、および外部デバイス４００の台数は図示の例に限定されるものではない。
【０２５４】
また、デバイス制御装置３００は、複合機などのオフィス機器に限定されるものではなく、様々な組込み装置、携帯電話機、又はモバイル端末機器であってもよい。
【０２５５】
さらに、デバイス制御装置３００に接続される外部デバイス４００の通信インターフェースは、ＵＳＢ又はＨＤＭＩ（登録商標）に限定されるものではなく、他のインターフェースに準拠するインターフェースを用いるようにしてもよい。
【０２５６】
外部デバイス４００は、例えば、キーボード、マウス、又はカードリーダのような入力機器およびディスプレイなどの表示機器（出力機器）、プリンタ、スキャナなどの単機能周辺機器である。また、外部デバイス４００は印刷機能の他に、スキャン機能、コピー機能、およびストレージ機能などを備えた多機能周辺機器であってもよく、他の入出力機器であってもよい。なお、デバイス制御装置３００と外部デバイス４００とは一体化するようにしてもよい。
【０２５７】
例えば、上記の実施形態の機能を制御方法として、この制御方法をデバイス制御装置に実行させるようにすればよい。また、上述の実施形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムをデバイス制御装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
【０２５８】
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵなど）がプログラムを読み出して実行する処理である。
【符号の説明】
【０２５９】
１００，１００Ａ、１００Ｃ  情報処理装置
２００、２００Ａ、２００Ｂ、２００Ｃ  携帯端末
３００、３００Ａ、３００Ｂ、３００Ｃ  デバイス制御装置
４００、４００Ｃ  外部デバイス
【図１】
2014142924.tif 000003
【図２】
2014142924.tif 000004
【図３】
2014142924.tif 000005
【図４】
2014142924.tif 000006
【図５】
2014142924.tif 000007
【図６】
2014142924.tif 000008
【図７】
2014142924.tif 000009
【図８】
2014142924.tif 000010
【図９】
2014142924.tif 000011