(57)【要約】【課題】デバイスサーバが検知した状態変化に応じて、イベント通知の通知先のクライアントＰＣを選定することで、検知した状態変化に応じて、最適なクライアントＰＣからデバイスを制御できる手段を提供する。【解決手段】デバイスサーバは、クライアントＰＣから送られてくるＰＣ情報またはイベント情報を、情報テーブルに記憶しておき、ローカル接続されたデバイスまたは自装置の状態変化を検知すると、情報テーブルを参照して、状態変化に対応する該当イベント情報を特定し、そのイベント情報およびＰＣ情報からイベント通知先のクライアントＰＣを選定して、イベント通知を行う。【選択図】図９
2012137864.tif 000002
【特許請求の範囲】
【請求項１】
デバイスとローカル接続し、クライアント装置とネットワークを介して接続されるデバイス制御装置であって、
前記デバイスまたは自装置の状態変化に対応づけられた識別情報、イベント通知の通知先情報を含むイベント情報および前記クライアント装置の識別情報を含むＰＣ情報を記憶する情報記憶手段と、
前記デバイスおよび自装置の状態変化を監視するデバイス監視手段と、
前記デバイス監視手段によって、前記デバイスまたは自装置の状態変化を検知した場合、
前記情報記憶手段に記憶されたイベント情報の中から、前記デバイス監視手段によって検知された前記状態変化に対応する前記イベント情報を特定するイベント情報特定手段と、
前記イベント情報特定手段で特定された当該イベント情報および前記ＰＣ情報に基づき、前記イベント通知の通知先となる前記クライアント装置を選定するイベント通知先選定手段と、
前記イベント通知先選定手段で通知先に選定された前記クライアント装置に前記イベント通知を送信するイベント通知送信手段と、
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記イベント情報は、他のイベント情報の参照先情報をさらに含み、
前記イベント情報特定手段によって特定された前記イベント情報に前記参照先情報が含まれている場合、
前記イベント通知先選定手段は、当該参照先情報により参照される前記イベント情報および前記ＰＣ情報に基づき、前記イベント通知の通知先となる前記クライアント装置をさらに選定することを特徴する請求項１に記載のデバイス制御装置。
【請求項３】
前記クライアント装置から前記イベント情報およびＰＣ情報の少なくとも一方を登録するための登録要求を受信する登録要求受信手段をさらに備え、
前記情報記憶手段は、前記登録要求受信手段で受信した当該登録要求に含まれる前記イベント情報および前記ＰＣ情報の少なくとも一方を記憶することを特徴とする請求項１または請求項２に記載のデバイス制御装置。
【請求項４】
前記登録要求の登録結果を前記登録要求の送信元の前記クライアント装置に送信する登録応答送信手段をさらに備えることを特徴とする請求項３に記載のデバイス制御装置。
【請求項５】
前記イベント通知を受信した前記クライアント装置からの接続要求に応じて、当該クライアント装置とのセッションを開始するセッション制御手段をさらに備えることを特徴する請求項１または請求項２に記載のデバイス制御装置。
【請求項６】
デバイスとローカル接続し、クライアント装置とネットワークを介して接続されるデバイス制御装置におけるデバイス制御方法であって、
前記デバイスまたは自装置の状態変化に対応づけられた識別情報とイベント通知の通知先情報を含むイベント情報および前記クライアント装置の識別情報を含むＰＣ情報を記憶する情報記憶ステップと、
前記デバイスおよび自装置の状態変化を監視するデバイス監視ステップと、
前記デバイス監視ステップで前記デバイスまたは自装置の状態変化を検知した場合、前記情報記憶ステップで記憶されたイベント情報の中から、前記デバイス監視ステップによって検知された前記状態変化に対応する前記イベント情報を特定するイベント情報特定ステップと、
前記イベント情報特定ステップで特定された当該イベント情報および前記ＰＣ情報に基づき、前記イベント通知の通知先となる前記クライアント装置を選定するイベント通知先選定ステップと、
前記イベント通知先選定ステップで通知先に選定された前記クライアント装置に前記イベント通知を送信するイベント通知送信ステップと、
を備えることを特徴とするデバイス制御方法。
【請求項７】
前記イベント情報は、他のイベント情報の参照先情報をさらに含み、
前記イベント情報特定ステップで特定された前記イベント情報に前記参照先情報が含まれている場合、
前記イベント通知先選定ステップは、当該参照先情報により参照される前記イベント情報および前記ＰＣ情報に基づき、前記イベント通知の通知先となる前記クライアント装置をさらに選定することを特徴する請求項６に記載のデバイス制御方法。
【請求項８】
前記クライアント装置からの前記イベント情報および前記ＰＣ情報の少なくとも一方を登録するための登録要求を受信する登録要求受信ステップをさらに備え、
前記情報記憶ステップは、前記登録要求受信ステップで受信した当該登録要求に含まれる前記イベント情報および前記ＰＣ情報の少なくとも一方を記憶することを特徴とする請求項６または請求項７に記載のデバイス制御方法。
【請求項９】
前記登録要求の登録結果を前記登録要求の送信元の前記クライアント装置に送信する登録応答送信ステップをさらに備えることを特徴とする請求項８に記載のデバイス制御方法。
【請求項１０】
前記イベント通知を受信した前記クライアント装置からの接続要求に応じて、当該クライアント装置とのセッションを開始するセッション制御ステップをさらに備えることを特徴する請求項６または請求項７に記載のデバイス制御方法。
【請求項１１】
請求項１乃至５のいずれか１項に記載のデバイス制御装置、前記デバイス制御装置とネットワークを介して接続されたクライアント装置と、前記デバイス制御装置にローカル接続されるデバイスから構成されるデバイス制御システムであって、
前記クライアント装置は、
前記デバイス制御装置から前記イベント通知を受信した場合、
当該イベント通知に基づいて、前記デバイス制御装置に前記接続要求を送信することを特徴とするデバイス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してデバイスを制御する機能を備えたデバイス制御装置、デバイス制御方法、及びデバイス制御システムに関するものである。
【背景技術】
【０００２】
ネットワークの普及により、例えば、プリンタ、ストレージ、スキャナなどのデバイスを、ネットワーク上のクライアントＰＣからデバイスサーバを介して共有デバイスとして利用可能とするための実現方法がいくつか提案されている。
【０００３】
その実現方法として、本出願人は、デバイスサーバが自身に接続されているデバイスを監視し、デバイスの状態変化を検知すると、この検知を示す情報（以下、トリガ通知）をクライアントＰＣへ通知することで、クライアントＰＣとデバイスサーバ間でセッションを開始し、デバイスサーバを介してクライアントＰＣとデバイス間でデータ送受信が可能となるデバイス制御システムを提案している（特許文献１参照）。
【０００４】
このデバイス制御システムは、デバイスサーバがデバイスを監視するため、クライアントＰＣによるデバイスの監視（ポーリング）が不要となり、クライアントＰＣが必要となったときだけ当該デバイスを専有できるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特願２００９−２５３３９５
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、出願人自らが先に提案した特許文献１のデバイス制御システムをさらに拡張・発展させ、デバイスサーバがデバイスおよびデバイスサーバ自身の状態変化を検知した場合、検知した状態変化の種類を識別し、その状態変化の種類に応じて、検知した状態変化の種類を示す情報（以下、イベント通知）の通知先を選定し、通知先に選定されたクライアントＰＣに対して、イベント通知を送信することで、検知した状態変化に応じて、最適なクライアントＰＣからデバイスを制御できるようにすることを目的とする。
【０００７】
また、本発明は、イベント通知の通知先に選定されたクライアントＰＣが非稼働であった場合、イベント通知の通知先を稼働中のクライアントＰＣに切り換えることで、システム上のいずれかのクライアントＰＣが稼働している限り、デバイスを制御できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、請求項１に記載のデバイス制御装置は、デバイスとローカル接続し、クライアント装置とネットワークを介して接続されるデバイス制御装置であって、前記デバイスまたは自装置の状態変化に対応づけられた識別情報、イベント通知の通知先情報を含むイベント情報および前記クライアント装置の識別情報を含むＰＣ情報を記憶する情報記憶手段と、前記デバイスおよび自装置の状態変化を監視するデバイス監視手段と、前記デバイス監視手段によって、前記デバイスまたは自装置の状態変化を検知した場合、前記情報記憶手段に記憶されたイベント情報の中から、前記デバイス監視手段によって検知された前記状態変化に対応する前記イベント情報を特定するイベント情報特定手段と、前記イベント情報特定手段で特定された当該イベント情報および前記ＰＣ情報に基づき、前記イベント通知の通知先となる前記クライアント装置を選定するイベント通知先選定手段と、前記イベント通知先選定手段で通知先に選定された前記クライアント装置に前記イベント通知を送信するイベント通知送信手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、デバイスサーバは、検知した状態変化に応じて、イベント通知の通知先のクライアントＰＣを選定することで、検知した状態変化に応じて、最適なクライアントＰＣからデバイスを制御することができる。
【００１０】
また、本発明によれば、イベント通知の通知先に選定されたクライアントＰＣが非稼働であった場合、イベント通知の通知先を稼働中のクライアントＰＣに切り換えることで、システム上のいずれかのクライアントＰＣが稼働している限り、デバイスを制御することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係るデバイス制御システムの概略構成を示す図である。
【図２】パケットのデータ構成を例示する図である。
【図３】クライアントＰＣ１００におけるＰＣスペック情報の決定について説明するフローチャートである。
【図４】イベントとイベント通知先の関係を例示する図である。
【図５】デバイスサーバ２００におけるＰＣ情報／イベント情報の登録について説明するフローチャートである。
【図６】デバイスサーバ２００の情報記憶部２０２に記憶されるＰＣ情報テーブルの一例である。
【図７】実施例１に係るデバイスサーバ２００の情報記憶部２０２に記憶されるイベント情報テーブルの一例である。
【図８】状態情報とイベントの対応関係を例示する図である。
【図９】実施例１に係るデバイスサーバ２００におけるイベント通知について説明するフローチャートである。
【図１０】実施例１に係るＰＣ情報およびイベント情報の登録とイベント通知の過程を示すシーケンス図である。
【図１１】実施例２に係るデバイスサーバ２００の情報記憶部２０２に記憶されるイベント情報テーブルの一例である。
【図１２】実施例２に係るデバイスサーバ２００におけるイベント通知について説明するフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について詳細に説明する。
【実施例１】
【００１３】
実施例１に係る実施の形態を説明する。
＜１．デバイス制御システムの構成＞
図１は、本発明の第１の実施形態に係るデバイス制御システムの概略構成であり、クライアントＰＣ１００（１００Ａ、１００Ｂ、１００Ｃ）、デバイスサーバ２００（２００Ａ、２００Ｂ）、デバイス３００（３００Ａ、３００Ｂ）から構成される。
【００１４】
このデバイス制御システムでは、デバイスサーバ２００とデバイス３００をＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などのインターフェースに準拠した接続ケーブル４００で接続する。また、クライアントＰＣ１００とデバイスサーバ２００は、有線または無線のネットワーク５００で接続する。
【００１５】
デバイス３００（デバイス３００Ａ，デバイス３００Ｂ）は、ＵＳＢインターフェースを持つ汎用的な入出力装置であり、例えば、カードリーダやスキャナなどの単機能周辺装置（ＳＦＰ：Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）、あるいは、プリント、スキャン、コピー、ストレージなどの複数または全部の機能を兼ね備えた多機能周辺機器（ＭＦＰ：Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）である。ただし、これらに限定されるものでなく、別のデバイスであってもよい。なお、デバイス３００が備えるインターフェースは、ＵＳＢインターフェースに限定されるものではなく、ＩＥＥＥ１３９４など他のインターフェースに準拠したものであってもよい。
【００１６】
また、デバイスサーバ２００、デバイス３００をそれぞれ別体の装置として説明したが、これに限定されるものではなく、デバイスサーバ２００をデバイス３００のケーシング内に収まるように一体構造としても良い。
【００１７】
次に、デバイス制御システムを構成する各装置について順次説明する。
【００１８】
＜２．クライアントＰＣ１００の構成＞
クライアントＰＣ１００（クライアント装置）は、一般的なパーソナルコンピュータが備えるハードウェア構成として、ＣＰＵ、入力部、表示部、メモリ、通信部、外部記憶部などが内部バスで接続されている。ＣＰＵはクライアントＰＣ１００内の各部を制御する中央処理装置である。入力部はキーボードやマウス等の操作装置である。表示部は液晶モニタ等の表示装置である。メモリは、ＲＡＭ、ＲＯＭ等の記憶装置である。通信部は、ネットワーク５００（有線又は無線ネットワーク）に接続するためのインターフェースであり、デバイスサーバ２００とデータ送受信が可能となる。外部記憶部は、ハードディスク等の記憶装置である。
【００１９】
なお、本システムでは、システム上の各装置の管理を行う装置（以下、管理用ＰＣ）が必要である。この管理用ＰＣは、デバイスにおけるエラー発生時や処理終了時などにデバイスサーバ２００からエラー情報やログ情報に関するイベント通知（後述）を受信し、エラー情報やログ情報を収集・記憶する点が特徴であり、クライアントＰＣ１００のうちの１台が管理用ＰＣの機能を兼ねる構成であってもよいし、専用の装置であってもよい。
【００２０】
外部記憶部は、ＯＳ（不図示）、制御プログラム１０１、デバイスドライバ１０２、仮想化制御部１０３などのソフトウェアプログラムを格納している。これらのソフトウェアプログラムは、ＣＰＵの制御に従い、メモリ上に読み出されて実行される。なお、外部記憶部には、他の機能に関するソフトウェアプログラムも記憶されているが、本発明に関わるもののみを説明する。
【００２１】
制御プログラム１０１は、デバイスサーバ２００に接続されたデバイス３００のデバイス情報を取得し、取得したデバイス情報をもとに、デバイス３００とのデータ送受信に必要なデバイスドライバ１０２および仮想化制御部１０３を一意に特定し、動的に生成するソフトウェアプログラムである。また、デバイス３００に対して、デバイスドライバ１０２と仮想化制御部１０３を介して、データの送受信を要求するソフトウェアプログラムである。このデバイスドライバ１０２および仮想化制御部１０３がデバイス３００の個体ごとに生成・起動されることによって、デバイス３００個々に仮想化制御が実行される。
【００２２】
さらに、制御プログラム１０１は、ＰＣ情報やイベント情報を設定し、ＰＣ情報を含むＰＣ情報登録要求パケットおよびイベント情報を含むイベント情報登録要求パケットを送信する。ＰＣ情報、イベント情報、ＰＣ情報登録要求パケットおよびイベント情報登録要求パケットの詳細は、後述する。
【００２３】
デバイスドライバ１０２は、ＯＳや制御プログラム１０１などの上位層のソフトウェアプログラムの指示により、デバイス３００に対する制御コマンドを生成・送信し、この制御コマンドに対する応答を受信すると、この応答を上位層のソフトウェアプログラムへ通知するソフトウェアプログラムである。
【００２４】
仮想化制御部１０３は、制御プログラム１０１からデバイスドライバ１０２を介して要求されるデバイス３００へのデータ送受信に対して、デバイス３００がクライアントＰＣ１００に直結しているときと同様の振る舞いを提供する仮想化制御ソフトウェアプログラムである。この「仮想化制御」によって、クライアントＰＣ１００からデバイス３００をローカル接続したときと同じ状態でデータ送受信を行うことができる。
【００２５】
＜３．デバイスサーバ２００の構成＞
デバイスサーバ２００（デバイス制御装置）は、クライアントＰＣと同様に、ＣＰＵ、入力部、表示部、メモリ、通信部、ＵＳＢインターフェース、外部記憶部などから構成されており、これらが内部バスで接続されている。ＵＳＢインターフェースは、接続ケーブル４００でデバイス３００と直結（ローカル接続）してデータ送受信をするためのインターフェースであり、その他の構成については、クライアントＰＣ１００と同様であるため、その説明については省略する。
【００２６】
デバイスサーバ２００は、ネットワーク５００を介してクライアントＰＣ１００と通信することが可能であり、接続ケーブル４００でローカル接続されているデバイス３００とデータ送受信が可能である。
【００２７】
外部記憶部は、仮想化制御部２０１、情報記憶部２０２、イベント制御部２０３などのソフトウェアプログラムを格納している。これらのソフトウェアプログラムは、ＣＰＵの制御に従い、メモリ上に読み出されて実行される。なお、外部記憶部には、他の機能に関するソフトウェアも記憶されているが、本発明に関わるもののみを説明する。
【００２８】
仮想化制御部２０１は、クライアントＰＣ１００との間のセッションを制御（開始、終了）するとともに、クライアントＰＣ１００と通信するための「ネットワークパケット」とデバイス３００との間で送受信する「ＵＳＢデータ」との変換処理を行い、クライアントＰＣ１００とデバイス３００との間のデータ送受信を仲介（中継）するソフトウェアプログラムである。
【００２９】
情報記憶部２０２には、図６に例示するＰＣ情報テーブルや図７に例示するイベント情報テーブルが記憶される。なお、ＰＣ情報テーブルおよびイベント情報テーブルの詳細は、後述する。
【００３０】
イベント制御部２０３は、クライアントＰＣ１００から受信したＰＣ情報登録要求パケットに含まれるＰＣ情報をＰＣ情報テーブルに、イベント情報登録要求パケットに含まれるイベント情報をイベント情報テーブルに登録するソフトウェアプログラムである。また、ローカル接続されたデバイス３００およびデバイスサーバ２００自身に対して一定間隔で監視（ポーリング）を行い、状態変化を検知すると、イベント情報テーブル（後述）を参照して、検知した状態変化に対応づけられたイベント情報を特定し、そのイベントを通知するためのイベント通知パケット（後述）を生成して、指定されたイベント通知先に送信するソフトウェアプログラムである。
【００３１】
イベントとは、デバイスサーバ２００またはデバイス３００の状態変化に対応づけられ、当該状態変化の発生（検知）に伴いシステム上で実行される処理である。
【００３２】
状態変化とは、デバイスサーバ２００やデバイス３００の動作状態の変化であり、例えば、デバイスサーバ２００またはデバイス３００の操作ボタンが押下されたことなどである。この様な状態変化の検知を契機（トリガ）として、検知した状態変化に対応づけられたイベントＩＤ（後述）やイベントを実行するために必要な付加データを送信・通知する「イベント通知」を行う。
【００３３】
＜４．ＰＣ情報またはイベント情報の設定・送信＞
次に、前述のデバイス制御システムにおいて、クライアントＰＣ１００の制御プログラム１０１でＰＣ情報やイベント情報を設定し、ＰＣ情報を登録するためのＰＣ情報登録要求パケットまたはイベント情報を登録するためのイベント情報登録要求パケットをデバイスサーバ２００に送信するまでの一連の流れを説明する。
【００３４】
＜４−１．ＰＣ情報＞
初めに、クライアントＰＣ１００の制御プログラム１０１で設定するＰＣ情報について説明する。図２は、パケットのデータ構成を例示する図である。ＰＣ情報は、図２（ａ）に示すＰＣ情報登録要求パケットによってデバイスサーバ２００に送信される。ＰＣ情報登録要求パケットは、署名データ２１１、電文サイズ２１２、コマンドＩＤ２１３、クライアントＰＣ１００のＩＰアドレス２１４、サブネットマスク２１５、コンピュータ名２１６、ＰＣスペック情報２１７、クライアントＰＣの稼働状態を示す状態情報２１８、暗号化の有無や種類を示す暗号化情報２１９、データ圧縮の有無や種類を示すデータ圧縮情報２２０で構成される。このうちのＩＰアドレス２１４〜データ圧縮情報２２０までがＰＣ情報である。以下にＰＣ情報を構成する各項目（情報）について説明する。
【００３５】
ＰＣスペック情報２１７は、クライアントＰＣ１００のスペック（ＯＳ、ＣＰＵ、メモリなど）や通信設定（暗号化の種類やデータ圧縮の種類）などから決定される情報である。なお、ＰＣスペック情報の決め方は、図３を用いて後述する。
【００３６】
状態情報２１８は、クライアントＰＣ１００の稼働状態を示す情報であり、稼働中か非稼働かの２種類の状態（情報）が格納される。暗号化情報２１９は、暗号化の有無および暗号化の種類を示す情報である。データ圧縮情報２２０は、データ圧縮に関する情報である。
【００３７】
ここで、稼働中とは、クライアントＰＣ１００が正常に動作しており、データ処理を実行することが可能な状態であり、非稼働とは、クライアントＰＣ１００がデータ処理を実行できない状態（例えば、電源ＯＦＦ、スリープ、ハイバーネーション）である。
【００３８】
＜４−１−１．ＰＣスペック情報の算出方法＞
図３は、クライアントＰＣ１００の制御プログラム１０１におけるＰＣスペック情報の算出方法を例示するフローチャートである。ＰＣのスペック（ＯＳ、ＣＰＵ、メモリ）や通信設定（データ暗号化の種類、データ圧縮の種類）に応じて、重みづけの値（以下、加算値）を算出し、それらを合計したものをＰＣスペック情報として設定する。なお、本フローチャート中に示す加算値は大きく（多く）なるほど性能が高い（良い）ことを示す。
【００３９】
制御プログラム１０１は、初めにクライアントＰＣ１００のＯＳの種類を判定する（ステップＳ３０１）。その後、ＯＳの性能（種類）に応じて、加算値を算出し、加算する。例えば、ＯＳの種類がＯＳ１の場合は、０加算（加算なし）とし（ステップＳ３０２）、ＯＳ２の場合は、０.５を加算し（ステップＳ３０３）、ＯＳ３の場合は、１.０を加算する（ステップＳ３０４）。
【００４０】
次に、ＣＰＵの性能（クロック数）に応じて、加算値を算出し、加算する（ステップＳ３０５）。例えば、ＣＰＵが３．００ＧＨｚならば３．００を加算する。
【００４１】
さらに、メモリの性能（容量）に応じて、加算値を算出し、加算する（ステップＳ３０６）。例えば、メモリが１ＧＢならば１．００を加算する。
【００４２】
その次に、クライアントＰＣ１００とデバイスサーバ２００の間でネットワークを介して送受信されるデータの暗号化の種類を判定する（ステップＳ３０７）。その後、データ暗号化の種類に応じて、加算値を算出し、加算する。例えば、プロトコルａを用いて暗号化を行う場合は、０加算（加算なし）とし（ステップＳ３０８）、プロトコルｂを用いて暗号化を行う場合は、０.２を加算し（ステップＳ３０９）、暗号化を行なわない場合は、０.５を加算する（ステップＳ３１０）。
【００４３】
さらに、クライアントＰＣ１００とデバイスサーバ２００の間でネットワークを介して送受信されるデータの圧縮の有無を判別する（ステップＳ３１１）。その後、データ圧縮の有無に応じて、加算値を算出し、加算する。例えば、データ圧縮なしの場合、０加算（加算なし）とし（ステップＳ３１２）、データ圧縮ありの場合は、０. １を加算する（ステップＳ３１３）。なお、データ圧縮の種類に応じて、加算値は異なる。
【００４４】
最後に、減算処理が必要か判断する（ステップＳ３１４）。例えば、自装置（クライアントＰＣ１００）で処理が集中している場合に減算処理が必要と判断する。
【００４５】
ステップＳ３１４において、減算処理が必要と判断した場合（ステップＳ３１４でＹｅｓ）、所定値（例えば、０．１）の減算処理を行い（ステップＳ３１５）、本処理を終了する。
【００４６】
一方、ステップＳ３１４において、減算処理を不要と判断した場合（ステップＳ３１４でＮｏ）、減算処理を行わずに本処理を終了する。この制御フローに基づく処理を行うことにより加算値の合計を算出し、この値をクライアントＰＣ１００のＰＣスペック情報として設定する。
【００４７】
＜４−２．イベント情報＞
次に、クライアントＰＣ１００の制御プログラム１０１で設定するイベント情報について説明する。
【００４８】
イベント情報は、図２（ｂ）に示すイベント情報登録要求パケットによってデバイスサーバ２００に送信される。イベント情報登録要求パケットは、署名データ２２１、電文サイズ２２２、コマンドＩＤ２２３、イベントＩＤ２２４、イベント通知先情報２２５、結果通知先情報２２６、付加データ２２７で構成される。このうちのイベントＩＤ２２４〜付加データ２２７までがイベント情報である。以下にイベント情報を構成する各項目（情報）について説明する。
【００４９】
イベントＩＤ２２４は、イベントまたは状態変化を識別するための識別情報である。なお、イベントＩＤを指定せずに、具体的なイベントを識別するための名称（例えば、スキャン）を指定し、そのイベントの名称に対応づけられたイベントＩＤが指定されるようにしてもよい。
【００５０】
イベント通知先情報２２５は、デバイスサーバ２００のイベント制御部２０３で検知した状態変化に対応づけられたイベントＩＤの通知先に関する情報である。「全登録ＰＣ」、「固定ＰＣ」、「ＰＣスペック優先」、「応答時間優先」、「いずれかのＰＣ」のいずれかを指定する。
【００５１】
イベント通知先が「全登録ＰＣ」の場合は、ＰＣ情報テーブルに登録されている全てのクライアントＰＣ１００にイベント通知を行う。「固定ＰＣ」の場合は、指定された固定ＰＣにのみにイベント通知を行う。「ＰＣスペック優先」の場合は、ＰＣ情報テーブルのＰＣスペック優先情報（後述）を参照し、該当のクライアントＰＣ１００にイベント通知を行う。「応答時間優先」の場合は、ＰＣ情報テーブルの応答時間優先情報（後述）を参照し、該当のクライアントＰＣ１００にイベント通知を行う。「いずれかのＰＣ」の場合は、処理可能なクライアントＰＣ１００をデバイスサーバ２００側で選定し、そのクライアントＰＣ１００にイベント通知を行う。
【００５２】
結果通知先情報２２６は、イベントの処理結果の通知先に関する情報である。例えば、クライアントＰＣ１００のコンピュータ名やＩＰアドレスを必要に応じて指定する。イベント通知先と結果通知先が同一の場合は、結果通知先情報に関する指定を省略することができる。
【００５３】
付加データ２２７は、デバイスサーバ２００に対して、イベント情報の設定を行う際にイベント情報登録要求パケットに付加するデータであり、必要に応じて指定する。
【００５４】
ここで、イベントとイベント通知先の対応関係について図４を用いて説明する。
【００５５】
このイベントとイベント通知先の対応関係は、システム上で定めたルール（情報）であり、システム上のいずれかの装置で保持していて、この情報を参照すればよい。クライアントＰＣ１００にこの対応関係を保持していれば、制御プログラム１０１でイベント情報を設定する場合、この対応関係に従って、許可されている組み合わせ（イベントとイベント通知先）のみ設定できる。
【００５６】
例えば、イベントがプラグアンドプレイの場合、全登録ＰＣにイベント通知を行う必要があるので、イベントの通知先として「全登録ＰＣ」に許可することを示している。なお、プラグアンドプレイとは、クライアントＰＣ１００にデバイスドライバがインストールされていない場合は、デバイスドライバのインストールを行って、デバイスを利用可能な状態にすることである。
【００５７】
イベントがスキャンの場合、１台のクライアントＰＣでデバイスを制御できればよいので、イベント通知先として「固定ＰＣ」、「ＰＣスペック優先」、「応答時間優先」、「いずれかのＰＣ」を許可し、「全登録ＰＣ」は許可しないことを示している。
【００５８】
イベントが音声通信の場合、特定のＰＣのみに音声を送信すればよいので、イベント通知先として「固定ＰＣ」のみを許可し、それ以外の通知先は許可しないことを示している。
【００５９】
上述したＰＣ情報またはイベント情報の設定が完了すると、ＰＣ情報を含むＰＣ情報登録要求パケットまたはイベント情報を含むイベント情報登録要求パケットをデバイスサーバ２００に送信する。
【００６０】
なお、クライアントＰＣ１００は、ユーザからの設定・送信指示に基づいて、ＰＣ情報登録要求パケットまたはイベント情報登録要求パケットを送信するようにしてもよいし、ＰＣ情報またはイベント情報が変更される度にＰＣ情報登録要求パケットまたはイベント情報を送信するようにしてもよい。
【００６１】
＜５．デバイスサーバ２００におけるＰＣ情報またはイベント情報の登録＞
デバイスサーバ２００において、クライアントＰＣ１００から受信したＰＣ情報・イベント情報を情報テーブルに登録するまでの一連の流れを説明する。
【００６２】
＜５−１．ＰＣ情報またはイベント情報の登録制御＞
図５は、デバイスサーバ２００におけるＰＣ情報またはイベント情報の登録について説明するフローチャートである。
【００６３】
デバイスサーバ２００において、クライアントＰＣ１００からＰＣ情報登録要求パケットまたはイベント情報登録要求パケットを受信した場合、図５のフローが開始される。
【００６４】
イベント制御部２０３は、ＰＣ情報登録要求パケットに含まれるＰＣ情報をＰＣ情報テーブルに、イベント情報登録要求パケットに含まれるイベント情報をイベント情報テーブルに登録する（ステップＳ５０１）。
【００６５】
ＰＣ情報またはイベント情報の登録完了後、イベント制御部２０３は、ＰＣ情報登録要求パケットまたはイベント情報登録要求パケットを送信したクライアントＰＣ１００（送信元）に対して、ＰＣ情報またはイベント情報の登録が完了した旨（登録結果）を通知するためにＰＣ情報登録応答パケットまたはイベント情報登録応答パケットを返送して（ステップＳ５０２）、本処理を終了する。
【００６６】
ここで、図２（ｃ）に示すＰＣ情報登録応答パケットと図２（ｄ）に示すイベント情報登録応答パケットの詳細について説明する。
【００６７】
図２（ｃ）に示すＰＣ情報登録応答パケットは、署名データ２３１、電文サイズ２３２、コマンドＩＤ２３３、登録成否情報２３４、ＰＣスペック優先フラグ２３５、応答時間優先フラグ２３６から構成される。
【００６８】
登録成否情報２３４は、ＰＣ情報の登録の成否に関する情報が格納される。ＰＣスペック優先フラグ２３５は、ＰＣ情報テーブルのＰＣスペック優先情報６１２（後述）を参照し、イベント通知先が「スペック優先」で該当のクライアントＰＣ１００が選択される場合にフラグがＯＮになる。また、応答時間優先フラグ２３６は、ＰＣ情報テーブルの応答時間優先情報６１３（後述）を参照し、イベント通知先が「応答時間優先」で該当のクライアントＰＣ１００が選択される場合にフラグがＯＮになる。
【００６９】
図２（ｄ）に示すイベント情報登録応答パケットは、署名データ２４１、電文サイズ２４２、コマンドＩＤ２４３、イベントＩＤ２４４、登録成否情報２４５から構成され、登録成否情報は、イベント情報の登録の成否に関する情報が格納される。
【００７０】
以下にデバイスサーバ２００のＰＣ情報テーブルとイベント情報テーブルについて説明する。
【００７１】
＜５−２．ＰＣ情報テーブルの構成＞
図６は、ＰＣ情報テーブルの一例を示したものであり、ＰＣ情報登録件数６１１、ＰＣスペック優先情報６１２、応答時間優先情報６１３とクライアントＰＣ１００のＰＣ情報（１〜Ｎ台）が格納されている。
【００７２】
ＰＣ情報登録件数６１１には、ＰＣ情報テーブルに登録されているＰＣ情報の数が格納される。
【００７３】
ＰＣスペック優先情報６１２には、ＰＣ情報テーブルに登録されているクライアントＰＣ１００の中でＰＣスペック情報が一番高いクライアントＰＣ１００の識別情報が格納される。なお、ＰＣスペック情報の高い順に複数のクライアントＰＣ１００の識別情報が格納されてもよい。
【００７４】
応答時間優先情報６１３には、ＰＣ情報テーブルに登録されているクライアントＰＣ１００の中で応答時間が一番短いクライアントＰＣ１００の識別情報が格納される。なお、応答時間の短い順に複数のクライアントＰＣ１００の識別情報が格納されてもよい。
【００７５】
上記で説明したＰＣ情報登録件数６１１、ＰＣスペック優先情報６１２、応答時間優先情報６１３は、ＰＣ情報の追加・削除・変更が行なわれるたびに更新される。
【００７６】
ＰＣ情報は、ＩＰアドレス６２１、サブネットマスク６２２、コンピュータ名６２３、ＰＣスペック情報６２４、状態情報６２５、暗号化情報６２６、データ圧縮情報６２７および応答時間情報６２８から構成される。このＰＣ情報には、図２（ａ）に示すＰＣ情報登録要求パケットに含まれるＩＰアドレス２１４からデータ圧縮情報２２０までの各情報が格納される。なお、応答時間情報６２８には、ＰＣ情報登録要求パケットの受信に応じてデバイスサーバ２００からクライアントＰＣ１００へ送信されたベンチマーク（処理性能測定）テストの実行モジュールに対する、クライアントＰＣ１００の処理性能結果（演算時間）と、実行モジュールの送信と処理性能結果の受信に要する時間（通信時間）が格納される。
【００７７】
なお、ＰＣ情報テーブルには全クライアントＰＣではなく稼働中のクライアントＰＣ１００のＰＣ情報のみを記憶（保持）するようにしてもよい。
【００７８】
＜５−３．イベント情報テーブルの構成＞
図７はイベント情報テーブルの一例を示したものであり、１以上のイベント情報で構成され、デバイスサーバ２００が検知可能な状態変化数分（１からＮ種類）のイベント情報を登録可能である。
【００７９】
なお、イベント情報登録テーブルに登録されるイベント情報は、イベント情報登録要求パケットの受信に応じて登録するもの（例えば、状態変化がボタンの押下）と、予めイベント情報テーブルに登録しておくもの（例えば、状態変化がエラー発生の場合）がある。
【００８０】
イベント情報テーブルに登録するイベント情報は、イベントＩＤ７１１、サイズ７１２、イベント通知先情報７１３、結果通知先情報７１４、付加データ７１５から構成される。イベントＩＤ７１１は、イベントを識別するための識別情報であり、サイズ７１２は、イベント情報のサイズを示す情報である。なお、結果通知先情報７１４および付加データ７１５は必須の項目でないため、情報が格納されない場合もある。
【００８１】
イベント情報登録要求パケットの受信に応じて登録するイベント情報については、クライアントＰＣ１００から受信したイベント情報登録要求パケットに含まれるイベントＩＤ２２４から付加データ２２７までの各情報が格納される。
【００８２】
また、クライアントＰＣ１００およびデバイスサーバ２００は、図８に示す状態変化とイベントの対応関係を示したリストを記憶する。
【００８３】
例えば、状態変化「エラー発生」、「イベント処理完了」、「プラグイン」、「スキャンボタンの押下」に対して、イベント「エラー通知」、「ログ情報通知」、「プラグイン」、「スキャン」がそれぞれ対応付けられて、各々にユニークな情報（イベントＩＤ）が割り振られている。
【００８４】
＜６．実施例１に係るデバイスサーバ２００におけるイベント通知の制御＞
デバイスサーバ２００におけるイベント通知について、図９のフローチャートを用いて説明する。
【００８５】
デバイスサーバ２００のイベント制御部２０３において、デバイス３００またはデバイスサーバ２００自身の状態変化を監視し、状態変化を検知した場合、図９のフローが開始される。
【００８６】
イベント制御部２０３は、情報記憶部２０２に記憶されているイベント情報テーブルおよびＰＣ情報テーブルを参照し、検知した状態変化に対応づけられたイベントＩＤからイベント情報を特定し、イベント通知先情報、結果通知先情報を確認する（ステップＳ９０１）。
【００８７】
イベント制御部２０３は、イベント通知先情報からイベント通知先を選定し（ステップＳ９０２）、イベント通知パケットを生成して、送信することで、イベント通知を行う（ステップＳ９０３）。
【００８８】
なお、イベントがプラグアンドプレイの場合、全登録ＰＣにイベント通知を行うため（図４参照）、デバイスサーバ２００は、ユニキャストによって各クライアントＰＣに順次、イベント通知を行う。
【００８９】
その後、イベント通知先のクライアントＰＣからイベント通知応答パケットを受信する（ステップＳ９０４）。なお、イベント通知応答パケット（後述）には、イベントの処理の成否に関する情報やデータが格納される。
【００９０】
イベント通知応答パケット受信後、イベントの処理結果の転送が必要かどうかを判断する（ステップＳ９０５）。
【００９１】
イベントの処理結果の転送が不要と判断した場合（ステップＳ９０５でＹｅｓ）、本処理を終了する。
【００９２】
一方、イベントの処理結果の転送が必要と判断した場合（ステップＳ９０５でＮｏ）、イベント情報の結果通知先情報から結果通知先を選定して（ステップＳ９０６）、イベントの処理結果を送信し（ステップＳ９０７）、本処理を終了する。なお、イベントの処理結果の転送が必要な例として、処理結果に転送を要する情報やデータが含まれ、かつ、イベント情報のイベント通知先情報と結果通知先情報が異なる場合がある。
【００９３】
ここで、図２（ｅ）に示すイベント通知パケットと図２（ｆ）に示すイベント通知応答パケットの詳細について説明する。
【００９４】
図２（ｅ）に示すイベント通知パケットは、署名データ２５１、電文サイズ２５２、コマンドＩＤ２５３、イベントＩＤ２５４、付加データ２５５から構成される。付加データ２５５は、制御プログラム１０１で指定されたデータが付加される。
【００９５】
図２（ｆ）に示すイベント通知応答パケットは、署名データ２６１、電文サイズ２６２、コマンドＩＤ２６３、イベントＩＤ２６４、処理結果情報２６５から構成される。処理結果情報２６５は、イベントの処理実行の成否に関する情報やデータが格納される。
【００９６】
＜７．実施例１に係る概略シーケンス＞
図１０は、本デバイス制御システムにおけるＰＣ情報・イベント情報の登録とイベント通知の過程を示すシーケンス図である。ここでは、クライアントＰＣｃ１００Ｃを管理用ＰＣ、デバイス３００をスキャナとし、クライアントＰＣａ１００Ａがデバイスサーバａ２００Ａを介してスキャンデータを取得する場合について説明する。
【００９７】
初めに、クライアントＰＣａ１００Ａ〜クライアントＰＣｃ１００ＣのＰＣ情報をデバイスサーバａ２００Ａに登録する場合について説明する。クライアントＰＣａ１００Ａは、制御プログラム１０１によって、ＰＣ情報を設定し、デバイスサーバａ２００Ａに対して、ＰＣ情報登録要求パケットを送信する（タイミングＴ１００１）。デバイスサーバａ２００Ａは、ＰＣ情報登録要求パケットを受信すると、ＰＣ情報登録要求パケットに含まれるＰＣ情報をＰＣ情報テーブルに登録し（タイミングＴ１００２）、クライアントＰＣａ１００Ａに対して、ＰＣ情報登録応答パケットを送信する（タイミングＴ１００３）。
【００９８】
上述したクライアントＰＣａ１００ＡのＰＣ情報登録要求パケットの送信からＰＣ情報登録応答パケット送信の過程（タイミングＴ１００１〜タイミングＴ１００３）を、クライアントＰＣｂ１００ＢおよびクライアントＰＣｃ１００Ｃについても同様に行うので、図示を省略し、説明も省略する。
【００９９】
次に、デバイスサーバａ２００Ａにおいて、プラグアンドプレイに関するイベント情報を登録する場合について説明する。クライアントＰＣａ１００Ａは、制御プログラム１０１でイベント情報を設定する際に、図４に例示したイベントとイベント通知先の対応関係を示したリストと、図８に例示した状態変化、イベント、イベントＩＤの対応関係を示したリストを参照し、イベント情報を設定する。例えば、プラグアンドプレイに関するイベントを設定する場合、イベントＩＤを「３」、イベント通知先を「全登録ＰＣ」に設定したイベント情報登録要求パケットをデバイスサーバａ２００Ａに送信する（タイミングＴ１００４）。
【０１００】
デバイスサーバａ２００Ａは、プラグアンドプレイに関するイベント情報登録要求パケットを受信すると、イベント情報登録要求パケットに含まれるイベント情報をイベント情報テーブルに登録し（タイミングＴ１００５）、クライアントＰＣａ１００Ａにイベント情報登録応答パケットを送信する（タイミングＴ１００６）。この後、イベント制御部２０３は、プラグアンドプレイに対応するデバイス３００の状態変化（プラグイン）の監視・検知を開始する。
【０１０１】
デバイスａ３００Ａがデバイスサーバａ２００Ａに接続されると（タイミングＴ１００７）、デバイスサーバａ２００Ａのイベント制御部２０３は、プラグアンドプレイに該当する状態変化（プラグイン）を検知し（タイミングＴ１００８）、デバイスａ３００Ａからデバイス情報を取得する。
【０１０２】
デバイスサーバａ２００Ａの仮想化制御部２０１は、デバイスａ３００Ａから取得したデバイス情報を外部記憶部またはメモリに登録する（タイミングＴ１００９）。なお、デバイス情報にシリアル番号が格納されていない場合、デバイスサーバ２００の有する固有情報（例：ＩＰアドレス、ＭＡＣアドレス）と、デバイスサーバ２００の接続ポート固有情報（例：ＵＳＢポートの番号）からシリアル番号を生成し、付与することで、シリアル番号が格納されていない同一機種のデバイス３００が複数接続された場合でも、クライアントＰＣ１００から識別可能となる。
【０１０３】
イベント制御部２０３は、検知した状態変化（プラグイン）から情報記憶部２０２に記憶されているイベント情報テーブルおよびＰＣ情報テーブルを参照して、イベント情報を特定し、この状態変化（プラグイン）に関するイベント（プラグアンドプレイ）のイベント通知先を選定する（タイミングＴ１０１０）。ここでは、プラグアンドプレイのイベント通知先が全登録ＰＣ（図４参照）なので、ユニキャストにより、各クライアントＰＣ１００に順次、イベント通知を行うことになる。
【０１０４】
イベント制御部２０３は、クライアントＰＣａ１００Ａにプラグアンドプレイに関するイベント通知パケットを送信する（タイミングＴ１０１１）。このとき、イベント通知パケットの付加データ２５５として、デバイスａ３００Ａのデバイスドライバとデバイス情報を格納する。
【０１０５】
クライアントＰＣ１００の制御プログラム１０１は、デバイスサーバａ２００Ａからイベント通知パケットを受信することで、デバイスａ３００Ａのデバイス情報を取得する。なお、デバイスサーバ２００がデバイス３００から取得したデバイス情報にシリアル番号が格納されるが、デバイス情報にシリアル番号が記述されていない場合には、デバイスサーバ２００の有する固有情報と、デバイスサーバ２００の接続ポート固有情報から生成されたシリアル番号が格納される。
【０１０６】
クライアントＰＣ１００は、取得したデバイスドライバおよびデバイス情報を元に、制御プログラム１０１によってデバイスドライバ１０２と仮想化制御部１０３が生成・起動され、「仮想化制御」が行なわれる（タイミングＴ１０１２）。
【０１０７】
クライアントＰＣａ１００Ａは、仮想化制御が行なわれ、デバイス３００とデータ送受信ができる状態になった後、デバイスサーバａ２００Ａに対して、イベント応答通知パケットを送信する（タイミングＴ１０１３）。
【０１０８】
上述したクライアントＰＣａ１００Ａに対するイベント通知送信からクライアントＰＣａ１００Ａのイベント通知応答送信までの過程（タイミングＴ１０１１〜タイミングＴ１０１３）を、クライアントＰＣｂ１００ＢおよびクライアントＰＣｃ１００Ｃについても同様に行うので、図示を省略し、説明も省略する。
【０１０９】
これまでの過程が完了すると、クライアントＰＣａ１００Ａ〜クライアントＰＣｃ１００Ｃにおいて、仮想化制御が行われ、デバイスａ３００Ａでのスキャン実行の準備が整い、スキャンの実行が可能になる。
【０１１０】
次に、スキャンに関するイベント登録について説明する。クライアントＰＣａ１００Ａは、制御プログラム１０１でイベントＩＤを「４」、イベント通知先情報を「ＰＣスペック優先」、結果通知先情報を「クライアントＰＣａ１００Ａ」としてイベント情報を設定し、スキャンに関するイベント情報登録要求パケットをデバイスサーバａ２００Ａに送信する（タイミングＴ１０１４）。
【０１１１】
デバイスサーバａ２００Ａは、スキャンに関するイベント情報登録要求パケットを受信すると、イベント情報登録要求パケットに含まれるイベント情報をイベント情報テーブルに登録し（タイミングＴ１０１５）、クライアントＰＣａ１００Ａに対してイベント情報登録応答パケットを送信する（タイミングＴ１０１６）。この後、イベント制御部２０３は、スキャンに対応するデバイス３００の状態変化（例：スキャンボタンの押下）の監視・検知を開始する。
【０１１２】
デバイスサーバ２００による状態変化の監視中にデバイスａ３００Ａでエラーが発生した場合（タイミングＴ１０１７）、デバイスサーバａ２００Ａのイベント制御部２０３は、デバイスａ３００Ａでエラーが発生したことを検知し（タイミングＴ１０１８）、情報記憶部２０２に記憶されているイベント情報テーブルおよびＰＣ情報テーブルを参照して、イベント通知先をクライアントＰＣｃ１００Ｃ（管理用ＰＣ）に選定し（タイミングＴ１０１９）、エラーに関するイベント通知パケットを送信する（タイミングＴ１０２０）。
【０１１３】
クライアントＰＣｃ１００Ｃ（管理用ＰＣ）の制御プログラム１０１は、仮想化制御部１０３を介してデバイスサーバａ２００Ａからイベント通知パケットを受信すると、イベント通知パケットのイベントＩＤからイベント（エラー通知）を特定する。さらに、デバイスａ３００Ａの詳細なエラー情報を取得するために、デバイスサーバａ２００Ａとのセッションを開始する（タイミングＴ１０２１）
【０１１４】
クライアントＰＣｃ１００Ｃ（管理用ＰＣ）は、デバイスサーバａ２００Ａを介してデバイスａ３００Ａから詳細なエラー情報を取得する（タイミングＴ１０２２）。
【０１１５】
クライアントＰＣｃ１００Ｃ（管理用ＰＣ）は、デバイスａ３００Ａの詳細なエラー情報を取得後、デバイスサーバａ２００Ａとのセッションを終了する（タイミングＴ１０２３）。
【０１１６】
詳細なエラー情報を確認した後、システム管理者が、デバイスａ３００Ａに移動して、復旧処置（操作）を施したり、クライアントＰＣｃ１００Ｃ（管理用ＰＣ）からデバイスａ３００Ａに復旧のコマンドや命令を送信することで、デバイスａ３００Ａのエラーが解除（復旧）される（タイミングＴ１０２４）。
【０１１７】
その後、ユーザによって、デバイスａ３００Ａのスキャンボタンが押下されると（タイミングＴ１０２５）、デバイスサーバａ２００Ａのイベント制御部２０３は、デバイス３００における状態変化（スキャンボタンの押下）を検知し（タイミングＴ１０２６）、情報記憶部２０２に記憶されているイベント情報テーブルおよびＰＣ情報テーブルを参照して、検知した状態変化からイベント情報を特定し、イベント通知先を選定する（タイミングＴ１０２７）。ここでは、検出した状態変化「デバイス３００のスキャンボタン押下」からイベント情報を特定し、そのイベント情報のイベント通知先が「ＰＣスペック優先」のとき、ＰＣ情報テーブルのＰＣスペック優先情報６１２を参照して、ＰＣスペック情報が最も高いクライアントＰＣｂ１００Ｂがイベント通知先として選定された場合について説明する。
【０１１８】
デバイスサーバａ２００Ａのイベント制御部２０３は、検出した状態変化（スキャンボタンの押下）に対応づけられたイベントＩＤを含むイベント通知パケットをクライアントＰＣｂ１００Ｂに送信する（タイミングＴ１０２８）。
【０１１９】
クライアントＰＣｂ１００Ｂの制御プログラム１０１は、仮想化制御部１０３を介してデバイスサーバａ２００Ａからイベント通知パケットを受信すると、イベント通知パケットのイベントＩＤからイベント（スキャン）を特定し、その後、クライアントＰＣｂ１００Ｂ上で制御プログラム１０１が実行される（タイミングＴ１０２９）。
【０１２０】
クライアントＰＣｂ１００Ｂは、制御プログラム１０１によって、イベント通知パケット内のコマンドＩＤおよびイベントＩＤに応じて、デバイスａ３００Ａとデータ送受信（スキャン）を行うことを決定し、仮想化制御部１０３を介して、デバイスサーバａ２００Ａに接続要求を送信し、デバイスサーバａ２００Ａとのセッションを開始する（タイミングＴ１０３０）。
【０１２１】
クライアントＰＣｂ１００Ｂの仮想化制御部１０３は、デバイスサーバａ２００Ａを介してデバイスａ３００Ａとの間でデータ送受信用パケットを用いてデータ送受信を実施し、デバイスａ３００Ａにおける実行結果（スキャンデータ）を取得する（タイミングＴ１０３１）。
【０１２２】
クライアントＰＣｂ１００Ｂにおいてデータの送受信が終了した場合、制御プログラム１０１を終了し（タイミングＴ１０３２）、仮想化制御部１０３は、デバイスサーバａ２００Ａとのセッションを終了し、スキャンデータを含むイベント応答通知パケットを送信する（タイミングＴ１０３３）。
【０１２３】
デバイスサーバａ２００Ａは、クライアントＰＣｂ１００Ｂからスキャンデータを含むイベント応答通知パケットを受信後、イベント情報の結果通知先情報に指定されているクライアントＰＣａ１００Ａに対して、転送する（タイミングＴ１０３４）。
【０１２４】
デバイスサーバａ２００Ａは、クライアントＰＣａ１００Ａに処理結果通知パケットの送信に伴い、イベントの完了（状態変化）を検知（認識）し（タイミングＴ１０３５）、検知した状態変化からイベント情報を特定して、イベント通知先を選定し（タイミングＴ１０３６）、ログ情報を通知するためのイベント通知パケットをクライアントＰＣｃ１００Ｃ（管理用ＰＣ）に送信する（タイミングＴ１０３７）。
【０１２５】
なお、タイミングＴ１０２７において、イベント通知先に選定したクライアントＰＣｂ１００Ｂが非稼働の場合は、ＰＣスペック情報が２番目に高く、かつ、稼働中のクライアントＰＣ１００（例えば、クライアントＰＣａ１００Ａ）にイベント通知先を切り換えて、イベント通知を行う。
【０１２６】
また、タイミングＴ１０２７において、イベント通知先としてクライアントＰＣａ１００Ａが選定され、イベント通知先と結果送信先が同一のクライアントＰＣ（クライアントＰＣａ１００Ａ）となる場合がある。この場合、タイミングＴ１０３３において、クライアントＰＣ（クライアントＰＣａ１００Ａ）は、イベント通知応答パケットにスキャンデータを付加せずに送信し、タイミングＴ１０３４において、デバイスサーバ２００は、処理結果（スキャンデータ）の送信処理を行わなくてもよい。
【０１２７】
上述したとおり、実施例１のデバイス制御システムでは、デバイスサーバ２００は、クライアントＰＣ１００から送信されたＰＣ情報をＰＣ情報テーブルに、イベント情報をイベント情報テーブルに登録し、デバイス３００またはデバイスサーバ２００の状態変化を検知した場合に、ＰＣ情報テーブルおよびイベント情報テーブルを参照して、状態変化に対応づけられたイベント情報を特定し、そのイベント情報からイベント通知を行うクライアントＰＣを決定することで、検知した状態変化に応じて、最適なクライアントＰＣからデバイスを制御することができる。
【０１２８】
また、イベント通知の通知先に選定されたクライアントＰＣが非稼働であった場合、イベント通知先を稼働中のクライアントＰＣ１００に切り換えるので、システム上のいずれかのクライアントＰＣが稼働している限り、稼働しているクライアントＰＣにイベント通知を行い、イベントを実行することができる。
【０１２９】
さらに、クライアントＰＣ１００毎に異なる通信設定（暗号化やデータ圧縮の有無や種類など）をデバイスサーバ２００に登録することで、複数のＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を備えなくとも１つのＮＩＣを備えるだけで、クライアントＰＣ毎に異なる通信設定で通信することができる。
【実施例２】
【０１３０】
次に、本発明の実施例２に係る実施の形態について図面を参照して詳細に説明する。なお、本発明の第２の実施例に係るデバイス制御システムは、その構成が上記第１の実施例で説明した図１のデバイス制御システムと同じであり、上述した構成要素については同一の符号を付して、その説明を省略する。
【０１３１】
実施例２に係る実施の形態では、デバイスサーバ２００が、状態変化に対応したイベント情報に含まれるイベント情報参照先情報（後述）を参照して、あるイベント（親のイベント）を処理する前に、イベント情報参照先情報で指定されたイベント（子のイベント）を処理するというように、複数のイベント情報を用いて、イベント通知を行い、イベントの処理を行う点が特徴である。
【０１３２】
＜８．実施例２に係るイベント情報テーブル＞
図１１は、実施例２に係るイベント情報テーブルおよびイベント情報を例示したものである。実施例２に係るイベント情報は、実施例１で説明した結果通知先情報を含まずにイベント情報参照先情報１１１４を含む点が特徴である。
【０１３３】
イベント情報参照先情報１１１４は、イベント情報内のイベント通知先情報１１１３で指定された通知先に対してイベント通知を行う前に、予め処理を行う必要があるイベントのイベント情報に関する情報である。例えば、イベント情報名、イベントＩＤなどが格納される。
【０１３４】
＜９．実施例２に係るデバイスサーバ２００におけるイベント通知の制御＞
図１２は、実施例２に係るデバイスサーバのイベント通知について説明するフローチャートである。なお、実施例１と同様に、デバイスサーバ２００のイベント制御部２０３において、デバイス３００またはデバイスサーバ２００自身の状態変化を監視し、状態変化を検知した場合、図１２のフローが開始される。
【０１３５】
これ以降は、スキャンに関するイベント通知を行う場合について説明する。なお、イベント情報テーブルに登録されているイベント情報１とイベント情報２が親子関係にあるものとし、イベント情報１（親のイベント情報）のイベント情報参照先情報には、イベント情報２（子のイベント情報）の識別情報が格納されているものとする。
【０１３６】
イベント制御部２０３は、情報記憶部２０２に記憶されているイベント情報テーブルおよびＰＣ情報テーブルを参照し、検知した状態変化（スキャンボタンの押下）からイベント情報を特定する（ステップＳ１２０１）。
【０１３７】
イベント制御部２０３は、ステップＳ１２０１で特定したイベント情報（イベント情報１）にイベント情報参照先情報があるか判断する（ステップＳ１２０２）。
【０１３８】
ステップＳ１２０２において、イベント情報にイベント情報参照先情報がない場合（ステップＳ１２０２でＹｅｓ）、イベント制御部２０３は、イベント情報テーブルおよびＰＣ情報テーブルを参照して、イベント情報（イベント情報１）からイベント通知先を選定し（ステップＳ１２０３）、イベント通知パケットを生成して、送信することで、イベント通知（スキャンに関するイベント通知）を行う（ステップＳ１２０４）。
【０１３９】
その後、イベント通知先からイベントの処理結果を含むイベント通知応答パケットを受信し（ステップＳ１２０５）、本処理を終了する。なお、イベント通知が管理用ＰＣに対するエラー通知やログ情報の通知の場合、管理用ＰＣは、イベント通知応答パケットの送信を行なわないようにしてもよい。
【０１４０】
一方、ステップＳ１２０２において、イベント情報（イベント情報１）にイベント情報参照先情報がある場合（ステップＳ１２０２でＮｏ）、イベント制御部２０３は、イベント情報参照先情報から参照先のイベント情報（イベント情報２）を特定する（ステップＳ１２０６）。
【０１４１】
ステップＳ１２０６で特定したイベント情報に基づいて、イベント制御部２０３は、イベント通知先を選定し（ステップＳ１２０７）、イベント通知パケットを生成して、送信することで、イベント通知を行う（ステップＳ１２０８）。その後、イベント通知先からイベントの処理結果（例えば、スキャンデータ）を含むイベント通知応答パケットを受信する（ステップＳ１２０９）。
【０１４２】
イベント制御部２０３は、ステップＳ１２０９において、イベント通知応答パケットを受信した後、参照元のイベント情報（イベント情報１）に基づいて、イベント通知先を選定し（ステップＳ１２０３）、イベントの処理結果（例えば、スキャンデータ）を含むイベント通知を行う（ステップＳ１２０４）。その後、イベント通知先からイベント通知応答パケットを受信し（ステップＳ１２０５）、本処理を終了する。
【０１４３】
なお、イベント情報に複数のイベント情報参照先情報が格納されている場合、その数に応じて、ステップＳ１２０６からステップＳ１２０９の処理を繰り返し行う。
【０１４４】
また、イベント情報参照先情報は、クライアントＰＣ１００で設定してもよいし、デバイスサーバ２００が登録してもよい。
【０１４５】
上述したとおり、実施例２のデバイス制御システムでは、デバイスサーバ２００がイベント情報のイベント参照先情報を参照してイベント通知を行うことで、検知した状態変化に応じた最適なクライアントＰＣからデバイスを制御することができる。
【０１４６】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【０１４７】
デバイスサーバ２００は、イベント情報テーブルにイベント情報を登録する際に、イベント通知の有効回数、有効期限、有効時間帯も併せて登録し、有効回数に達したイベント情報や有効期限が切れたイベント情報を削除してもよい。また、イベント通知の有効時間帯以外は、イベント通知を行なわないように制御してもよい。
【０１４８】
クライアントＰＣ１００はＰＣ情報またはイベント情報の削除を要求するパケット（以下、削除要求パケット）を送信し、デバイスサーバ２００は、この削除要求パケットの受信に応じて、ＰＣ情報テーブルまたはイベント情報テーブルから該当のＰＣ情報またはイベント情報を削除してもよい。
【０１４９】
本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【０１５０】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１５１】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【０１５２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１５３】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標)ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１５４】
１００（１００Ａ，１００Ｂ，１００Ｃ）：クライアントＰＣ
１０１：制御プログラム
１０２：デバイスドライバ
１０３：仮想化制御部
２００（２００Ａ，２００Ｂ）：デバイスサーバ
２０１：仮想化制御部
２０２：情報記憶部
２０３：イベント制御部
３００（３００Ａ，３００Ｂ）：デバイス
４００：接続ケーブル
５００：ネットワーク
【図１】
2012137864.tif 000003
【図２】
2012137864.tif 000004
【図３】
2012137864.tif 000005
【図４】
2012137864.tif 000006
【図５】
2012137864.tif 000007
【図６】
2012137864.tif 000008
【図７】
2012137864.tif 000009
【図８】
2012137864.tif 000010
【図９】
2012137864.tif 000011
【図１０】
2012137864.tif 000012
【図１１】
2012137864.tif 000013
【図１２】
2012137864.tif 000014