(57)【要約】【課題】仮想化制御機能を有しない装置が、仮想化制御機能を有する装置にデバイスでの処理実行を依頼し、その実行結果を取得できる手段を提供する。【解決手段】デバイスサーバは、処理要求依頼元となるネットワークデバイスまたはデバイスサーバ内のアプリケーションプログラムから処理要求を受信すると、その処理要求をクライアントＰＣに送信し、処理要求を受信したクライアントＰＣからセッション要求を受信した場合、クライアントＰＣとのセッションを制御する。クライアントＰＣは、デバイスサーバを介してデバイスを制御し、処理要求に応じた処理を実行して、実行結果を取得し、デバイスサーバに送信する。デバイスサーバは、実行結果をクライアントＰＣから受信すると、処理要求依頼元に実行結果を送信する。【選択図】図１
2012108804.tif 000002
【特許請求の範囲】
【請求項１】
デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置であって、
処理要求依頼元からの処理要求を受信する処理要求受信手段と、
前記処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、
前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、
前記セッション要求受信手段で受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御手段と、
前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信手段と、
前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信手段と、
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記処理要求受信手段で受信した前記処理要求に自装置を識別するためのデバイス制御装置識別情報と前記処理要求を識別するための処理要求識別情報を追加する識別情報追加手段をさらに備え、
前記処理要求送信手段は、前記識別情報追加手段で前記デバイス制御装置識別情報と前記処理要求識別情報が追加された当該処理要求を送信することを特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
前記処理要求受信手段で受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断手段をさらに備え、
前記処理要求送信手段は、前記実行可否判断手段における当該デバイスの判断結果を前記クライアント装置に送信することを特徴とする請求項１または請求項２に記載のデバイス制御装置。
【請求項４】
前記処理要求受信手段で受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断手段をさらに備え、
前記実行可否判断手段で当該処理要求を当該デバイスで実行不可能と判断した場合、前記処理要求送信手段は、当該処理要求を他のデバイス制御装置に転送することを特徴とする請求項１または請求項２に記載のデバイス制御装置。
【請求項５】
デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置におけるデバイス制御方法であって、
処理要求依頼元からの処理要求を受信する処理要求受信ステップと、
前記処理要求受信ステップで受信した前記処理要求を前記クライアント装置に送信する処理要求送信ステップと、
前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信ステップと、
前記セッション要求受信ステップで受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御ステップと、
前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信ステップと、
前記実行結果受信ステップで受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信ステップと、
を備えることを特徴とするデバイス制御方法。
【請求項６】
前記処理要求受信ステップで受信した前記処理要求に自装置を識別するためのデバイス制御装置識別情報と前記処理要求を識別するための処理要求識別情報を追加する識別情報追加ステップをさらに備え、
前記処理要求送信ステップは、前記識別情報追加ステップで前記デバイス制御装置識別情報と前記処理要求識別情報が追加された当該処理要求を送信することを特徴とする請求項５に記載のデバイス制御方法。
【請求項７】
前記処理要求受信ステップで受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断ステップをさらに備え、
前記処理要求送信ステップは、前記実行可否判断ステップにおける当該デバイスの判断結果を前記クライアント装置に送信することを特徴とする請求項５または請求項６に記載のデバイス制御方法。
【請求項８】
前記処理要求受信ステップで受信した前記処理要求を前記デバイスで実行可能か判断する実行可否判断ステップをさらに備え、
前記実行可否判断ステップで当該処理要求を当該デバイスで実行不可能と判断した場合、前記処理要求送信ステップは、当該処理要求を他のデバイス制御装置に転送することを特徴とする請求項５または請求項６に記載のデバイス制御方法。
【請求項９】
クライアント装置と、前記クライアント装置とネットワークを介して接続されたデバイス制御装置と、前記デバイス制御装置にローカル接続される１つまたは複数のデバイスから構成されるデバイス制御システムであって、
前記クライアント装置は、
前記デバイス制御装置から処理要求を受信する第１の処理要求受信手段と、
前記第１の処理要求受信手段で受信した前記処理要求に応じて、前記デバイス制御装置にセッション要求を送信するセッション要求送信手段と、
当該デバイス制御装置とのセッションを実行する第１の仮想化制御手段と、
前記処理要求に応じて得られた実行結果を取得する実行結果取得手段と、
前記実行結果取得手段で取得した当該実行結果を前記デバイス制御装置に送信する第１の実行結果送信手段と、を備え、
前記デバイス制御装置は、
処理要求依頼元からの処理要求を受信する第２の処理要求受信手段と、
前記第２の処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、
前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、
前記セッション要求受信手段で受信したセッション要求に基づいて、当該クライアント装置とのセッションを制御する第２の仮想化制御手段と、
前記実行結果を前記クライアント装置から受信する実行結果受信手段と、
前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する第２の実行結果送信手段と、
を備えることを特徴とするデバイス制御システム。
【請求項１０】
前記デバイス制御システムは、
前記デバイス制御装置を複数備える構成であって、
前記クライアント装置は、
前記第１の処理要求受信手段で受信した前記処理要求を前記デバイスで実行可能か判断する第１の実行可否判断手段と、
前記第１の実行可否判断手段の判断結果に基づいて、前記処理要求を依頼する前記デバイスを選定するデバイス選定手段と、をさらに備え、
前記クライアント装置の前記セッション要求送信手段は、前記デバイス選定手段で選定された前記デバイスが接続されている前記デバイス制御装置に前記セッション要求を送信することを特徴とする請求項９に記載のデバイス制御システム。
【請求項１１】
前記デバイス制御装置は、
前記第２の処理要求受信手段で受信した前記処理要求を自装置に接続された前記デバイスで実行可能か判断する第２の実行可否判断手段を、さらに備え、
前記処理要求送信手段は、第２の実行可否判断手段における当該デバイスの判断結果を前記クライアント装置に送信し、
前記クライアント装置は、
前記第１の処理要求受信手段で前記判断結果を受信すると、前記デバイス選定手段によって、前記判断結果に基づいて、前記デバイスを選定することを特徴とする請求項１０に記載のデバイス制御システム。
【請求項１２】
前記デバイス制御装置は、
前記第２の処理要求受信手段で受信した前記処理要求を自装置に接続された前記デバイスで実行可能か判断する第２の実行可否判断手段を、さらに備え、
前記第２の実行可否判断手段で当該処理要求を前記デバイスで実行不可能と判断した場合、前記処理要求送信手段によって当該処理要求を他のデバイス制御装置に転送することを特徴とする請求項１０に記載のデバイス制御システム。
【請求項１３】
前記デバイス制御装置は、
前記第２の処理要求受信手段で受信した前記処理要求に自装置を識別するためのデバイス制御装置識別情報と前記処理要求を識別するための処理要求識別情報を追加する識別情報追加手段をさらに備え、
前記処理要求送信手段は、前記識別情報追加手段で前記デバイス制御装置識別情報と前記処理要求識別情報が追加された当該処理要求を送信することを特徴とする請求項９乃至請求項１２の何れか１項に記載のデバイス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してデバイスを制御する機能を備えたデバイス制御装置、デバイス制御方法、及びデバイス制御システムに関するものである。
【背景技術】
【０００２】
ネットワークの普及により、従来、パーソナルコンピュータ（ＰＣ）などにローカル接続して利用していたデバイス（周辺機器）をネットワーク上のクライアントＰＣから利用できるように工夫したデバイスサーバが発表されている。
【０００３】
このデバイスサーバを用いることにより、プリンタ、ストレージ、スキャナ、カードリーダなどのデバイスを、ネットワーク上のクライアントＰＣからローカル接続した状態と同様に利用できる仮想化制御に関するものが提案されている。
【０００４】
例えば、クライアントＰＣがデバイスサーバにローカル接続されたデバイスに対して仮想化制御を行うことで、当該デバイスを仮想的に認識し、ネットワーク上のクライアントＰＣからローカル接続した状態と同様にアクセスできるシステムがある（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９６２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１のシステムは、各々のクライアントＰＣとデバイスサーバに仮想化制御を行うためのトンネリングドライバとＵＳＢクラスドライバ（以下、仮想化制御ドライバ）が必要である。
【０００７】
しかしながら、実際のシステムでは、全てのデバイスに仮想化制御ドライバを備えているわけではなく、このようなデバイスが、デバイスサーバを介さずに、ネットワークに直接接続されて存在する。この仮想化制御ドライバを備えないデバイスにおいても、他のデバイスで行われた処理結果を取得したい場合がある。
【０００８】
仮想化制御ドライバを全デバイスに導入できない理由は、全デバイスに導入しようとするとコストの増大につながるからである。また、あるデバイスでは、ソフトウェア・ハードウェアの仕様・設計やシステムの運用・管理上の理由により仮想化制御ドライバを導入できないためである。
【０００９】
上記問題に鑑みて、本発明は、デバイスに対する仮想化制御機能を有しない装置が、仮想化制御機能を有する装置にデバイスでの処理実行を依頼し、その実行結果を取得できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、請求項１に記載のデバイス制御装置は、デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置であって、処理要求依頼元からの処理要求を受信する処理要求受信手段と、前記処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、前記セッション要求受信手段で受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御手段と、前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信手段と、前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信手段と、を備えることを特徴とする。
【００１１】
また、上記の課題を解決するために、請求項５に記載のデバイス制御方法は、デバイスとローカル接続し、ネットワークを介して接続されたクライアント装置とのセッションを制御するデバイス制御装置におけるデバイス制御方法であって、処理要求依頼元からの処理要求を受信する処理要求受信ステップと、前記処理要求受信ステップで受信した前記処理要求を前記クライアント装置に送信する処理要求送信ステップと、前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信ステップと、前記セッション要求受信ステップで受信したセッション要求に基づいて、前記クライアント装置とのセッションを制御する仮想化制御ステップと、前記処理要求に応じて得られた実行結果を前記クライアント装置から受信する実行結果受信ステップと、前記実行結果受信ステップで受信した当該実行結果を前記処理要求依頼元に送信する実行結果送信ステップと、を備えることを特徴とする。
【００１２】
また、上記の課題を解決するために、請求項９に記載のデバイス制御システムは、クライアント装置と、前記クライアント装置とネットワークを介して接続されたデバイス制御装置と、前記デバイス制御装置にローカル接続される１つまたは複数のデバイスから構成されるデバイス制御システムであって、前記クライアント装置は、前記デバイス制御装置から処理要求を受信する第１の処理要求受信手段と、前記第１の処理要求受信手段で受信した前記処理要求に応じて、前記デバイス制御装置にセッション要求を送信するセッション要求送信手段と、当該デバイス制御装置とのセッションを実行する第１の仮想化制御手段と、前記処理要求に応じて得られた実行結果を取得する実行結果取得手段と、前記実行結果取得手段で取得した当該実行結果を前記デバイス制御装置に送信する第１の実行結果送信手段と、を備え、前記デバイス制御装置は、処理要求依頼元からの処理要求を受信する第２の処理要求受信手段と、前記第２の処理要求受信手段で受信した前記処理要求を前記クライアント装置に送信する処理要求送信手段と、前記処理要求を受信したクライアント装置からのセッション要求を受信するセッション要求受信手段と、前記セッション要求受信手段で受信したセッション要求に基づいて、当該クライアント装置とのセッションを制御する第２の仮想化制御手段と、前記実行結果を前記クライアント装置から受信する実行結果受信手段と、前記実行結果受信手段で受信した当該実行結果を前記処理要求依頼元に送信する第２の実行結果送信手段と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、デバイスに対する仮想化制御機能を有しない装置が、デバイスに対する仮想化制御機能を有する装置にデバイスでの処理実行を依頼し、その実行結果を取得することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係るデバイス制御システムの概略構成を示す図である。
【図２】パケットのデータ構成を例示する図である。
【図３】実施例１に係る実行結果取得過程を示すシーケンス図である。
【図４】実施例２に係る実行結果取得過程を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について詳細に説明する。
【実施例１】
【００１６】
実施例１に係る実施の形態を説明する。
＜１．デバイス制御システムの構成＞
図１は、本発明を実現するためのデバイス制御システムの概略構成であり、クライアントＰＣ１００、デバイスサーバ２００（２００Ａ、２００Ｂ）、デバイス３００（３００Ａ、３００Ｂ）、ネットワークデバイス４００から構成される。
【００１７】
このデバイス制御システムでは、デバイスサーバ２００とデバイス３００をＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＩＥＥＥ１３９４などのインターフェースに準拠した接続ケーブル５００で接続する。また、クライアントＰＣ１００、デバイスサーバ２００、ネットワークデバイス４００は、有線または無線のネットワーク６００で接続する。
【００１８】
次に、デバイス制御システムを構成する各装置について順次説明する。
【００１９】
＜２．クライアントＰＣ１００の構成＞
クライアントＰＣ１００（クライアント装置）は、ＣＰＵ、入力部、表示部、メモリ、通信部、外部記憶部などが内部バスで接続され、ネットワーク６００を介してデバイスサーバ２００やネットワークデバイス４００（外部デバイス）と通信することが可能な装置である。
【００２０】
外部記憶部は、ＯＳ（不図示）、制御プログラム１０１、デバイスドライバ１０２、仮想化制御部１０３などのソフトウェアプログラムを格納している。これらのソフトウェアプログラムは、ＣＰＵの制御に従い、メモリ上に読み出されて実行される。
【００２１】
制御プログラム１０１は、デバイスサーバ２００に接続されたデバイス３００のデバイス情報を取得し、取得したデバイス情報をもとに、デバイス３００とのデータ送受信に必要なデバイスドライバ１０２および仮想化制御部１０３を一意に特定し、動的に生成するソフトウェアプログラムである。また、デバイス３００に対して、デバイスドライバ１０２と仮想化制御部１０３を介して、データの送受信を要求するソフトウェアプログラムである。このデバイスドライバ１０２および仮想化制御部１０３がデバイス３００の個体ごとに生成・起動されることによって、デバイス３００個々に仮想化制御が実行される。
【００２２】
デバイスドライバ１０２は、ＯＳや制御プログラム１０１などの上位層のソフトウェアプログラムの指示により、デバイス３００に対する制御コマンドを生成・送信し、この制御コマンドに対する応答を受信すると、この応答を上位層のソフトウェアプログラムへ通知するソフトウェアプログラムである。
【００２３】
仮想化制御部１０３は、制御プログラム１０１からデバイスドライバ１０２を介して要求されるデバイス３００へのデータ送受信に対して、デバイス３００がクライアントＰＣ１００に直結しているときと同様の振る舞いを提供する仮想化制御ソフトウェアプログラムである。
【００２４】
＜３．デバイスサーバ２００の構成＞
デバイスサーバ２００（デバイス制御装置）は、ＣＰＵ、メモリ、通信部、ＵＳＢインターフェース、外部記憶部などが内部バスで接続され、ネットワーク６００を介してクライアントＰＣ１００やネットワークデバイス４００（外部デバイス）と通信することが可能であり、接続ケーブル５００でローカル接続されているデバイス３００とデータ送受信が可能な装置である。
【００２５】
外部記憶部は、処理実行メイン部２０１、アプリケーションプログラム２０４などのソフトウェアプログラムを格納している。これらのソフトウェアプログラムは、ＣＰＵの制御に従い、メモリ上に読み出されて実行される。
【００２６】
処理実行メイン部２０１は、クライアントＰＣ１００とデバイスサーバ２００とのセッションを制御する仮想化制御部２０２並びにデバイス３００に対する処理要求およびデバイス３００での実行結果の送受信を行う処理要求制御部２０３を備える機能部である。なお、処理要求制御部２０３とアプリケーションプログラム２０４（後述）の通信経路と、処理要求制御部２０３とネットワークデバイス４００の通信経路におけるインターフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を共通化することで、同一形式のパケットで通信することができる。
【００２７】
アプリケーションプログラム２０４は、特定の機能をデバイスサーバ２００に提供するソフトウェアプログラムであり、例えば、認証情報の認証成功後に印刷を行う、いわゆる「認証印刷」の機能を提供するプログラムである。
【００２８】
なお、アプリケーションプログラム２０４を仮想化制御部２０２および処理要求制御部２０３と共に外部記憶部内のＲＯＭ領域に記憶してもよいし、これらとは別にＲＡＭ領域に記憶してもよい。このように記憶するのは、ＲＯＭ領域に変更や更新の少ないソフトウェアプログラムを記憶して、デバイスサーバ２００の基本的な制御機能を提供し、ＲＡＭ領域に変更や更新の多いソフトウェアプログラムを記憶して、様々な制御機能を提供するためである。
【００２９】
このＲＡＭ領域に記憶したアプリケーションプログラム２０４を必要に応じて書き換えることで、認証印刷の機能以外の様々な機能を提供できるため、顧客のニーズやソリューションの変化に柔軟な対応が可能となり、デバイスサーバ２００の汎用性を高めることができる。なお、この場合、処理要求制御部２０３との通信経路におけるＡＰＩを共通化してアプリケーションプログラム２０４を作成しておけばよい。
【００３０】
また、ＲＡＭ領域のアプリケーションプログラム２０４を書き換える場合は、記憶媒体を介して書き換えてもよいし、クライアントＰＣ１００などから動的にインストールしてもよいし、デバイスサーバ２００がクライアントＰＣ１００にアクセスしてダウンロード（取得）するようにしてもよい。
【００３１】
＜４．デバイス３００の構成＞
デバイス３００は、ＵＳＢインターフェースを持つ汎用的な入出力装置であり、デバイスサーバ２００内のアプリケーションプログラム２０４またネットワークデバイス４００からの処理要求に応じて、処理を実行し、その処理に対する実行結果をデバイスサーバ２００を介してクライアントＰＣ１００に送信する装置である。例えば、デバイス３００がカードリーダの場合、読み取ったカードＩＤを実行結果として送信し、デバイス３００がスキャナの場合、読み取った画像データを実行結果として送信する。なお、デバイス３００が備えるインターフェースは、ＵＳＢインターフェースに限定されるものではなく、ＩＥＥＥ１３９４など他のインターフェースに準拠したものであってもよい。
【００３２】
また、デバイスサーバ２００、デバイス３００をそれぞれ別体の装置として説明したが、これに限定されるものではなく、デバイスサーバ２００をデバイス３００のケーシング内に収まるように一体構造としても良い。
【００３３】
＜５．ネットワークデバイス４００の構成＞
ネットワークデバイス４００は、ネットワーク６００を介してクライアントＰＣ１００やデバイスサーバ２００と通信して、データの送受信が可能な装置（外部デバイス）であり、自らが備える所定の機能を実行することに加えて、デバイス３００に対する処理要求をデバイスサーバ２００に送信し、デバイス３００での実行結果をクライアントＰＣ１００およびデバイスサーバ２００を介して取得する。
【００３４】
＜６．パケットのデータ構成＞
本デバイス制御システムにおけるパケットのデータ構成を図２に例示する。パケット（パケットａ〜パケットｅ）はヘッダ部とデータ部で構成される。ヘッダ部には、本システムのプロトコルであることを識別するための署名データ７０１、電文サイズ７０２、デバイスサーバ２００に対するコマンドＩＤ７０３、データ部のデータに関するデータサイズ７０４などが格納され、データ部には、デバイス３００に実行させるデータ７２０やデバイス３００での実行結果に関するデータ７２０などが格納される。なお、図２に例示したパケット（パケットａ〜パケットｅ）のヘッダ部は、固定長の領域として説明したが可変長の領域でもよい。
【００３５】
次に、パケットａ〜パケットｅについて説明する。パケットａは、処理要求依頼元（アプリケーションプログラム２０４またはネットワークデバイス４００）がデバイスサーバ２００に送信する処理要求パケットである。
【００３６】
パケットｂは、デバイスサーバ２００の処理要求制御部２０３が、クライアントＰＣ１００に送信する処理要求パケットである。
【００３７】
パケットｃは、クライアントＰＣ１００とデバイス３００がデータ送受信を行う際に用いるデータ送受信用パケットである。
【００３８】
パケットｄは、クライアントＰＣ１００がデバイスサーバ２００に送信する実行結果パケットである。
【００３９】
パケットｅは、デバイスサーバ２００の処理要求制御部２０３が、処理要求依頼元（アプリケーションプログラム２０４またはネットワークデバイス４００）に送信する実行結果パケットである。
【００４０】
＜７．実施例１に係る実行結果取得のシーケンス＞
図３は、本デバイス制御システムにおける実行結果を取得する過程を示すシーケンス図である。なお、処理要求依頼元にはデバイスサーバ２００のアプリケーションプログラム２０４およびネットワークデバイス４００を適用できるが、ここでは、デバイスサーバａ２００Ａのアプリケーションプログラム２０４が処理要求依頼元として処理要求を送信し、実行結果を取得する場合について説明する。
【００４１】
デバイスサーバａ２００Ａの仮想化制御部２０２は、デバイスａ３００Ａがデバイスサーバａ２００Ａに接続されたとき、デバイスａ３００Ａからデバイス情報を取得する（タイミングＴ３０１）。
【００４２】
デバイスサーバａ２００Ａの仮想化制御部２０２は、デバイスａ３００Ａから取得したデバイス情報をメモリに登録する（タイミングＴ３０２）。なお、デバイスサーバａ２００Ａは、取得したデバイス情報にシリアル番号が格納されていない場合、デバイスサーバ２００の有する固有情報と、デバイスサーバ２００の接続ポート固有情報からシリアル番号を生成し、デバイス情報に追加する。これにより、シリアル番号が格納されていないデバイス３００が接続された場合でも、クライアントＰＣ１００から識別可能となる。
【００４３】
なお、デバイスサーバ２００の有する固有情報とは、デバイスサーバ２００を識別するための情報である。例えば、デバイスサーバ２００のＩＰアドレスやＭＡＣアドレス、シリアルナンバー（製造番号）などであるが、これらに限定されない。さらに、これらの情報を組み合わせたものであってもよい。
【００４４】
また、デバイスサーバ２００の接続ポート固有情報とは、デバイスサーバ２００の接続ポートを識別するための情報である。例えば、デバイスサーバ２００の有するＵＳＢポートの番号やＩＥＥＥ１３９４ポートの番号などであるが、これらに限定されない。
【００４５】
デバイスサーバａ２００Ａの仮想化制御部２０２は、クライアントＰＣ１００からデバイス情報の問い合わせがあると（タイミングＴ３０３）、クライアントＰＣ１００に対して、デバイスａ３００Ａのデバイス情報を通知する（タイミングＴ３０４）。
【００４６】
クライアントＰＣ１００では、通知されたデバイス情報を元に、制御プログラム１０１によってデバイスドライバ１０２と仮想化制御部１０３が生成・起動され、デバイスａ３００Ａが接続ケーブル５００で直結（ローカル接続）されたのと同様の振る舞いを提供する、いわゆる「仮想化制御」が行なわれる（タイミングＴ３０５）。この「仮想化制御」によって、クライアントＰＣ１００からデバイス３００をローカル接続したときと同じ状態でデータ送受信を行うことができる。
【００４７】
デバイスサーバａ２００Ａのアプリケーションプログラム２０４は、処理要求パケット（パケットａ）を生成し、デバイスサーバａ２００Ａの処理要求制御部２０３に送信する（タイミングＴ３０６）。
【００４８】
処理要求パケット（パケットａ）は、ヘッダ部が署名データ７０１、電文サイズ７０２、コマンドＩＤ７０３、データサイズ７０４、処理要求依頼元情報７０５から構成される。なお、処理要求依頼元情報７０５は、処理要求依頼元を識別（特定）するための情報である。例えば、ＩＰアドレス、ＭＡＣアドレス、コンピュータ名などであるが、これらに限定されるものではない。さらに、これらの情報を組み合わせたものであってもよい。
【００４９】
処理要求依頼元がデバイスサーバａ２００Ａのアプリケーションプログラム２０４の場合は、処理要求依頼元情報７０５として、デバイスサーバａ２００ＡのＩＰアドレスが格納される。データ部には、デバイス３００で実行されるデータが格納される。
【００５０】
デバイスサーバａ２００Ａの処理要求制御部２０３は、アプリケーションプログラム２０４から処理要求パケット（パケットａ）を受信すると、デバイスサーバ送信元情報７０６と処理要求識別情報７０７を追加した処理要求パケット（パケットｂ）をクライアントＰＣ１００に送信する（タイミングＴ３０７）。
【００５１】
タイミングＴ３０７で追加されるデバイスサーバ送信元情報７０６は、デバイスサーバを識別（特定）するための情報であり、処理要求識別情報７０７は、各々の処理要求を識別するためのユニークな情報である。なお、デバイスサーバ送信元情報７０６は、例えば、ＩＰアドレス、ＭＡＣアドレス、デバイスサーバ名などであるが、さらに、これらの情報を組み合わせたものであってもよい。
【００５２】
なお、処理要求制御部２０３は、クライアントＰＣ１００に送信する処理要求パケット（パケットｂ）毎に、処理要求識別情報７０７、コマンドＩＤ７０３、処理要求依頼元情報７０５、デバイスサーバ送信元情報７０６をひと組にして処理要求管理テーブル（不図示）に保持する。これらの情報を用いることで、各々の処理要求がどの依頼元から送信された処理要求か識別することができる。
【００５３】
クライアントＰＣ１００は、デバイスサーバａ２００Ａから処理要求パケット（パケットｂ）を受信し、その後、クライアントＰＣ１００上で制御プログラム１０１が実行される（タイミングＴ３０８）。
【００５４】
クライアントＰＣ１００は、制御プログラム１０１によって、処理要求パケット（パケットｂ）内のコマンドに応じて、デバイスａ３００Ａとデータ送受信を行うことを決定し、仮想化制御部１０３を介して、デバイスサーバａ２００Ａにセッション要求を送信し、デバイスサーバａ２００Ａとのセッションを開始する（タイミングＴ３０９）。
【００５５】
クライアントＰＣ１００の仮想化制御部１０３は、このとき、デバイスドライバ１０２から送られてくる「ＵＳＢパケット」と、ネットワーク６００およびデバイスサーバ２００を介して通信するための「ネットワークパケット」とのプロトコル変換を行い、通信部およびネットワーク６００を介して、デバイスサーバａ２００Ａの仮想化制御部２０２との間でデータ送受信用パケット（パケットｃ）を送受信し、デバイスａ３００Ａとのデータ送受信を制御する。
【００５６】
データ送受信用パケット（パケットｃ）は、ヘッダ部が署名データ７０１、電文サイズ７０２、コマンドＩＤ７０３、データサイズ７０４、ベンダーＩＤ（ＶＩＤ）７０８、製品ＩＤ（ＰＩＤ）７０９、シリアル番号７１０から構成される。
【００５７】
デバイスサーバａ２００Ａの仮想化制御部２０２は、データ送受信用パケット（パケットｃ）のベンダーＩＤ７０８、製品ＩＤ７０９、シリアル番号７１０によって、デバイス３００を一意に識別することができる。なお、シリアル番号７１０は、上述したように、デバイスサーバ２００がデバイス３００から取得したデバイス情報に記述されたシリアル番号が格納されるが、デバイス情報にシリアル番号が記述されていない場合には、デバイスサーバ２００の有する固有情報と、デバイスサーバ２００の接続ポート固有情報から生成されたシリアル番号が格納される。
【００５８】
クライアントＰＣ１００の仮想化制御部１０３は、デバイスサーバａ２００Ａを介してデバイスａ３００Ａとの間でデータ送受信用パケット（パケットｃ）を用いてデータ送受信を実施し、デバイスａ３００Ａにおける実行結果を取得する（タイミングＴ３１０）。
【００５９】
このとき、デバイスサーバ２００の仮想化制御部２０２は、クライアントＰＣ１００からセッション要求を受信すると、クライアントＰＣ１００との間のセッションを制御（開始）するとともに、クライアントＰＣ１００と通信するための「ネットワークパケット」とデバイス３００との間で送受信する「ＵＳＢパケット」とのプロトコル変換を行い、クライアントＰＣ１００とデバイス３００との間のデータ送受信を仲介（中継）する。
【００６０】
クライアントＰＣ１００においてデータの送受信が終了した場合（タイミングＴ３１１）、仮想化制御部１０３は、デバイスサーバａ２００Ａとのセッションを終了する（タイミングＴ３１２）。
【００６１】
クライアントＰＣ１００の制御プログラム１０１は、仮想化制御部１０３およびデバイスサーバａ２００Ａの仮想化制御部２０２を介して、デバイスａ３００Ａでの実行結果を取得すると、実行結果パケット（パケットｄ）を、デバイスサーバ送信元情報７０６に基づいて、デバイスサーバａ２００Ａに送信する（タイミングＴ３１３）。
【００６２】
実行結果パケット（パケットｄ）は、処理要求パケット（パケットｂ）の構成に処理実行成否情報を追加したものである。
【００６３】
ヘッダ部の実行成否情報７１１には、デバイス３００における処理実行の成否に関する情報が格納され、データ部には、デバイス３００での実行結果に関するデータが格納される。
【００６４】
デバイスサーバａ２００Ａの処理要求制御部２０３は、クライアントＰＣ１００から実行結果パケット（パケットｄ）を受信すると、このパケット内の処理要求識別情報７０７から処理要求管理テーブル内の処理要求識別情報７０７を検索し、パケット内のコマンドＩＤ７０３、処理要求依頼元情報７０５、デバイスサーバ送信元情報７０６とテーブルに保持しているコマンドＩＤ７０３、処理要求依頼元情報７０５、デバイスサーバ送信元情報７０６が一致するか確認する。
【００６５】
コマンドＩＤ７０３、処理要求依頼元情報７０５、デバイスサーバ送信元情報７０６が一致する場合、デバイスサーバａ２００Ａの処理要求制御部２０３は、前述したインターフェース（ＡＰＩ）を介して、実行結果パケット（パケットｅ）を処理要求依頼元のアプリケーションプログラム２０４に送信する（タイミングＴ３１４）。
【００６６】
実行結果パケット（パケットｅ）は、実行結果パケット（パケットｄ）の構成からデバイスサーバ送信元情報７０６と処理要求識別情報７０７を削除したものである。
【００６７】
処理要求依頼元のアプリケーションプログラム２０４は、前述したインターフェース（ＡＰＩ）を介して処理要求制御部２０３から実行結果パケット（パケットｅ）を受信し、デバイスａ３００Ａにおける実行結果を取得する（タイミングＴ３１５）。
【００６８】
なお、上記では処理要求依頼元をアプリケーションプログラム２０４として説明したが、処理要求依頼元をネットワークデバイス４００とした場合も同様に適用できる。
【００６９】
この場合、図３のタイミングＴ３０６、タイミングＴ３１４およびタイミングＴ３１５の処理が以下のように置き換わる。
【００７０】
（１）タイミングＴ３０６の処理において、ネットワークデバイス４００は、ネットワーク６００を介して処理要求パケット（パケットａ）をデバイスサーバａ２００Ａに送信する。ここで、パケットａ〜パケットｅの処理要求依頼元情報７０５には、ネットワークデバイス４００のＩＰアドレス、サブネットマスク、ゲートウェイ、ポート番号などが格納される。
【００７１】
（２）タイミングＴ３１４の処理において、デバイスサーバａ２００Ａの処理要求制御部２０３は、ネットワーク６００を介して実行結果パケット（パケットｅ）をネットワークデバイス４００に送信する。
【００７２】
（３）タイミングＴ３１５の処理において、処理要求依頼元のネットワークデバイス４００は、デバイスサーバａ２００Ａの処理要求制御部２０３から実行結果パケット（パケットｅ）を受信し、デバイスａ３００Ａにおける実行結果を取得する（タイミングＴ３１５）。
【００７３】
なお、実施例１で説明したデバイス制御システムを、例えば、デバイス３００をカードリーダ、ネットワークデバイス４００をネットワークプリンタとした認証印刷システムに適用すると、ネットワークプリンタとカードリーダ間で連携した処理を行うことができる。
【００７４】
このとき、処理要求依頼元がネットワークプリンタ（外部デバイス）の場合は、カードＩＤ（実行結果）を取得・認証して、認証結果に基づいて印刷の制御を行えばよい。また、処理要求依頼元がアプリケーションプログラム２０４（認証印刷プログラム）の場合は、カードＩＤ（実行結果）を取得・認証して、認証結果をネットワークプリンタに通知し、ネットワークプリンタは、認証結果に基づいて、印刷を行えばよい。
【００７５】
上述したとおり、実施例１のデバイス制御システムでは、アプリケーションプログラム２０４またはネットワークデバイス４００がデバイスサーバ２００の処理要求制御部２０３を介してクライアントＰＣ１００に処理要求を送信し、その処理要求に応じた実行結果を取得することで、仮想化制御機能を有しない装置が、デバイスサーバ２００を介して仮想化制御機能を有する装置に処理実行を依頼し、その実行結果を取得することができる。
【実施例２】
【００７６】
実施例２に係る実施の形態について説明する。本実施例では、処理要求依頼元から処理要求を受信する処理と、クライアントＰＣ１００とのセッションの接続制御処理を異なるデバイスサーバ２００で行なう点が特徴である。
【００７７】
実施例２は、処理要求依頼元（ネットワークデバイス４００またはアプリケーションプログラム２０４）から受信した処理要求に基づく処理を、処理要求を受信したデバイスサーバ２００にローカル接続されたデバイス３００で処理できない場合に適用できる。
【００７８】
この実施例２の実施形態を用いることで、仮想化制御機能を有しない装置からシステム上のいずれかのデバイスサーバ２００に処理要求を送信（依頼）すると、システム上の最適なデバイス３００で処理が行なわれて実行結果を得ることができる。これによって、システム上の多種多様なデバイス３００を有効に利用することができる。
【００７９】
なお、図１と図２を用いて説明した実施例１の構成は、実施例２でも同様に適用可能であるので、詳細な説明を省略する。
【００８０】
＜８．実施例２に係る実行結果取得のシーケンス＞
図４は、実施例２に係るデバイス制御システムにおける実行結果を取得する過程をシーケンス図として図示したものである。ここでは、ネットワークデバイス４００が処理要求依頼元として処理要求をデバイスサーバａ２００Ａに送信し、デバイスサーバａ２００ＡはクライアントＰＣ１００に処理要求パケットを送信（転送）して、クライアントＰＣ１００は、デバイスサーバｂ２００Ｂに接続されたデバイスｂ３００Ｂに処理を実行させて、実行結果を取得し、ネットワークデバイス４００がデバイスサーバａ２００Ａを介して、この実行結果を取得する場合について説明する。なお、処理要求依頼元をアプリケーションプログラム２０４とした場合でも実施例１と同様に適用できる。
【００８１】
デバイス情報取得から処理要求送信までの過程（タイミングＴ４０１〜タイミングＴ４１２）は、実施例１で図３を用いて説明したタイミングＴ３０１〜タイミングＴ３０７と同様であるため、説明を省略し、タイミングＴ４１３から説明する。
【００８２】
クライアントＰＣ１００は、デバイスサーバａ２００Ａから処理要求パケット（パケットｂ）を受信し、その後、制御プログラム１０１が実行されると、処理要求パケット（パケットｂ）内のコマンドに応じて、処理実行依頼先デバイスを選定する。このとき、デバイスａ３００Ａで処理できる場合、デバイスａ３００Ａを選定し、デバイスａ３００Ａで処理不可能な場合、デバイスａ３００Ａ以外で処理できるデバイス３００を選定する。ここでは、デバイスａ３００Ａではなく、デバイスｂ３００Ｂを処理実行依頼先デバイスとして選定する（タイミングＴ４１３）。なお、デバイス３００における処理実行可否はクライアントＰＣ１００またはデバイスサーバ２００のいずれか一方で判断すればよい。デバイスサーバ２００が判断する場合は、判断結果を処理要求（パケットｂ）に含めてクライアントＰＣ１００に送信する。
【００８３】
制御プログラム１０１は、処理を実行するデバイスをデバイスｂ３００Ｂに選定後、仮想化制御部１０３を介して、デバイスサーバｂ２００Ｂにセッション要求を送信し、デバイスサーバｂ２００Ｂとのセッションを開始する（タイミングＴ４１４）。
【００８４】
データ送受信からセッションの終了までの過程（タイミングＴ４１５〜タイミングＴ４１７）は、実施例１で図３を用いて説明したタイミングＴ３１０〜タイミングＴ３１２と同様であるため、説明を省略し、タイミングＴ４１８から説明する。
【００８５】
クライアントＰＣ１００は、デバイス３００における実行結果を取得すると、実行結果パケット（パケットｄ）を、デバイスサーバｂ２００Ｂではなく、デバイスサーバａ２００Ａに送信する（タイミングＴ４１８）。
【００８６】
これ以降の処理（タイミングＴ４１９〜タイミングＴ４２０）は、実施例１で図３を用いて説明したタイミングＴ３１４〜タイミングＴ３１５と同様であるため、説明を省略する。
【００８７】
実施例２で説明したデバイス制御システムを、例えば、複数台存在するデバイスサーバ２００各々にＵＳＢカメラがローカル接続され、監視装置がＵＳＢカメラから画像や映像を取得できるシステムに適用できる。このとき、監視装置（ネットワークデバイス４００に相当）から処理要求をいずれかのデバイスサーバ２００（例えば、監視装置の一番近くに存在するデバイスサーバ２００）に送信すれば、クライアントＰＣ１００が最適なＵＳＢカメラ（デバイス３００に相当）を選定し、所望の画像や映像を取得できる。
【００８８】
上述のとおり、実施例２のデバイス制御システムでは、処理要求依頼元から処理要求を受信したデバイスサーバ２００がクライアントＰＣ１００に処理要求を送信することで、仮想化制御機能を有しない装置であっても、処理要求を送信するデバイスサーバ２００を選択することなく、システム上のいずれかのデバイスサーバ２００に処理要求を送信すると、実行結果を取得できる。
【００８９】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【００９０】
ネットワークデバイス４００は、処理要求パケット（パケットａ）の送信先を予め設定したデバイスサーバ２００（例：最も近くに位置するデバイスサーバ２００）としてもよいし、送信の都度、デバイスサーバ２００を選定し、送信してもよい。
【００９１】
デバイスサーバ２００（デバイスサーバａ２００Ａ）の処理要求制御部２０３は、ローカル接続されたデバイス３００で処理要求パケット（パケットａ）に基づく処理の実行可否を判断し、実行できないと判断した場合、処理要求パケット（パケットａ）を処理実行可能なデバイス３００が接続された他のデバイスサーバ２００（デバイスサーバｂ２００Ｂ）に転送してもよい。この場合、転送された処理要求を受信したデバイスサーバ２００（デバイスサーバｂ２００Ｂ）は、クライアントＰＣ１００に処理要求を送信し、クライアントＰＣ１００を介して取得した実行結果を処理要求依頼元に送信する。
【００９２】
他のデバイスサーバ２００に処理要求パケットを転送する場合、以下のいずれかを行えばよい。（１）デバイスサーバ２００（デバイスサーバａ２００Ａ）は、処理要求パケット（パケットａ）にデバイスサーバ送信元情報７０６と処理要求識別情報７０７を追加した処理要求パケット（パケットｂ）を送信する。（２）デバイスサーバ送信元情報７０６と処理要求識別情報７０７を追加せずに処理要求パケット（パケットａ）をそのまま送信（転送）する。
【００９３】
クライアントＰＣ１００は、実行結果パケット（パケットｄ）をパケットのヘッダ部に格納される処理要求依頼元情報７０５に基づいて、処理要求依頼元に直接送信してもよい。この場合、以下のいずれかを行えばよい。（１）パケットのデータ量を軽減するために、実行結果パケット（パケットｄ）からデバイスサーバ送信元情報７０６と処理要求識別情報７０７を削除して送信する。（２）処理要求依頼元で実行結果パケット（パケットｄ）がどのデバイスサーバ２００に送信した処理要求に対するものかを識別可能にするため、実行結果パケット（パケットｄ）をそのまま送信する。
【００９４】
また、クライアントＰＣ１００は、実行結果パケット（パケットｄ）を処理要求パケット（パケットｂ）の送信元（デバイスサーバａ２００Ａ）と異なるデバイスサーバ２００（デバイスサーバｂ２００Ｂ）に送信してもよい。この場合、クライアントＰＣ１００から実行結果パケット（パケットｄ）を受信したデバイスサーバ２００（デバイスサーバｂ２００Ｂ）は、処理要求依頼元情報７０５に基づいて、実行結果パケット（パケットｄ）を処理要求依頼元に送信することができる。
【００９５】
さらに、クライアントＰＣ１００は、データ送受信用パケット（パケットｃ）によって取得したデバイス３００における実行結果に対してアプリケーションプログラム（不図示）で所定の処理を行い、その実行結果を実行結果パケット（パケットｄ）のデータ部に格納して送信してもよい。
【００９６】
本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【００９７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【００９８】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【００９９】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１００】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標)ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１０１】
１００：クライアントＰＣ
１０１：制御プログラム
１０２：デバイスドライバ
１０３：仮想化制御部
２００（２００Ａ，２００Ｂ）：デバイスサーバ
２０１：処理実行メイン部
２０２：仮想化制御部
２０３：処理要求制御部
２０４：アプリケーションプログラム
３００（３００Ａ，３００Ｂ）：デバイス
４００：ネットワークデバイス
５００：接続ケーブル
６００：ネットワーク
【図１】
2012108804.tif 000003
【図２】
2012108804.tif 000004
【図３】
2012108804.tif 000005
【図４】
2012108804.tif 000006