(57)【要約】【課題】  サーバクライアント型システムにおいて，サーバからクライアントのデバイスを遠隔操作するデバイス管理システムにおいて，回線品質や種別に応じてサーバとクライアントとの間の通信量を抑制し，システムの応答性能の向上や，通信コストの低減を可能にする。【解決手段】  サーバ上で動作する擬似バスドライバに回線品質や種別及び送受信されるデータを判断する機能と，サーバとクライアントにて送受信されるデバイス制御用の送信データを送信するタイミングを変化させる機能と，送信データを場合に応じて改変する機能と，を持たせる。【選択図】  図１
2009031882.tif 000002
【特許請求の範囲】
【請求項１】
サーバと，クライアントと，がネットワークで接続され，前記クライアントの物理バスに接続されたデバイスを前記サーバから制御するデバイス管理システムであって，
前記サーバは，前記デバイス用の物理バスドライバを実行し，
前記クライアントは，
前記物理バスドライバ用の物理バスドライバを実行し，
前記ネットワークを介して行われる，前記物理バスドライバと前記デバイスドライバとの通信を中継する，当該クライアント内のデバイス管理プログラムを実行し，
前記サーバは，
前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する，当該サーバ内の仮想デバイス管理プログラムを実行し，
前記仮想デバイス管理プログラムは，前記通信において，前記デバイスドライバから前記物理バスドライバへ送信されるデータの種別と，前記ネットワークの回線品質と，前記ネットワークの回線種別と，の少なくとも一つを取得し，
取得した情報に従って，前記仮想デバイス管理プログラムと前記デバイス管理プログラムとの前記通信における前記送信されるデータの通信量削減処理を実行する
ことを特徴とするデバイス管理システム。
【請求項２】
請求項１に記載のデバイス管理システムであって，
前記送信されるデータは，前記物理バスドライバへの命令データであって，
前記仮想デバイス管理プログラムは，前記バスドライバから前記通信量削減処理として，前記物理バスドライバへの前記命令データの遅延処理を行う
ことを特徴とするデバイス管理システム。
【請求項３】
請求項２に記載のデバイス管理システムであって，
前記仮想デバイス管理プログラムは，
前記デバイスドライバから前記物理バスドライバへの命令データが予め定められた対象となる命令データであって，予め定められた回数連続している場合に，前記遅延処理を行う
ことを特徴とするデバイス管理システム。
【請求項４】
請求項１に記載のデバイス管理システムであって，
前記送信されるデータは，前記物理バスドライバへの命令データであって，
前記仮想デバイス管理プログラムは，前記通信量削減処理として，前記物理バスドライバへの命令データの単位時間当たりの数を減らす
ことを特徴とするデバイス管理システム。
【請求項５】
請求項１に記載のデバイス管理システムであって，
前記送信されるデータは，前記物理バスドライバへの命令データであって，
前記仮想デバイス管理プログラムは，
前記デバイスドライバから前記物理バスドライバへの第一の命令データを受信した場合に，
前記通信量削減処理として，前記取得した情報に従って，
前記第一の命令データに対する第一の応答データを，すでに前記物理バスドライバから受信している第二の応答データから生成し，前記デバイスドライバへ送信することにより，前記第一の命令データの前記デバイス管理プログラムへの送信を行わない
ことを特徴とするデバイス管理システム。
【請求項６】
請求項５に記載のデバイス管理システムであって，
前記仮想デバイス管理プログラムは，
前記第一の命令データより前に，前記デバイスドライバから受信した第二の前記命令データを，第三の前記命令データに変換して前記デバイス管理プログラムに送信し，
前記第三の命令データに対する第二の応答データを前記デバイス管理プログラムから受信して保存する
ことを特徴とするデバイス管理システム。
【請求項７】
請求項１に記載のデバイス管理システムであって，
前記送信されるデータは，前記物理バスドライバへの第一の命令データであって，
前記仮想デバイス管理プログラムは，前記通信量削減処理として，
前記取得した情報に従って，前記デバイスドライバから受信した前記第一の命令データが含むポイントが指し示す前記サーバ上のバッファの内容を圧縮または削除し，
前記第一の命令データを，前記バッファの内容を削除，または，前記圧縮したバッファの内容を含む，第二の命令データに変換し，前記デバイス管理プログラムに送信し，
前記デバイス管理プログラムは，送信された前記第二の命令データから，前記第一の命令データを復元し，前記復元された第一の命令データを前記デバイスへ送信する
ことを特徴とするデバイス管理システム。
【請求項８】
請求項７に記載のデバイス管理システムであって，
前記デバイス管理プログラムは，
前記第二の命令データから前記第一の命令データの復元において，前記第二の命令データに含まれる前記圧縮されたバッファの内容を解凍し，
前記復元された第一の命令データと解凍された前記バッファの内容を前記物理バスドライバに送信する
ことを特徴とするデバイス管理システム。
【請求項９】
物理バスにデバイスが接続され，前記物理バスドライバ用の物理バスドライバを実行するクライアントとネットワークで接続されたサーバであって，
前記デバイス用のデバイスドライバを実行し，
前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する，当該サーバ内の仮想デバイス管理プログラムを実行し，
前記仮想デバイス管理プログラムは，前記通信において，前記クライアントへ送信されるデータの種別と，前記ネットワークの回線品質と，前記ネットワークの回線種別と，の少なくとも一つを取得し，
取得した情報に従って，前記クライアントとの前記通信における前記送信されるデータの通信量削減処理を実行する
ことを特徴とするデバイス管理システムに用いるサーバ。
【請求項１０】
物理バスにデバイスが接続され前記物理バスを制御する物理バスドライバを実行するクライアントとネットワークで接続され，前記デバイス用のデバイスドライバを実行する，サーバにおいて実行される，
前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する，仮想デバイス管理プログラムであって，
前記仮想デバイス管理プログラムは，前記サーバに，
前記通信において，前記クライアントへ送信されるデータの種別と，前記ネットワークの回線品質と，前記ネットワークの回線種別と，の少なくとも一つを取得させ，
取得した情報に従って，前記クライアントとの前記通信における前記送信されるデータの通信量削減処理を実行させる
ことを特徴とする仮想デバイス管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ネットワークを介して接続する２つ以上の機器の一方に接続された周辺機器を，他方の機器から利用可能とするシステムに関する。
【背景技術】
【０００２】
インターネットやイントラネットなどのネットワークに２つ以上の機器（apparatus）を接続したシステムで，一方の機器から他方の機器を操作するとともに，その表示装置に他方の機器の操作画面を表示して遠隔操作を行うシステム形態が一般的になっている。このようなシステム形態は，サーバクライアント型，より詳しくは，画面転送型のサーバクライアント型システムと呼ばれる。サーバクライアント型を用いたシステムでは，利用者の手元にある端末機器（以下，クライアントという）と利用者により遠隔操作される機器(以下，サーバという)との間のネットワークが，イントラネットと呼ばれるローカルな社内（構内）ネットワークであっても，インターネットなどの公衆回線網であっても，ホームネットワークと呼ばれるような家庭内ネットワークでも，十分な回線品質を確保すれば利用可能で，例えば外出先のような場所から，会社内や家庭内のサーバを制御することが可能である。この場合，通信路は，機器にインストールされた暗号通信機能により，必要に応じて暗号化され，改ざんや盗聴といった脅威から守られる。また，クライアントの処理能力が低い場合や，クライアントに一定のセキュリティが確保できない場合や，サーバを利用者が携行しづらい場合等にも利用可能である。
【０００３】
このように，サーバクライアント型システムは，サーバに相当するPC(Personal Computer)を利用者が持ち歩く場合と比較し，全体の機器コストや危機管理コスト，資産管理コストを削減できる上，ネットワークへの接続が可能な場所からならどこでもサーバを制御可能にするという利便性を利用者に提供できるという特徴を持つ。このようなサーバクライアント型システムは，例えば，特許文献１に述べられている。
【０００４】
サーバクライアント型システムでは，サーバと，クライアントが，物理的に離れた場所に設置され，利用者はシステムを利用している間，クライアントを経由してサーバ上のアプリケーションを主に利用している場合が多い。この場合，クライアントに接続された周辺機器（以下，単にデバイスという）を，サーバから利用可能，すなわち，サーバ上のプログラムからクライアントに接続されたデバイスが直接操作可能であるようにシステムを構成すれば，利用者がシステムを利用する際の利便性が飛躍的に向上する。このようなデバイス管理機能を備えたシステム（以下，デバイス管理機能を備えたシステムと呼ぶ）は，例えば特許文献１及び非特許文献１に述べられている。
【０００５】
【特許文献１】US6904489B2号米国特許公報
【非特許文献１】Takahiro Hirofuchi, Eiji Kawai, Kazutoshi Fujikawa, and Hideki Sunahara, USB/IP - A Transparent Device Sharing Technology over IP Network, 情報処理学会論文誌 コンピューティングシステム, Vol. 46,No. SIG12 (ACS11), pp.349-361, 2005年 8月
【発明の開示】
【発明が解決しようとする課題】
【０００６】
利用者がサーバクライアント型のデバイス管理を備えたシステムを利用する際に，サーバ−クライアント間の通信にかかる時間が大きいと，デバイスを利用するのに時間がかかり，利用者は不便さを感じ，体感品質（QoE，Quality of Experience）が低下する。例えば，クライアントにつないだストレージデバイスを，あたかも遠隔地にあるサーバに接続されているように構成し，サーバ上のプログラムから当該ストレージデバイスを操作している場合，コマンド，レスポンスや通信データの送受信にかかる時間が大きいほど，当該プログラムがストレージデバイス上のデータを読み込んだり，ストレージデバイス上にデータを書き込んだりするのに必要な時間が増え，利用者は不便さを感じる。
【０００７】
画面転送型などのシンクライアントシステムにおいては，実際の処理装置はサーバであるから，利用者の手元にあるクライアントにデバイスを接続する一方，サーバがデバイスを利用できるように構成することが，使い勝手の点から望ましい。さらに接続されたデバイスをサーバが利用する場合であっても，クライアントが利用する場合と同様に応答良く利用でき，かつ，デバイスの利用が画面転送などのそのほかの処理に影響を及ぼさないことが望ましい。
【０００８】
特許文献１及び非特許文献１には，デバイス管理を備えたシステムが開示されているが，上述のコマンド，レスポンスや通信データの送信遅延や，それに伴うスループット低下という課題や，それを解決し，利用者の利便性を向上させ，体感品質を向上させる方法については述べられていない。
【課題を解決するための手段】
【０００９】
本発明は，サーバと，サーバ上のプログラムを操作し，および／または，その処理結果を受け取るクライアントと，がネットワークで接続されたサーバクライアント型システムにおいて，クライアントに接続されたデバイスをサーバ上のプログラムから利用可能に構成した場合に，クライアントに接続されたデバイスをクライアント上のプログラムから利用する場合に比べ，クライアントを操作する利用者の体感品質を悪化させないデバイス管理方法，および，システムを提供する。
【００１０】
本発明では，サーバからクライアントに接続されたデバイスを利用可能（遠隔利用という）とするために，クライアントには，接続されているデバイス用のデバイスドライバとの間でデータを送受信するとともにサーバとの間で当該データを送受信するデバイス管理手段を備え，サーバには，当該サーバ内で実行されるアプリケーションプログラムと，クライアントのデバイス管理手段とを仲介する仮想デバイス管理手段を備える。
【００１１】
本発明は，上記構成において，上記仮想デバイス管理手段が，遠隔利用時の利用者の体感品質を悪化させないために，サーバクライアント間でネットワークを介して行われる，デバイス管理に関する通信量を制御することを特徴とする。
【００１２】
本発明は，より具体的には，仮想デバイス管理手段が，サーバクライアント間のネットワークの回線種別，回線品質に応じて，デバイス管理に関する通信量を制御することを特徴とする。
【００１３】
上記構成により，通信量を制御しない場合に比べて，コマンド，レスポンスや通信データの送信遅延を減らし，スループットを向上させることが可能となり，クライアントに接続されたデバイスをクライアント上のプログラムから利用する場合に比べて，同等の体感品質を提供することが可能になる。
【００１４】
なお，回線種別とは，サーバとクライアントが通信する際に利用する回線の種別であり，例えば、非対称デジタル加入線（ＡＤＳＬ）、光通信線（ＦＴＴＨ）、公衆無線ＬＡＮなどである。
【００１５】
回線品質とは，コマンド，レスポンス，通信データの送信時間や，スループットといった通信性能の善し悪しを指す。すなわち，送信時間が短く，スループットが高ければ，通信性能が高く，回線品質が高いことになる。
【００１６】
なお，サーバとクライアント間のネットワークが，複数種別の回線を経由することがある場合は，当該ネットワーク内で，最も性能の悪い（帯域の低い）回線や、クライアントに接続された回線などの種別，品質に応じて，通信量制御を行う。
【００１７】
また，以下では，回線種別や回線品質を通信性能と総称することがある。
【００１８】
本発明は，更に具体的には，サーバと，クライアントと，がネットワークで接続され，前記クライアントの物理バスに接続されたデバイスを前記サーバから制御するデバイス管理システムにおいて，前記サーバは，前記デバイス用の物理バスドライバを実行し，前記クライアントは，前記物理バスドライバ用の物理バスドライバを実行し，前記ネットワークを介して行われる，前記物理バスドライバと前記デバイスドライバとの通信を中継する，当該クライアント内のデバイス管理プログラムを実行し，前記サーバは，前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する，当該サーバ内の仮想デバイス管理プログラムを実行し，前記仮想デバイス管理プログラムは，前記通信において，前記デバイスドライバから前記物理バスドライバへ送信されるデータの種別と，前記ネットワークの回線品質と，前記ネットワークの回線種別と，の少なくとも一つを取得し，取得した情報に従って，前記仮想デバイス管理プログラムと前記デバイス管理プログラムとの前記通信における前記送信されるデータの通信量削減処理を実行することを特徴とするデバイス管理システムを提供する。
【００１９】
さらに，前記送信されるデータは，前記物理バスドライバへの命令データであって，前記仮想デバイス管理プログラムは，前記バスドライバから前記通信量削減処理として，前記物理バスドライバへの前記命令データの遅延処理を行ってもよいし，前記物理バスドライバへの命令データの単位時間当たりの数を減らしてもよい。
【００２０】
前記仮想デバイス管理プログラムは，または，前記デバイスドライバから前記物理バスドライバへの第一の命令データを受信した場合に，前記通信量削減処理として，前記第一の命令データに対する第一の応答データを，すでに前記物理バスドライバから受信している第二の応答データから生成し，前記デバイスドライバへ送信することにより，前記第一の命令データの前記デバイス管理プログラムへの送信を行わなくてもよい。
【００２１】
前記仮想デバイス管理プログラムは，または，前記取得した情報に従って，前記デバイスドライバから受信した前記第一の命令データが含むポイントが指し示す前記サーバ上のバッファの内容を圧縮または削除し，前記第一の命令データを，前記バッファの内容を削除，または，前記圧縮したバッファの内容を含む，第二の命令データに変換し，前記デバイス管理プログラムに送信し，前記デバイス管理プログラムは，送信された前記第二の命令データから，前記第一の命令データを復元し，前記復元された第一の命令データを前記デバイスへ送信してもよい。
【００２２】
なお，本明細書に於いて，サーバとは，例えば，パーソナルコンピュータ（ＰＣ），ワークステーション，ブレード型サーバを含み、クライアントとは、例えば，ＰＣ，パーソナルデジタルアシスタント（ＰＤＡ），携帯電話，テレビ，情報端末を含む。
【００２３】
本発明の前記並びにその他の目的と新規な特徴は，本明細書の記述および添付図面から明らかになるであろう。
【発明の効果】
【００２４】
本発明によれば，サーバクライアント型システムにおいて，クライアントに接続されたデバイスをサーバから操作する場合の利用者の利便性を，サーバクライアント間の通信性能が低い場合でも，従来のシステム同様に確保することができる。
【発明を実施するための最良の形態】
【００２５】
本発明の実施の形態について，添付図面を参照しながら，以下詳細に説明する。なお，図面中にて同一の参照番号を付したものは，同一の機能を有する構成要素を示し，説明の便宜上その詳細な説明は省略する。
【実施例１】
【００２６】
以下，図面を用いて，本発明に係るデバイス管理システムの第一の実施形態を説明する。
【００２７】
図１は，本実施形態のデバイス管理システムの詳細なブロック図である。
【００２８】
本実施形態のデバイス管理システムは，サーバ装置（以下，サーバという）１１０，機器Ａ１２０，ネットワーク１０３，インターネット１０４，ファイヤーウォール装置（以下，ファイヤーウォールという）１０５，周辺機器（以下，デバイスという）Ａ１３０，機器Ｂ１４０、デバイスＢ１５０とを備える。利用者は，機器Ａ１２０もしくは機器Ｂ１４０をネットワークに接続し，クライアント機器（以下，クライアントという）として操作しながら，サーバ１１０においてプログラム処理を行う指示を送信する。ここで，サーバ１１０は，単独でも利用可能なサーバか，もしくはブレードサーバのように表示機能やユーザインターフェースを持たないサーバであってもよいし，ＰＣやコピー機，ゲーム機のような組み込み機器でもよい。
【００２９】
機器Ａ１２０は，ハードディスクドライブやフラッシュメモリなどの補助記憶装置（ストレージという）１２２と，主記憶装置(メモリという)１２３と，ＣＰＵ１２４と，通信インターフェース１２５と，物理バス１２８を介してデバイスを接続するための物理バスインターフェース１２６，などが，内部通信線１２７で接続された構成を備え，通信インターフェース１２５を介して，ネットワーク１０３と接続されている。
【００３０】
機器Ａ１２０においては，メモリ１２３に読み込まれたプログラムがＣＰＵ１２４により実行されることにより，各処理が実行される。なお，各プログラム（コードまたはモジュールまたはオブジェクトということがある）は，予めストレージに格納されていても良いし，記憶媒体，または通信媒体を介して，他の装置から取得することも可能である。なお，通信媒体とは，搬送波，デジタル信号，通信線を含む。
【００３１】
機器Ｂ１４０は，機器Ａ１２０と同様の構成を備え，同等の機能を持つが，ネットワーク１０３だけでなく，インターネット１０４のような，不特定多数のユーザー相互間を結ぶ目的で利用される公衆回線網（インターネットという），及びファイヤーウォール１０５を介して，サーバ１１０と接続している。ファイヤーウォール１０５は，ネットワーク１０３とインターネット１０４の間で行われる通信を監視し，インターネット１０４からネットワーク１０３への不正アクセスを遮断する機器である。
【００３２】
サーバ１１０も，デバイスインターフェースが必須ではない他は，機器Ａ１２０と同様の構成を備え，通信インターフェース１１５を介して，ネットワーク１０３またはインターネット１０４に接続されている。
【００３３】
本実施形態では，ネットワーク１０３，インターネット１０４は，ＴＣＰ／ＩＰプロトコルを用いて通信を行うネットワークとして以下に説明するが，それ以外のプロトコルに従った通信を行うネットワークであっても良い。
【００３４】
サーバ１１０におけるプログラム処理結果は，サーバ１１０が備えるか，または，サーバ１１０に接続された，図示しないディスプレイに表示される。ストレージ１１２には，後述する仮想デバイス管理プログラム(仮想デバイスマネージャという)１１１や，図示しないＯＳが格納されている。サーバ１１０が起動すると，ＣＰＵ１１４により，ストレージ１１２からＯＳがメモリ１１３に読み込まれ，実行されて利用可能状態になった後，ＣＰＵ１１４により，仮想デバイスマネージャ１１１がメモリ１１３に読み込まれ，実行されて仮想デバイスが利用可能になる。
【００３５】
本明細書における仮想デバイスとは，サーバ１１０にネットワークやその他の機器などを介して接続されているにもかかわらず，あたかもサーバ１１０に直接接続されているデバイスであるかのように，サーバ１１０が利用可能なデバイスである。仮想デバイスを利用することにより，ネットワーク経由で通信可能ではあるが離れた場所に設置されているデバイスが，サーバ１１０に物理的に直接接続されているデバイスと同様に利用可能となる。
【００３６】
本明細書においては，デバイスを操作する物理バスドライバと，その上位のソフトウェア（デバイスドライバなど）とが，それぞれ，TCP等のネットワークによって接続される異なる機器に備わり，それぞれのソフトウェアが送受信する命令データや応答データが，上記ネットワークプロトコル用にラッピングされて送受信される場合に，デバイスＡ１３０を仮想デバイスという。
【００３７】
仮想デバイスを利用することにより，ネットワーク経由で通信可能ではあるが離れた場所に設置されているデバイスＡ１３０が，サーバ１１０に物理的に直接接続されているデバイスと同様に利用可能となる。
【００３８】
仮想デバイスマネージャ１１１は，上述の仮想デバイスを，サーバ１１０から，管理し，利用可能にする機能を持つソフトウェアであって，例えば，機器Ａ１２０にネットワークを介して接続されているデバイスＡ１３０との間でのデータの送受信を行うための制御を行う。詳細については，後述のデバイス管理マネージャ１２１の動作とともに後述する。
【００３９】
機器Ａ１２０は，利用者の指示に従って，プログラム処理を行う。処理結果は機器Ａ１２０に直接もしくは間接的に接続された図示しないディスプレイなどの表示装置に表示される。ストレージ１２２には，後述するデバイス共有プログラムであるデバイス管理プログラム（デバイスマネージャという）１２１が管理者によりインストールされている。機器Ａ１２０が起動されるとストレージ１２２からＯＳがメモリに読み込まれ，ＣＰＵ１２４により実行されて利用可能状態になる。その後，デバイスマネージャ１２１がメモリ１２３に読み込まれ，ＣＰＵ１２４により実行され，デバイスマネージャ１２１と機器Ａ１２０に接続されたデバイスＡ１３０とデータの送受信が可能となる。デバイスマネージャ１２１とデバイスＡ１３０との通信の詳細については，後述する。
【００４０】
機器Ａ１２０は，利用者の指示に従ってプログラム処理を行い，必要に応じてデバイスＡ１３０を利用し，処理結果を利用者に提示する情報処理装置である。利用者からの指示は図示しないキーボードやマウスといったユーザインターフェースを介して機器Ａ１２０へ送信される。
【００４１】
機器Ｂ１４０の構成，機能は，接続環境以外は，機器Ａ１２０と同じであってよいため，機器Ａ１２０について説明することにより，その説明を省略することがある。
【００４２】
また，機器Ａ１２０や機器Ｂ１４０は，ＰＣやサーバ，ワークステーション，組み込み機器，携帯電話，ゲーム機，ネットワークデバイスサーバのような，記憶媒体に格納しているＯＳやプログラムをメモリとＣＰＵで実行する情報機器であれば特に限定されない。また，機器Ａ１２０や機器Ｂ１４０は，入力装置やディスプレイ等の表示装置のようなユーザインターフェースを持たないデバイスハブのような組み込み機器であってもよい。この場合，入力装置や表示装置等のユーザインターフェースはネットワーク等を介して接続される。
【００４３】
デバイスＡ１３０は，機器Ａ１２０のような情報機器に，デバイス接続用のインターフェースを介して接続されるものであり，例えば，ＣＤ−ＲＯＭドライブやプリンタ，スキャナ，ＩＣカードリーダライタ，ＰＤＡ，ストレージ，個人認証機器，カメラ，フラッシュメモリデバイスなどの周辺機器である。デバイス接続用のインターフェースとしては，例えばユニバーサルシリアルバス（ＵＳＢ），ワイヤレスＵＳＢ，近距離無線通信インターフェース，赤外線通信インターフェース，シリアルポートインタフェース，パラレルポートインタフェース，ＩＥＥＥ１３９４インターフェース，オーディオインタフェースといったデバイスをＰＣに接続するためのインターフェースがある。本実施形態では，インターフェースがＵＳＢである場合を例示するが，これに限られない。
【００４４】
以上のように構成したデバイス管理システムにおいて，仮想デバイスマネージャ１１１は，デバイスマネージャ１２１の動作とデバイスＡ１３０の接続を検知して，サーバ１１０にデバイスＡ１３０が仮想的に接続されているようにサーバ１１０上で動作しているＯＳやプログラムに通知を行う。以下に，サーバ１１０上で動作しているＯＳやプログラムからデバイスＡ１３０に送信された命令やデータが，どのようにデバイスＡ１３０に到達し，デバイスＡ１３０から発信されたレスポンスやデータが，どのようにサーバ１１０上で動作しているＯＳやプログラムに送信されるかについて説明する。
【００４５】
なお、上記における「仮想的に接続」とは、サーバ１１０上で動作しているアプリケーションやデバイスドライバ等の，従来，サーバ１１０に，ネットワーク１０３を介さずに接続されているデバイスを利用するプログラムが、ネットワーク１０３を介して接続されるデバイスＡ１３０を，従来と同様のアクセス方法で利用可能であることを示す。
【００４６】
また，各実施形態の処理は，ＣＰＵが各プログラムを実行することにより，それぞれの装置で具現化されるものであるが，以下の説明では，便宜上，プログラムを実行主体として説明する。
【００４７】
図２は，仮想デバイスマネージャ１１１及びデバイスマネージャ１２１の詳細な構成を説明するための図である。
【００４８】
本実施例に示すデバイス管理システムが動作している状況では，機器Ａ１２０のメモリ１２３上では，デバイスマネージャ１２１と，物理バスドライバ２１３と，デバイスドライバ２１１と，アプリケーション２１０というプログラムが動作している。ここで，デバイスマネージャ１２１は，内部にフィルタドライバ２１２と，通信プログラム２０９と，ＧＵＩアプリケーション２０８の３つのモジュールを含んでいる。それぞれのプログラムやモジュールは，図２の矢印にて結ばれたように，互いのプログラムやモジュール間で，命令やデータの通信を相互に行う。
【００４９】
同様に，サーバ１１０のメモリ１１３上には，仮想デバイスマネージャ１１１と，デバイスドライバ２０２と，アプリケーション２０１というプログラムが動作している。ここで，仮想デバイスマネージャ１１１は，擬似バスドライバ２０３と通信プログラム２０７とＧＵＩアプリケーション２０６の３つのモジュールを含んでいる。また，擬似バスドライバ２０３は，起動用物理デバイスオブジェクト２０４と，エニュメレータ機能デバイスオブジェクト２０５というプログラムを含んでいる。それぞれのプログラムやモジュールは，図に示す矢印にて結ばれたように，互いのプログラムやモジュール間で，命令やデータの通信を相互に行う。
【００５０】
擬似バスドライバ２０３は、上位のドライバであるデバイスドライバ２０２に対しては、物理バスドライバ２１３と同様のインターフェースを持つものの、下位に物理バスドライバ２１３とのインターフェースを持たないバスドライバである。擬似バスドライバ２０３は、上位のデバイスドライバ２０２から命令やデータを受け取った場合，受け取った命令やデータを，ネットワークを通じて接続される異なる機器Ａ１２０の物理バスドライバ２１３に送信し、送信結果に対する返信を受信し、受信した返信結果を上位のデバイスドライバ２０２に送信する。
【００５１】
物理バスドライバ２１３は，機器Ａ１２０の物理バスインターフェース１２６に接続されたデバイスＡ１３０への通信を制御するプログラムであり，物理バスインターフェース１２６に接続される物理バス１２８毎に用意される。物理バスドライバ２１３は，物理バスインターフェース１２６を制御し，接続されたデバイスＡ１３０の状態や，接続，切断の状況を監視したり，デバイスＡ１３０からの割り込みをＯＳおよびその他のデバイスドライバに通知したり，デバイスマネージャ１２１内のフィルタドライバ２１２から受信したデータをデバイスＡ１３０に送信する，などの処理を行う。なお，本実施形態では，物理バス１２８はＵＳＢとする。
【００５２】
デバイスドライバ２１１は，デバイスＡ１３０の種別に毎にロードされるプログラムである。ＯＳやアプリケーション２１０等から送信された命令データを，デバイスＡ１３０が理解できる形式のデータに変換してフィルタドライバ２１２および物理バスドライバ２１３を介して送信する。また，デバイスＡ１３０からの割り込みや，デバイスＡ１３０へ送信された命令に対するレスポンスをフィルタドライバ２１２から受信し，ＯＳおよびアプリケーション２１０等に送信する。
【００５３】
フィルタドライバ２１２は，物理バスドライバ２１３とデバイスドライバ２１１との間に配置され，デバイスドライバ２１１の下位のドライバとして動作するもので，デバイスＡ１３０が機器Ａ１２０上のデバイスとして有効になった場合，機器Ａ１２０のメモリ上にロードされる。フィルタドライバ２１２は，通信プログラム２０９またはデバイスドライバ２１１より送信されるデータを物理バスドライバ２１３に送信し，物理バスドライバ２１３より送信されるレスポンスを通信プログラム２０９またはデバイスドライバ２１１に返信する。
【００５４】
また，フィルタドライバ２１２は，通信プログラム２０９，物理バスドライバ２１３間にて送受信されるデータと，デバイスドライバ２１１，物理バスドライバ２１３間にて送受信されるデータのいずれかを有効とし，もう一方を無効とする。どちらのデータを有効とするかは，ＧＵＩアプリケーション２０６及びＧＵＩアプリケーション２０８の指示に従って，または，デバイスＡ１３０の接続（プラグイン），切断（プラグアウト），取り外し（イジェクト）のタイミングもしくは，通信プログラム２０９の起動，終了のタイミングで，変更される。
【００５５】
プラグインは，デバイスＡ１３０を機器Ａ１２０の物理バスインターフェース１２６に接続すること，プラグアウトは，デバイスＡ１３０を機器Ａ１２０の物理バスインターフェース１２６から切り離すこと，イジェクトはデバイスＡ１３０から内部の機器やメディアを取り外すために，デバイスＡ１３０の動作を停止すること，をそれぞれ意味する。
【００５６】
なお，デバイスＡ１３０の種別は、以下に説明する方法で、サーバ１１０のＯＳに通知される。
【００５７】
デバイスＡ１３０が機器Ａ１２０に接続された際、物理バスドライバ２１３は、デバイスＡ１３０から，デバイスＡ１３０内に保持されている種別を示す情報(種別情報)を読み出す。読み出される種別情報とは、例えば、デバイスＡ１３０のベンダＩＤや機器ＩＤ、製造社名、機器名、機器種別（クラス及びサブクラス）、インターフェースや通信方式を示す属性値などの，いずれか１つ以上である。
【００５８】
デバイスＡ１３０から読み出された，種別情報は，物理バスドライバ２１３から、機器Ａ１２０のＯＳに送信され，機器Ａ１２０のＯＳは、種別情報に適合するフィルタドライバ２１２及びデバイスドライバ２１１を特定し，メモリ１２３上に読みこむ。
【００５９】
物理バスドライバ２１３は，また，読み出した種別情報を，フィルタドライバ２１２、通信プログラム２０９、通信プログラム２０７を順に経由し、擬似バスドライバ２０３に送信する。擬似バスドライバ２０３は、内部に当該種別情報を保持すると共に，サーバ１１０のＯＳに，当該種別情報を送信する。
【００６０】
サーバ１１０のＯＳは受信した種別情報に基づきデバイスＡ１３０を認識し、サーバ１１０がデバイスＡ１３０を利用できるよう、デバイスＡ１３０の種別に適したデバイスドライバ２０２を特定し，メモリ上に読み込む。
【００６１】
フィルタドライバ２１２は，デバイスドライバ２１１から物理バスドライバ２１３へ送信されるデータを無効にする場合は，該当するデータがフィルタドライバ２１２に入力されると，無効であるというレスポンスをデバイスドライバ２１１に返信する，または，「デバイスが有効では無い」「デバイスにメディアが挿入されていない」などの予め決められたエラーを含んだレスポンスをデバイスドライバ２１１に返信する。同様に，フィルタドライバ２１２は，通信プログラム２０９から物理バスドライバ２１３へ送信されるデータを無効にする場合は，該当するデータがフィルタドライバ２１２に入力されると，無効であることを示すデータを通信プログラム２０９に返信する，あるいは，「デバイスが有効では無い」「デバイスにメディアが挿入されていない」などの予め決められたエラーを含んだデータを通信プログラム２０９に返信する。
【００６２】
フィルタドライバ２１２は，デバイスＡ１３０に対応するデバイスドライバ２１１に対応して機器Ａ１２０のメモリ上にロードされる。接続されているデバイスＡ１３０が複数の場合，各デバイスＡ１３０毎に，または，デバイスＡ１３０に対応して設けられる物理バスドライバ２１３毎に，ロードされる。
【００６３】
通信プログラム２０９は，通信プログラム２０７及びフィルタドライバ２１２と通信を行う機能を持つ。通信プログラム２０９は，通信プログラム２０７及びフィルタドライバ２１２の状態を監視し，フィルタドライバ２１２との通信に異常が発生した場合は，通信プログラム２０７に異常信号を送信する。フィルタドライバ２１２との通信が予め定められた時間で復活しない場合，通信プログラム２０７にさらに異常信号を送信し，ＧＵＩアプリケーション２０８に状態を表示させ，利用者の指示を受け付ける。
【００６４】
例えば利用者の指示により，すべてのエニュメレータ機能デバイスオブジェクト２０５や起動用物理デバイスオブジェクト２０４を消滅させる要求を通信プログラム２０７に送信するもしくは通信プログラム２０９自身を終了させる，などの処理を行う。
【００６５】
また，通信プログラム２０９は，通信プログラム２０７との通信が異常になった場合は，フィルタドライバ２１２に異常信号を送信する。通信プログラム２０７との通信が予め定められた時間経っても復帰しない場合，フィルタドライバ２１２にさらに異常信号を送信し，ＧＵＩアプリケーション２０８に状態を表示させ，利用者の指示を受ける。
【００６６】
例えば利用者の指示により，デバイスＡ１３０の制御権限を機器A１２０からサーバ１１０に移すために，遮断していたデバイスドライバ２１１からのリクエストを物理バスドライバ２１３に送信し，通信プログラム２０９とフィルタドライバ２１２との通信を中断するように，設定変更を行う。
【００６７】
通信プログラム２０７は，通信プログラム２０９と通信を行い，機器Ａ１２０に接続されたデバイスＡ１３０からプラグアウト，プラグイン，イジェクトの通知を受けるのを待つ。通信プログラム２０７はデバイスＡ１３０のプラグイン，プラグアウト，イジェクトの通知を受けると，擬似バスドライバ２０３が内部にデバイスＡ１３０に対応した起動用物理デバイスオブジェクト２０４及びエニュメレータ機能デバイスオブジェクト２０５を生成し、デバイスドライバ２０２からデバイスＡ１３０が利用可能になるように通信プログラム２０７に通知を行う。  擬似バスドライバ２０３は，後述する機器Ａ１２０上の物理バスドライバ２１３と同様に，デバイスへの通信を制御するプログラムである。バス上のデバイスの状態および接続切断を監視し，デバイスからの割り込みをＯＳおよび上位のデバイスドライバに通知し，上位のデバイスドライバから転送されたデータをデバイスに宛てて送信する。
【００６８】
擬似バスドライバ２０３は，サーバ１１０上で動作するアプリケーション２０１やデバイスドライバ２０２が，機器Ａ１２０の物理バス１２８に接続されたデバイスＡ１３０を，サーバ１１０の物理バスに接続されたデバイスと同様に扱うことを可能にする。
【００６９】
擬似バスドライバ２０３は，サーバ１１０のメモリにロードされると，その内部にエニュメレータ機能デバイスオブジェクト２０５を作成する。擬似バスドライバ２０３は通信プログラム２０９，２０７を介してデバイスＡ１３０がプラグインされたことを示す通知を受けると，エニュメレータ機能デバイスオブジェクト２０５に，該当するデバイスに対応する起動用物理デバイスオブジェクト２０４を生成させ，サーバ１１０からデバイスＡ１３０を利用できる状態にする。
【００７０】
また，擬似バスドライバ２０３は通信プログラム２０９，２０７を介してデバイスＡ１３０がプラグアウトされたことを示す通知を受けると，エニュメレータ機能デバイスオブジェクト２０５にプラグアウトの通知をする。擬似バスドライバ２０３は，デバイスＡ１３０がイジェクトされたことを示す通知を受けた場合，エニュメレータ機能デバイスオブジェクト２０５にイジェクトの通知をする。
【００７１】
また，擬似バスドライバ２０３は，起動用物理デバイスオブジェクト２０４がサーバ１１０のメモリからアンロード（以下，削除と略する）された場合，通信プログラム２０７及び通信プログラム２０９を通じて，削除された状態を機器Ａ１２０に通知する。サーバ１１０のＯＳから擬似バスドライバ２０３を削除するよう擬似バスドライバ２０３に命令があった場合，すべての起動用物理デバイスオブジェクト２０４を削除した後にエニュメレータ機能デバイスオブジェクト２０５及び擬似バスドライバ２０３自身を削除する。上記の各処理中にエラーが発生した場合，擬似バスドライバ２０３は，エラーの内容を通信プログラム２０７に送信する。通信プログラム２０７への送信を行う際に通信内容に異常が発生した場合，擬似バスドライバ２０３は，機器１２０に関連する起動用物理デバイスオブジェクト２０４を削除するなどの初期化処理を行い，通信プログラム２０７との通信状態の回復を待つ。
【００７２】
エニュメレータ機能デバイスオブジェクト２０５は，擬似バスドライバ２０３の内部に生成されるデバイスオブジェクトである。後述する起動用物理デバイスオブジェクト２０４の生成，削除等の管理を行う。また，通信プログラム２０７と通信を行う。エニュメレータ機能デバイスオブジェクト２０５は，機器Ａ１２０の通信プログラム２０９および通信プログラム２０７を介して擬似バスドライバ２０３から，デバイスＡ１３０のプラグインを示す通知とともに，プラグインされたデバイスＡ１３０のパラメータを受信すると，受け取ったパラメータを用いて，起動用物理デバイスオブジェクト２０４を作成する。
【００７３】
また，エニュメレータ機能デバイスオブジェクト２０５は，機器Ａ１２０の通信プログラム２０９及び通信プログラム２０７を経由して擬似バスドライバ２０３から，デバイスＡ１３０のプラグアウトもしくはイジェクト通知を受信すると，プラグアウトまたはイジェクト通知を送信したデバイスＡ１３０に対応づけて生成された起動用物理デバイスオブジェクト２０４を削除する。
【００７４】
起動用物理デバイスオブジェクト２０４は，デバイスドライバ２０２からデバイスＡ１３０を動作させるためのドライバである。通信プログラム２０９および通信プログラム２０７を介してデバイスＡ１３０がプラグインされた通知をエニュメレータ機能デバイスオブジェクト２０５が受けるごとに生成される。
【００７５】
すなわち，起動用物理デバイスオブジェクト２０４は，機器Ａ１２０に接続されてサーバ１１０から制御されるデバイス１つに対し，それぞれ１つ生成される。すなわち，起動用物理デバイスオブジェクト２０４は，１以上のオブジェクトからなるため，起動用物理デバイスオブジェクト２０４は，後述するデバイスＡ１３０のプラグイン操作により機器Ａ１２０から送信されるデバイスＩＤ，シリアル番号などを用いて，デバイスと１対１に対応付けられ，エニュメレータ機能デバイスオブジェクト２０５に管理される。
【００７６】
通信プログラム２０７は，通信プログラム２０９と擬似バスドライバ２０３との通信を仲介する。通信プログラム２０７は，通信プログラム２０９との通信状態および擬似バスドライバ２０３との通信状態を監視し，擬似バスドライバ２０３との通信に異常が発生した場合は，通信プログラム２０９に異常信号を送信する。擬似バスドライバ２０３との通信が予め定められた時間内に復帰しない場合，通信プログラム２０９にさらなる異常信号を送信する。
【００７７】
異常が発生した場合は，通信プログラム２０７は，ＧＵＩアプリケーション２０６に状態を表示させ，利用者の指示を受け付ける。例えば利用者の指示により，すべての起動用物理デバイスオブジェクト２０４を含む擬似バスドライバ２０３を消滅させる命令をＯＳに送信したり，もしくは通信プログラム２０７自身を終了させたり，などの処理を行う。
【００７８】
通信プログラム２０７は，通信プログラム２０９との通信に異常が発生した場合は，擬似バスドライバ２０３に異常信号を送信する。通信プログラム２０９との通信が予め定められた時間内に復帰しない場合，擬似バスドライバ２０３にさらなる異常信号を送信し，ＧＵＩアプリケーション２０６に状態を表示させ利用者の指示を受け付ける。例えば利用者の指示により，擬似バスドライバ２０３や機器Ａ１２０に関連する起動用物理デバイスオブジェクト２０４を消滅させる命令をサーバ１１０のＯＳに送信したり，通信プログラム２０７自身を終了させたり，などの処理を行う。
【００７９】
通信プログラム２０７は，通信プログラム２０９と通信を行い，機器Ａ１２０に接続されたデバイスからプラグアウト，プラグイン，イジェクトの通知を受けるのを待つ。
【００８０】
デバイスドライバ２０２は，既に説明したデバイスドライバ２１１と基本的に同様の機能を有する。
【００８１】
次に，上記のような構成を備えるデバイス管理システムにおいて，デバイスドライバ２０２及びデバイスＡ１３０間にてデータを送受信する方法，すなわち，デバイスドライバ２０２がデバイスＡ１３０を操作する方法について説明する。
【００８２】
図３は，デバイスドライバ２０２がデバイスＡ１３０に向けて送信した命令データをデバイスＡ１３０が受信し，デバイスＡ１３０がデバイスドライバ２０２に向けて返信した応答データを，デバイスドライバ２０２が受信する際のサーバ１１０の動作を説明するフローチャートである。命令データとは，デバイスドライバ２０２がデバイスＡ１３０を制御するための命令コードや命令コードの実行対象や条件などのデータを含むものであり，デバイスドライバ２０２が，自発的に発行するか，アプリケーション２０１やサーバ１１０のＯＳなどから命令を受けて発行するものである。応答データとは，デバイスＡ１３０がデバイスドライバ２０２等からの命令データに応じる応答や，自発的に送信したりするステータスなどのデータである。
【００８３】
デバイスドライバ２０２がデバイスＡ１３０を制御可能になった後（３００），デバイスドライバ２０２は，デバイスＡ１３０への命令データを擬似バスドライバ２０３に送信する（３０１）。
【００８４】
この際，仮想デバイスマネージャ１１１は，機器Ａ１２０内のデバイスマネージャ１２１が改ざんされていないかの検証を行う。
【００８５】
具体的には仮想デバイスマネージャ１１１内に保存されたハッシュ値等と，実際にデバイスマネージャ１２１が応答するハッシュ値等を比較するなどの検証を行う。フィルタドライバ２１２自身が別の機能を持つフィルタドライバと置き換えられている場合，予め仮想デバイスマネージャ１１１で扱うよう登録されているデバイス（本実施例ではデバイスＡ１３０）以外のデバイスが接続され，機器Ａ１２０が不正な動作を行ったり，システムとして認められない動作を行ったりするからである。
【００８６】
その他，仮想デバイスマネージャ１１１が与える情報に対するデバイスマネージャ１２１の応答が期待したものであるか，を確認したり，機器Ａ１２０のＯＳの持つレジストリなどの確認情報を仮想デバイスマネージャ１１１が確認したりする。
【００８７】
擬似バスドライバ２０３は，通信プログラム２０７やＯＳなどから，通信プログラム２０７及び２０９間のネットワークの回線品質及び/または回線種別の情報を受け取り，擬似バスドライバ２０３内に保持する（３０２）。次に，擬似バスドライバ２０３は，受信した命令データがあらかじめサーバ１１０の管理者が定めた命令であるか否か，回線品質が管理者が定めたしきい値より低いか，および/または，回線種別が管理者が定めた種別であるかどうか，などを判別する（３０３）。ここで，回線品質とは，ネットワーク上をスムーズにデータが送信される品質を表し，送信遅延時間やスループットなどで表される。
【００８８】
ステップ３０３において，「命令データがあらかじめサーバ１１０の管理者が定めた命令ではない」場合か，もしくは，「回線品質がサーバ１１０の管理者が定めたしきい値より高くかつ回線種別がサーバ１１０の管理者があらかじめ定めた種別ではない」場合，ステップ３０４において，擬似バスドライバ２０３は，受け取った命令データを機器Ａ１２０に送信する。併せて，計数している対象となる命令データの連続数をリセットする。
【００８９】
ステップ３０３における管理者が定めた命令データとは、遅延させて発行してもシステム全体の動作として支障が無い，と予め管理者が判断し，指定する命令データのことであり，擬似バスドライバ２０３内にデバイス別に保持される。例えば、デバイスＡ１３０の状態をチェックするポーリング用の命令データや，予め返答の定まっている命令データ等である。
【００９０】
ステップ３０３における管理者が定めた回線種別とは、通信コストの高い回線や転送速度の低い回線のような、無駄な通信を極力発生させないようにしたい，と管理者が考える回線種別である。例えば、通信コストが高いかもしくは転送速度の低い携帯電話網を経由する回線などである。通信プログラム２０７かもしくは２０９は、例えば通信を開始する際や通信中に回線種別を判別し、その判別結果を通信プログラム２０７もしくは通信プログラム２０７を経由して２０９が擬似バスドライバ２０３に通知する。擬似バスドライバ２０３は，この回線種別判別結果を，複数デバイスに共通な情報として保存し，その結果に基づいて、擬似バスドライバ２０３にてステップ３０３の判断を行う。
【００９１】
また，ステップ３０３における管理者が定めた回線品質とは、具体的には、通信の遅延量などの回線品質を示す。通信プログラム２０７もしくは２０９は、例えば通信を開始する際や通信中に，しきい値に基づいて回線品質を測定し、その判別結果を通信プログラム２０７かもしくは通信プログラム２０７を経由して２０９が擬似バスドライバ２０３に通知する。擬似バスドライバ２０３は，この回線品質測定結果を，複数デバイスに共通な情報として保存し，その結果に基づいて、ステップ３０３の判断を行う。しきい値とは、命令データの遅延を実行させても良いという遅延量などの回線品質の値を，予め管理者が定めたものである。
【００９２】
具体的に、命令データは、擬似バスドライバ２０３から、通信プログラム２０７及び２０９，フィルタドライバ２１２，物理バスドライバ２１３を順に介してデバイスＡ１３０に送信される（３０４）。デバイスＡ１３０は，受け取った命令データに対応する応答データを物理バスドライバ２１３，フィルタドライバ２１２，通信プログラム２０９及び２０７，を順に介して，擬似バスドライバ２０３へ送信する。擬似バスドライバ２０３は、機器Ａから上記の応答データが送信されるのを待ち（３０５），受け取った応答データをデバイスドライバ２０２に返信する（３１５）。擬似バスドライバ２０３は，続くデバイスＡ１３０への要求があるかどうかを判断し（３０６），ない場合は動作を終了（３０７）し，ある場合は，ステップ３０１に戻る。
【００９３】
ステップ３０３において，「命令データがあらかじめ管理者が定めた命令であり」かつ「回線品質がサーバ１１０の管理者が定めたしきい値以下である場合か，回線種別がサーバ１１０の管理者があらかじめ定めた種別である」場合，擬似バスドライバ２０３は，受け取った命令データが連続して送信されている回数を，デバイス別にチェックする（３０８）。
【００９４】
命令データとは，一つ以上の命令からなる命令組であって，命令データの連続とは，一つ以上の命令からなる命令組が繰り返される（ただし，パラメータが変化しても良い）ことをいう。一つの命令組には，デバイスＡ１３０に対する命令，および／または，物理バスドライバ２１３に対する命令が含まれてよい。なお，あらかじめ管理者が定める命令データの詳細については，後述する。
【００９５】
また，あらかじめ定める回線種別とは、携帯電話を経由した通信等のように比較的転送速度が低い回線や，送信コストが高い回線などの、あらかじめ管理者が定めた回線種別のことであり，一つの機器Ａ１２０に複数のデバイスが接続されていても，共通である。
【００９６】
通信プログラム２０７は公知の方法で，回線品質，回線種別を取得し，擬似バスドライバ２０３に通知する。
【００９７】
擬似バスドライバ２０３は，通信プログラム２０７への命令データの送信の度に，遅延させる対象となる命令データ（異なる命令データであっても良い）が連続して送信されている回数を計数し（３０８），回数が，管理者があらかじめ定めた値未満である場合（３０８でＮｏ），対象となる命令データが連続して送信されている回数を擬似バスドライバ２０３内に保持し（３０９），ステップ３１０及び３１１に進む。その後，擬似バスドライバ２０３は受け取った応答データを擬似バスドライバ２０３内に保持する（３１２）。
【００９８】
対象となる命令データが連続して送信されている回数が，管理者があらかじめ定めた値以上になっている，または，新たになった場合（３０８でＹｅｓ），擬似バスドライバ２０３は，擬似バスドライバ２０３内のタイマによる計時を開始し，あらかじめ定められた時間，命令データの送信を抑制する（３１３，３１４）。擬似バスドライバ２０３内のタイマがあらかじめ管理者が定めた時間経過したことを検知した場合，ステップ３０９が実行される。
【００９９】
ここで，あらかじめ定められた時間とは，デバイスドライバ２０２から命令データが送信されてから，対応する応答データを受信する際にタイムアウトなどの不具合を発生しない範囲の時間範囲であらかじめ管理者が，デバイス別に設定する時間間隔である。
【０１００】
あらかじめ定められた命令データが連続して送信されている回数が，あらかじめ定められた回数以上になっている場合，本実施例に示すデバイス管理システムは，擬似バスドライバ２０３において，当該命令データを遅延させて送信することにより，通信プログラム２０７及び２０９間に単位時間内に送信される命令データ及び応答データの量を減少させる。
【０１０１】
図９は、擬似バスドライバ２０３が命令データを遅延して送信する様子を示したタイムチャートである。
【０１０２】
図９には、デバイスドライバ２０２が擬似バスドライバ２０３にＣ１という種別の命令データを３連続で送信した場合の，デバイスドライバ２０２と擬似バスドライバ２０３の間、擬似バスドライバ２０３と通信プログラム２０７の間、物理バスドライバ２１３とデバイスＡ１３０の間をそれぞれ送信される様子が示されている。図９では，３回目の送信で、擬似バスドライバ２０３が命令データの送信を遅延させている様子が示されている。
【０１０３】
デバイスドライバ２０２が、擬似バスドライバ２０３に種別Ｃ１の命令データ９０１を送信すると、擬似バスドライバ２０３は、種別Ｃ１の命令データ９０２を通信プログラム２０７に送信する。種別Ｃ１の命令データは，通信プログラム２０７から通信プログラム２０９、フィルタドライバ２１２を介して物理バスドライバ２１３に送信される。
【０１０４】
物理バスドライバ２１３は、デバイスＡ１３０に種別Ｃ１の命令データ９０３を送信する。デバイスＡ１３０は種別Ｃ１の命令データ９０３に対応する種別Ｒ１の返答データ９０４を物理バスドライバ２１３に送信する。返答データは、命令データと逆順で、図示するように通信プログラム２０７から擬似バスドライバ２０３に返答データ９０５が送信され、擬似バスドライバ２０３からバスドライバ２０２に返答データ９０６が送信される。
【０１０５】
たとえば、図３のステップ３０３で判断される「予め定めた命令データ」が種別Ｃ１の命令データ９０３を含み、ステップ３０８で規定する回数が３回であり、かつ「回線種別」が管理者の定める回線であったとすると、続く種別Ｃ１の命令データ（９０７〜９０８）の送信と種別Ｒ１の返答データ（９０９〜９１１）の送信においては、ステップ３１４に示される遅延の挿入処理は行われない。
【０１０６】
擬似バスドライバ２０３は、続く種別Ｃ１の命令データ９１２の送信時に、ステップ３０８において，種別Ｃ１の命令データの連続送信回数が３回であると判断し、ステップ３１４に示される遅延の挿入処理を行う。この結果，図９に示すように，種別Ｃ１の命令データ９１４は、管理者により予め定められた時間経過の後に送信される。続く命令データ９１５の送信と返答データ９１６〜９１８の送信は図示するタイミングで行われる。
【０１０７】
続いて送信される種別Ｃ２の命令データ９１９が，予め管理者の定めたものでない場合には、命令データ９２０、９２１の送信前にステップ３１４に示される遅延は挿入されない。
【０１０８】
なお，図３のステップ３０８、３０９、３１３、３１４等の処理は、擬似バスドライバ２０３が管理し、データ送信先となっているデバイスが複数ある場合、デバイス毎に処理される。すなわち、擬似バスドライバ２０３が管理するデバイスが複数ある場合、擬似バスドライバ２０３は，複数個のデバイス毎に個別に，命令データが送信された回数や応答データを管理，保持し、したがって，ステップ３０８やステップ３１４の判断も複数のデバイス毎に個別に処理する。
【０１０９】
以上の構成により，サーバ１１０とデバイスＡ１３０との命令データ及び応答データの送受信が，ネットワーク１０３上の他の通信の効率を低下させることを防いだり，回線利用料を低減したりすることができる。
【０１１０】
また，サーバ１１０の管理者は，サーバ１１０と機器Ａ１２０間で行われる他の通信の効率や利用する回線の通信コストに鑑みて，ステップ３０３にて判定する回線品質のしきい値や回線種別といったポリシーをあらかじめ定めておく。このポリシーはは，仮想デバイスマネージャ１１１内にインストール時もしくは，システム内に設置される，図示していない管理サーバとの通信の過程で記憶される。
【０１１１】
上記のように説明したフローに従ってデバイスＡ１３０を制御することにより，本実施例に示したデバイス管理システムは，回線品質や回線種別を検知し，回線の能力が低い場合でも，遠隔操作などのサーバ１１０，機器Ａ１２０間の他の通信に支障をきたさずにサーバ１１０からデバイスＡ１３０をコントロール可能とし，利用者に快適にシステムを利用可能とする効果がある。
【０１１２】
また，同様の構成により，本実施例に示したデバイス管理システムは，利用者が高コストな回線種別を利用している場合でも，遠隔操作などのサーバ１１０，機器Ａ１２０間の通信量を低減するため，利用者が負担する通信コストを低減する効果がある。
【実施例２】
【０１１３】
次に，本発明を適用した第二の実施形態について説明する。本実施形態を実現するシステムは，基本的に上述の第一の実施形態と同様の構成を有する。ただし，第一の実施形態とは，以下に説明する手順に従って，デバイスドライバ２０２からデバイスＡ１３０にデータが送受信される点が異なる。
【０１１４】
図４は，デバイスドライバ２０２がデバイスＡ１３０に向けて送信した命令データをデバイスＡ１３０が受信し，デバイスＡ１３０がデバイスドライバ２０２に向けて返信した応答データを，デバイスドライバ２０２が受信する際のシステム全体の動作フローを示したものである。
【０１１５】
第一の実施形態と同様に，デバイスドライバ２０２がデバイスＡ１３０に向け命令データを送信するステップ３００〜３０２が実行された後，擬似バスドライバ２０３は，「命令データがあらかじめ定めた命令であり」，かつ，「回線品質が管理者が定めたしきい値より低いかまたは回線種別が管理者が定めた種別である」かどうか判別する（４０３）。
【０１１６】
本実施形態において，サーバ１１０の管理者があらかじめ定めた命令とは，データ読み込み（シーケンシャルリード，ブロックリード）命令など，類似する命令データが連続しやすい特別な命令データを示し，その詳細については，後述する。
【０１１７】
ステップ４０３において，「命令データがあらかじめサーバ１１０の管理者が定めた命令ではない」場合か，もしくは，「回線品質がサーバ１１０の管理者が定めたしきい値より高くかつ回線種別がサーバ１１０の管理者があらかじめ定めた種別である」場合，擬似バスドライバ２０３は，受け取った命令データを機器Ａ１２０に送信する。
【０１１８】
具体的に、命令データは、擬似バスドライバ２０３から、通信プログラム２０７及び２０９，フィルタドライバ２１２，物理バスドライバ２１３を順に介してデバイスＡ１３０に送信される（３０４）。
【０１１９】
デバイスＡ１３０は，受け取った命令データに対応する応答を行う。具体的には，物理バスドライバ２１３が出力した応答データは，フィルタドライバ２１２によって，通信プログラム２０９に送信され，さらに通信プログラム２０７，を介して、擬似バスドライバ２０３へ送信される。
【０１２０】
擬似バスドライバ２０３は、機器Ａ１２０から上記の応答データが送信されるのを待ち（３０５），受け取った応答データをデバイスドライバ２０２に返信する（３１５）。擬似バスドライバ２０３は，続くデバイスＡ１３０への要求があるかどうかを判断し（３０６），ない場合は動作を終了（３０７）し，ある場合は，ステップ３０１に戻る。
【０１２１】
ステップ４０３において，「命令データがあらかじめ管理者が定めた命令であり」、かつ「回線品質がサーバ１１０の管理者が定めたしきい値以下である場合か，「回線種別がサーバ１１０の管理者があらかじめ定めた種別である」場合，擬似バスドライバ２０３は，ステップ４０８において，過去数回に渡って擬似バスドライバ２０３が連続して受け取った個別のデバイス（この場合，デバイスＡ１３０）に対する複数の命令データが，連続した命令データであるか判定を行う。
【０１２２】
ステップ４０３で判断される，あらかじめ定められた命令データとは，デバイスＡ１３０の状態をチェックする命令データや，利用される回線品質や回線種別下では，管理者が先読み動作が可能と考える命令データのことであり，ステップ４０８で判断される，連続した命令データとは，シーケンシャルデータリード（ブロックデータリード）などの，次に続く命令が読み出しアドレスなどのパラメータが順次変化するが，命令種別は変わらず連続的に呼び出される一連の命令データ群を示す。
【０１２３】
デバイスＡ１３０に送信される命令データがあらかじめ管理者が定めた連続した命令データ群の一部であると判断されない場合，命令データの内容を擬似バスドライバ２０３内に保持し（４０９），ステップ３１０及び３１１に進む。機器Ａ１２０から応答データを受け取った後、擬似バスドライバ２０３は、内部に応答データを保持し（４１１）ステップ３１５を実行する。
【０１２４】
一方、ステップ４０８において，「デバイスＡ１３０に送信される命令データがあらかじめ管理者が定めた連続した命令データ群の一部である」と判断された場合，擬似バスドライバ２０３は，後述する先読み結果が擬似バスドライバ内に存在し，さらに，対応した先読み結果から応答データを作成し、デバイスドライバ２０２へ返信するかどうかを判定する（４１２）。
【０１２５】
先読み結果が存在する場合，擬似バスドライバ２０３は，与えられた命令データを機器Ａ１２０に送信することなく，当該命令データに対応した先読み結果内の一部のデータから応答データを作成し，作成した応答データを，デバイスドライバ２０２へ返信し（４１４），応答データがこれ以上保存不要と判断できればメモリ上から削除する。擬似バスドライバ２０３は，続いてステップ３０６を実行する。なお，複数の命令データとあるが，１つの命令データにて一連のデータを受信されると判断できる場合，判断に利用される命令は１つでも良く，複数である必要はない。
【０１２６】
ステップ４１２において，先読み結果が存在しないと判断された場合，擬似バスドライバ２０３は，以下に示す方法で，先読み結果を取得するための命令データを作成する。
【０１２７】
図５は，先読み結果を取得するための命令データ作成方法を説明するための図である。命令データ５００は，擬似バスドライバ２０３に与えられた命令データの主要な命令部分の一例を示している。
【０１２８】
命令データ５００は，図示する命令部分以外に，デバイスドライバ２０２とやり取りを行うためのデータ送信に関する命令情報やアドレス情報，ステータスなどのヘッダ情報を含んでいる。例えば，物理バス１２８がＵＳＢであれば，命令データには，命令コード，転送データ長さ，転送されるバッファのアドレス，転送されるバッファの長さ，転送フラグ，パイプ情報等が含まれる。
【０１２９】
図５の例で示す命令データ５００のｎバイト目からｎバイト＋５バイト目に記録された命令部分は，ｎバイト目から順に命令コード番号，論理ブロック，転送長，やオプションが記録されている。命令コード番号は，デバイスＡ１３０に実行させるための命令コードが格納されている。
【０１３０】
図５に示す例ではリード命令が格納されている。命令コードに続いて，論理ブロックや転送長といった命令コードに対応したパラメータが格納されている。図５に示す例では，命令がリード命令であるため，パラメータとして，ｎ＋１バイト目からｎ＋３バイト目に論理ブロック，ｎ＋４バイト目に転送長の順に記録されている。（説明のため，論理ブロックには，「０１２３４５ｈ」，転送長さには１［ブロック］が記録されているものとする。ここで，ブロックとは，例えば５１２バイトなどのデバイスがデータを記録する単位である。）ｎ＋５バイト目には，前記リード命令に対応するフラグやオプション類が記録されている。
【０１３１】
サーバ１１０の管理者が図５に示した命令（リード命令）が，続く命令が推測可能であると定義していたとすると，擬似バスドライバ２０３は，例えば，続く命令は，０１２３４５ｈ＋１ブロック目からの１ブロックの読み出し，さらに続く命令は，０１２３４５ｈ＋２ブロック目からの１ブロックの読み出しであると判断する。このため，擬似バスドライバ２０３は，先読み結果取得のため図５に示すような先読み結果取得用の命令データ５０１を作成する。命令データ５０１は，図５の例においては，０１２３４５ｈブロックから６４ブロックの読み出しを要求する命令データとなる。
【０１３２】
命令データ５０１の作成手順は，サーバ１１０の管理者によりインストール時または，設定変更時に擬似バスドライバ２０３に設定しておけばよい。命令種別により，どのパラメータをどのように変化させて先読み結果取得用の命令データ５０１を作成するかは，管理ポリシーと命令コードに依存する。
【０１３３】
擬似バスドライバ２０３は、先読み結果取得用の命令データ５０１を通信プログラム２０７を介して機器Ａ１２０に送信し（４１５）、デバイスＡ１３０が応答する，命令データ５０１に対応する応答データは，物理バスドライバ２１３，フィルタドライバ２１２，通信プログラム２０９及び２０７，を順に介して、擬似バスドライバ２０３へ送信される。
【０１３４】
擬似バスドライバ２１３は、機器Ａ１２０から上記の応答データが送信されるのを待ち（３０５）、対応する応答データ５０２がデバイスＡ１３０から送信されると，擬似バスドライバ２０３は，応答データを擬似バスドライバ２０３内に保存する（４１１）とともに，命令データ５００に対応する応答データ５０３を作成し，ここで，応答データ５０２が不要と判断できれば削除する。作成された応答データ５０３は，デバイスドライバ２０２に送信され（４１４），ステップ３０６に進む。
【０１３５】
前述のように，ステップ４１２において，先読み結果が擬似バスドライバ２０２内に存在し，先読み結果が与えられた命令データに対応する応答データ作成に利用できると判断された場合，擬似バスドライバ２１３は，与えられた命令データに対応する応答データ（５０４，５０５など）を作成し，また，応答データ５０２が不要と判断できれば削除する。
【０１３６】
なお，擬似バスドライバ２１３は，先読み結果を与えられた命令データに対応する応答データ作成に利用できないと判断した場合，応答データ５０２を不要と判断し，擬似バスドライバ２０３内から削除する。）
以上のように説明した機能を持つデバイス管理システムでは，連続的なデータの読み出し等のあらかじめ次の処理結果をサーバ１１０管理者が推測可能な一連の命令データがデバイスドライバ２０２から与えられた際，ネットワーク１０３上の通信量を少なくしても，一連の命令データに対応する応答データが作成することができ，命令データ及び応答データの送信回数を低減し，ネットワーク１０３上を通過するサーバ１１０と機器Ａ１２０間の他の通信の効率低下を防いだり，回線利用料を低減したりすることができる。
【０１３７】
システム管理者は，サーバ１１０と機器Ａ１２０間の，他の通信の効率や利用する回線の通信コストに鑑みてステップ４０３にて判定する回線品質のしきい値や回線種別をあらかじめ定めることができる。定められたしきい値や回線種別は，仮想デバイスマネージャ１１１内にインストール時もしくは，システム内に存在する管理サーバとの通信の過程で記憶されている。
【０１３８】
上記のようなフローに従ってデバイスＡ１３０を制御することにより，本実施形態に示したデバイス管理システムは，回線品質や回線種別を検知し，回線の能力が低い場合でも，遠隔操作などのサーバ１１０，機器Ａ１２０間の他の通信に与える影響をより少なくしてサーバ１１０からデバイスＡ１３０をコントロール可能とし，利用者に快適にシステムを利用可能とする効果がある。
【０１３９】
また，同様の構成により，本実施例に示したデバイス管理システムは，利用者が高コストな回線種別を利用している場合でも，遠隔操作などのサーバ１１０，機器Ａ１２０間の通信料を低減するため，利用者に快適にシステムを利用可能とする効果がある。
【実施例３】
【０１４０】
次に，本発明を適用した第三の実施形態について説明する。本実施形態を実現するシステムは，基本的に上述の第一の実施形態と同様の構成を有する。ただし，本実施形態は，以下の点を特徴とする。
【０１４１】
本実施形態が仮定しているUSBでは，バッファを指し示すポインタを含んだ命令データが生成されることがある。しかし，本実施形態のようにネットワークを介して命令データを送信する場合には，ネットワークを介してバッファの内容を指し示せないので，実データを命令データに含ませる変換処理が必要になる。
【０１４２】
しかしながら，例えば、Read命令のように，送信時はバッファの内容は不定（すなわち，不要）だが，受信時（応答時）にはRead結果が入る，という命令データがあり，これら，送信時に不要なデータを削除（または圧縮）することが本実施形態の特徴である。
【０１４３】
この実施形態が，USB以外にも適用可能であること，クライアントからサーバへのデータにも適用可能であることは，もちろんである。
【０１４４】
図６は，デバイスドライバ２０２がデバイスＡ１３０に向けて送信した命令データをデバイスＡ１３０が受信し，デバイスＡ１３０がデバイスドライバ２０２に向けて返信した応答データを，デバイスドライバ２０２が受信する際のサーバ１１０の動作フローを示したフローチャートである。
【０１４５】
第一の実施形態と同様にデバイスドライバ２０２がデバイスＡ１３０に向け命令データを送信するステップ３００〜３０２を実行した後，擬似バスドライバ２０３は，「命令データがあらかじめ定めた命令であり」，かつ，「回線品質が管理者が定めたしきい値より低いかまたは回線種別が管理者が定めた種別である」かどうか判別する（６０３）。ここで，サーバ１１０の管理者があらかじめ定めた命令とは，単純なデータ読み込みやステータス読み込みなどバッファ転送を伴う命令を示し，その詳細については，後述する。
【０１４６】
ステップ６０３において，「命令データがあらかじめサーバ１１０の管理者が定めた命令ではない」場合か，もしくは，「回線品質がサーバ１１０の管理者が定めたしきい値より高くかつ回線種別がサーバ１１０の管理者があらかじめ定めた種別である」場合，擬似バスドライバ２０３は，受け取った命令データを通信プログラム２０７経由で機器Ａ１２０に送信する（３０４）。擬似バスドライバ２０３は、機器Ａから上記の応答データが送信されるのを待つ（３０５）。命令データは、通信プログラム２０７及び２０９，フィルタドライバ２１２，物理バスドライバ２１３を順に介してデバイスＡ１３０に送信される。
【０１４７】
デバイスＡ１３０は，受け取った命令データに対応する応答データをサーバ１１０に送信する。具体的には，応答データは，物理バスドライバ２１３，フィルタドライバ２１２，通信プログラム２０９及び２０７，を順に介して、擬似バスドライバ２０３へ送信される。擬似バスドライバ２０３は、機器Ａ１２０から応答データを受け取ると、受け取った応答データをデバイスドライバ２０２に返信する（３１５）。擬似バスドライバ２０３は，続くデバイスＡ１３０への要求があるかどうかを判断し（３０６），ない場合は動作を終了（３０７）し，ある場合は，ステップ３０１に戻る。
【０１４８】
ステップ６０３において，「命令データがあらかじめ管理者が定めた命令であり」かつ「回線品質がサーバ１１０の管理者が定めたしきい値以下であるか，回線種別がサーバ１１０の管理者があらかじめ定めた種別である」場合，擬似バスドライバ２０３は，命令データ内のポインタにより指し示されたバッファの内容を通信プログラム２０７に送信する内容にコピーする必要があるかどうかを判断する（６０８）。
【０１４９】
ステップ６０８にて，バッファの内容を送信する命令データ内にコピーする必要があると判断した場合，擬似バスドライバ２０３は，命令データ内にバッファの内容をコピーし，作成された命令データを，通信プログラム２０７を介して機器Ａ１２０に送信する（６０９）。
【０１５０】
また，ステップ６０８にて，命令データ内にコピーするデータがない，または，コピーする必要がない，と判断した場合，擬似バスドライバ２０３は，ステップ３０１で受信した命令データを，バッファの内容をコピーせずに，通信プログラム２０７を介して機器Ａ１２０に送信する（６１２）。
【０１５１】
どちらの場合も，フィルタドライバ２１２は，通信プログラム２０９を介して受け取った命令データを，必要ならばバッファの内容を後述するように復元し，デバイスＡ１３０に送信する（復元については後述する）。デバイスＡ１３０は，受け取った命令データに対応する応答データをデバイスドライバ２０２に返信する。
【０１５２】
いずれの場合も擬似バスドライバ２０３は、機器Ａ１２０から応答データが送信されるのを待ち（３０５），受け取った応答データをデバイスドライバ２０２に返信する（３１５）。擬似バスドライバ２０３は，続くデバイスＡ１３０への要求があるかどうかを判断し（３０６），ない場合は動作を終了（３０７）し，ある場合は，ステップ３０１に戻る。
【０１５３】
ステップ６１２において作成された命令データは，バッファの内容がコピーされていないため，データサイズが小さい。また，ステップ６０９にて作成された命令データについては，コピーされたバッファの内容を圧縮処理することにより，フィルタドライバ２１２に送信する命令データのサイズを小さくすることができる。この場合，圧縮されたバッファの内容は，通信アプリケーション２０９もしくはフィルタドライバ２１２において伸長（解凍ともいう）され，元の内容に復元される。圧縮及び復元の方法は予め決めておくか，ステップ６０９にて生成される命令データにそのアルゴリズムを表すデータを挿入しておけば良い。
【０１５４】
図７は、デバイスドライバ２０２がデバイスＡ１３０に向けて送信した命令データをデバイスＡ１３０が受信し，デバイスＡ１３０がデバイスドライバ２０２に向けて返信した応答データを，デバイスドライバ２０２が受信する際の機器Ａ１２０（クライアント）の動作フローを示したフローチャートである。
【０１５５】
デバイスＡ１３０をデバイスドライバ２０２から制御可能になった状態から（７００），機器Ａ１２０上の通信プログラム２０９は、デバイスＡ１３０への命令データが通信プログラム２０７から送信されるのを待つ（７０１）。擬似バスドライバ２０３から命令データの受信後に，通信プログラム２０９は、サーバ１１０内のバッファ内容が受信した命令データ内にコピーされているかどうかの判定を行う（７０２）。
【０１５６】
判定の結果、バッファ内容をコピーしたデータが存在しないと確認した場合、フィルタドライバ２１２は、バッファの内容を不定のままにするか、０で埋められたデータであると認識する（７０５）。
【０１５７】
次に、受信した命令データをデバイスＡ１３０に送信し、その応答データをサーバ１１０へ送信する（７０７）。次に、デバイスプラグアウトなどの異常処理や終了処理が行われたかどうか判断し（７０８）、行われた場合は、終了し（７０９）、行われていない場合は、ステップ７０１に戻る。
【０１５８】
ステップ７０２において、通信プログラム２０９が、受信した命令データ内に、バッファ内容をコピーしたデータが存在すると判断した場合、通信プログラム２０７は、バッファの内容が圧縮されているかどうかを調べる（７０３）。バッファの内容が圧縮されている場合、通信プログラム２０９は、圧縮されたデータを復元し（解凍処理を行い）、復元した内容を新たなバッファの内容とする（７０６）。次に、復元したバッファ内容を含む命令データをデバイスＡ１３０に送信し、その応答データをサーバ１１０へ送信し（７０７）。ステップ７０８を実行する。
【０１５９】
ステップ７０３において、バッファの内容が圧縮されていないと判断した場合、通信プログラム２０９は、バッファ内容を含む命令データをデバイスＡ１３０に送信し、その返信データをサーバへ送信し（７０７）。ステップ７０８を実行する。
【０１６０】
以上説明した手法により，サーバ１１０内のメモリ１１３に保存されたデータの参照を伴う命令データが，擬似バスドライバ２０３に送信された際にも，デバイスＡ１３０が命令データを処理可能になるように命令データを送信することができる。
【０１６１】
また，送信される命令データの種別によっては，送信する命令データ量を削減でき，ネットワーク１０３上を通過するサーバ１１０と機器Ａ１２０間の，他の通信の効率を低下させることを防いだり，不必要な回線利用料を発生させたりしないようにすることができる。
【０１６２】
システム管理者は，サーバ１１０と機器Ａ１２０間の，他の通信の効率や利用する回線の通信コストを鑑みてステップ６０３にて判定する回線品質のしきい値や回線種別を仮想デバイスマネージャ１１１にあらかじめ設定すればよい。定めたしきい値や回線種別は，仮想デバイスマネージャ１１１のインストール時もしくは，図示していない管理サーバとサーバ１１０の通信の過程で記憶させることが可能である。
【０１６３】
上述のフローに従ってデバイスＡ１３０を制御することにより，本実施形態に示したデバイス管理システムは，ネットワークの回線品質が低い場合でも，遠隔操作などのサーバ１１０，機器Ａ１２０間の他の通信に支障をきたさずにサーバ１１０からデバイスＡ１３０をコントロール可能とし，利用者に快適にシステムを利用可能とする効果がある。
【０１６４】
また，同様に，利用者が高コストな回線種別を利用している場合でも，サーバ１１０，機器Ａ１２０間の通信量を抑制するため，利用者に快適にシステムを利用可能とする効果がある。
【０１６５】
以上説明したように，第一〜第三の本実施形態のデバイス管理システムによれば，利用者が手元で操作するクライアントに接続されたデバイスを，当該クライアントの利用場所とは隔たりのある場所に設置されたサーバ１１０上のプログラムから，効率良く，安全かつ簡便に，利用することが可能になる。これにより，利用者の利便性が向上する。
【０１６６】
なお，上記の第一〜第三の実施形態では，サーバやクライアントにあたる情報機器を共にサーバ及びＰＣとして説明を行ったが，上記実施形態の構成を備えていれば，いずれか一方または両方がＰｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ（ＰＤＡ），現金自動預け払い機（ＡＴＭ），携帯電話，デジタルスチルカメラ，音楽再生（録音）装置，Ｉｎｔｅｌｌｉｇｅｎｔ  Ｔｒａｎｓｐｏｒｔ  Ｓｙｓｔｅｍｓ（ＩＴＳ）用送信機，自動販売機，入退室管理装置，ゲーム機等であってもよい。これらの場合も同様の効果が得られる。
【０１６７】
また，上記第一〜第三の実施形態を組み合わせて実施することも可能である。例えば，管理者が予め定めた命令データとして，第一〜第三の実施形態で例示した命令データのすべてまたは任意の組み合わせであっても良く，上記いずれかの実施形態を対象となる命令データに適用しても良い。
【図面の簡単な説明】
【０１６８】
【図１】第一実施形態のデバイス管理システムの構成を例示する図である。
【図２】第一実施形態の仮想デバイスマネージャ及びデバイス管理マネージャの詳細な構成を例示する図である。
【図３】第一実施形態のデバイスドライバがデバイスＡと命令データ及び応答データを送受信する際のサーバの動作フローを例示する図である。
【図４】第二実施形態のデバイスドライバがデバイスＡと命令データ及び応答データを送受信する際のサーバの動作フローを例示する図である。
【図５】第二実施形態の先読み結果を取得するための命令データ作成方法を例示する図である。
【図６】第三実施形態のデバイスドライバがデバイスＡと命令データ及び応答データを送受信する際のサーバの動作フローを例示する図である。
【図７】第三の実施形態のデバイスドライバがデバイスＡと命令データ及び応答データを送受信する際のクライアントの動作フローを例示する図である。
【図８】各実施形態における，サーバ，機器Ａ，機器Ｂのハードウェア構成図を例示する図である。
【図９】擬似バスドライバ２０３が命令データを遅延して送信する様子を例示するタイムチャートである。
【符号の説明】
【０１６９】
１０３：ネットワーク，１０４：インターネット，１０５：ファイヤーウォール，１１０：サーバ，１１１：仮想デバイスマネージャ，１１２：ストレージ，１１３：メモリ，１１４：ＣＰＵ，１１５：通信インターフェース，１２０：機器Ａ，１２１：デバイスマネージャ，１２２：ストレージ，１２３：メモリ，１２４：ＣＰＵ，１２５：通信インターフェース，１３０：デバイスＡ，１４０：機器Ｂ，１５０：デバイスＢ
【図１】
2009031882.tif 000003
【図２】
2009031882.tif 000004
【図３】
2009031882.tif 000005
【図４】
2009031882.tif 000006
【図５】
2009031882.tif 000007
【図６】
2009031882.tif 000008
【図７】
2009031882.tif 000009
【図８】
2009031882.tif 000010
【図９】
2009031882.tif 000011