"ネットワークを介してクライアント装置に接続されていると共にデバイスがローカル接続されるべきデバイス制御装置であって、前記デバイスの状態を監視するための定義ファイル及びトリガ検知アルゴリズムを用いて当該デバイスの状態を監視し、当該デバイスの状態変化を検知する第1の検知手段と、前記デバイスの状態変化が検知されたときに、当該状態変化の検知を示すトリガ通知を前記クライアント装置に送信する送信手段と、前記トリガ通知を受信したクライアント装置とセッションを開始して、前記状態変化を検知したデバイスとのデータ通信を中継するデータ通信制御手段と、前記デバイスとのデータ通信が終了して当該クライアント装置とのセッションが切断されたことを検知する第2の検知手段と、前記クライアント装置とのセッションが切断されたとき、前記第1の検知手段に前記デバイスの状態の監視を再開させる再開手段とを備えることを特徴とするデバイス制御装置。前記定義ファイルは、前記デバイスの状態変化時における前記デバイスの応答情報を含む第1の定義ファイルからなり、前記第1の検知手段は、前記デバイスの応答情報と前記第1の定義ファイルに含まれている応答情報が一致したか否かを判別する第1の判別手段を備え、前記送信手段は、前記デバイスの応答情報と前記第1の定義ファイルに含まれている応答情報が一致したときに、前記トリガ通知を前記クライアント装置に送信することを特徴とする請求項1記載のデバイス制御装置。前記定義ファイルは、前記デバイスにおいて状態変化していない時の当該デバイスの応答情報を含む第2の定義ファイルからなり、前記第1の検知手段は、前記デバイスの応答情報と前記第2の定義ファイルに含まれている応答情報が一致したか否かを判別する第2の判別手段を備え、前記送信手段は、前記デバイスの応答情報と前記第2の定義ファイルに含まれている応答情報が一致しないときに、前記トリガ通知を前記クライアント装置に送信することを特徴とする請求項1記載のデバイス制御装置。前記再開手段は、前記クライアント装置から応答がないとき、前記第1の検知手段に前記デバイスの状態の監視を再開させることを特徴とする請求項1乃至3のいずれか1項に記載のデバイス制御装置。前記第1の検知手段が前記デバイスの状態を監視している間に前記クライアント装置から前記デバイス制御装置とのセッションの要求があるとき、前記第1の検知手段は、前記デバイスの状態の監視を終了し、前記セッションが切断されると、前記再開手段は、前記デバイスの状態の監視を再開させることを特徴とする請求項1乃至4のいずれか1項に記載のデバイス制御装置。ネットワークを介してクライアント装置に接続されていると共にデバイスがローカル接続されるべきデバイス制御装置によって実行されるデバイス制御方法であって、前記デバイスの状態を監視するための定義ファイル及びトリガ検知アルゴリズムを用いて前記デバイスの状態を監視し、当該デバイスの状態変化を検知する第1の検知ステップと、前記デバイスの状態変化が検知されたときに、当該状態変化の検知を示すトリガ通知を前記クライアント装置に送信する送信ステップと、前記トリガ通知を受信したクライアント装置とセッションを開始して、前記状態変化を検知したデバイスとのデータ通信を中継するデータ通信制御ステップと、前記デバイスとのデータ通信が終了して当該クライアント装置とのセッションが切断されたことを検知する第2の検知ステップと、前記クライアント装置とのセッションが切断されたとき、前記第1の検知手段に前記デバイスの状態の監視を再開させる再開ステップとを備えることを特徴とするデバイス制御方法。前記定義ファイルは、前記デバイスの状態変化時における前記デバイスの応答情報を含む第1の定義ファイルからなり、前記第1の検知ステップは、前記デバイスの応答情報と前記第1の定義ファイルに含まれている応答情報が一致したか否かを判別する第1の判別ステップを備え、前記送信ステップは、前記デバイスの応答情報と前記第1の定義ファイルに含まれている応答情報が一致したときに、前記トリガ通知を前記クライアント装置に送信することを特徴とする請求項6記載のデバイス制御方法。前記定義ファイルは、前記デバイスにおいて状態変化していない時の当該デバイスの応答情報を含む第2の定義ファイルからなり、前記第1の検知ステップは、前記デバイスの応答情報と前記第2の定義ファイルに含まれている応答情報が一致したか否かを判別する第2の判別ステップを備え、前記送信ステップは、前記デバイスの応答情報と前記第2の定義ファイルに含まれている応答情報が一致しないときに、前記トリガ通知を前記クライアント装置に送信することを特徴とする請求項6記載のデバイス制御方法。前記再開ステップは、前記クライアント装置から応答がないとき、前記第1の検知ステップに前記デバイスの状態の監視を再開させることを特徴とする請求項6乃至8のいずれか1項に記載のデバイス制御方法。前記第1の検知ステップが前記デバイスの状態を監視している間に前記クライアント装置から前記デバイス制御装置とのセッションの要求があるときは、前記第1の検知ステップは、前記デバイスの状態の監視を終了し、前記セッションが切断されると、前記再開ステップは、前記デバイスの状態の監視を再開させることを特徴とする請求項6乃至9のいずれか1項に記載のデバイス制御方法。デバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置であって、当該デバイス制御装置にローカル接続されたデバイスの動作状態を確認するためのポーリングを行う際に蓄積された前記デバイスに対する要求情報及び前記デバイスからの応答情報を含む定義ファイルを作成する作成手段と、前記作成された定義ファイルを前記デバイス制御装置に送信する送信手段と、前記デバイスの状態変化を検知した前記デバイス制御装置から前記デバイスの状態変化の検知を示すトリガ通知を受信する受信手段と、前記受信手段によって受信された前記トリガ通知に応じて前記デバイス制御装置とのセッションを開始するセッション制御手段とを備えることを特徴とするクライアント装置。前記デバイスに適った定義ファイルを自装置で保持しているか否かを判断する判断手段をさらに備え、当該デバイスに適った定義ファイルを保持していると判断した場合、前記作成手段による定義ファイルの作成を行わず、前記送信手段によって当該保持している定義ファイルを送信することを特徴とする請求項11記載のクライアント装置。請求項1又は3に記載のデバイス制御装置と請求項11又は12に記載のクライアント装置とが互いにネットワークを介して接続されていることを特徴とするデバイス制御システム。確かに、特許文献1に開示されたネットワークファイル管理システムでは、複数のクライアントPCは手動操作を行うことなくデバイスを共有することはできる。しかしながら、クライアントPCがネットワーク経由で接続された1台のデバイスを専有している状態においては、当該クライアントPCが他のデバイスを使用することはできないという技術的な制限により、クライアントPCとの専有状態を高頻度で必要とするデバイスが接続された場合には、そのクライアントPCは他のデバイスとの同時使用が困難になってしまう。例えば、ICカードリーダのようなデバイスの場合、ICカードが検知されたか否かの問い合わせポーリング、すなわち、デバイス監視処理状態変化検知処理を周期的に行う必要があるが、このデバイス監視処理は、一般的に、クライアントPCにインストールされたデバイスドライバによって実行される。このため、クライアントPCによるネットワークを介したデバイスの専有が頻繁に発生するとともに、当該デバイスの専有中はネットワーク上のトラフィックが著しく増加するので、このようなデバイスの専有は、必要最小限であることが望ましい。また、デバイスの専有が頻発し、常にネットワーク上にデータが伝送されている状態では、データがハッキングされやすく、セキュリティの面からも望ましくない。加えて、前述のデバイス監視処理状態変化検知処理は、デバイス毎に処理内容が異なる機種依存性をなくすようにするために、デバイスサーバに特定のデバイスに適合したトリガ検知アルゴリズムだけを保持させたときは、デバイスサーバの汎用性が損なわれるという問題がある。一方で、デバイスサーバにシステムに存在する様々なデバイスに適合したトリガ検知アルゴリズムをすべて保持させたときは、デバイスサーバの汎用性は確保できるものの、デバイスサーバは大容量の記憶領域を必要とし、コスト増を招くという問題がある。本発明の第1の目的は、従来、クライアント装置に実装されていたデバイス監視処理状態変化検知処理をデバイス制御装置が備えることで、デバイス制御装置がクライアント装置との通信を伴わずに自立的にデバイスの状態変化を監視し、デバイスの状態変化を検知した時点でこれをクライアント装置へ通知することにより、クライアント装置によるデバイスの監視ポーリングを不要とし、ネットワーク上のトラフィックを低減することができるデバイス制御装置及び方法、クライアント装置、並びにデバイス制御システムを提供することにある。本発明の第2の目的は、デバイスの状態変化を契機に、クライアント装置とデバイスが通信を行うことで、クライアント装置は必要なときだけデバイスを専有してセキュリティの脆弱性を低減するとともに、専有が頻繁に必要なデバイスであっても複数台数を同時に使用することができるデバイス制御装置及び方法、クライアント装置、並びにデバイス制御システムを提供することにある。本発明の第3の目的は、監視対象となったデバイスに適合したトリガ検知アルゴリズムや定義ファイルをデバイスサーバへ動的にインストールまたはダウンロードすることにより、デバイスサーバは汎用性を確保しながらも様々なデバイスの検知処理を実行することができるデバイス制御装置及び方法、クライアント装置、並びにデバイス制御システムを提供することにある。上記目的を達成するために、本発明のデバイス制御装置は、ネットワークを介してクライアント装置に接続されていると共にデバイスがローカル接続されるべきデバイス制御装置であって、前記デバイスの状態を監視するための定義ファイル及びトリガ検知アルゴリズムを用いて当該デバイスの状態を監視し、当該デバイスの状態変化を検知する第1の検知手段と、前記デバイスの状態変化が検知されたときに、当該状態変化の検知を示すトリガ通知を前記クライアント装置に送信する送信手段と、前記トリガ通知を受信したクライアント装置とセッションを開始して、前記状態変化を検知したデバイスとのデータ通信を中継するデータ通信制御手段と、前記デバイスとのデータ通信が終了して当該クライアント装置とのセッションが切断されたことを検知する第2の検知手段と、前記クライアント装置とのセッションが切断されたとき、前記第1の検知手段に前記デバイスの状態の監視を再開させる再開手段とを備えることを特徴とする。本発明のクライアント装置は、デバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置であって、当該デバイス制御装置にローカル接続されたデバイスの動作状態を確認するためのポーリングを行う際に蓄積された前記デバイスに対する要求情報及び前記デバイスからの応答情報を含む定義ファイルを作成する作成手段と、前記作成された定義ファイルを前記デバイス制御装置に送信する送信手段と、前記デバイスの状態変化を検知した前記デバイス制御装置から前記デバイスの状態変化の検知を示すトリガ通知を受信する受信手段と、前記受信手段によって受信された前記トリガ通知に応じて前記デバイス制御装置とのセッションを開始するセッション制御手段とを備えることを特徴とする。上記構成によれば、デバイスサーバがトリガ検知アルゴリズム/定義ファイルに基づき、該当デバイスを監視し、デバイスの状態変化を検知すると、トリガ通知する。トリガ通知を受けたクライアントPCは、デバイスサーバとセッションを開始し、クライアントPC及びデバイス間でデータ通信を実行する。データ通信が終了し、セッションが切断されると、デバイスサーバは、該当デバイスの監視を再開する。これにより、クライアントPC側で実装されていたデバイス監視処理を、デバイスサーバが実施するので、クライアントPC側での監視処理が不要となり、必要な時だけ、クライアントPC及びデバイス間でデータ通信し、通信終了すると、当該デバイスの監視を再開する。また、クライアントPCは、デバイスの接続を検知すると、当該デバイスの動作状態を確認するためのポーリングを実行し、このときの送受信パケットを蓄積してデバイスサーバに送る。デバイスサーバは、この送受信パケットを定義ファイルとして用いることで、監視処理を実行することができるので、新たに接続が検知されたデバイスであっても、当該デバイスの監視処理が可能となる。以下、本発明を図面に示す実施の形態を参照しながら詳細に説明する。<デバイス制御システムの構成>図1は、本発明の第1の実施の形態に係るデバイス制御システムの概略構成を示す図である。図1において、本発明の第1の実施の形態に係るデバイス制御システムは、クライアントPC100クライアント装置と、デバイス300300A,300Bがローカル接続されるデバイスサーバ200デバイス制御装置とを備える。クライアントPC100とデバイスサーバ200は、互いにネットワーク500を介して接続されている。ネットワーク500は有線又は無線の通信回線で構成されてもよい。デバイス300は、USBUniversalSerialBusインターフェースに準拠した接続ケーブル400でデバイスサーバ200に接続ローカル接続される。ただし、接続ケーブル400は、USBインターフェースに限定されるものではなく、IEEE1394等他のインターフェースに準拠したものであってもよい。次に、デバイス制御システムを構成する各装置の構成について順次説明する。<クライアントPC100の構成>クライアントPC100は、内部バスで互いに接続されたCPU、入力部、表示部、メモリ、通信部、外部記憶部で構成され、ネットワーク500を介してデバイスサーバ200と通信することができる。外部記憶部は、不図示のオペレーティングシステム以下、OS、アプリケーションプログラム101、常駐モジュール102、デバイスドライバ103、仮想化制御部104、通信制御部105等のソフトウェア部品に加えて、各種データを格納しているデータ記憶部106が記憶される。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。アプリケーションプログラム101は、常駐モジュール102やデバイスドライバ103に対してデータ入出力要求を指示することでデバイス300を制御するためのソフトウェアプログラムである。常駐モジュール102は、1デバイスサーバ200にローカル接続されるデバイス300を個体別に識別するためのデバイス個体情報を取得する機能、2デバイス個体情報によってデバイスの機種等を個体ごとに識別する機能、3デバイス300との間のデータ送受信に必要となるデバイスドライバ103及び仮想化制御部104を一意に特定し、順次、それらのソフトウェア部品を動的に生成起動する機能、4通信制御部105を介してデバイスサーバ200とのセッションの開始切断を指示する機能、5デバイスサーバ200とのセッションが開始されると、デバイスドライバ103及び仮想化制御部104を用いて、デバイス300との間のデータ送受信を制御する機能を備えている。デバイスドライバ103は、OS不図示やアプリケーションプログラム101以下、上位層のソフトウェアプログラムというからのデータ入出力要求を、デバイス300に応じたデータ形式のデータ以下、制御コマンドというに変換し、この制御コマンドを仮想化制御部104に送り、この制御コマンドに対する応答を上位層のソフトウェアプログラムへ通知するソフトウェア部品である。仮想化制御部104は、デバイスドライバ103で制御コマンドに変換されたデータ入出力要求をUSBデータ形式に準拠したパケットデータ以下、USBデータというに変換し、通信制御部105から送られてくるUSBデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ103へ送るソフトウェア部品である。また、デバイス300に対するデータ送受信要求に対して、デバイス300がクライアントPC100に直接的に接続ローカル接続しているときと同様の振る舞いをシミュレートする機能以下、仮想化制御というを備えたソフトウェア部品である。この仮想化制御によって、デバイス300をローカル接続したときと同じ状態でデータ送受信することができるようになる。通信制御部105は、仮想化制御部104を経由して送られてくるUSBデータとネットワーク500を介してデバイスサーバ200と通信するときのネットワークパケットとの変換処理を行い、デバイスサーバ200との間のデータ送受信を制御するソフトウェア部品である。また、仮想化制御部104を経由して送られてくる上位層のソフトウェアプログラムやデバイスドライバ103からのデータ送受信要求に応じて、デバイスサーバ200との間のセッションの開始切断の制御を行う。また、データ記憶部106は、後述する図3の定義ファイル107、トリガ検知アルゴリズム108等の各種データが格納される。定義ファイル107は、デバイスサーバ200がデバイス300を監視する際、トリガ検知アルゴリズム108に必要な命令情報等を格納しているデータファイルである。トリガ検知アルゴリズム108は、デバイスサーバ200において、デバイス300を監視し、その状態変化を検知するための実行手順が記述されたプログラムコードであり、定義ファイル107を読み込むことで、本実行手順に従って、デバイス300の監視処理以下、トリガ検知処理というが行われる。このトリガ検知処理は図4を用いて後述する。定義ファイル107とトリガ検知アルゴリズム108は、デバイス300の監視を行うための1組の監視情報監視プログラムであり、デバイス300の機種ごとに異なる。図3は、図1におけるデータ記憶部106に格納される定義ファイルのデータ構成を説明するのに用いられる図である。図3の定義ファイルは、デバイス300の機能仕様に基づいて作成され、ベンダーIDVID、製品IDPIDなどのデバイス識別情報と、デバイス300に対して発行する要求パケットのデータパターンと、デバイス300の状態変化時の応答パケットのデータパターンを含む。応答パケットのデータパターンには、デバイス300の状態変化時にデバイス300から返送されてくる応答パケットのみが含まれている。<デバイスサーバ200の構成>デバイスサーバ200は、内部バスで互いに接続されたCPU、メモリ、通信部、USBインターフェース、及び外部記憶部で構成されており、ネットワーク500を介してクライアントPC100と通信すると共に、ローカル接続されているデバイス300と接続ケーブル400を介してデータ送受信することができる。外部記憶部は、OS不図示、通信制御部201、デバイス制御部202等のソフトウェア部品を格納する。これらのソフトウェア部品、及びデータ記憶部203に格納された各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。通信制御部201は、OSの制御に従ってネットワーク500経由で接続されているクライアントPC100との間のセッションを制御開始、切断する機能を有する。デバイス制御部202は、デバイス300を制御するための機能を有する。また、デバイス制御部202は、通信制御部201を介してデバイス個体情報204、定義ファイル205、トリガ検知アルゴリズム206を取得し、取得したこれらの情報データに基づいて、以下で説明する処理を実行するための機能を備えている。1クライアントPC100と通信するためのネットワークパケットとデバイス300との間で送受信するUSBデータとの変換処理を行い、デバイス制御部202と連携してクライアントPC100とデバイス300間のデータ送受信を仲介中継する機能、2デバイスから取得したデバイス個体情報204をクライアントPC100に送信する機能、3クライアントPC100から定義ファイル107/トリガ検知アルゴリズム108を受信取得する機能、4定義ファイル205及びトリガ検知アルゴリズム206後述を用いてデバイス300を一定間隔で監視ポーリングするトリガ検知処理を実行し、状態変化を検知すると、当該検知を示す情報以下、トリガ通知をクライアントPC100へ送信する機能、5通信制御部201でクライアントPC100との間のセッションが切断されるとこれを検知して、4のトリガ検知処理を再開させる機能を備えている。デバイス個体情報204は、デバイスを個体ごとに識別するための情報であって、メーカーを識別するために機器を製造したメーカーごとに割り当てられたベンダーIDVID、機種を識別するために機種ごとに割り当てられた製品IDPID、機器の個体を識別するために個々の機器に割り当てられたシリアル番号等である。デバイス個体情報204は、デバイス300が接続されたとき等に、デバイス制御部202によってデバイス300から取得される。定義ファイル205とトリガ検知アルゴリズム206は、デバイスサーバ200自身に接続されたデバイス300の監視ポーリングに必要な情報であり、デバイスサーバ200は、デバイス個体情報204に基づいてクライアントPC100から取得する。<デバイス300の構成>デバイス300300A、300Bは、USBインターフェースを持つ汎用的な入出力機器デバイスである。例えば、キーボード、マウス、カードリーダのような入力機器、ディスプレイ等の表示出力機器、プリンタ等の単機能周辺機器SFP:SingleFunctionPeripheral、又は、プリント機能の他にスキャン機能やコピー機能、ストレージ機能等を兼ね備えた多機能周辺機器MFP:MultiFunctionPeripheralである。ただし、これらに限定されるものでなく、別のデバイスであってもよい。例えば、デバイス300がICカードリーダのような機器である場合、ICカードがかざされ、ICカードリーダがICカードの読み取り処理を実行すると、デバイスサーバ200は、この読み取り処理の動作をデバイス300の状態変化として検知し、クライアントPC100にトリガ通知を送信する。ここで、デバイス300の状態変化とは、機器の動作状態の変化のことであり、例えば、ICカードリーダに対してICカードの読み取り操作ユーザIDの取得が行われたことや、操作ボタンが押下されたこと等によって生じるものであるが、これらに限定されるものではない。なお、上述したデバイスサーバ200、デバイス300は、それぞれ別体の装置、機器として説明したが、これに限定されるものではなく、デバイスサーバ200をデバイス300と一体構造としてもよい。<予めデバイスに応じて作成された定義ファイルを用いる場合>図2は、図1のデバイス制御システムの動作シーケンスを説明するのに用いられるシーケンス図である。図2のシーケンス図は、クライアントPC100と、デバイスサーバ200に接続されたデバイス300Aとの間でデータ送受信する過程を示している。図2において、デバイスサーバ200は、デバイス300Aが接続されると、当該デバイス300Aのデバイス個体情報を取得しステップS201、デバイス個体情報204としてデータ記憶部203に格納するステップS202。このとき、デバイスサーバ200は、取得したデバイス個体情報204にシリアル番号が格納されているか否かを判断し、シリアル番号が格納されていない場合は、デバイスサーバ200の有する固有情報例えば、MACアドレス等及びデバイスが接続されているポートの固有情報例えば、ポート番号等からシリアル番号に相当する固有情報を生成し、デバイス個体情報204に追加する。これにより、シリアル番号が格納されていない同一機種が複数接続された場合でも識別可能となる。次いで、クライアントPC100の常駐モジュール102は、デバイスサーバ200にローカル接続されたデバイス300Aを確認するために、通信制御部105を介して、デバイスサーバ200に対して検索パケットを送信する。例えば、UDPUserDatagramProtocol等のプロトコルを用いて、デバイスサーバ200に対する検索問い合わせを行う。デバイスサーバ200は、検索パケットを受信すると、データ記憶部203に格納されているデバイス個体情報204をクライアントPC100に送信するステップS203。クライアントPC100の常駐モジュール102は、デバイスサーバ200からデバイス個体情報204を取得すると、デバイス個体情報204に含まれているベンダーIDVIDと製品IDPID、シリアル番号等によりデバイスの識別処理を行い、当該デバイス個体情報204に含まれている個体を識別するための情報に基づいて、デバイスドライバ103、仮想化制御部104を一意に特定し、順次、これらのソフトウェア部品を動的に生成して起動する。これらのソフトウェア部品によって、デバイス300Aの仮想化制御が可能な状態となるステップS204。次に、クライアントPC100は、データ記憶部106に格納している定義ファイル107、トリガ検知アルゴリズム108の中から、デバイス個体情報204に基づいて識別したデバイス300Aの機種に対応した定義ファイル107、トリガ検知アルゴリズム108を特定する。そして、クライアントPC100は、特定した定義ファイル107、トリガ検知アルゴリズム108を含んだインストール用パケットを生成し、通信制御部105によってデバイスサーバ200との間でセッションを開始してステップS205、生成したインストール用パケットをデバイスサーバ200に対して送信するステップS206。なお、応答がないタイムアウト、接続拒否等、何らかの理由でセッションを開始することができない場合、デバイスサーバ200は、エラー処理例えば、デバイス300Aに対してエラー通知する、自装置でアラーム報知する等を実行し、本処理を終了させる。デバイスサーバ200は、インストール用パケットを受信すると、このパケットに含まれる定義ファイル107とトリガ検知アルゴリズム108をインストールし、それぞれ定義ファイル205第1の定義ファイルとトリガ検知アルゴリズム206としてデータ記憶部203に格納するステップS207。なお、クライアントPC100のアプリケーションプログラム101は、デバイス個体情報204による識別処理の結果、デバイス300A以外のデバイスであると識別した場合、ソフトウェア部品の生成処理は実行しない。<トリガ検知処理開始>デバイスサーバ200のデバイス制御部202は、クライアントPC100とデバイスサーバ200との間でセッションが切断されるとステップS208、データ記憶部203に格納した定義ファイル205とトリガ検知アルゴリズム206を用いて、デバイス300Aの後述する図4のトリガ検知処理監視処理を開始するステップS209。このトリガ検知処理の開始条件は、トリガ通知後、所定時間内にクライアントPC100からセッション開始がない場合も含む。<デバイス制御開始~終了>図4は、図1におけるデバイスサーバによって実行されるトリガ検知処理の手順を示すフローチャートである。図4のトリガ検知処理図2のステップS209~S214により、デバイス300Aの状態変化が監視される。また、図4のトリガ検知処理は、この処理の実行中にクライアントPC100からの割り込み処理が発生した場合は中断され、当該割り込み処理の終了により、再開される。図4において、まず、デバイスサーバ200とクライアントPC100とのセッションが切断されるか、トリガ通知後、所定時間内にクライアントPC100からセッション開始がないことにより、監視ポーリングが開始するとステップS401でYES、定義ファイル205図3に含まれている要求データパターン要求情報に従い、要求パケットを通信制御部201を介してデバイス制御部202からデバイス300Aに対して送信するステップS402。上記監視ポーリングの間隔は、定義ファイル205図3で設定することができる。この間隔は、デバイスサーバ200がトリガ検知処理で専有されることを回避し、他の機能デバイスを使用できるようにするためのものである。次いで、デバイス300Aからの応答パケットを受信したか否かを判別しステップS403、応答パケットを受信したときは、応答パケットとしてエラー情報が返送されて来た例えば、デバイス300Aと接続断となった場合等か否かを判別するステップS405。ステップS405の判別の結果、エラー情報が返送されて来たときは、直ちに本処理を終了し、応答パケットがエラーでなければステップS405でNO、デバイス制御部202は、デバイス300Aからの応答パケットと定義ファイル205に含まれている応答パケットの各データパターン応答情報を比較するステップS406図2のステップS210第1の検知手段、第1の判別手段。ステップS406の比較の結果、デバイス300Aからの応答パケットと定義ファイル205に含まれている応答パケットの各データパターンが一致したときは、デバイス300Aで状態変化があり図2のステップS211第1の検知手段、この状態変化を示すトリガ通知を送信すべきと判断してステップS407でYES、通信制御部201を介してクライアントPC100にトリガ通知を送信してステップS409図2のステップS213送信手段、本処理を終了する図2のステップS214。一方、ステップS406の比較の結果、デバイス300Aからの応答パケットと定義ファイル205に含まれている応答パケットの各データパターンが一致していない不一致ときは、デバイス300Aで状態変化がなく、トリガ通知すべきでないとしてステップS407でNO、監視ポーリングが終了するまでステップS408でYES、ステップS402以降の処理の処理を実行して、次の要求パケットをデバイス300Aに送信する。ステップS403の判別の結果、要求パケットを送信した後、所定時間内にデバイスからの応答パケットが受信されなかったタイムアウトときはステップS404でYES、監視ポーリングが終了するまでステップS408でYES、ステップS402以降の処理を実行して、次の要求パケットを送るようにする。図2に戻り、クライアントPC100は、デバイスサーバ200からトリガ通知を受信すると、デバイスサーバ200との間でセッションを開始しステップS215、デバイスサーバ200を介してデバイス300Aとの間でデータ送受信データ通信の中継を開始してステップS216、データ送受信を実行するステップS217データ通信制御手段。ステップS213において、デバイスサーバ200は、クライアントPC100にトリガ通知を送信すると共にセッション開始を要求してもよい。<トリガ検知処理再開>そして、クライアントPC100の通信制御部105によって、データ送受信デバイス制御の終了が検知される例えば、ユーザの終了操作の検知等ステップS218と、デバイスサーバ200とのセッションが切断されるステップS219。デバイスサーバ200は、当該セッションの切断が検知される第2の検知手段と、トリガ検知処理を開始ステップS220し、デバイス300Aの監視ポーリングを再開する再開手段。ステップS213において、トリガ通知後、所定時間内にクライアントPC100からセッション開始がない場合も、同様にトリガ検知処理を開始しステップS220、デバイス300Aの監視ポーリングを再開する。このように、本第1の実施の形態によれば、デバイス300Aに対する制御権通信が、トリガ通知によってデバイスサーバ200からクライアントPC100へ切り替わり、セッション切断を契機にクライアントPC100からデバイスサーバ200に再び切り替わることで、クライアントPC100とデバイス300Aは必要なときだけデータ通信を実施することが可能となり、データ通信が終了すると、デバイスサーバ200によるデバイス300Aの監視が再開される。<クライアントPCが蓄積した要求/応答パケットを定義ファイルとする場合>図5は、本発明の第2の実施の形態に係るデバイス制御システムの動作シーケンスを説明するのに用いられるシーケンス図であり、クライアントPC100と、デバイスサーバ200に接続されたデバイス300Bとの間でデータ送受信する過程を示している。本発明の第2の実施の形態に係るデバイス制御システムは、システム構成は図1のものと同じであるが、先に説明した本発明の第1の実施の形態とは異なり、クライアントPC100が、接続を検知したデバイス300Bに対してポーリングを行い、その際の要求/応答パケットを蓄積しておき、これらを定義ファイルとしてデバイスサーバ200に送信する点に特徴がある。具体的には、クライアントPC100の仮想化制御部104が、アプリケーションプログラム101からの指示に従い、デバイス300Bにおいて状態変化していない時の応答、例えば、デバイス300Bが処理や制御を実行していない実行待機状態の応答を確認するため、通信制御部105を介してポーリングを行い、この際に送受信される要求/応答パケットをデータ記憶部106に記憶させる機能を備えることで実現される。また、図5の動作シーケンスでは、図4のトリガ検知処理において、デバイス300Bからの応答パケットと定義ファイルに含まれている応答パケットの各データパターンを比較し、この比較の結果、デバイス300Bからの応答パケットと定義ファイルに含まれている応答パケットの各データパターンが一致していない不一致とき、クライアントPC100にトリガ通知を行う点が本発明の第1の実施の形態とは異なっている。<シーケンス動作の説明>図5において、クライアントPC100は主要な構成のみを図示しており、クライアントPC100がデバイスサーバ200とセッション開始までの動作シーケンスステップS501~S505は、図2のステップS201~S205と同じ動作である。次いで、クライアントPC100は、アプリケーションプログラム101によって、新たに接続が検知されたデバイス300Bに対するポーリングの開始が指示されるとステップS511、デバイスドライバ103を介して、ポーリングで送受信される後述する図6のパケットの蓄積開始ステップS512及びデバイス300Bの動作状態を確認するための要求パケットの送信ステップS513を仮想化制御部104に指示する。仮想化制御部104は、デバイス300Bの動作状態ここでは、実行待機状態を確認するための要求パケットを、通信制御部105を介して順次送信させるステップS514と共に、当該要求パケットをデータ記憶部106に蓄積させるステップS515ように指示する。また、通信制御部105で受信した応答パケットをデータ記憶部106に蓄積させるステップS516ように指示する。そして、一連のポーリングが終了するまでこれが繰り返されるステップS517~S519作成手段。なお、これらパケットの送受信プロセス順序等の記録を指示するようにしてもよい。<パケットのデータ構成について>図6は、図5の動作シーケンスで送受信される要求/応答パケットのデータ構成を説明するのに用いられる図である。図6において、ヘッダ部には、本システムのプロトコルであることを識別するための署名データ、当該パケットのデータサイズを示す電文サイズ、パケットの種類を示すコマンドID、デバイスを識別するための機器情報ベンダーID、製品ID、シリアル番号が格納される。データ部には、パケットの種類コマンドIDに応じたデータが格納される。コマンドIDの違いによって、要求パケットか応答パケットかを判別している。図5に戻り、アプリケーションプログラム101から仮想化制御部104にポーリングの終了ステップS520が通知されると、デバイスドライバ103を介して、図6のパケット蓄積終了を仮想化制御部104に指示する。仮想化制御部104は、データ記憶部106に蓄積した要求パケット及び応答パケットを後述する図7の定義ファイル第2の定義ファイルとしてデバイスサーバ200に送信するステップS521送信手段。<蓄積した要求/応答パケットで作成した定義ファイル>図7は、図5の動作シーケンスで送信される要求/応答パケットのデータ構造、及びこれらを蓄積して作成される定義ファイルを説明するのに用いられる図である。なお、要求パケット、応答パケットは、図6で説明した要求/応答パケットのデータ構成と同じであり、コマンドIDの違いによって、要求パケットか応答パケットが判別され、データ部USB転送データに要求または応答に応じたデータが格納されている。例えば、ポーリングでn個の要求パケットを用いる場合、データ記憶部106には、n個の要求パケット、n個の応答パケットが蓄積され、これらが定義ファイルとしてデバイスサーバ200に送信される。<トリガ検知処理開始~終了>図5に戻り、デバイスサーバ200は、通信制御部201を介してクライアントPC100から定義ファイル図7参照を受信すると、これを定義ファイル205としてデータ記憶部106に格納するステップS522。定義ファイルの送信が完了すると、クライアントPC100とデバイスサーバ200の間のセッションは切断されステップS523、図4のトリガ検知処理が実行されるステップS524~S530。デバイスサーバ200のデバイス制御部202は、この定義ファイル205を用いて、クライアントPC100と同様のポーリングを開始する。即ち、デバイス300Bに対する図4のトリガ検知処理を開始する。図4は、図1におけるデバイスサーバ200によって実行されるトリガ検知処理の手順を示すフローチャートである。図4の処理は、先に本発明の第1の実施の形態として説明したもの基本的に同じであるが、下記の点が異なる。具体的には、定義ファイル205に含まれている要求データパターンに従い、要求パケットを順次通信制御部201を介してデバイス制御部202からデバイス300Bに対して送信しステップS525図4のステップS402、デバイス300Bからの応答パケットを受信するステップS526図4のステップS403。デバイス制御部202は、デバイス300Bからの応答パケットと定義ファイル205に含まれている応答パケットの各データパターンを比較し図4のステップS406、それらが一致するか否かの判定処理を行う第1の検知手段、第2の判別手段。デバイス300Bからの応答パケットと定義ファイル205に含まれている応答パケットの各データパターンが一致するか否かの判定処理は、例えば、しきい値を設定しておき、パケットの先頭からのバイト数を比較し、所定のバイト数以上例えば、3バイト以上異なっている場合を一致していないと判断する方法や、n個すべての応答パケットと比較して、何れの応答パケットとも異なるバイト数であった場合、一致していないと判断する等の方法で行う。上記判定処理の結果、一致判定の場合は、状態変化がないと判断し、次の要求パケットをデバイス300Bに送信する。一致と判定されている間は、定義ファイル205に含まれている要求パケットを順次送信してゆく。なお、要求パケットを送信した後、所定時間内にデバイスからの応答パケットが受信されなかったタイムアウト場合は、次の要求パケットを送るようにしてもよい。また、要求パケットに対して、デバイス300Bからエラー情報が返送されてきた場合例えば、デバイス300Bと接続断となった場合等、トリガ検知処理を終了する。トリガ検知処理が終了した後は、データ記憶部から定義ファイル205を削除するようにしてもよいし、データ記憶部203に保存しておき、デバイス300Bが改めて接続されたときPID、VIDの一致により判断するに利用できるようにしておいてもよい。一方、不一致判定の場合、デバイス300Bで状態変化があり、この状態変化ステップS527を検知したものと判断し、この検知を示すトリガ通知ステップS528を、通信制御部201を介してクライアントPC100に送信すると共にこのトリガ通知をクライアントPC100が受信するステップS529送信手段、受信手段。<デバイス制御開始~終了>クライアントPC100は、デバイスサーバ200からトリガ通知を受信すると、これを契機にデバイスサーバ200との間でセッションを開始するステップS531セッション制御手段。これ以降の動作シーケンスステップS532~S536は、図2の動作シーケンスステップS216~S220と同じであるので、説明を省略する。このように、クライアントPC100からトリガ通知を送信しない状態のデバイス300Bに対してポーリングを行い、この際に送受信される要求/応答パケットを蓄積して、これを定義ファイルとしてデバイスサーバ200に送信することにより、デバイスの状態変化の監視トリガ検知処理を行うことができるようになる。<定義ファイル有無の判断>本発明の第2の実施の形態において、さらに、クライアントPC100がデータ記憶部106に該当するデバイス300に適った定義ファイルを保持記憶しているか否かを判断する機能を備えるようにしてもよい。この場合、デバイス300の機能仕様に応じて予め作成した定義ファイル図3:本発明の第1の実施の形態、若しくは、該当デバイス300と同機種のデバイスとポーリングして作成した定義ファイル図7参照を既に保持しているときは、上述したようなポーリングによる定義ファイルの作成を実行せず、保持している定義ファイルをデバイスサーバ200に送信し、保持していないときのみ、ポーリングによる定義ファイルの作成を実行する。なお、本発明は、上述した実施の形態に限定されるものではなく、以下に説明する実施の形態も可能であり、本発明の要旨を逸脱しない範囲内において適宜変更可能である。<シーケンス開始のタイミング>図2及び図5の動作シーケンスでは、デバイスサーバ200にデバイス300が接続されたときにデバイス個体情報を取得してシーケンスを開始するものとして記載しているが、デバイスサーバ200は、これ以外にも、例えば、デバイスサーバ200やデバイス300の電源がオンになったとき、クライアントPC100のアプリケーションプログラムから指示されたとき、デバイスサーバ200とデバイス300の一方又は両方で所定の接続操作を実行したときにデバイス個体情報を取得し、このデバイス個体情報に基づいて図2又は図5と動作シーケンスを実行するようにしてもよい。<定義ファイルの実行プログラム>また、クライアントPC100は、定義ファイルとともにトリガ検知アルゴリズムの一部として動作する簡易プログラム例えば、シェル、スクリプトなどをデバイスサーバ200に送り、デバイスサーバ200は、この定義ファイルと簡易プログラムを用いてトリガ検知処理を実行するように構成してもよい。この場合、トリガ検知アルゴリズムは、定義ファイルに基づいて、デバイス300とのポーリングの実行、クライアントPC100へのトリガ通知などトリガ検知処理の基本的な処理を実行するとともに、デバイスの機種に応じた固有特有の処理など一部の処理を簡易プログラムで実行させるように構成される。例えば、状態変化として判断検知する条件は、デバイスの機種ごとに異なっているので、この判断を簡易プログラムで実行させることができる。このように構成することで、トリガ検知アルゴリズムは、デバイスの機種に依存しないトリガ検知処理の基本的な実行手順だけを記述しておけばよく、デバイスの機種に応じた処理を実行する簡易プログラムを作成するだけで、多種多様なデバイスに対応することができる。<定義ファイル/アルゴリズムの別の取得インストール方法>デバイスサーバ200は、定義ファイルとトリガ検知アルゴリズムをクライアントPC100からではなく、可搬型記憶媒体から取得するようにしてもよい。<デバイスサーバが定義ファイル/アルゴリズムをすでに保持している場合>また、デバイスサーバ200は、以前に同一機種のデバイス300が接続されたときに、該当する定義ファイルとトリガ検知アルゴリズムを取得、格納インストールしている場合は、改めて取得格納を行わなくてもよい。さらに、クライアントPC100に対して、定義ファイルとトリガ検知アルゴリズムの送信が不要である旨を通知してもよい。<トリガ通知先が複数の場合>また、複数台のクライアントPC100を配置するシステム構成も可能である。この場合、デバイスサーバ200は、複数のクライアントPC100に対してトリガ通知を送信し、最初にセッションの接続開始要求を送信してきたクライアントPC100に対して、デバイス300との接続データ送受信を許可すればよい。或いは、接続開始要求を送信した複数のクライアントPC100のうち、任意の台数のみ、デバイス300との接続を許可するように制御してもよい。また、特定の1台のクライアントPC100が、電源オフや故障等でトリガ通知の受信が不可能な場合には、別のクライアントPC100を代替の宛先としてトリガ通知を送信するように制御してもよい。<定義ファイルとトリガ検知アルゴリズムについて>図1のクライアントPC100には、デバイス300に対応した定義ファイル107とトリガ検知アルゴリズム108が両方ともに格納されており、デバイスサーバ200がクライアントPC100から定義ファイル107とトリガ検知アルゴリズム108を受信する方法構成を説明したが、下記のような方法構成も可能である。1デバイスサーバ200に予め必要なトリガ検知アルゴリズム108を格納させておき、クライアントPC100には、定義ファイル107のみを格納させる。この場合、デバイスサーバ200は、クライアントPC100から、機器情報によって特定されるデバイス300の機種に対応した定義ファイル107のみを受信することになる。例えば、ソフトウェアハードウェアの仕様設計に依拠する場合やシステムの運用管理上の理由等から、デバイスサーバ200へのアクセスが制限されており、トリガ検知アルゴリズムプログラムコードを受信して実行又はインストールできない場合に適用できる構成である。本構成は、トリガ検知アルゴリズムプログラムコードがデバイスサーバに予め格納されているため、改竄が困難であるというメリットがある。2デバイスサーバ200は、特定したデバイス300の機種に対応するトリガ検知アルゴリズムや定義ファイルを保持していない場合にのみ、クライアントPC100等から必要なトリガ検知アルゴリズムや定義ファイルを取得するようにしてもよい。さらに、デバイスサーバ200又はクライアントPC100でトリガ検知アルゴリズムや定義ファイルを管理して、これらの追加更新等が必要か否かを判断させるようにしてもよい。このような構成とすることで、デバイスサーバ200は、追加更新等の必要性が生じたときだけ、トリガ検知アルゴリズムや定義ファイルの全部又は一部を取得できるようになる。また、上述した実施の形態のように、デバイスサーバ200がクライアントPC100からトリガ検知アルゴリズムや定義ファイルを受信するのではなく、デバイスサーバ200がクライアントPC100にアクセスしてダウンロード取得するように構成してもよい。この場合、クライアントPC100は、該当するトリガ検知アルゴリズムや定義ファイルを保持していることだけをデバイスサーバ200に通知すればよい。上述したトリガ検知アルゴリズム1つに対して複数の定義ファイルを対応付けることで、複数のデバイス300を連携させて制御することも可能である。例えば、デバイスAとデバイスBを連携させて制御する場合、両方のデバイスからのトリガ通知を受信した後、デバイスAの動作を開始させる、というような制御を行うことができる。なお、本発明は、デバイスサーバ200に対して機種の異なる複数のデバイス300が接続される場合にも適用可能である。この場合、デバイスサーバ200には、各デバイスに応じた定義ファイルとトリガ検知アルゴリズムが機種ごとに格納される複数組が格納される。そして、各デバイスに適ったトリガ検知アルゴリズムと定義ファイルの組み合わせに基づきトリガ検知処理が実行され、それぞれのデバイス300ごとの状態変化を検知することができる。また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOSオペレーティングシステム等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現されるように構成してもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を実行し、その処理に応じて上述した実施形態が実現される場合も含む。なお、プログラムコードを供給するため、例えば、フロッピー登録商標ディスク、ハードディスク、光磁気ディスク、CDやDVDに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ROM等の記憶媒体を用いることができる。又は、プログラムコードは、ネットワークを介してダウンロードしてもよい。"