(57)【要約】クライアント装置によるデバイスの監視（ポーリング）を不要とし、ネットワーク上のトラフィックを低減することができるデバイス制御装置を提供する。デバイスサーバ２００は、デバイスサーバ２００にローカル接続されたデバイスを識別するためのデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得し、当該取得されたトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方に基づいて、ローカル接続されたデバイスを監視し、デバイスの状態変化が検知された場合、当該状態変化の検知を示すトリガ通知をネットワーク５００を介してクライアントＰＣ１００に送信し、トリガ通知を受信したクライアントＰＣ１００からの接続要求に応じてクライアントＰＣ１００とのセッションを開始する。
2011055831.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してクライアント装置に接続されているとともにデバイスがローカル接続されるべきデバイス制御装置であって、
前記デバイス制御装置にローカル接続されたデバイスを識別するためのデバイス情報を取得するデバイス情報取得手段と、
前記デバイス情報取得手段によって取得されたデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得する監視情報取得手段と、
前記監視情報取得手段によって取得された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を記憶する監視情報記憶手段と、
前記監視情報記憶手段に記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方に基づいて、前記ローカル接続されたデバイスを監視するデバイス監視手段と、
前記デバイス監視手段によって前記デバイスの状態変化を検知した場合、当該状態変化の検知を示すトリガ通知を前記ネットワークを介して前記クライアント装置に送信するトリガ通知送信手段と、
前記トリガ通知を受信したクライアント装置からの接続要求に応じて当該クライアント装置とのセッションを開始するセッション制御手段と
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記トリガ検知アルゴリズムは、前記デバイスに応じた監視処理の実行手順を記述したプログラムコードであることを特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
前記定義ファイルは、前記トリガ検知アルゴリズムを実行するために必要な命令・情報を格納したデータファイルであることを特徴とする請求項１に記載のデバイス制御装置。
【請求項４】
前記デバイス情報取得手段は、前記デバイスの接続を検知した時に、当該検知したデバイスから前記デバイス情報を取得することを特徴とする請求項１に記載のデバイス制御装置。
【請求項５】
デバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置であって、
前記デバイス制御装置から、当該デバイス制御装置にローカル接続されたデバイスのデバイス情報を取得するデバイス情報取得手段と、
前記デバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を１つ以上記憶する監視情報記憶手段と、
前記監視情報記憶手段に記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方の中から、前記デバイス情報取得手段で取得した前記デバイス情報によって識別されるデバイスに適う前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を特定する監視情報特定手段と、
前記監視情報特定手段によって特定された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を前記デバイス制御装置に送信する監視情報送信手段と、
前記デバイスの状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信手段と、
前記トリガ受信手段によって受信された前記トリガ通知に応じて、前記デバイス制御装置とのセッションを開始するセッション手段と
を備えることを特徴とするクライアント装置。
【請求項６】
ネットワークを介してクライアント装置に接続されているとともにデバイスがローカル接続されるべきデバイス制御装置によって実行されるデバイス制御方法であって、
前記デバイス制御装置にローカル接続されたデバイスを識別するためのデバイス情報を取得するデバイス情報取得ステップと、
前記デバイス情報取得ステップで取得されたデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得する監視情報取ステップと、
前記監視情報取得ステップで取得された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を記憶する監視情報記憶ステップと、
前記監視情報記憶ステップで記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方に基づいて、当該ローカル接続されたデバイスを監視するデバイス監視ステップと、
前記デバイス監視ステップで前記デバイスの状態変化を検知した場合、当該状態変化の検知を示すトリガ通知を前記ネットワークを介して前記クライアント装置に送信するトリガ通知送信ステップと、
前記トリガ通知を受信したクライアント装置からの接続要求に応じて当該クライアント装置とのセッションを開始するセッション制御ステップと
を備えることを特徴とするデバイス制御方法。
【請求項７】
前記トリガ検知アルゴリズムは、前記デバイスに応じた監視処理の実行手順を記述したプログラムコードであることを特徴とする請求項６に記載のデバイス制御方法。
【請求項８】
前記定義ファイルは、前記トリガ検知アルゴリズムを実行するために必要な命令・情報を格納したデータファイルであることを特徴とする請求項６に記載のデバイス制御方法。
【請求項９】
前記デバイス情報取得ステップにおいて、前記デバイスの接続を検知した時に、当該検知したデバイスから前記デバイス情報を取得することを特徴とする請求項６に記載のデバイス制御方法。
【請求項１０】
デバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置によって実行されるデバイス制御方法であって、
前記デバイス制御装置から、当該デバイス制御装置にローカル接続されたデバイスのデバイス情報を取得するデバイス情報取得ステップと、
前記デバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を１つ以上記憶する監視情報記憶ステップと、
前記監視情報記憶ステップで記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方の中から、前記デバイス情報取得ステップで取得された前記デバイス情報によって識別されるデバイスに適う前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を特定する監視情報特定ステップと、
前記監視情報特定ステップで特定された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を前記デバイス制御装置に送信する監視情報送信ステップと、
前記デバイスの状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信ステップと、
前記トリガ受信ステップで受信された前記トリガ通知に応じて、前記デバイス制御装置とのセッションを開始するセッションステップと
を備えることを特徴とするデバイス制御方法。
【請求項１１】
ネットワークを介して互いに接続されているデバイス制御装置およびクライアント装置を備え、前記デバイス制御装置にはデバイスがローカル接続されるように構成されたデバイス制御システムであって、
前記デバイス制御装置は、
前記デバイス制御装置にローカル接続されたデバイスを識別するためのデバイス情報を取得するデバイス情報取得手段と、
前記デバイス情報取得手段によって取得されたデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得する監視情報取得手段と、
前記監視情報取得手段によって取得された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を記憶する第１の監視情報記憶手段と、
前記第１の監視情報記憶手段に記憶されている前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方に基づいて、当該ローカル接続されたデバイスを監視するデバイス監視手段と、
前記デバイス監視手段によって前記デバイスの状態変化を検知した場合、当該状態変化の検知を示すトリガ通知を前記ネットワークを介して前記クライアント装置に送信するトリガ通知送信手段と、
前記トリガ通知を受信したクライアント装置からの接続要求に応じて当該クライアント装置とのセッションを開始するセッション制御手段とを備え、
前記クライアント装置は、
前記デバイス制御装置から、当該デバイス制御装置にローカル接続されたデバイスのデバイス情報を取得するデバイス情報取得手段と、
前記デバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を１つ以上記憶する第２の監視情報記憶手段と、
前記第２の監視情報記憶手段に記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方の中から、前記デバイス情報取得手段で取得した前記デバイス情報によって識別されるデバイスに適う前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を特定する監視情報特定手段と、
前記監視情報特定手段によって特定された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を前記デバイス制御装置に送信する監視情報送信手段と、
前記デバイスの状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信手段と、
前記トリガ受信手段によって受信された前記トリガ通知に応じて、前記デバイス制御装置とのセッションを開始するセッション手段と
を備えることを特徴とするデバイス制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス制御装置、クライアント装置、デバイス制御方法、およびデバイス制御システムに関し、特に、ネットワークを介してデバイスを制御する機能を備えたデバイス制御装置、クライアント装置、デバイス制御方法、およびデバイス制御システムに関する。
【背景技術】
【０００２】
ネットワークの普及により、従来、パーソナルコンピュータ（ＰＣ）などにローカル接続して利用していたデバイス（周辺機器）をネットワーク上のクライアントＰＣから利用できるように構成されたデバイスサーバが発表されている。【０００３】
例えば、プリンタ、ストレージ、スキャナなどのデバイスを、ネットワーク上のクライアントＰＣからデバイスサーバを介して共有デバイスとして利用する方法がいくつか提案されている。【０００４】
ひとつの方法として、クライアントＰＣに専用のアプリケーションソフトウェア（以下、「ユーティリティ」という）を導入しておき、ユーザがデバイスにアクセスしようとするときに、導入されたユーティリティを操作して、クライアントＰＣに、アクセスすべきデバイスをローカル接続したデバイスとして仮想的に認識させることにより、ネットワーク上のクライアントＰＣから、アクセスすべきデバイスにローカル接続したデバイスとしてアクセスできるようにするものがある。【０００５】
この方法では、ユーザによるセッション（接続）の開始・終了操作が必要であり、ユーザがユーティリティを使ってデバイスの終了操作をしない限り、デバイスサーバとのセッションが専有されてしまうため、他のクライアントＰＣがデバイスを使用することができない。【０００６】
かかる問題を解決するために、デバイスサーバがブロックヘッダで特定されるデータ長のブロックデータが伝送される間だけ、データ伝送専有状態として、特定のクライアントＰＣにデバイスとの間のデータ伝送を許可するネットワークファイル管理システムが開示されている（たとえば、特開２００７−３１７０６７号公報参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
確かに、特許文献１に開示されたネットワークファイル管理システムでは、複数のクライアントＰＣから手動操作を行うことなく、デバイスを共有することはできる。【０００８】
しかしながら、クライアントＰＣが、ネットワーク経由で接続された１台のデバイスを専有している状態においては、当該クライアントＰＣが他のデバイスを使用することはできないという技術的な制限により、クライアントＰＣとの専有状態を高頻度で必要とするデバイスが接続された場合には、その他のデバイスとの同時使用が困難になってしまう。【０００９】
特に、デバイスがＩＣカードリーダである場合、ＩＣカードが検知されたか否かの問い合わせ（ポーリング）、すなわち、デバイス監視処理（状態変化検知処理）を周期的に行う必要があるが、このデバイス監視処理は、一般的に、クライアントＰＣにインストールされたデバイスドライバによって実行される。【００１０】
このため、クライアントＰＣによるネットワークを介したＩＣカードリーダの専有が頻繁に発生するとともに、当該デバイスの専有中はネットワーク上のトラフィックが著しく増加するので、このようなデバイスの専有は、必要最小限であることが望ましい。【００１１】
また、デバイスの専有が頻発し、常にネットワーク上にデータが流れている状態では、データをハッキングされやすく、セキュリティの面からも望ましくない。【００１２】
加えて、前述のデバイス監視処理（状態変化検知処理）は、デバイス毎に処理内容が異なる機種依存性を排除するために、デバイスサーバに特定のデバイスに適合したトリガ検知アルゴリズムだけを保持させたときは、デバイスサーバの汎用性が失われるという問題がある。一方で、デバイスサーバにシステムに存在する様々なデバイスに適合したトリガ検知アルゴリズムをすべて保持させたときは、デバイスサーバの汎用性は確保できるものの、デバイスサーバは大容量の記憶領域を必要とし、コスト増を招いてしまう。【００１３】
本発明の第１の目的は、従来、クライアント装置に実装されていたデバイス監視処理（状態変化検知処理）をデバイス制御装置が備えることで、デバイス制御装置がクライアント装置との通信を伴わずに自立的にデバイスの状態変化を監視し、デバイスの状態変化を検知した時点でこれをクライアント装置へ通知することにより、クライアント装置によるデバイスの監視（ポーリング）を不要とし、ネットワーク上のトラフィックを低減することができるデバイス制御装置、クライアント装置、デバイス制御方法、およびデバイス制御システムを提供することにある。【００１４】
本発明の第２の目的は、デバイスの状態変化を契機に、クライアント装置とデバイスが通信を行うことで、クライアント装置は必要なときだけデバイスを専有してセキュリティの脆弱性を低減するとともに、専有が頻繁に必要なデバイスであっても複数台数を同時に使用することができるデバイス制御装置、クライアント装置、デバイス制御方法、およびデバイス制御システムを提供することにある。【００１５】
本発明の第３の目的は、監視対象となったデバイスに適合したトリガ検知アルゴリズムや定義ファイルをデバイスサーバへ動的にインストールまたはダウンロードすることにより、デバイスサーバは汎用性を確保しながらも様々なデバイスの検知処理を実行することができるデバイス制御装置、クライアント装置、デバイス制御方法、およびデバイス制御システムを提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明の第１の態様によれば、ネットワークを介してクライアント装置に接続されているとともにデバイスがローカル接続されるべきデバイス制御装置であって、前記デバイス制御装置にローカル接続されたデバイスを識別するためのデバイス情報を取得するデバイス情報取得手段と、前記デバイス情報取得手段によって取得されたデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得する監視情報取得手段と、前記監視情報取得手段によって取得された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を記憶する監視情報記憶手段と、前記監視情報記憶手段に記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方に基づいて、前記ローカル接続されたデバイスを監視するデバイス監視手段と、前記デバイス監視手段によって前記デバイスの状態変化を検知した場合、当該状態変化の検知を示すトリガ通知を前記ネットワークを介して前記クライアント装置に送信するトリガ通知送信手段と、前記トリガ通知を受信したクライアント装置からの接続要求に応じて当該クライアント装置とのセッションを開始するセッション制御手段とを備えることを特徴とするデバイス制御装置が提供される。【００１７】
上記目的を達成するために、本発明の第２の態様によれば、デバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置であって、前記デバイス制御装置から、当該デバイス制御装置にローカル接続されたデバイスのデバイス情報を取得するデバイス情報取得手段と、前記デバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を１つ以上記憶する監視情報記憶手段と、前記監視情報記憶手段に記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方の中から、前記デバイス情報取得手段で取得した前記デバイス情報によって識別されるデバイスに適う前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を特定する監視情報特定手段と、前記監視情報特定手段によって特定された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を前記デバイス制御装置に送信する監視情報送信手段と、前記デバイスの状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信手段と、前記トリガ受信手段によって受信された前記トリガ通知に応じて、前記デバイス制御装置とのセッションを開始するセッション手段とを備えることを特徴とするクライアント装置が提供される。【００１８】
上記目的を達成するために、本発明の第３の態様によれば、ネットワークを介してクライアント装置に接続されているとともにデバイスがローカル接続されるべきデバイス制御装置によって実行されるデバイス制御方法であって、前記デバイス制御装置にローカル接続されたデバイスを識別するためのデバイス情報を取得するデバイス情報取得ステップと、前記デバイス情報取得ステップで取得されたデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得する監視情報取ステップと、前記監視情報取得ステップで取得された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を記憶する監視情報記憶ステップと、前記監視情報記憶ステップで記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方に基づいて、当該ローカル接続されたデバイスを監視するデバイス監視ステップと、前記デバイス監視ステップで前記デバイスの状態変化を検知した場合、当該状態変化の検知を示すトリガ通知を前記ネットワークを介して前記クライアント装置に送信するトリガ通知送信ステップと、前記トリガ通知を受信したクライアント装置からの接続要求に応じて当該クライアント装置とのセッションを開始するセッション制御ステップとを備えることを特徴とするデバイス制御方法が提供される。【００１９】
上記目的を達成するために、本発明の第４の態様によれば、デバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置によって実行されるデバイス制御方法であって、前記デバイス制御装置から、当該デバイス制御装置にローカル接続されたデバイスのデバイス情報を取得するデバイス情報取得ステップと、前記デバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を１つ以上記憶する監視情報記憶ステップと、前記監視情報記憶ステップで記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方の中から、前記デバイス情報取得ステップで取得された前記デバイス情報によって識別されるデバイスに適う前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を特定する監視情報特定ステップと、前記監視情報特定ステップで特定された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を前記デバイス制御装置に送信する監視情報送信ステップと、前記デバイスの状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信ステップと、前記トリガ受信ステップで受信された前記トリガ通知に応じて、前記デバイス制御装置とのセッションを開始するセッションステップとを備えることを特徴とするデバイス制御方法が提供される。【００２０】
上記目的を達成するために、本発明の第５の態様によれば、ネットワークを介して互いに接続されているデバイス制御装置およびクライアント装置を備え、前記デバイス制御装置にはデバイスがローカル接続されるように構成されたデバイス制御システムであって、前記デバイス制御装置は、前記デバイス制御装置にローカル接続されたデバイスを識別するためのデバイス情報を取得するデバイス情報取得手段と、前記デバイス情報取得手段によって取得されたデバイス情報に応じて、当該デバイス情報で識別されるデバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を取得する監視情報取得手段と、前記監視情報取得手段によって取得された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を記憶する第１の監視情報記憶手段と、前記第１の監視情報記憶手段に記憶されている前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方に基づいて、当該ローカル接続されたデバイスを監視するデバイス監視手段と、前記デバイス監視手段によって前記デバイスの状態変化を検知した場合、当該状態変化の検知を示すトリガ通知を前記ネットワークを介して前記クライアント装置に送信するトリガ通知送信手段と、前記トリガ通知を受信したクライアント装置からの接続要求に応じて当該クライアント装置とのセッションを開始するセッション制御手段とを備え、前記クライアント装置は、前記デバイス制御装置から、当該デバイス制御装置にローカル接続されたデバイスのデバイス情報を取得するデバイス情報取得手段と、前記デバイスの状態変化を監視するためのトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を１つ以上記憶する第２の監視情報記憶手段と、前記第２の監視情報記憶手段に記憶された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方の中から、前記デバイス情報取得手段で取得した前記デバイス情報によって識別されるデバイスに適う前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を特定する監視情報特定手段と、前記監視情報特定手段によって特定された前記トリガ検知アルゴリズムおよび前記定義ファイルの少なくとも一方を前記デバイス制御装置に送信する監視情報送信手段と、前記デバイスの状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信手段と、前記トリガ受信手段によって受信された前記トリガ通知に応じて、前記デバイス制御装置とのセッションを開始するセッション手段とを備えることを特徴とするデバイス制御システムが提供される。
【発明の効果】
【００２１】
本発明によれば、従来、クライアント装置側に実装されていたデバイス監視処理（状態変化検知処理）をデバイス制御装置が備えることで、デバイス制御装置がクライアント装置との通信を伴わずに自立的にデバイスの状態変化を監視し、状態変化を検知した時点でこれをクライアント装置へ通知するので、クライアント装置によるデバイスの監視・ポーリングが不要となり、ネットワーク上のトラフィックを低減することができる。【００２２】
本発明によれば、デバイスの状態変化を契機（トリガ）に、クライアント装置とデバイスが通信を行なうことで、クライアント装置は必要なときだけデバイスを専有することが可能となるので、セキュリティの脆弱性を低減することができるとともに、専有が頻繁に必要なデバイスであっても複数台数の同時使用が可能となる。【００２３】
本発明によれば、クライアント装置が、監視対象となったデバイスに適合したトリガ検知アルゴリズムおよび定義ファイルの少なくとも一方を、デバイス制御装置へ動的にインストールまたはダウンロード可能に構成することで、デバイス制御装置は汎用性を確保しながらも様々なデバイスの検知処理を実行することができる。
【図面の簡単な説明】
【００２４】
第１図は、本発明の第１の実施の形態に係るデバイス制御システムの概略構成を示すブロック図である。
第２図は、第１図におけるクライアントＰＣ１００のハードウェア構成およびソフトウェア構成を説明するのに用いられるブロック図である。
第３図は、第１図におけるデバイスサーバ２００のハードウェア構成およびソフトウェア構成を説明するのに用いられるブロック図である。
第４図は、第３図のデバイスサーバ２００にデバイス３００が接続された場合にデバイスサーバ２００によって実行されるデバイス情報取得処理の手順を示すフローチャートである。
第５図は、第１図におけるクライアントＰＣ１００によって実行されるデバイス３００の仮想化制御処理と定義ファイル１１５とトリガ検知アルゴリズム１１６の送信処理の手順を示すフローチャートである。
第６図は、第５図のステップＳ５１１で送信される定義ファイル１１５とトリガ検知アルゴリズム１１６を含むインストール用プロトコルの電文（パケット）のデータ構造を説明するのに用いられる図である。
第７図は、第６図における定義ファイル１１５のデータ構造を説明するのに用いられる図である。
第８図は、第７図における命令７７０のデータ構造を説明するのに用いられる図である。
第９図は、第３図のデバイスサーバ２００によって実行されるデバイス情報取得後制御処理の手順を示すフローチャートである。
第１０図は、第９図のステップＳ９１０で実行されるデバイスサーバ２００のトリガ検知処理の手順を示すフローチャートである。
第１１図は、第１図におけるクライアントＰＣ１００によって実行されるデータ送受信処理の手順を示すフローチャートである。
第１２図は、第９図のステップＳ９０７及び第１１図のステップＳ１１０４で送受信されるデータ送受信用パケットのデータ構成を説明するのに用いられる図である。
第１３図は、本発明の第２の実施の形態に係るデバイス制御システムの概略構成を示すブロック図である。
第１４図は、第１３図におけるネットワークデバイス２５０のハードウェア構成およびソフトウェア構成を説明するのに用いられるブロック図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００２６】
以下、本発明の第１の実施の形態を説明する。
【００２７】
＜１．デバイス制御システムの構成＞
第１図は、本発明の第１の実施の形態に係るデバイス制御システムの概略構成を示すブロック図である。
【００２８】
第１図において、デバイス制御システムは、クライアントＰＣ１００（１００Ａ，１００Ｂ）、デバイスサーバ２００（２００Ａ，２００Ｂ）、デバイス３００（３００Ａ，３００Ｂ）から構成される。
【００２９】
デバイスサーバ２００とデバイス３００は、それぞれ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＩＥＥＥ１３９４などのインターフェースに準拠した接続ケーブル４００を介して接続される。また、デバイスサーバ２００とクライアントＰＣ１００（ＰＣ１００Ａ，ＰＣ１００Ｂ）は、有線または無線のネットワーク５００を介して接続される。
【００３０】
次に、第１図のデバイス制御システムを構成する各装置について順次説明する。
【００３１】
＜２．クライアントＰＣ１００の構成＞
第２図は、第１図におけるクライアントＰＣ１００のハードウェア構成およびソフトウェア構成を説明するのに用いられるブロック図である。
【００３２】
第２図において、クライアントＰＣ１００は、本発明の第１の実施の形態に係るクライアント装置の一例であり、ＣＰＵ１０１、入力部１０２、表示部１０３、メモリ１０４、通信部１０５、外部記憶部１０６などから構成されており、これらが内部バス１０７を介して接続されている。
【００３３】
ＣＰＵ１０１は、中央処理制御部であり、メモリ１０４や外部記憶部１０６に格納された所定のプログラムを実行することによってクライアントＰＣ１００を全体的に制御する。
【００３４】
入力部１０２は、各種入力、指示操作などを行なうための操作部であり、キーボードやマウスなどで構成される。
【００３５】
表示部１０３は、各種画面などを表示するディスプレイであり、クライアントＰＣ１００に内蔵もしくは外部接続される。
【００３６】
メモリ１０４は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される記憶領域であり、所定のプログラムやデータを格納する。
【００３７】
通信部１０５は、Ｅｔｈｅｒｎｅｔ（登録商標）のような有線ネットワーク、若しくは、ＩＥＥＥ８０２．１１ａやＩＥＥＥ８０２．１１ｇのような無線ネットワークなど、ネットワーク５００の通信方式に対応したネットワークパケットによる送受信や通信制御を行うためのインターフェースである。クライアントＰＣ１００は、通信部１０５を介してデバイスサーバ２００とデータの送受信を行うことができる。
【００３８】
外部記憶部１０６は、ＯＳ１０８、アプリケーションプログラム１０９、常駐モジュール１１０、デバイスドライバ１１１、ＵＳＢクラスドライバ１１２、ＵＳＢ仮想バスデバイス１１３、通信制御部１１４、定義ファイル１１５、トリガ検知アルゴリズム１１６などの各種ソフトウェアプログラムや各種データを記憶する。
【００３９】
外部記憶部１０６に記憶されたソフトウェアプログラムやデータは、ＣＰＵ１０１の制御に従い、メモリ１０４上に読み出されて実行される。
【００４０】
デバイスドライバ１１１、ＵＳＢクラスドライバ１１２、ＵＳＢ仮想バスデバイス１１３は、常駐モジュール１１０がデバイス３００のデバイス情報を取得、登録することにより、動的に生成されるドライバソフトウェア部品である。
【００４１】
アプリケーションプログラム１０９は、上記各ドライバソフトウェア部品（デバイスドライバ１１１、ＵＳＢクラスドライバ１１２、ＵＳＢ仮想バスデバイス１１３）及び通信制御部１１４を介して、デバイス３００に対してデータ送受信要求を送るソフトウェア部品である。
【００４２】
以下、常駐モジュール１１０、デバイスドライバ１１１、ＵＳＢクラスドライバ１１２、ＵＳＢ仮想バスデバイス１１３、通信制御部１１４、定義ファイル１１５、トリガ検知アルゴリズム１１６について順次詳細に説明する。
【００４３】
常駐モジュール１１０は、ＯＳ１０８が起動している間、常に待機および動作しているソフトウェア部品である。ネットワーク５００上にあるデバイスサーバ２００とデータの送受信を行うことにより、デバイスサーバ２００に接続されたデバイス３００を認識し、当該デバイス３００のデバイス情報を受信し、受信したデバイス情報をもとに、デバイス３００とのデータ送受信に必要なドライバソフトウェア部品（ＵＳＢ仮想バスデバイス１１３、ＵＳＢクラスドライバ１１２、デバイスドライバ１１１）を一意に特定し、各ドライバソフトウェア部品を順次動的に生成する。
【００４４】
デバイスドライバ１１１は、ＯＳ１０８やアプリケーションプログラム１０９など（以下、「上位層のソフトウェア」という）の指示により、デバイス３００に対する制御コマンドを生成し、この制御コマンドに対するデバイス３００の応答を上位層のソフトウェアへ通知するソフトウェア部品である。
【００４５】
ＵＳＢクラスドライバ１１２は、プラグアンドプレイイベントを生成するとともに制御コマンドを送受信するためのＵＳＢポートを作成して、その上位にデバイスドライバ１１１をロードするソフトウェア部品であって、さらに、デバイスドライバ１１１で生成される制御コマンドをＵＳＢパケットに変換してＵＳＢ仮想バスデバイス１１３に送るとともに、ＵＳＢ仮想バスデバイス１１３から送られてくるＵＳＢパケットを制御コマンドに変換してデバイスドライバ１１１へ送るソフトウェア部品である。
【００４６】
ＵＳＢ仮想バスデバイス１１３は、デバイスドライバ１１１、ＵＳＢクラスドライバ１１２を介してアプリケーションプログラム１０９から送られてくるデータ送受信要求を受信すると、デバイス３００がクライアントＰＣ１００に直結（ローカル接続）しているときと同様の振る舞い（仮想化制御）を提供するソフトウェア部品である。この「仮想化制御」によって、デバイス３００をローカル接続したときと同じ状態でデータの送受信を行うことができる。
【００４７】
通信制御部１１４は、ＵＳＢ仮想バスデバイス１１３から送られてくるＵＳＢパケットとデバイスサーバ２００とネットワーク５００を介して通信するためのネットワークパケットとのプロトコル変換を行い、通信部１０５を介してデバイスサーバ２００との間のデータ送受信を制御するソフトウェア部品である。ＵＳＢ仮想バスデバイス１１３を介して送られてくるアプリケーションプログラム１０９からのデータ送受信要求を受信すると、デバイスサーバ２００とのセッション（接続）を開始し、データの送受信が完了すると、セッションを切断する。
【００４８】
定義ファイル１１５は、デバイスサーバ２００において、デバイス３００の監視を実行する際、トリガ検知アルゴリズム１１６に対する必要な命令・情報等を格納しているデータファイルである（第７図）。
【００４９】
トリガ検知アルゴリズム１１６は、デバイスサーバ２００において、対象となるデバイス３００を監視し、その状態変化を検知するための実行手順が記述されたプログラムコードであり、状態変化検知実行時に定義ファイル１１５を読み込むことで、本実行手順に従って、デバイス３００の監視処理（以下、「トリガ検知処理」という）が行われる。
【００５０】
定義ファイル１１５とトリガ検知アルゴリズム１１６は、デバイス３００の監視を行なうための１組の監視プログラム（監視情報）であり、デバイス３００の機種ごとに異なる。このため、クライアントＰＣ１００は、各デバイス３００に対応した定義ファイル１１５とトリガ検知アルゴリズム１１６をそれぞれ１つ以上記憶している。第２図では、１からＮまでのＮ機種分の定義ファイル１１５とトリガ検知アルゴリズム１１６を記憶している状態を示している。
【００５１】
＜３．デバイスサーバ２００の構成＞
第３図は、第１図におけるデバイスサーバ２００のハードウェア構成およびソフトウェア構成を説明するのに用いられるブロック図である。
【００５２】
第３図において、デバイスサーバ２００は、本発明の第１の実施の形態に係るデバイス制御装置の一例であり、ＣＰＵ２０１、メモリ２０２、通信部２０３、ＵＳＢＩ／Ｆ２０４、外部記憶部２０５などから構成されており、これらが内部バス２０６を介して接続されている。
【００５３】
ＣＰＵ２０１、メモリ２０２、通信部２０３、および内部バス２０６については、前述したクライアントＰＣ１００における構成と同一である。
【００５４】
ＵＳＢＩ／Ｆ２０４は、デバイス３００を接続するためのインターフェースであり、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）仕様に準拠した入出力インターフェースである。
【００５５】
外部記憶部２０５は、通信制御部２０７、デバイス制御部２０８などのソフトウェア機能部やデータを記憶する。
【００５６】
外部記憶部２０５に記憶されたこれらのソフトウェア機能部やデータは、ＣＰＵ２０１の制御に従い、メモリ２０２上に読み出されて実行される。
【００５７】
以下、通信制御部２０７、デバイス制御部２０８について順次詳細に説明する。
【００５８】
通信制御部２０７は、通信部２０３およびネットワーク５００を介して接続されているクライアントＰＣ１００との間のセッションを制御（開始、切断）するとともに、クライアントＰＣ１００との間で送受信するネットワークパケットとデバイス３００との間で送受信するＵＳＢパケットとのプロトコル変換を行い、クライアントＰＣ１００とデバイス３００との間のデータ送受信を仲介（中継）する。
【００５９】
デバイス制御部２０８は、定義ファイル２０９、トリガ検知アルゴリズム２１０、およびデバイス情報２１１を記憶し、デバイス３００を監視してその状態変化を検知し、クライアントＰＣ１００へ通知する機能部である。
【００６０】
デバイス制御部２０８に記憶される定義ファイル２０９とトリガ検知アルゴリズム２１０の構成は、クライアントＰＣ１００の外部記憶部１０６に記憶される定義ファイル１１５とトリガ検知アルゴリズム１１６と同一である。ただし、デバイスサーバ２００は、自身に接続されたデバイス３００の監視（ポーリング）に必要な定義ファイル２０９とトリガ検知アルゴリズム２１０だけを保持する。
【００６１】
デバイス情報２１１は、デバイス３００を識別するための情報であって、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーＩＤ（ＶＩＤ）、機種を識別するために機種毎に割り当てられた製品ＩＤ（ＰＩＤ）、機器の個体を識別するために機器毎に割り当てられたシリアル番号などを含む。このデバイス情報は、デバイス３００がデバイスサーバ２００に接続された際などに、デバイス制御部２０８によってデバイス３００から取得される情報である。
【００６２】
デバイス制御部２０８は、デバイス３００から取得したデバイス情報２１１に基づいて、接続されたデバイス３００の機種を特定する。また、デバイス制御部２０８は、特定されたデバイス３００の機種に対応する定義ファイル１１５とトリガ検知アルゴリズム１１６をクライアントＰＣ１００から受信し、受信した定義ファイル１１５とトリガ検知アルゴリズム１１６を定義ファイル２０９とトリガ検知アルゴリズム２１０としてメモリ２０２に保存する。さらに、デバイス制御部２０８は、保存した定義ファイル２０９とトリガ検知アルゴリズム２１０を用いて、接続されたデバイス３００に対して一定間隔で後述する第１０図の監視（ポーリング）処理を行なうことでデバイス３００の状態変化を検知し、この検知した状態変化をクライアントＰＣ１００へ通知する。
【００６３】
ここで、デバイスの状態変化とは、例えば、カードリーダに対してカードの読み取り操作が行なわれたことや、プリンタやスキャナの操作ボタンが押下されたことなどである。この様なデバイス３００の状態変化の検知を契機（トリガ）として、クライアントＰＣ１００は、デバイスサーバ２００とのセッションを開始する。
【００６４】
＜４．デバイス３００の構成＞
デバイス３００（３００Ａ，３００Ｂ）は、ＵＳＢインターフェースを持つ汎用的な入出力装置であり、例えば、カードリーダやプリンタなどの単機能周辺装置（ＳＦＰ：Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）、あるいは、プリント機能の他にスキャン機能やコピー機能、ストレージ機能などを兼ね備えた多機能周辺機器（ＭＦＰ：Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）である。ただし、これらに限定されるものでなく、別のデバイスであってもよい。
【００６５】
また、本実施の形態では、デバイスサーバ２００、デバイス３００をそれぞれ別体の装置としているが、これに限定されるものではなく、デバイスサーバ２００をデバイス３００のケーシング内に収まるように一体構造としても良い。
【００６６】
このような各装置より構成される第１図のデバイス制御システムでは、デバイスサーバ２００は、自身に接続されたデバイス３００のデバイス情報を取得し、クライアントＰＣ１００に送信する。クライアントＰＣ１００は、取得したデバイス３００のデバイス情報に基づいて、デバイス３００の状態変化を検知するための定義ファイル１１５とトリガ検知アルゴリズム１１６を外部記憶部１０６から読み出して、デバイスサーバ２００に送信する。デバイスサーバ２００は、クライアントＰＣ１００から受信した定義ファイル１１５とトリガ検知アルゴリズム１１６を、それぞれ定義ファイル２０９とトリガ検知アルゴリズム２１０としてデバイス制御部２０８に記憶し、これらを用いて、デバイス制御部２０８はデバイス３００の監視（ポーリング）を行い、デバイス３００の状態変化を検知すると、通信制御部２０７と通信部２０３を介して、クライアントＰＣ１００にこの状態変化の検知を示す情報（以下、「トリガ通知」という）を送信する。クライアントＰＣ１００は、デバイスサーバ２００からトリガ通知を受信すると、デバイスサーバ２００とのセッションを開始し、デバイスサーバ２００を介して、デバイス３００とのデータの送受信を行う。
【００６７】
＜５．デバイスサーバ２００にデバイス３００が接続されたときの処理＞
第４図は、第３図のデバイスサーバ２００にデバイス３００が接続された場合にデバイスサーバ２００によって実行されるデバイス情報取得処理の手順を示すフローチャートである。
【００６８】
第４図において、デバイスサーバ２００は、デバイス３００が接続されると、本デバイス情報取得処理を実行する。
【００６９】
まず、デバイス制御部２０８は、デバイス３００からＵＳＢＩ／Ｆ２０４を介してデバイス３００を識別するためのデバイス情報を取得し、デバイス制御部２０８に格納する（ステップＳ４０１）。デバイス情報は、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーＩＤ（ＶＩＤ）、機種を識別するために機種毎に割り当てられた製品ＩＤ（ＰＩＤ）、機器の個体を識別するために機器毎に割り当てられたシリアル番号などを含む。
【００７０】
続いて、デバイス３００から取得したデバイス情報にシリアル番号が格納されているか否かを判別する（ステップＳ４０２）。
【００７１】
ステップＳ４０２の判別の結果、取得したデバイス情報にシリアル番号が格納されていないときは（ステップＳ４０２でＮＯ）、デバイスサーバ２００の有する固有情報と、デバイスサーバ２００の接続ポート固有情報とからシリアル番号を生成してデバイス情報に付与し（ステップＳ４０３）、本処理を終了する。一方、取得したデバイス情報にシリアル番号が格納されている場合には（ステップＳ４０２でＹＥＳ）、直ちに本処理を終了する。これにより、シリアル番号が格納されていない同一機種のデバイス３００が複数接続された場合でもそれぞれ識別可能となる。
【００７２】
本処理において、デバイスサーバ２００に複数のデバイス３００が接続された場合には、デバイスごとに本デバイス情報取得処理が繰り返し実行される。
【００７３】
なお、デバイスサーバ２００の固有情報は、デバイスサーバ２００を識別するための情報であり、例えば、デバイスサーバ２００のＩＰアドレスやＭＡＣアドレス、シリアルナンバー（製造番号）などを含むが、これらに限定されず、さらに、これらの情報を組み合わせたものであってもよい。
【００７４】
また、デバイスサーバ２００の接続ポート固有情報とは、デバイスサーバ２００の接続ポートを識別するための情報であり、例えば、デバイスサーバ２００の有するＵＳＢポートの番号やＩＥＥＥ１３９４ポートの番号などを含むが、これらに限定されない。
【００７５】
＜６．クライアントＰＣ１００におけるデバイス３００の仮想化制御処理と定義ファイルなどの送信処理＞
第５図は、第１図におけるクライアントＰＣ１００によって実行されるデバイス３００の仮想化制御処理と定義ファイル１１５とトリガ検知アルゴリズム１１６の送信処理の手順を示すフローチャートである。
【００７６】
＜６−１．クライアントＰＣ１００におけるデバイス３００の仮想化制御処理＞
第５図において、クライアントＰＣ１００内の常駐モジュール１１０は、デバイスサーバ２００を介してネットワーク５００に接続されたデバイス３００を知るために、通信部１０５を介して、デバイスサーバ２００に対して検索パケットをブロードキャストする（ステップＳ５０１）。具体的には、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのプロトコルを用いて、デバイスサーバ２００の検索（問い合わせ）を行なう。
【００７７】
常駐モジュール１１０は、デバイスサーバ２００からの応答を待ち（ステップＳ５０２）、デバイスサーバ２００から応答がない場合には（ステップＳ５０２でＮＯ）、仮想化制御処理は行わずに、本処理を終了する。
【００７８】
一方、常駐モジュール１１０は、デバイスサーバ２００から応答があると（ステップＳ５０２でＹＥＳ）、デバイスサーバ２００からの応答電文に含まれるデバイス情報（ディスクリプタ）を取得する（ステップＳ５０３）。
【００７９】
常駐モジュール１１０は、取得したデバイス情報のうち、デバイスディスクリプタに記述されたベンダーＩＤ（ＶＩＤ）と製品ＩＤ（ＰＩＤ）、ストリングディスクリプタに記述されたシリアル番号とデバイス名称によってデバイスの個体を識別する。また、インターフェースディスクリプタに記述されたインターフェース番号を識別する。このようにして識別されたデバイスの個体に関する情報に基づいて、仮想化制御処理に必要なドライバソフトウェア部品（ＵＳＢ仮想バスデバイス１１３、ＵＳＢクラスドライバ１１２、デバイスドライバ１１１）を一意に特定し（ステップＳ５０４）、各ドライバソフトウェア部品を順次動的に生成する（ステップＳ５０５〜Ｓ５０７）。
【００８０】
その後、常駐モジュール１１０は、アプリケーションプログラム１０９を起動し、アプリケーションプログラム１０９からドライバソフトウェア部品を制御するためのインターフェースを起動する（ステップＳ５０８）。このようにして、デバイス３００の仮想化制御処理が開始される。
【００８１】
＜６−２．クライアントＰＣ１００によって実行される定義ファイルなどの送信処理＞
続いて、クライアントＰＣ１００は、取得したデバイス情報からデバイス３００の種別（機種）を識別し、そのデバイス３００に対応する定義ファイル１１５とトリガ検知アルゴリズム１１６が外部記憶部１０６に記憶されているか否かを判別する（ステップＳ５０９）。
【００８２】
取得したデバイス情報で特定されるデバイス３００に対応する定義ファイル１１５とトリガ検知アルゴリズム１１６が外部記憶部１０６に記憶されている場合は（ステップＳ５０９でＹＥＳ）、デバイスサーバ２００とのセッションを開始し（ステップＳ５１０）、デバイス３００に対応する定義ファイル１１５とトリガ検知アルゴリズム１１６を含む後述する第６図のインストール用の電文（パケット）を暗号化し、この電文（パケット）をデバイス３００が接続されたデバイスサーバ２００に送信する（ステップＳ５１１）。電文の送信後は、デバイスサーバ２００とのセッションを切断して（ステップＳ５１２）、本処理を終了する。
【００８３】
一方、取得したデバイス情報で特定されるデバイス３００に対応する定義ファイル１１５とトリガ検知アルゴリズム１１６が外部記憶部１０６に記憶されていないときは（ステップＳ５０９でＮＯ）、エラー通知を行って（ステップＳ５１３）、本処理を終了する。ここで、エラー通知は、例えば、表示部１０３を介してユーザに対して、該当する定義ファイル１１５とトリガ検知アルゴリズム１１６が記憶されていないことを伝え、ユーザにインストールを促すことによって実現される。
【００８４】
＜７．インストール用パケットのデータ構造＞
第６図は、第５図のステップＳ５１１で送信される定義ファイル１１５とトリガ検知アルゴリズム１１６を含むインストール用プロトコルの電文（パケット）のデータ構造を説明するのに用いられる図である。
【００８５】
パケットは、署名データ６１０、電文サイズ６２０、コマンドＩＤ６３０、ベンダーＩＤ６４０、製品ＩＤ６５０、シリアル番号６６０、定義ファイル１１５、トリガ検知アルゴリズム１１６で構成される。
【００８６】
このうち、ベンダーＩＤ６４０、製品ＩＤ６５０、シリアル番号６６０によって、デバイス３００の種別（機種）を一意に識別することができる。また、定義ファイル１１５、トリガ検知アルゴリズム１１６は、外部記憶部１０６に保持されたＮ組の定義ファイル１１５とトリガ検知アルゴリズム１１６の組み合わせの中から、取得したデバイス情報で特定されるデバイス３００毎に、対応する定義ファイル１１５とトリガ検知アルゴリズム１１６の組み合わせが選択され、ここに格納される。選択される組み合わせの数は１つに限らず、複数であってもよい。
【００８７】
＜７−１．定義ファイル１１５のデータ構造＞
第７図は、第６図における定義ファイル１１５のデータ構造を説明するのに用いられる図である。
【００８８】
第７図において、定義ファイル１１５は、トリガ検知アルゴリズム１１６の実行に必要な命令・情報などを含む。データ長７１０、トリガ検知アルゴリズム１１６に対応するデバイス３００のベンダーＩＤ７２０、プロダクトＩＤ７３０、インターフェース番号７４０、命令数（ｎ）７５０、デバイス３００からの応答に対して状態変化の有無を判定するのに用いられるキー情報７６０、デバイス３００のトリガ検知処理（監視処理）に必要な手続きが記述された１つまたは複数の命令７７０で構成される。命令７７０には１〜ｎ（ｎ：命令数（ｎ）７５０の値）まで順にインデックスが付与されている。
【００８９】
＜７−２．命令のデータ構造＞
第８図は、第７図における命令７７０のデータ構造を説明するのに用いられる図である。
【００９０】
第８図において、命令７７０は、命令サイズ８１０、当該コマンド発行に必要なＵＳＢの規格で定義された転送タイプ８２０、Ｃｏｎｔｒｏｌ転送におけるＳｅｔｕｐ  Ｔｏｋｅｎで送信する転送用パラメータ８３０、エンドポイントアドレス８４０、デバイス３００からの応答に状態変化の情報を含むものであるかを示すキー判定フラグ８５０、デバイス３００に対して発行すべきデバイス固有のコマンド８６０で構成され、１つのコマンドを発行するためのパラメータが格納されたものである。
【００９１】
＜８．デバイスサーバ２００の制御フロー＞
第９図は、第３図のデバイスサーバ２００によって実行されるデバイス情報取得後制御処理の手順を示すフローチャートである。
【００９２】
第９図において、デバイスサーバ２００は、次の４つの機能を備える。
（１）デバイス３００から取得したデバイス情報をクライアントＰＣ１００に通知する機能、
（２）クライアントＰＣ１００とのセッションを開始し、デバイス３００の監視に必要な定義ファイル１１５とトリガ検知アルゴリズム１１６を受信する機能、
（３）クライアントＰＣ１００とのセッションを開始し、クライアントＰＣ１００とデバイス３００との間のデータ送受信処理を行う機能、
（４）デバイス３００を一定間隔で監視（ポーリング）し、デバイス３００の状態変化を検知し、クライアントＰＣ１００にトリガ通知を送信する機能。
【００９３】
＜８−１．デバイス情報などの送信処理＞
はじめに、機能（１）は、第９図のステップＳ９０１〜Ｓ９０３の処理に該当する。
【００９４】
デバイスサーバ２００は、クライアントＰＣ１００から接続要求を受信したか否かを判別し（ステップＳ９０１）、接続要求を受信したときは（ステップＳ９０１でＹＥＳ）、その接続要求がＴＣＰ以外、例えば、ＵＤＰによる接続要求（問い合わせ）の場合には（ステップＳ９０２でＮＯ）、デバイス情報をクライアントＰＣ１００に通知して（ステップＳ９０３）、再びステップＳ９０１以降の処理を繰り返す。
【００９５】
＜８−２．ＴＣＰによるセッション処理＞
次に、機能（２）および機能（３）は、第９図のステップＳ９０１〜Ｓ９０２、ステップＳ９０４〜Ｓ９０８の処理に該当する。
【００９６】
デバイスサーバ２００は、クライアントＰＣ１００から接続要求があるか否かを判別し（ステップＳ９０１）、接続要求がある場合に（ステップＳ９０１でＹＥＳ）、この接続要求がＴＣＰによる接続要求であるときは（ステップＳ９０２でＹＥＳ）、クライアントＰＣ１００とのセッションを開始する（ステップＳ９０４）。
【００９７】
次に、通信制御部２０７は、クライアントＰＣ１００から受信した電文（パケット）が定義ファイル１１５とトリガ検知アルゴリズム１１６のインストール用電文かデータ送受信用電文かを判別する（ステップＳ９０５）。
【００９８】
ステップＳ９０５の判別の結果、インストール用電文の場合、インストール用電文に含まれる定義ファイル１１５とトリガ検知アルゴリズム１１６を、それぞれ定義ファイル２０９とトリガ検知アルゴリズム２１０としてデバイス制御部２０８に格納して（ステップＳ９０６）、ステップＳ９０８に進む。
【００９９】
ステップＳ９０５の判別の結果、データ送受信用電文の場合、デバイス３００に対してデータの送受信を行なって（ステップＳ９０７）、ステップＳ９０８に進む。ステップＳ９０７で送受信されるデータにおけるデータ送受信用パケットのデータ構造は第１２図を用いて詳述する。
【０１００】
続くステップＳ９０８では、クライアントＰＣ１００とのセッションを切断（ステップＳ９０８）し、再びステップＳ９０１以降の処理を繰り返す。
【０１０１】
＜８−３．トリガ検知処理＞
最後に、機能（４）は、第９図のステップＳ９０１、ステップＳ９０９〜Ｓ９１０の処理に該当する。
【０１０２】
デバイスサーバ２００は、クライアントＰＣ１００から接続要求がなく受信待機状態のときは（ステップＳ９０１でＮＯ）、接続されたデバイス３００に対応する定義ファイル２０９とトリガ検知アルゴリズム２１０がデバイス制御部２０８に格納されていると（ステップＳ９０９でＹＥＳ）、この定義ファイル２０９とトリガ検知アルゴリズム２１０を用いて、後述する第１０図のデバイス３００のトリガ検知処理（監視処理）を実行して（ステップＳ９１０）、再びステップＳ９０１以降の処理を繰り返す。
【０１０３】
第１０図は、第９図のステップＳ９１０で実行されるデバイスサーバ２００のトリガ検知処理の手順を示すフローチャートである。
【０１０４】
第１０図において、デバイス制御部２０８は、トリガ検知アルゴリズム２１０の起動時に定義ファイル２０９の読み込みを行い、第７図に示した形式に解読して、トリガ検知処理（監視処理）に必要なデバイス３００固有の情報をメモリ２０２上にセットする（ステップＳ１００１）。
【０１０５】
次に、命令７７０に付与されているインデックスが命令数（ｎ）７５０の値より小さいか否かを判別して（ステップＳ１００２）、当該インデックスが定義ファイル２０９に記述された命令数（ｎ）７５０の値に達したか否かを判別する（ステップＳ１００２）。
【０１０６】
ステップＳ１００２の判別の結果、当該インデックスが定義ファイル２０９に記述された命令数（ｎ）７５０の値に達していないときは（ステップＳ１００２でＹＥＳ）には、メモリ２０２上にセットされた命令７７０を１つ読み出し、命令７７０を上述した第８図に従った形式に解読する（ステップＳ１００３）。
【０１０７】
デバイス制御部２０８は、解読後の命令７７０に記述された転送タイプ８２０を判別する（ステップＳ１００４）。判別結果によって、転送用パラメータ８３０をセットし（ステップＳ１００５）、転送用パラメータ８３０とコマンド８６０をセットした電文をデバイス３００に送信する（ステップＳ１００６）。
【０１０８】
ステップＳ１００６で送信した電文に対して、デバイス３００からの応答を待ち、デバイス３００から応答を受信すると（ステップＳ１００７）、命令７７０のキー判定フラグ８５０が有効か否かを判別する（ステップＳ１００８）。
【０１０９】
ステップＳ１００８の判別の結果、命令７７０のキー判定フラグ８５０が有効であるときは（ステップＳ１００８でＹＥＳ）、さらに、受信データ中にキー情報７６０と一致するデータが存在するか否かを判別する（ステップＳ１００９）。
【０１１０】
ステップＳ１００８の判別の結果、受信データ中にキー情報７６０と一致するデータが存在するときは（ステップＳ１００９でＹＥＳ）、デバイス３００の状態変化を検知したと判断して、トリガ通知をクライアントＰＣ１００に送信して（ステップＳ１０１０）、本処理を終了する。
【０１１１】
一方、ステップＳ１００８の判別の結果、命令７７０のキー判定フラグ８５０が無効の場合（ステップＳ１００８でＮＯ）、あるいは、ステップＳ１００９の判別の結果、受信データ中にキー情報７６０に一致するデータが存在しないときは、インデックスをインクリメントして次の命令７７０を読み出し（ステップＳ１０１１）、ステップＳ１００２以降の処理を繰り返す。そして、ステップＳ１００２で、当該インデックスが定義ファイル２０９に記述された命令数（ｎ）７５０の値に達し、全ての命令７７０の読み出しが終了すると（状態変化を検知できなかった場合）、本処理を終了する。
【０１１２】
＜９．クライアントＰＣ１００におけるデータ送受信時の制御＞
第１１図は、第１図におけるクライアントＰＣ１００によって実行されるデータ送受信処理の手順を示すフローチャートである。
【０１１３】
本処理は、デバイススタック（デバイスドライバ１１１、ＵＳＢクラスドライバ１１２、ＵＳＢ仮想バスデバイス１１３および通信制御部１１４）を介して実行される。
【０１１４】
第１１図において、クライアントＰＣ１００は、常駐モジュール１１０が、デバイスサーバ２００からのトリガ通知を受信するまで待機する（ステップＳ１１０１）。
【０１１５】
デバイスサーバ２００からのトリガ通知を受信すると（ステップＳ１１０１でＹＥＳ）、常駐モジュール１１０が、トリガ通知の受信をアプリケーションプログラム１０９に伝え、アプリケーションプログラム１０９は、デバイス３００とのデータの送受信が必要であると判断した場合、通信制御部１１４を介してデバイスサーバ２００との間でＴＣＰによるセッションを開始する（ステップＳ１１０２）。
【０１１６】
デバイスサーバ２００とのセッションの開始に失敗したときは（ステップＳ１１０３でＮＯ）は、本処理を終了する。
【０１１７】
デバイスサーバ２００とのセッションの開始に成功したときは（ステップＳ１１０３でＹＥＳ）、アプリケーションプログラム１０９は、デバイススタック（デバイスドライバ１１１、ＵＳＢクラスドライバ１１２、ＵＳＢ仮想バスデバイス１１３および通信制御部１１４）を介して、デバイスサーバ２００との間でデータを送受信する（ステップＳ１１０４）。ステップＳ１１０４で送受信されるデータにおけるデータ送受信用パケットのデータ構造は第１２図を用いて詳述する。
【０１１８】
そして、データの送受信が終了するまでは（ステップＳ１１０５でＮＯ）、ステップＳ１１０４の処理を繰り返す。
【０１１９】
クライアントＰＣ１００は、すべてのデータの送受信が終了すると（ステップＳ１１０５でＹＥＳ）、デバイスサーバ２００との間のＴＣＰによるセッションを切断して（ステップＳ１１０６）、本処理を終了する。
【０１２０】
＜１０．パケットのデータ構成＞
第１２図は、第９図のステップＳ９０７及び第１１図のステップＳ１１０４で送受信されるデータ送受信用パケットのデータ構成を説明するのに用いられる図である。
【０１２１】
第１２図において、データ送受信用パケットは、プロトコルヘッダ１２００とＵＳＢ転送データ１２１０で構成される。デバイス制御部２０８は、このパケットを解析することにより、デバイス３００を識別する。
【０１２２】
プロトコルヘッダ１２００は、本システムのプロトコルであることを識別するための署名データ１２０１、電文サイズ１２０２、デバイスサーバ２００に対するコマンドＩＤ１２０３（ｂｕｌｋ−ｉｎ転送要求など）、ベンダーＩＤ（ＶＩＤ）１２０４、製品ＩＤ（ＰＩＤ）１２０５、シリアル番号１２０６などを含む。
【０１２３】
このうち、ベンダーＩＤ１２０４、製品ＩＤ１２０５、シリアル番号１２０６によって、デバイス３００を一意に識別することができる。
【０１２４】
上述の通り、本実施の形態に係るデバイスサーバ２００によれば、従来、クライアントＰＣ側に実装されていたデバイス監視処理（状態変化検知処理）の機能をデバイスサーバ２００が備えることで、デバイスサーバ２００がクライアントＰＣ１００との通信を伴わずに自立的にデバイス３００の状態変化を監視し、状態変化を検知した時点でこれをトリガ通知としてクライアントＰＣ１００へ送信するので、クライアントＰＣ１００によるデバイス３００の監視が不要となり、ネットワーク５００上のトラフィックを低減することができる。
【０１２５】
また、本実施の形態に係るデバイスサーバ２００によれば、デバイス３００の状態変化を契機（トリガ）に、クライアントＰＣ１００とデバイス３００が通信を行なうことで、クライアントＰＣ１００は必要なときだけデバイス３００を専有することが可能となるので、セキュリティの脆弱性を低減することができるとともに、専有が頻繁に必要なデバイス３００であっても複数台数の同時使用が可能となる。
【０１２６】
また、本実施の形態に係るデバイスサーバ２００によれば、クライアントＰＣ１００が、監視対象となったデバイス３００に適合したトリガ検知アルゴリズムを、デバイスサーバ２００へ動的にインストールまたはダウンロードすることで、デバイスサーバ２００は汎用性を確保しながらも様々なデバイス３００のトリガ検知処理を実行することができる。
【０１２７】
以下、本発明の第２の実施の形態を説明する。
【０１２８】
上記第１の実施の形態では、デバイスサーバ２００がトリガ検知処理機能を備えている場合の実施形態について述べた。これに対して、第２の実施の形態は、デバイスサーバ２００に代えて、トリガ検知処理機能を備えたネットワークデバイスがデバイス制御装置に相当し、他のデバイスの状態変化を検知することが特徴である。本ネットワークデバイスは、ＬＡＮなどのネットワークに接続して複数のユーザが利用できるデバイス（例えば、ネットワークプリンタなど）を含む。
【０１２９】
第２図、第４図〜第１２図を用いて説明した第１の実施の形態の構成は、すべて、デバイスサーバ２００をネットワークデバイス２５０に読み替えることで第２の実施の形態に適用される。
【０１３０】
第１３図は、本発明の第２の実施の形態に係るデバイス制御システムの概略構成を示すブロック図である。
【０１３１】
第１３図において、クライアントＰＣ１００（１００Ａ，１００Ｂ）、ネットワークデバイス２５０、デバイスサーバ２００、デバイス３００（３００Ａ，３００Ｂ）から構成される。第１図を用いて説明した第１の実施の形態に係るデバイス制御システムの構成に対して、デバイスサーバ２００Ａをネットワークデバイス２５０に置き替えた以外は同じである。
【０１３２】
第１４図は、第１３図におけるネットワークデバイス２５０のハードウェア構成およびソフトウェア構成を説明するのに用いられるブロック図である。
【０１３３】
第１４図において、ネットワークデバイス２５０は、トリガ検知処理機能を備え、外部記憶部２５５内にデバイス機能部２６２を備えることを特徴とする。デバイス機能部２６２を追加した以外は、ＣＰＵ２５１、メモリ２５２、通信部２５３、ＵＳＢＩ／Ｆ２５４、内部バス２５６、通信制御部２５７、デバイス制御部２５８、定義ファイル２５９、トリガ検知アルゴリズム２６０、および、デバイス情報２６１のいずれも、第３図を用いて説明した第１の実施の形態に係るデバイスサーバ２００のＣＰＵ２０１、メモリ２０２、通信部２０３、ＵＳＢＩ／Ｆ２０４、内部バス２０６、通信制御部２０７、デバイス制御部２０８、定義ファイル２０９、トリガ検知アルゴリズム２１０、および、デバイス情報２１１と同一である。
【０１３４】
上述のとおり、本実施の形態に係るネットワークデバイス２５０によれば、例えばネットワークプリンタのように、自らが備えるデバイスとしての機能を果たす他に、第１の実施の形態に係るデバイスサーバ２００と同等のトリガ検知処理機能を備えることで、自らにローカル接続されたデバイス３００（例えば、カードリーダ）を監視し、デバイス３００の状態変化を検知した場合に、その旨をトリガ通知としてクライアントＰＣ１００に送信する役割を果たすことができるようになる。
【０１３５】
なお、本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において適宜変更可能である。
【０１３６】
上記では、デバイスサーバ２００又はネットワークデバイス２５０（以下、両者併せて「デバイスサーバ２００」という）に定義ファイル２０９とトリガ検知アルゴリズム２１０を記憶（インストール）する場合、クライアントＰＣ１００から受信した定義ファイル１１５とトリガ検知アルゴリズム１１６を記憶すると説明したが、ＵＳＢＩ／Ｆ２０４を介して接続された可搬型記憶媒体から定義ファイル１１５とトリガ検知アルゴリズム１１６を取得し、デバイス制御部２０８に記憶してもよい。あるいは、システム全体を管理する管理サーバなどを別途設置し、この管理サーバからネットワークを介して定義ファイル１１５とトリガ検知アルゴリズム１１６を取得し、デバイス制御部２０８に記憶してもよい。
【０１３７】
また、デバイスサーバ２００は、以前、接続されたデバイスと同一機種のデバイス３００がデバイスサーバに接続され、すでに、デバイスサーバ２００にその機種に対応する定義ファイル２０９とトリガ検知アルゴリズム２１０を記憶（インストール）している場合、クライアントＰＣ１００から受信した定義ファイル１１５とトリガ検知アルゴリズム１１６を記憶しなくてもよい。さらに、デバイスサーバ２００は、クライアントＰＣ１００に対して、定義ファイル１１５とトリガ検知アルゴリズム１１６が送信不要である旨を通知してもよい。
【０１３８】
第１０図のステップＳ１０１０において、トリガ通知を１台のクライアントＰＣ１００に送信すると説明したが、宛先は１台のクライアントＰＣ１００とは限らず、複数のクライアントＰＣ１００に対して、トリガ通知を送信してもよい。このとき、デバイスサーバ２００は、トリガ通知を送信した複数のクライアントＰＣ１００のうち、最初に接続要求を受信したクライアントＰＣ１００に対してデバイス３００との接続を許可すればよい。あるいは、接続要求を送信した複数のクライアントＰＣ１００のうち、任意の台数のみ、デバイス３００との接続を許可するように制御してもよい。また、特定の１台のクライアントＰＣ１００が、電源Ｏｆｆや故障などでトリガ通知の受信が不可能な場合には、別のクライアントＰＣ１００を代替の宛先としてトリガ通知を送信するように制御してもよい。
【０１３９】
また、上記実施の形態では、クライアントＰＣ１００に、デバイス３００に対応した定義ファイル１１５とトリガ検知アルゴリズム１１６が両方ともに記憶されており、デバイスサーバ２００がクライアントＰＣ１００から定義ファイル１１５とトリガ検知アルゴリズム１１６を受信する方法（構成）を説明したが、本発明は下記のような方法（構成）も可能である。
【０１４０】
（１）デバイスサーバ２００に予め必要なトリガ検知アルゴリズム１１６を記憶（導入）させておき、クライアントＰＣ１００には、定義ファイル１１５のみを記憶させる。このような構成とした場合、デバイスサーバ２００は、クライアントＰＣ１００から、デバイス情報によって特定されるデバイス３００の機種に対応した定義ファイル１１５のみを受信することになる。
【０１４１】
例えば、ソフトウェア・ハードウェアの仕様・設計に依拠する場合やシステムの運用・管理上の理由などから、デバイスサーバ２００へのアクセスが制限されており、トリガ検知アルゴリズム（プログラムコード）を受信して実行（又はインストール）できない場合に適用できる構成である。本構成は、トリガ検知アルゴリズム（プログラムコード）がデバイスサーバに予め記憶されているため、改竄が困難であるというメリットがある。
【０１４２】
この場合、第５図のステップＳ５０９の処理において、クライアントＰＣ１００は、外部記憶部１０６にトリガ検知アルゴリズム１１６が記憶されているかは判別せず、定義ファイル１１５の記憶の有無だけを判別する。そして、デバイスサーバ２００には、対応する定義ファイル１１５のみが送信される。つまり、第６図における「トリガ検知アルゴリズム１１６」を含まないパケットが送信される。一方、このパケットを受信したデバイスサーバ２００では、第９図のステップＳ９０６の処理において、定義ファイル１１５のみを定義ファイル２０９としてデバイス制御部２０８に格納する。
【０１４３】
（２）デバイスサーバ２００は、特定したデバイス３００の機種に対応するトリガ検知アルゴリズムや定義ファイルを保持していない場合にのみ、クライアントＰＣ１００などから必要なトリガ検知アルゴリズムや定義ファイルを取得するようにしてもよい。
【０１４４】
さらに、デバイスサーバ２００若しくはクライアントＰＣ１００でトリガ検知アルゴリズムや定義ファイルを管理して、これらの追加・更新などが必要か否かを判断させるようにしてもよい。このような構成とすることで、デバイスサーバ２００は、追加・更新などの必要性が生じたときだけ、トリガ検知アルゴリズムや定義ファイルの全部又は一部を取得できるようになる。
【０１４５】
また、上述した実施の形態のように、デバイスサーバ２００がクライアントＰＣ１００からトリガ検知アルゴリズムや定義ファイルを受信するのではなく、デバイスサーバ２００がクライアントＰＣ１００にアクセスしてダウンロード（取得）するように構成してもよい。この場合、クライアントＰＣ１００は、該当するトリガ検知アルゴリズムや定義ファイルを保持していることだけをデバイスサーバ２００に通知すればよい。
【０１４６】
上述したトリガ検知アルゴリズム１つに対して複数の定義ファイルを対応付けることで、複数のデバイス３００を連携させて制御することも可能である。例えば、デバイスＡとデバイスＢを連携させて制御する場合、両方のデバイスからのトリガ通知を受信した後、デバイスＡの動作を開始させる、というような制御を行うことができる。
【０１４７】
なお、本発明は、デバイスサーバ２００に対して機種の異なる複数のデバイス３００が接続される場合にも適用可能である。この場合、デバイスサーバ２００には、各デバイスに応じた定義ファイルとトリガ検知アルゴリズムが機種ごとに記憶される（複数組が記憶される）。そして、各デバイスに適ったトリガ検知アルゴリズムと定義ファイルの組み合わせに基づきトリガ検知処理が実行され、それぞれのデバイスごとの状態変化を検知することができる。
【０１４８】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【０１４９】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１５０】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成しても良い。
【０１５１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１５２】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１５３】
１００（１００Ａ，１００Ｂ）  クライアントＰＣ
１０１  ＣＰＵ
１０２  入力部
１０３  表示部
１０４  メモリ
１０５  通信部
１０６  外部記憶部
１０７  内部バス
１０８  ＯＳ
１０９  アプリケーションプログラム
１１０  常駐モジュール
１１１  デバイスドライバ
１１２  ＵＳＢクラスドライバ
１１３  ＵＳＢ仮想バスデバイス
１１４  通信制御部
１１５  定義ファイル
１１６  トリガ検知アルゴリズム
２００（２００Ａ，２００Ｂ）  デバイスサーバ
２０１  ＣＰＵ
２０２  メモリ
２０３  通信部
２０４  ＵＳＢインターフェース
２０５  外部記憶部
２０６  内部バス
２０７  通信制御部
２０８  デバイス制御部
２０９  定義ファイル
２１０  トリガ検知アルゴリズム
２１１  デバイス情報
２５０  ネットワークデバイス
２５１  ＣＰＵ
２５２  メモリ
２５３  通信部
２５４  ＵＳＢインターフェース
２５５  外部記憶部
２５６  内部バス
２５７  通信制御部
２５８  デバイス制御部
２５９  定義ファイル
２６０  トリガ検知アルゴリズム
２６１  デバイス情報
２６２  デバイス機能部
３００（３００Ａ，３００Ｂ）  デバイス
４００  接続ケーブル
５００  ネットワーク
【図１】
2011055831.tif 000003
【図２】
2011055831.tif 000004
【図３】
2011055831.tif 000005
【図４】
2011055831.tif 000006
【図５】
2011055831.tif 000007
【図６】
2011055831.tif 000008
【図７】
2011055831.tif 000009
【図８】
2011055831.tif 000010
【図９】
2011055831.tif 000011
【図１０】
2011055831.tif 000012
【図１１】
2011055831.tif 000013
【図１２】
2011055831.tif 000014
【図１３】
2011055831.tif 000015
【図１４】
2011055831.tif 000016
【国際調査報告】
2011055831.tif 000017
2011055831.tif 000018