JP2009031882A - デバイス管理システム及びこれに用いるサーバ及び仮想デバイス管理プログラム - Google Patents
デバイス管理システム及びこれに用いるサーバ及び仮想デバイス管理プログラム Download PDFInfo
- Publication number
- JP2009031882A JP2009031882A JP2007192771A JP2007192771A JP2009031882A JP 2009031882 A JP2009031882 A JP 2009031882A JP 2007192771 A JP2007192771 A JP 2007192771A JP 2007192771 A JP2007192771 A JP 2007192771A JP 2009031882 A JP2009031882 A JP 2009031882A
- Authority
- JP
- Japan
- Prior art keywords
- data
- driver
- device management
- server
- bus driver
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
【課題】
サーバクライアント型システムにおいて,サーバからクライアントのデバイスを遠隔操作するデバイス管理システムにおいて,回線品質や種別に応じてサーバとクライアントとの間の通信量を抑制し,システムの応答性能の向上や,通信コストの低減を可能にする。
【解決手段】
サーバ上で動作する擬似バスドライバに回線品質や種別及び送受信されるデータを判断する機能と,サーバとクライアントにて送受信されるデバイス制御用の送信データを送信するタイミングを変化させる機能と,送信データを場合に応じて改変する機能と,を持たせる。
【選択図】 図1
サーバクライアント型システムにおいて,サーバからクライアントのデバイスを遠隔操作するデバイス管理システムにおいて,回線品質や種別に応じてサーバとクライアントとの間の通信量を抑制し,システムの応答性能の向上や,通信コストの低減を可能にする。
【解決手段】
サーバ上で動作する擬似バスドライバに回線品質や種別及び送受信されるデータを判断する機能と,サーバとクライアントにて送受信されるデバイス制御用の送信データを送信するタイミングを変化させる機能と,送信データを場合に応じて改変する機能と,を持たせる。
【選択図】 図1
Description
本発明は,ネットワークを介して接続する2つ以上の機器の一方に接続された周辺機器を,他方の機器から利用可能とするシステムに関する。
インターネットやイントラネットなどのネットワークに2つ以上の機器(apparatus)を接続したシステムで,一方の機器から他方の機器を操作するとともに,その表示装置に他方の機器の操作画面を表示して遠隔操作を行うシステム形態が一般的になっている。このようなシステム形態は,サーバクライアント型,より詳しくは,画面転送型のサーバクライアント型システムと呼ばれる。サーバクライアント型を用いたシステムでは,利用者の手元にある端末機器(以下,クライアントという)と利用者により遠隔操作される機器(以下,サーバという)との間のネットワークが,イントラネットと呼ばれるローカルな社内(構内)ネットワークであっても,インターネットなどの公衆回線網であっても,ホームネットワークと呼ばれるような家庭内ネットワークでも,十分な回線品質を確保すれば利用可能で,例えば外出先のような場所から,会社内や家庭内のサーバを制御することが可能である。この場合,通信路は,機器にインストールされた暗号通信機能により,必要に応じて暗号化され,改ざんや盗聴といった脅威から守られる。また,クライアントの処理能力が低い場合や,クライアントに一定のセキュリティが確保できない場合や,サーバを利用者が携行しづらい場合等にも利用可能である。
このように,サーバクライアント型システムは,サーバに相当するPC(Personal Computer)を利用者が持ち歩く場合と比較し,全体の機器コストや危機管理コスト,資産管理コストを削減できる上,ネットワークへの接続が可能な場所からならどこでもサーバを制御可能にするという利便性を利用者に提供できるという特徴を持つ。このようなサーバクライアント型システムは,例えば,特許文献1に述べられている。
サーバクライアント型システムでは,サーバと,クライアントが,物理的に離れた場所に設置され,利用者はシステムを利用している間,クライアントを経由してサーバ上のアプリケーションを主に利用している場合が多い。この場合,クライアントに接続された周辺機器(以下,単にデバイスという)を,サーバから利用可能,すなわち,サーバ上のプログラムからクライアントに接続されたデバイスが直接操作可能であるようにシステムを構成すれば,利用者がシステムを利用する際の利便性が飛躍的に向上する。このようなデバイス管理機能を備えたシステム(以下,デバイス管理機能を備えたシステムと呼ぶ)は,例えば特許文献1及び非特許文献1に述べられている。
利用者がサーバクライアント型のデバイス管理を備えたシステムを利用する際に,サーバ−クライアント間の通信にかかる時間が大きいと,デバイスを利用するのに時間がかかり,利用者は不便さを感じ,体感品質(QoE,Quality of Experience)が低下する。例えば,クライアントにつないだストレージデバイスを,あたかも遠隔地にあるサーバに接続されているように構成し,サーバ上のプログラムから当該ストレージデバイスを操作している場合,コマンド,レスポンスや通信データの送受信にかかる時間が大きいほど,当該プログラムがストレージデバイス上のデータを読み込んだり,ストレージデバイス上にデータを書き込んだりするのに必要な時間が増え,利用者は不便さを感じる。
画面転送型などのシンクライアントシステムにおいては,実際の処理装置はサーバであるから,利用者の手元にあるクライアントにデバイスを接続する一方,サーバがデバイスを利用できるように構成することが,使い勝手の点から望ましい。さらに接続されたデバイスをサーバが利用する場合であっても,クライアントが利用する場合と同様に応答良く利用でき,かつ,デバイスの利用が画面転送などのそのほかの処理に影響を及ぼさないことが望ましい。
特許文献1及び非特許文献1には,デバイス管理を備えたシステムが開示されているが,上述のコマンド,レスポンスや通信データの送信遅延や,それに伴うスループット低下という課題や,それを解決し,利用者の利便性を向上させ,体感品質を向上させる方法については述べられていない。
本発明は,サーバと,サーバ上のプログラムを操作し,および/または,その処理結果を受け取るクライアントと,がネットワークで接続されたサーバクライアント型システムにおいて,クライアントに接続されたデバイスをサーバ上のプログラムから利用可能に構成した場合に,クライアントに接続されたデバイスをクライアント上のプログラムから利用する場合に比べ,クライアントを操作する利用者の体感品質を悪化させないデバイス管理方法,および,システムを提供する。
本発明では,サーバからクライアントに接続されたデバイスを利用可能(遠隔利用という)とするために,クライアントには,接続されているデバイス用のデバイスドライバとの間でデータを送受信するとともにサーバとの間で当該データを送受信するデバイス管理手段を備え,サーバには,当該サーバ内で実行されるアプリケーションプログラムと,クライアントのデバイス管理手段とを仲介する仮想デバイス管理手段を備える。
本発明は,上記構成において,上記仮想デバイス管理手段が,遠隔利用時の利用者の体感品質を悪化させないために,サーバクライアント間でネットワークを介して行われる,デバイス管理に関する通信量を制御することを特徴とする。
本発明は,より具体的には,仮想デバイス管理手段が,サーバクライアント間のネットワークの回線種別,回線品質に応じて,デバイス管理に関する通信量を制御することを特徴とする。
上記構成により,通信量を制御しない場合に比べて,コマンド,レスポンスや通信データの送信遅延を減らし,スループットを向上させることが可能となり,クライアントに接続されたデバイスをクライアント上のプログラムから利用する場合に比べて,同等の体感品質を提供することが可能になる。
なお,回線種別とは,サーバとクライアントが通信する際に利用する回線の種別であり,例えば、非対称デジタル加入線(ADSL)、光通信線(FTTH)、公衆無線LANなどである。
回線品質とは,コマンド,レスポンス,通信データの送信時間や,スループットといった通信性能の善し悪しを指す。すなわち,送信時間が短く,スループットが高ければ,通信性能が高く,回線品質が高いことになる。
なお,サーバとクライアント間のネットワークが,複数種別の回線を経由することがある場合は,当該ネットワーク内で,最も性能の悪い(帯域の低い)回線や、クライアントに接続された回線などの種別,品質に応じて,通信量制御を行う。
また,以下では,回線種別や回線品質を通信性能と総称することがある。
本発明は,更に具体的には,サーバと,クライアントと,がネットワークで接続され,前記クライアントの物理バスに接続されたデバイスを前記サーバから制御するデバイス管理システムにおいて,前記サーバは,前記デバイス用の物理バスドライバを実行し,前記クライアントは,前記物理バスドライバ用の物理バスドライバを実行し,前記ネットワークを介して行われる,前記物理バスドライバと前記デバイスドライバとの通信を中継する,当該クライアント内のデバイス管理プログラムを実行し,前記サーバは,前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する,当該サーバ内の仮想デバイス管理プログラムを実行し,前記仮想デバイス管理プログラムは,前記通信において,前記デバイスドライバから前記物理バスドライバへ送信されるデータの種別と,前記ネットワークの回線品質と,前記ネットワークの回線種別と,の少なくとも一つを取得し,取得した情報に従って,前記仮想デバイス管理プログラムと前記デバイス管理プログラムとの前記通信における前記送信されるデータの通信量削減処理を実行することを特徴とするデバイス管理システムを提供する。
さらに,前記送信されるデータは,前記物理バスドライバへの命令データであって,前記仮想デバイス管理プログラムは,前記バスドライバから前記通信量削減処理として,前記物理バスドライバへの前記命令データの遅延処理を行ってもよいし,前記物理バスドライバへの命令データの単位時間当たりの数を減らしてもよい。
前記仮想デバイス管理プログラムは,または,前記デバイスドライバから前記物理バスドライバへの第一の命令データを受信した場合に,前記通信量削減処理として,前記第一の命令データに対する第一の応答データを,すでに前記物理バスドライバから受信している第二の応答データから生成し,前記デバイスドライバへ送信することにより,前記第一の命令データの前記デバイス管理プログラムへの送信を行わなくてもよい。
前記仮想デバイス管理プログラムは,または,前記取得した情報に従って,前記デバイスドライバから受信した前記第一の命令データが含むポイントが指し示す前記サーバ上のバッファの内容を圧縮または削除し,前記第一の命令データを,前記バッファの内容を削除,または,前記圧縮したバッファの内容を含む,第二の命令データに変換し,前記デバイス管理プログラムに送信し,前記デバイス管理プログラムは,送信された前記第二の命令データから,前記第一の命令データを復元し,前記復元された第一の命令データを前記デバイスへ送信してもよい。
なお,本明細書に於いて,サーバとは,例えば,パーソナルコンピュータ(PC),ワークステーション,ブレード型サーバを含み、クライアントとは、例えば,PC,パーソナルデジタルアシスタント(PDA),携帯電話,テレビ,情報端末を含む。
本発明の前記並びにその他の目的と新規な特徴は,本明細書の記述および添付図面から明らかになるであろう。
本発明によれば,サーバクライアント型システムにおいて,クライアントに接続されたデバイスをサーバから操作する場合の利用者の利便性を,サーバクライアント間の通信性能が低い場合でも,従来のシステム同様に確保することができる。
本発明の実施の形態について,添付図面を参照しながら,以下詳細に説明する。なお,図面中にて同一の参照番号を付したものは,同一の機能を有する構成要素を示し,説明の便宜上その詳細な説明は省略する。
以下,図面を用いて,本発明に係るデバイス管理システムの第一の実施形態を説明する。
図1は,本実施形態のデバイス管理システムの詳細なブロック図である。
本実施形態のデバイス管理システムは,サーバ装置(以下,サーバという)110,機器A120,ネットワーク103,インターネット104,ファイヤーウォール装置(以下,ファイヤーウォールという)105,周辺機器(以下,デバイスという)A130,機器B140、デバイスB150とを備える。利用者は,機器A120もしくは機器B140をネットワークに接続し,クライアント機器(以下,クライアントという)として操作しながら,サーバ110においてプログラム処理を行う指示を送信する。ここで,サーバ110は,単独でも利用可能なサーバか,もしくはブレードサーバのように表示機能やユーザインターフェースを持たないサーバであってもよいし,PCやコピー機,ゲーム機のような組み込み機器でもよい。
機器A120は,ハードディスクドライブやフラッシュメモリなどの補助記憶装置(ストレージという)122と,主記憶装置(メモリという)123と,CPU124と,通信インターフェース125と,物理バス128を介してデバイスを接続するための物理バスインターフェース126,などが,内部通信線127で接続された構成を備え,通信インターフェース125を介して,ネットワーク103と接続されている。
機器A120においては,メモリ123に読み込まれたプログラムがCPU124により実行されることにより,各処理が実行される。なお,各プログラム(コードまたはモジュールまたはオブジェクトということがある)は,予めストレージに格納されていても良いし,記憶媒体,または通信媒体を介して,他の装置から取得することも可能である。なお,通信媒体とは,搬送波,デジタル信号,通信線を含む。
機器B140は,機器A120と同様の構成を備え,同等の機能を持つが,ネットワーク103だけでなく,インターネット104のような,不特定多数のユーザー相互間を結ぶ目的で利用される公衆回線網(インターネットという),及びファイヤーウォール105を介して,サーバ110と接続している。ファイヤーウォール105は,ネットワーク103とインターネット104の間で行われる通信を監視し,インターネット104からネットワーク103への不正アクセスを遮断する機器である。
サーバ110も,デバイスインターフェースが必須ではない他は,機器A120と同様の構成を備え,通信インターフェース115を介して,ネットワーク103またはインターネット104に接続されている。
本実施形態では,ネットワーク103,インターネット104は,TCP/IPプロトコルを用いて通信を行うネットワークとして以下に説明するが,それ以外のプロトコルに従った通信を行うネットワークであっても良い。
サーバ110におけるプログラム処理結果は,サーバ110が備えるか,または,サーバ110に接続された,図示しないディスプレイに表示される。ストレージ112には,後述する仮想デバイス管理プログラム(仮想デバイスマネージャという)111や,図示しないOSが格納されている。サーバ110が起動すると,CPU114により,ストレージ112からOSがメモリ113に読み込まれ,実行されて利用可能状態になった後,CPU114により,仮想デバイスマネージャ111がメモリ113に読み込まれ,実行されて仮想デバイスが利用可能になる。
本明細書における仮想デバイスとは,サーバ110にネットワークやその他の機器などを介して接続されているにもかかわらず,あたかもサーバ110に直接接続されているデバイスであるかのように,サーバ110が利用可能なデバイスである。仮想デバイスを利用することにより,ネットワーク経由で通信可能ではあるが離れた場所に設置されているデバイスが,サーバ110に物理的に直接接続されているデバイスと同様に利用可能となる。
本明細書においては,デバイスを操作する物理バスドライバと,その上位のソフトウェア(デバイスドライバなど)とが,それぞれ,TCP等のネットワークによって接続される異なる機器に備わり,それぞれのソフトウェアが送受信する命令データや応答データが,上記ネットワークプロトコル用にラッピングされて送受信される場合に,デバイスA130を仮想デバイスという。
仮想デバイスを利用することにより,ネットワーク経由で通信可能ではあるが離れた場所に設置されているデバイスA130が,サーバ110に物理的に直接接続されているデバイスと同様に利用可能となる。
仮想デバイスマネージャ111は,上述の仮想デバイスを,サーバ110から,管理し,利用可能にする機能を持つソフトウェアであって,例えば,機器A120にネットワークを介して接続されているデバイスA130との間でのデータの送受信を行うための制御を行う。詳細については,後述のデバイス管理マネージャ121の動作とともに後述する。
機器A120は,利用者の指示に従って,プログラム処理を行う。処理結果は機器A120に直接もしくは間接的に接続された図示しないディスプレイなどの表示装置に表示される。ストレージ122には,後述するデバイス共有プログラムであるデバイス管理プログラム(デバイスマネージャという)121が管理者によりインストールされている。機器A120が起動されるとストレージ122からOSがメモリに読み込まれ,CPU124により実行されて利用可能状態になる。その後,デバイスマネージャ121がメモリ123に読み込まれ,CPU124により実行され,デバイスマネージャ121と機器A120に接続されたデバイスA130とデータの送受信が可能となる。デバイスマネージャ121とデバイスA130との通信の詳細については,後述する。
機器A120は,利用者の指示に従ってプログラム処理を行い,必要に応じてデバイスA130を利用し,処理結果を利用者に提示する情報処理装置である。利用者からの指示は図示しないキーボードやマウスといったユーザインターフェースを介して機器A120へ送信される。
機器B140の構成,機能は,接続環境以外は,機器A120と同じであってよいため,機器A120について説明することにより,その説明を省略することがある。
また,機器A120や機器B140は,PCやサーバ,ワークステーション,組み込み機器,携帯電話,ゲーム機,ネットワークデバイスサーバのような,記憶媒体に格納しているOSやプログラムをメモリとCPUで実行する情報機器であれば特に限定されない。また,機器A120や機器B140は,入力装置やディスプレイ等の表示装置のようなユーザインターフェースを持たないデバイスハブのような組み込み機器であってもよい。この場合,入力装置や表示装置等のユーザインターフェースはネットワーク等を介して接続される。
デバイスA130は,機器A120のような情報機器に,デバイス接続用のインターフェースを介して接続されるものであり,例えば,CD−ROMドライブやプリンタ,スキャナ,ICカードリーダライタ,PDA,ストレージ,個人認証機器,カメラ,フラッシュメモリデバイスなどの周辺機器である。デバイス接続用のインターフェースとしては,例えばユニバーサルシリアルバス(USB),ワイヤレスUSB,近距離無線通信インターフェース,赤外線通信インターフェース,シリアルポートインタフェース,パラレルポートインタフェース,IEEE1394インターフェース,オーディオインタフェースといったデバイスをPCに接続するためのインターフェースがある。本実施形態では,インターフェースがUSBである場合を例示するが,これに限られない。
以上のように構成したデバイス管理システムにおいて,仮想デバイスマネージャ111は,デバイスマネージャ121の動作とデバイスA130の接続を検知して,サーバ110にデバイスA130が仮想的に接続されているようにサーバ110上で動作しているOSやプログラムに通知を行う。以下に,サーバ110上で動作しているOSやプログラムからデバイスA130に送信された命令やデータが,どのようにデバイスA130に到達し,デバイスA130から発信されたレスポンスやデータが,どのようにサーバ110上で動作しているOSやプログラムに送信されるかについて説明する。
なお、上記における「仮想的に接続」とは、サーバ110上で動作しているアプリケーションやデバイスドライバ等の,従来,サーバ110に,ネットワーク103を介さずに接続されているデバイスを利用するプログラムが、ネットワーク103を介して接続されるデバイスA130を,従来と同様のアクセス方法で利用可能であることを示す。
また,各実施形態の処理は,CPUが各プログラムを実行することにより,それぞれの装置で具現化されるものであるが,以下の説明では,便宜上,プログラムを実行主体として説明する。
図2は,仮想デバイスマネージャ111及びデバイスマネージャ121の詳細な構成を説明するための図である。
本実施例に示すデバイス管理システムが動作している状況では,機器A120のメモリ123上では,デバイスマネージャ121と,物理バスドライバ213と,デバイスドライバ211と,アプリケーション210というプログラムが動作している。ここで,デバイスマネージャ121は,内部にフィルタドライバ212と,通信プログラム209と,GUIアプリケーション208の3つのモジュールを含んでいる。それぞれのプログラムやモジュールは,図2の矢印にて結ばれたように,互いのプログラムやモジュール間で,命令やデータの通信を相互に行う。
同様に,サーバ110のメモリ113上には,仮想デバイスマネージャ111と,デバイスドライバ202と,アプリケーション201というプログラムが動作している。ここで,仮想デバイスマネージャ111は,擬似バスドライバ203と通信プログラム207とGUIアプリケーション206の3つのモジュールを含んでいる。また,擬似バスドライバ203は,起動用物理デバイスオブジェクト204と,エニュメレータ機能デバイスオブジェクト205というプログラムを含んでいる。それぞれのプログラムやモジュールは,図に示す矢印にて結ばれたように,互いのプログラムやモジュール間で,命令やデータの通信を相互に行う。
擬似バスドライバ203は、上位のドライバであるデバイスドライバ202に対しては、物理バスドライバ213と同様のインターフェースを持つものの、下位に物理バスドライバ213とのインターフェースを持たないバスドライバである。擬似バスドライバ203は、上位のデバイスドライバ202から命令やデータを受け取った場合,受け取った命令やデータを,ネットワークを通じて接続される異なる機器A120の物理バスドライバ213に送信し、送信結果に対する返信を受信し、受信した返信結果を上位のデバイスドライバ202に送信する。
物理バスドライバ213は,機器A120の物理バスインターフェース126に接続されたデバイスA130への通信を制御するプログラムであり,物理バスインターフェース126に接続される物理バス128毎に用意される。物理バスドライバ213は,物理バスインターフェース126を制御し,接続されたデバイスA130の状態や,接続,切断の状況を監視したり,デバイスA130からの割り込みをOSおよびその他のデバイスドライバに通知したり,デバイスマネージャ121内のフィルタドライバ212から受信したデータをデバイスA130に送信する,などの処理を行う。なお,本実施形態では,物理バス128はUSBとする。
デバイスドライバ211は,デバイスA130の種別に毎にロードされるプログラムである。OSやアプリケーション210等から送信された命令データを,デバイスA130が理解できる形式のデータに変換してフィルタドライバ212および物理バスドライバ213を介して送信する。また,デバイスA130からの割り込みや,デバイスA130へ送信された命令に対するレスポンスをフィルタドライバ212から受信し,OSおよびアプリケーション210等に送信する。
フィルタドライバ212は,物理バスドライバ213とデバイスドライバ211との間に配置され,デバイスドライバ211の下位のドライバとして動作するもので,デバイスA130が機器A120上のデバイスとして有効になった場合,機器A120のメモリ上にロードされる。フィルタドライバ212は,通信プログラム209またはデバイスドライバ211より送信されるデータを物理バスドライバ213に送信し,物理バスドライバ213より送信されるレスポンスを通信プログラム209またはデバイスドライバ211に返信する。
また,フィルタドライバ212は,通信プログラム209,物理バスドライバ213間にて送受信されるデータと,デバイスドライバ211,物理バスドライバ213間にて送受信されるデータのいずれかを有効とし,もう一方を無効とする。どちらのデータを有効とするかは,GUIアプリケーション206及びGUIアプリケーション208の指示に従って,または,デバイスA130の接続(プラグイン),切断(プラグアウト),取り外し(イジェクト)のタイミングもしくは,通信プログラム209の起動,終了のタイミングで,変更される。
プラグインは,デバイスA130を機器A120の物理バスインターフェース126に接続すること,プラグアウトは,デバイスA130を機器A120の物理バスインターフェース126から切り離すこと,イジェクトはデバイスA130から内部の機器やメディアを取り外すために,デバイスA130の動作を停止すること,をそれぞれ意味する。
なお,デバイスA130の種別は、以下に説明する方法で、サーバ110のOSに通知される。
デバイスA130が機器A120に接続された際、物理バスドライバ213は、デバイスA130から,デバイスA130内に保持されている種別を示す情報(種別情報)を読み出す。読み出される種別情報とは、例えば、デバイスA130のベンダIDや機器ID、製造社名、機器名、機器種別(クラス及びサブクラス)、インターフェースや通信方式を示す属性値などの,いずれか1つ以上である。
デバイスA130から読み出された,種別情報は,物理バスドライバ213から、機器A120のOSに送信され,機器A120のOSは、種別情報に適合するフィルタドライバ212及びデバイスドライバ211を特定し,メモリ123上に読みこむ。
物理バスドライバ213は,また,読み出した種別情報を,フィルタドライバ212、通信プログラム209、通信プログラム207を順に経由し、擬似バスドライバ203に送信する。擬似バスドライバ203は、内部に当該種別情報を保持すると共に,サーバ110のOSに,当該種別情報を送信する。
サーバ110のOSは受信した種別情報に基づきデバイスA130を認識し、サーバ110がデバイスA130を利用できるよう、デバイスA130の種別に適したデバイスドライバ202を特定し,メモリ上に読み込む。
フィルタドライバ212は,デバイスドライバ211から物理バスドライバ213へ送信されるデータを無効にする場合は,該当するデータがフィルタドライバ212に入力されると,無効であるというレスポンスをデバイスドライバ211に返信する,または,「デバイスが有効では無い」「デバイスにメディアが挿入されていない」などの予め決められたエラーを含んだレスポンスをデバイスドライバ211に返信する。同様に,フィルタドライバ212は,通信プログラム209から物理バスドライバ213へ送信されるデータを無効にする場合は,該当するデータがフィルタドライバ212に入力されると,無効であることを示すデータを通信プログラム209に返信する,あるいは,「デバイスが有効では無い」「デバイスにメディアが挿入されていない」などの予め決められたエラーを含んだデータを通信プログラム209に返信する。
フィルタドライバ212は,デバイスA130に対応するデバイスドライバ211に対応して機器A120のメモリ上にロードされる。接続されているデバイスA130が複数の場合,各デバイスA130毎に,または,デバイスA130に対応して設けられる物理バスドライバ213毎に,ロードされる。
通信プログラム209は,通信プログラム207及びフィルタドライバ212と通信を行う機能を持つ。通信プログラム209は,通信プログラム207及びフィルタドライバ212の状態を監視し,フィルタドライバ212との通信に異常が発生した場合は,通信プログラム207に異常信号を送信する。フィルタドライバ212との通信が予め定められた時間で復活しない場合,通信プログラム207にさらに異常信号を送信し,GUIアプリケーション208に状態を表示させ,利用者の指示を受け付ける。
例えば利用者の指示により,すべてのエニュメレータ機能デバイスオブジェクト205や起動用物理デバイスオブジェクト204を消滅させる要求を通信プログラム207に送信するもしくは通信プログラム209自身を終了させる,などの処理を行う。
また,通信プログラム209は,通信プログラム207との通信が異常になった場合は,フィルタドライバ212に異常信号を送信する。通信プログラム207との通信が予め定められた時間経っても復帰しない場合,フィルタドライバ212にさらに異常信号を送信し,GUIアプリケーション208に状態を表示させ,利用者の指示を受ける。
例えば利用者の指示により,デバイスA130の制御権限を機器A120からサーバ110に移すために,遮断していたデバイスドライバ211からのリクエストを物理バスドライバ213に送信し,通信プログラム209とフィルタドライバ212との通信を中断するように,設定変更を行う。
通信プログラム207は,通信プログラム209と通信を行い,機器A120に接続されたデバイスA130からプラグアウト,プラグイン,イジェクトの通知を受けるのを待つ。通信プログラム207はデバイスA130のプラグイン,プラグアウト,イジェクトの通知を受けると,擬似バスドライバ203が内部にデバイスA130に対応した起動用物理デバイスオブジェクト204及びエニュメレータ機能デバイスオブジェクト205を生成し、デバイスドライバ202からデバイスA130が利用可能になるように通信プログラム207に通知を行う。 擬似バスドライバ203は,後述する機器A120上の物理バスドライバ213と同様に,デバイスへの通信を制御するプログラムである。バス上のデバイスの状態および接続切断を監視し,デバイスからの割り込みをOSおよび上位のデバイスドライバに通知し,上位のデバイスドライバから転送されたデータをデバイスに宛てて送信する。
擬似バスドライバ203は,サーバ110上で動作するアプリケーション201やデバイスドライバ202が,機器A120の物理バス128に接続されたデバイスA130を,サーバ110の物理バスに接続されたデバイスと同様に扱うことを可能にする。
擬似バスドライバ203は,サーバ110のメモリにロードされると,その内部にエニュメレータ機能デバイスオブジェクト205を作成する。擬似バスドライバ203は通信プログラム209,207を介してデバイスA130がプラグインされたことを示す通知を受けると,エニュメレータ機能デバイスオブジェクト205に,該当するデバイスに対応する起動用物理デバイスオブジェクト204を生成させ,サーバ110からデバイスA130を利用できる状態にする。
また,擬似バスドライバ203は通信プログラム209,207を介してデバイスA130がプラグアウトされたことを示す通知を受けると,エニュメレータ機能デバイスオブジェクト205にプラグアウトの通知をする。擬似バスドライバ203は,デバイスA130がイジェクトされたことを示す通知を受けた場合,エニュメレータ機能デバイスオブジェクト205にイジェクトの通知をする。
また,擬似バスドライバ203は,起動用物理デバイスオブジェクト204がサーバ110のメモリからアンロード(以下,削除と略する)された場合,通信プログラム207及び通信プログラム209を通じて,削除された状態を機器A120に通知する。サーバ110のOSから擬似バスドライバ203を削除するよう擬似バスドライバ203に命令があった場合,すべての起動用物理デバイスオブジェクト204を削除した後にエニュメレータ機能デバイスオブジェクト205及び擬似バスドライバ203自身を削除する。上記の各処理中にエラーが発生した場合,擬似バスドライバ203は,エラーの内容を通信プログラム207に送信する。通信プログラム207への送信を行う際に通信内容に異常が発生した場合,擬似バスドライバ203は,機器120に関連する起動用物理デバイスオブジェクト204を削除するなどの初期化処理を行い,通信プログラム207との通信状態の回復を待つ。
エニュメレータ機能デバイスオブジェクト205は,擬似バスドライバ203の内部に生成されるデバイスオブジェクトである。後述する起動用物理デバイスオブジェクト204の生成,削除等の管理を行う。また,通信プログラム207と通信を行う。エニュメレータ機能デバイスオブジェクト205は,機器A120の通信プログラム209および通信プログラム207を介して擬似バスドライバ203から,デバイスA130のプラグインを示す通知とともに,プラグインされたデバイスA130のパラメータを受信すると,受け取ったパラメータを用いて,起動用物理デバイスオブジェクト204を作成する。
また,エニュメレータ機能デバイスオブジェクト205は,機器A120の通信プログラム209及び通信プログラム207を経由して擬似バスドライバ203から,デバイスA130のプラグアウトもしくはイジェクト通知を受信すると,プラグアウトまたはイジェクト通知を送信したデバイスA130に対応づけて生成された起動用物理デバイスオブジェクト204を削除する。
起動用物理デバイスオブジェクト204は,デバイスドライバ202からデバイスA130を動作させるためのドライバである。通信プログラム209および通信プログラム207を介してデバイスA130がプラグインされた通知をエニュメレータ機能デバイスオブジェクト205が受けるごとに生成される。
すなわち,起動用物理デバイスオブジェクト204は,機器A120に接続されてサーバ110から制御されるデバイス1つに対し,それぞれ1つ生成される。すなわち,起動用物理デバイスオブジェクト204は,1以上のオブジェクトからなるため,起動用物理デバイスオブジェクト204は,後述するデバイスA130のプラグイン操作により機器A120から送信されるデバイスID,シリアル番号などを用いて,デバイスと1対1に対応付けられ,エニュメレータ機能デバイスオブジェクト205に管理される。
通信プログラム207は,通信プログラム209と擬似バスドライバ203との通信を仲介する。通信プログラム207は,通信プログラム209との通信状態および擬似バスドライバ203との通信状態を監視し,擬似バスドライバ203との通信に異常が発生した場合は,通信プログラム209に異常信号を送信する。擬似バスドライバ203との通信が予め定められた時間内に復帰しない場合,通信プログラム209にさらなる異常信号を送信する。
異常が発生した場合は,通信プログラム207は,GUIアプリケーション206に状態を表示させ,利用者の指示を受け付ける。例えば利用者の指示により,すべての起動用物理デバイスオブジェクト204を含む擬似バスドライバ203を消滅させる命令をOSに送信したり,もしくは通信プログラム207自身を終了させたり,などの処理を行う。
通信プログラム207は,通信プログラム209との通信に異常が発生した場合は,擬似バスドライバ203に異常信号を送信する。通信プログラム209との通信が予め定められた時間内に復帰しない場合,擬似バスドライバ203にさらなる異常信号を送信し,GUIアプリケーション206に状態を表示させ利用者の指示を受け付ける。例えば利用者の指示により,擬似バスドライバ203や機器A120に関連する起動用物理デバイスオブジェクト204を消滅させる命令をサーバ110のOSに送信したり,通信プログラム207自身を終了させたり,などの処理を行う。
通信プログラム207は,通信プログラム209と通信を行い,機器A120に接続されたデバイスからプラグアウト,プラグイン,イジェクトの通知を受けるのを待つ。
デバイスドライバ202は,既に説明したデバイスドライバ211と基本的に同様の機能を有する。
次に,上記のような構成を備えるデバイス管理システムにおいて,デバイスドライバ202及びデバイスA130間にてデータを送受信する方法,すなわち,デバイスドライバ202がデバイスA130を操作する方法について説明する。
図3は,デバイスドライバ202がデバイスA130に向けて送信した命令データをデバイスA130が受信し,デバイスA130がデバイスドライバ202に向けて返信した応答データを,デバイスドライバ202が受信する際のサーバ110の動作を説明するフローチャートである。命令データとは,デバイスドライバ202がデバイスA130を制御するための命令コードや命令コードの実行対象や条件などのデータを含むものであり,デバイスドライバ202が,自発的に発行するか,アプリケーション201やサーバ110のOSなどから命令を受けて発行するものである。応答データとは,デバイスA130がデバイスドライバ202等からの命令データに応じる応答や,自発的に送信したりするステータスなどのデータである。
デバイスドライバ202がデバイスA130を制御可能になった後(300),デバイスドライバ202は,デバイスA130への命令データを擬似バスドライバ203に送信する(301)。
この際,仮想デバイスマネージャ111は,機器A120内のデバイスマネージャ121が改ざんされていないかの検証を行う。
具体的には仮想デバイスマネージャ111内に保存されたハッシュ値等と,実際にデバイスマネージャ121が応答するハッシュ値等を比較するなどの検証を行う。フィルタドライバ212自身が別の機能を持つフィルタドライバと置き換えられている場合,予め仮想デバイスマネージャ111で扱うよう登録されているデバイス(本実施例ではデバイスA130)以外のデバイスが接続され,機器A120が不正な動作を行ったり,システムとして認められない動作を行ったりするからである。
その他,仮想デバイスマネージャ111が与える情報に対するデバイスマネージャ121の応答が期待したものであるか,を確認したり,機器A120のOSの持つレジストリなどの確認情報を仮想デバイスマネージャ111が確認したりする。
擬似バスドライバ203は,通信プログラム207やOSなどから,通信プログラム207及び209間のネットワークの回線品質及び/または回線種別の情報を受け取り,擬似バスドライバ203内に保持する(302)。次に,擬似バスドライバ203は,受信した命令データがあらかじめサーバ110の管理者が定めた命令であるか否か,回線品質が管理者が定めたしきい値より低いか,および/または,回線種別が管理者が定めた種別であるかどうか,などを判別する(303)。ここで,回線品質とは,ネットワーク上をスムーズにデータが送信される品質を表し,送信遅延時間やスループットなどで表される。
ステップ303において,「命令データがあらかじめサーバ110の管理者が定めた命令ではない」場合か,もしくは,「回線品質がサーバ110の管理者が定めたしきい値より高くかつ回線種別がサーバ110の管理者があらかじめ定めた種別ではない」場合,ステップ304において,擬似バスドライバ203は,受け取った命令データを機器A120に送信する。併せて,計数している対象となる命令データの連続数をリセットする。
ステップ303における管理者が定めた命令データとは、遅延させて発行してもシステム全体の動作として支障が無い,と予め管理者が判断し,指定する命令データのことであり,擬似バスドライバ203内にデバイス別に保持される。例えば、デバイスA130の状態をチェックするポーリング用の命令データや,予め返答の定まっている命令データ等である。
ステップ303における管理者が定めた回線種別とは、通信コストの高い回線や転送速度の低い回線のような、無駄な通信を極力発生させないようにしたい,と管理者が考える回線種別である。例えば、通信コストが高いかもしくは転送速度の低い携帯電話網を経由する回線などである。通信プログラム207かもしくは209は、例えば通信を開始する際や通信中に回線種別を判別し、その判別結果を通信プログラム207もしくは通信プログラム207を経由して209が擬似バスドライバ203に通知する。擬似バスドライバ203は,この回線種別判別結果を,複数デバイスに共通な情報として保存し,その結果に基づいて、擬似バスドライバ203にてステップ303の判断を行う。
また,ステップ303における管理者が定めた回線品質とは、具体的には、通信の遅延量などの回線品質を示す。通信プログラム207もしくは209は、例えば通信を開始する際や通信中に,しきい値に基づいて回線品質を測定し、その判別結果を通信プログラム207かもしくは通信プログラム207を経由して209が擬似バスドライバ203に通知する。擬似バスドライバ203は,この回線品質測定結果を,複数デバイスに共通な情報として保存し,その結果に基づいて、ステップ303の判断を行う。しきい値とは、命令データの遅延を実行させても良いという遅延量などの回線品質の値を,予め管理者が定めたものである。
具体的に、命令データは、擬似バスドライバ203から、通信プログラム207及び209,フィルタドライバ212,物理バスドライバ213を順に介してデバイスA130に送信される(304)。デバイスA130は,受け取った命令データに対応する応答データを物理バスドライバ213,フィルタドライバ212,通信プログラム209及び207,を順に介して,擬似バスドライバ203へ送信する。擬似バスドライバ203は、機器Aから上記の応答データが送信されるのを待ち(305),受け取った応答データをデバイスドライバ202に返信する(315)。擬似バスドライバ203は,続くデバイスA130への要求があるかどうかを判断し(306),ない場合は動作を終了(307)し,ある場合は,ステップ301に戻る。
ステップ303において,「命令データがあらかじめ管理者が定めた命令であり」かつ「回線品質がサーバ110の管理者が定めたしきい値以下である場合か,回線種別がサーバ110の管理者があらかじめ定めた種別である」場合,擬似バスドライバ203は,受け取った命令データが連続して送信されている回数を,デバイス別にチェックする(308)。
命令データとは,一つ以上の命令からなる命令組であって,命令データの連続とは,一つ以上の命令からなる命令組が繰り返される(ただし,パラメータが変化しても良い)ことをいう。一つの命令組には,デバイスA130に対する命令,および/または,物理バスドライバ213に対する命令が含まれてよい。なお,あらかじめ管理者が定める命令データの詳細については,後述する。
また,あらかじめ定める回線種別とは、携帯電話を経由した通信等のように比較的転送速度が低い回線や,送信コストが高い回線などの、あらかじめ管理者が定めた回線種別のことであり,一つの機器A120に複数のデバイスが接続されていても,共通である。
通信プログラム207は公知の方法で,回線品質,回線種別を取得し,擬似バスドライバ203に通知する。
擬似バスドライバ203は,通信プログラム207への命令データの送信の度に,遅延させる対象となる命令データ(異なる命令データであっても良い)が連続して送信されている回数を計数し(308),回数が,管理者があらかじめ定めた値未満である場合(308でNo),対象となる命令データが連続して送信されている回数を擬似バスドライバ203内に保持し(309),ステップ310及び311に進む。その後,擬似バスドライバ203は受け取った応答データを擬似バスドライバ203内に保持する(312)。
対象となる命令データが連続して送信されている回数が,管理者があらかじめ定めた値以上になっている,または,新たになった場合(308でYes),擬似バスドライバ203は,擬似バスドライバ203内のタイマによる計時を開始し,あらかじめ定められた時間,命令データの送信を抑制する(313,314)。擬似バスドライバ203内のタイマがあらかじめ管理者が定めた時間経過したことを検知した場合,ステップ309が実行される。
ここで,あらかじめ定められた時間とは,デバイスドライバ202から命令データが送信されてから,対応する応答データを受信する際にタイムアウトなどの不具合を発生しない範囲の時間範囲であらかじめ管理者が,デバイス別に設定する時間間隔である。
あらかじめ定められた命令データが連続して送信されている回数が,あらかじめ定められた回数以上になっている場合,本実施例に示すデバイス管理システムは,擬似バスドライバ203において,当該命令データを遅延させて送信することにより,通信プログラム207及び209間に単位時間内に送信される命令データ及び応答データの量を減少させる。
図9は、擬似バスドライバ203が命令データを遅延して送信する様子を示したタイムチャートである。
図9には、デバイスドライバ202が擬似バスドライバ203にC1という種別の命令データを3連続で送信した場合の,デバイスドライバ202と擬似バスドライバ203の間、擬似バスドライバ203と通信プログラム207の間、物理バスドライバ213とデバイスA130の間をそれぞれ送信される様子が示されている。図9では,3回目の送信で、擬似バスドライバ203が命令データの送信を遅延させている様子が示されている。
デバイスドライバ202が、擬似バスドライバ203に種別C1の命令データ901を送信すると、擬似バスドライバ203は、種別C1の命令データ902を通信プログラム207に送信する。種別C1の命令データは,通信プログラム207から通信プログラム209、フィルタドライバ212を介して物理バスドライバ213に送信される。
物理バスドライバ213は、デバイスA130に種別C1の命令データ903を送信する。デバイスA130は種別C1の命令データ903に対応する種別R1の返答データ904を物理バスドライバ213に送信する。返答データは、命令データと逆順で、図示するように通信プログラム207から擬似バスドライバ203に返答データ905が送信され、擬似バスドライバ203からバスドライバ202に返答データ906が送信される。
たとえば、図3のステップ303で判断される「予め定めた命令データ」が種別C1の命令データ903を含み、ステップ308で規定する回数が3回であり、かつ「回線種別」が管理者の定める回線であったとすると、続く種別C1の命令データ(907〜908)の送信と種別R1の返答データ(909〜911)の送信においては、ステップ314に示される遅延の挿入処理は行われない。
擬似バスドライバ203は、続く種別C1の命令データ912の送信時に、ステップ308において,種別C1の命令データの連続送信回数が3回であると判断し、ステップ314に示される遅延の挿入処理を行う。この結果,図9に示すように,種別C1の命令データ914は、管理者により予め定められた時間経過の後に送信される。続く命令データ915の送信と返答データ916〜918の送信は図示するタイミングで行われる。
続いて送信される種別C2の命令データ919が,予め管理者の定めたものでない場合には、命令データ920、921の送信前にステップ314に示される遅延は挿入されない。
なお,図3のステップ308、309、313、314等の処理は、擬似バスドライバ203が管理し、データ送信先となっているデバイスが複数ある場合、デバイス毎に処理される。すなわち、擬似バスドライバ203が管理するデバイスが複数ある場合、擬似バスドライバ203は,複数個のデバイス毎に個別に,命令データが送信された回数や応答データを管理,保持し、したがって,ステップ308やステップ314の判断も複数のデバイス毎に個別に処理する。
以上の構成により,サーバ110とデバイスA130との命令データ及び応答データの送受信が,ネットワーク103上の他の通信の効率を低下させることを防いだり,回線利用料を低減したりすることができる。
また,サーバ110の管理者は,サーバ110と機器A120間で行われる他の通信の効率や利用する回線の通信コストに鑑みて,ステップ303にて判定する回線品質のしきい値や回線種別といったポリシーをあらかじめ定めておく。このポリシーはは,仮想デバイスマネージャ111内にインストール時もしくは,システム内に設置される,図示していない管理サーバとの通信の過程で記憶される。
上記のように説明したフローに従ってデバイスA130を制御することにより,本実施例に示したデバイス管理システムは,回線品質や回線種別を検知し,回線の能力が低い場合でも,遠隔操作などのサーバ110,機器A120間の他の通信に支障をきたさずにサーバ110からデバイスA130をコントロール可能とし,利用者に快適にシステムを利用可能とする効果がある。
また,同様の構成により,本実施例に示したデバイス管理システムは,利用者が高コストな回線種別を利用している場合でも,遠隔操作などのサーバ110,機器A120間の通信量を低減するため,利用者が負担する通信コストを低減する効果がある。
次に,本発明を適用した第二の実施形態について説明する。本実施形態を実現するシステムは,基本的に上述の第一の実施形態と同様の構成を有する。ただし,第一の実施形態とは,以下に説明する手順に従って,デバイスドライバ202からデバイスA130にデータが送受信される点が異なる。
図4は,デバイスドライバ202がデバイスA130に向けて送信した命令データをデバイスA130が受信し,デバイスA130がデバイスドライバ202に向けて返信した応答データを,デバイスドライバ202が受信する際のシステム全体の動作フローを示したものである。
第一の実施形態と同様に,デバイスドライバ202がデバイスA130に向け命令データを送信するステップ300〜302が実行された後,擬似バスドライバ203は,「命令データがあらかじめ定めた命令であり」,かつ,「回線品質が管理者が定めたしきい値より低いかまたは回線種別が管理者が定めた種別である」かどうか判別する(403)。
本実施形態において,サーバ110の管理者があらかじめ定めた命令とは,データ読み込み(シーケンシャルリード,ブロックリード)命令など,類似する命令データが連続しやすい特別な命令データを示し,その詳細については,後述する。
ステップ403において,「命令データがあらかじめサーバ110の管理者が定めた命令ではない」場合か,もしくは,「回線品質がサーバ110の管理者が定めたしきい値より高くかつ回線種別がサーバ110の管理者があらかじめ定めた種別である」場合,擬似バスドライバ203は,受け取った命令データを機器A120に送信する。
具体的に、命令データは、擬似バスドライバ203から、通信プログラム207及び209,フィルタドライバ212,物理バスドライバ213を順に介してデバイスA130に送信される(304)。
デバイスA130は,受け取った命令データに対応する応答を行う。具体的には,物理バスドライバ213が出力した応答データは,フィルタドライバ212によって,通信プログラム209に送信され,さらに通信プログラム207,を介して、擬似バスドライバ203へ送信される。
擬似バスドライバ203は、機器A120から上記の応答データが送信されるのを待ち(305),受け取った応答データをデバイスドライバ202に返信する(315)。擬似バスドライバ203は,続くデバイスA130への要求があるかどうかを判断し(306),ない場合は動作を終了(307)し,ある場合は,ステップ301に戻る。
ステップ403において,「命令データがあらかじめ管理者が定めた命令であり」、かつ「回線品質がサーバ110の管理者が定めたしきい値以下である場合か,「回線種別がサーバ110の管理者があらかじめ定めた種別である」場合,擬似バスドライバ203は,ステップ408において,過去数回に渡って擬似バスドライバ203が連続して受け取った個別のデバイス(この場合,デバイスA130)に対する複数の命令データが,連続した命令データであるか判定を行う。
ステップ403で判断される,あらかじめ定められた命令データとは,デバイスA130の状態をチェックする命令データや,利用される回線品質や回線種別下では,管理者が先読み動作が可能と考える命令データのことであり,ステップ408で判断される,連続した命令データとは,シーケンシャルデータリード(ブロックデータリード)などの,次に続く命令が読み出しアドレスなどのパラメータが順次変化するが,命令種別は変わらず連続的に呼び出される一連の命令データ群を示す。
デバイスA130に送信される命令データがあらかじめ管理者が定めた連続した命令データ群の一部であると判断されない場合,命令データの内容を擬似バスドライバ203内に保持し(409),ステップ310及び311に進む。機器A120から応答データを受け取った後、擬似バスドライバ203は、内部に応答データを保持し(411)ステップ315を実行する。
一方、ステップ408において,「デバイスA130に送信される命令データがあらかじめ管理者が定めた連続した命令データ群の一部である」と判断された場合,擬似バスドライバ203は,後述する先読み結果が擬似バスドライバ内に存在し,さらに,対応した先読み結果から応答データを作成し、デバイスドライバ202へ返信するかどうかを判定する(412)。
先読み結果が存在する場合,擬似バスドライバ203は,与えられた命令データを機器A120に送信することなく,当該命令データに対応した先読み結果内の一部のデータから応答データを作成し,作成した応答データを,デバイスドライバ202へ返信し(414),応答データがこれ以上保存不要と判断できればメモリ上から削除する。擬似バスドライバ203は,続いてステップ306を実行する。なお,複数の命令データとあるが,1つの命令データにて一連のデータを受信されると判断できる場合,判断に利用される命令は1つでも良く,複数である必要はない。
ステップ412において,先読み結果が存在しないと判断された場合,擬似バスドライバ203は,以下に示す方法で,先読み結果を取得するための命令データを作成する。
図5は,先読み結果を取得するための命令データ作成方法を説明するための図である。命令データ500は,擬似バスドライバ203に与えられた命令データの主要な命令部分の一例を示している。
命令データ500は,図示する命令部分以外に,デバイスドライバ202とやり取りを行うためのデータ送信に関する命令情報やアドレス情報,ステータスなどのヘッダ情報を含んでいる。例えば,物理バス128がUSBであれば,命令データには,命令コード,転送データ長さ,転送されるバッファのアドレス,転送されるバッファの長さ,転送フラグ,パイプ情報等が含まれる。
図5の例で示す命令データ500のnバイト目からnバイト+5バイト目に記録された命令部分は,nバイト目から順に命令コード番号,論理ブロック,転送長,やオプションが記録されている。命令コード番号は,デバイスA130に実行させるための命令コードが格納されている。
図5に示す例ではリード命令が格納されている。命令コードに続いて,論理ブロックや転送長といった命令コードに対応したパラメータが格納されている。図5に示す例では,命令がリード命令であるため,パラメータとして,n+1バイト目からn+3バイト目に論理ブロック,n+4バイト目に転送長の順に記録されている。(説明のため,論理ブロックには,「012345h」,転送長さには1[ブロック]が記録されているものとする。ここで,ブロックとは,例えば512バイトなどのデバイスがデータを記録する単位である。)n+5バイト目には,前記リード命令に対応するフラグやオプション類が記録されている。
サーバ110の管理者が図5に示した命令(リード命令)が,続く命令が推測可能であると定義していたとすると,擬似バスドライバ203は,例えば,続く命令は,012345h+1ブロック目からの1ブロックの読み出し,さらに続く命令は,012345h+2ブロック目からの1ブロックの読み出しであると判断する。このため,擬似バスドライバ203は,先読み結果取得のため図5に示すような先読み結果取得用の命令データ501を作成する。命令データ501は,図5の例においては,012345hブロックから64ブロックの読み出しを要求する命令データとなる。
命令データ501の作成手順は,サーバ110の管理者によりインストール時または,設定変更時に擬似バスドライバ203に設定しておけばよい。命令種別により,どのパラメータをどのように変化させて先読み結果取得用の命令データ501を作成するかは,管理ポリシーと命令コードに依存する。
擬似バスドライバ203は、先読み結果取得用の命令データ501を通信プログラム207を介して機器A120に送信し(415)、デバイスA130が応答する,命令データ501に対応する応答データは,物理バスドライバ213,フィルタドライバ212,通信プログラム209及び207,を順に介して、擬似バスドライバ203へ送信される。
擬似バスドライバ213は、機器A120から上記の応答データが送信されるのを待ち(305)、対応する応答データ502がデバイスA130から送信されると,擬似バスドライバ203は,応答データを擬似バスドライバ203内に保存する(411)とともに,命令データ500に対応する応答データ503を作成し,ここで,応答データ502が不要と判断できれば削除する。作成された応答データ503は,デバイスドライバ202に送信され(414),ステップ306に進む。
前述のように,ステップ412において,先読み結果が擬似バスドライバ202内に存在し,先読み結果が与えられた命令データに対応する応答データ作成に利用できると判断された場合,擬似バスドライバ213は,与えられた命令データに対応する応答データ(504,505など)を作成し,また,応答データ502が不要と判断できれば削除する。
なお,擬似バスドライバ213は,先読み結果を与えられた命令データに対応する応答データ作成に利用できないと判断した場合,応答データ502を不要と判断し,擬似バスドライバ203内から削除する。)
以上のように説明した機能を持つデバイス管理システムでは,連続的なデータの読み出し等のあらかじめ次の処理結果をサーバ110管理者が推測可能な一連の命令データがデバイスドライバ202から与えられた際,ネットワーク103上の通信量を少なくしても,一連の命令データに対応する応答データが作成することができ,命令データ及び応答データの送信回数を低減し,ネットワーク103上を通過するサーバ110と機器A120間の他の通信の効率低下を防いだり,回線利用料を低減したりすることができる。
以上のように説明した機能を持つデバイス管理システムでは,連続的なデータの読み出し等のあらかじめ次の処理結果をサーバ110管理者が推測可能な一連の命令データがデバイスドライバ202から与えられた際,ネットワーク103上の通信量を少なくしても,一連の命令データに対応する応答データが作成することができ,命令データ及び応答データの送信回数を低減し,ネットワーク103上を通過するサーバ110と機器A120間の他の通信の効率低下を防いだり,回線利用料を低減したりすることができる。
システム管理者は,サーバ110と機器A120間の,他の通信の効率や利用する回線の通信コストに鑑みてステップ403にて判定する回線品質のしきい値や回線種別をあらかじめ定めることができる。定められたしきい値や回線種別は,仮想デバイスマネージャ111内にインストール時もしくは,システム内に存在する管理サーバとの通信の過程で記憶されている。
上記のようなフローに従ってデバイスA130を制御することにより,本実施形態に示したデバイス管理システムは,回線品質や回線種別を検知し,回線の能力が低い場合でも,遠隔操作などのサーバ110,機器A120間の他の通信に与える影響をより少なくしてサーバ110からデバイスA130をコントロール可能とし,利用者に快適にシステムを利用可能とする効果がある。
また,同様の構成により,本実施例に示したデバイス管理システムは,利用者が高コストな回線種別を利用している場合でも,遠隔操作などのサーバ110,機器A120間の通信料を低減するため,利用者に快適にシステムを利用可能とする効果がある。
次に,本発明を適用した第三の実施形態について説明する。本実施形態を実現するシステムは,基本的に上述の第一の実施形態と同様の構成を有する。ただし,本実施形態は,以下の点を特徴とする。
本実施形態が仮定しているUSBでは,バッファを指し示すポインタを含んだ命令データが生成されることがある。しかし,本実施形態のようにネットワークを介して命令データを送信する場合には,ネットワークを介してバッファの内容を指し示せないので,実データを命令データに含ませる変換処理が必要になる。
しかしながら,例えば、Read命令のように,送信時はバッファの内容は不定(すなわち,不要)だが,受信時(応答時)にはRead結果が入る,という命令データがあり,これら,送信時に不要なデータを削除(または圧縮)することが本実施形態の特徴である。
この実施形態が,USB以外にも適用可能であること,クライアントからサーバへのデータにも適用可能であることは,もちろんである。
図6は,デバイスドライバ202がデバイスA130に向けて送信した命令データをデバイスA130が受信し,デバイスA130がデバイスドライバ202に向けて返信した応答データを,デバイスドライバ202が受信する際のサーバ110の動作フローを示したフローチャートである。
第一の実施形態と同様にデバイスドライバ202がデバイスA130に向け命令データを送信するステップ300〜302を実行した後,擬似バスドライバ203は,「命令データがあらかじめ定めた命令であり」,かつ,「回線品質が管理者が定めたしきい値より低いかまたは回線種別が管理者が定めた種別である」かどうか判別する(603)。ここで,サーバ110の管理者があらかじめ定めた命令とは,単純なデータ読み込みやステータス読み込みなどバッファ転送を伴う命令を示し,その詳細については,後述する。
ステップ603において,「命令データがあらかじめサーバ110の管理者が定めた命令ではない」場合か,もしくは,「回線品質がサーバ110の管理者が定めたしきい値より高くかつ回線種別がサーバ110の管理者があらかじめ定めた種別である」場合,擬似バスドライバ203は,受け取った命令データを通信プログラム207経由で機器A120に送信する(304)。擬似バスドライバ203は、機器Aから上記の応答データが送信されるのを待つ(305)。命令データは、通信プログラム207及び209,フィルタドライバ212,物理バスドライバ213を順に介してデバイスA130に送信される。
デバイスA130は,受け取った命令データに対応する応答データをサーバ110に送信する。具体的には,応答データは,物理バスドライバ213,フィルタドライバ212,通信プログラム209及び207,を順に介して、擬似バスドライバ203へ送信される。擬似バスドライバ203は、機器A120から応答データを受け取ると、受け取った応答データをデバイスドライバ202に返信する(315)。擬似バスドライバ203は,続くデバイスA130への要求があるかどうかを判断し(306),ない場合は動作を終了(307)し,ある場合は,ステップ301に戻る。
ステップ603において,「命令データがあらかじめ管理者が定めた命令であり」かつ「回線品質がサーバ110の管理者が定めたしきい値以下であるか,回線種別がサーバ110の管理者があらかじめ定めた種別である」場合,擬似バスドライバ203は,命令データ内のポインタにより指し示されたバッファの内容を通信プログラム207に送信する内容にコピーする必要があるかどうかを判断する(608)。
ステップ608にて,バッファの内容を送信する命令データ内にコピーする必要があると判断した場合,擬似バスドライバ203は,命令データ内にバッファの内容をコピーし,作成された命令データを,通信プログラム207を介して機器A120に送信する(609)。
また,ステップ608にて,命令データ内にコピーするデータがない,または,コピーする必要がない,と判断した場合,擬似バスドライバ203は,ステップ301で受信した命令データを,バッファの内容をコピーせずに,通信プログラム207を介して機器A120に送信する(612)。
どちらの場合も,フィルタドライバ212は,通信プログラム209を介して受け取った命令データを,必要ならばバッファの内容を後述するように復元し,デバイスA130に送信する(復元については後述する)。デバイスA130は,受け取った命令データに対応する応答データをデバイスドライバ202に返信する。
いずれの場合も擬似バスドライバ203は、機器A120から応答データが送信されるのを待ち(305),受け取った応答データをデバイスドライバ202に返信する(315)。擬似バスドライバ203は,続くデバイスA130への要求があるかどうかを判断し(306),ない場合は動作を終了(307)し,ある場合は,ステップ301に戻る。
ステップ612において作成された命令データは,バッファの内容がコピーされていないため,データサイズが小さい。また,ステップ609にて作成された命令データについては,コピーされたバッファの内容を圧縮処理することにより,フィルタドライバ212に送信する命令データのサイズを小さくすることができる。この場合,圧縮されたバッファの内容は,通信アプリケーション209もしくはフィルタドライバ212において伸長(解凍ともいう)され,元の内容に復元される。圧縮及び復元の方法は予め決めておくか,ステップ609にて生成される命令データにそのアルゴリズムを表すデータを挿入しておけば良い。
図7は、デバイスドライバ202がデバイスA130に向けて送信した命令データをデバイスA130が受信し,デバイスA130がデバイスドライバ202に向けて返信した応答データを,デバイスドライバ202が受信する際の機器A120(クライアント)の動作フローを示したフローチャートである。
デバイスA130をデバイスドライバ202から制御可能になった状態から(700),機器A120上の通信プログラム209は、デバイスA130への命令データが通信プログラム207から送信されるのを待つ(701)。擬似バスドライバ203から命令データの受信後に,通信プログラム209は、サーバ110内のバッファ内容が受信した命令データ内にコピーされているかどうかの判定を行う(702)。
判定の結果、バッファ内容をコピーしたデータが存在しないと確認した場合、フィルタドライバ212は、バッファの内容を不定のままにするか、0で埋められたデータであると認識する(705)。
次に、受信した命令データをデバイスA130に送信し、その応答データをサーバ110へ送信する(707)。次に、デバイスプラグアウトなどの異常処理や終了処理が行われたかどうか判断し(708)、行われた場合は、終了し(709)、行われていない場合は、ステップ701に戻る。
ステップ702において、通信プログラム209が、受信した命令データ内に、バッファ内容をコピーしたデータが存在すると判断した場合、通信プログラム207は、バッファの内容が圧縮されているかどうかを調べる(703)。バッファの内容が圧縮されている場合、通信プログラム209は、圧縮されたデータを復元し(解凍処理を行い)、復元した内容を新たなバッファの内容とする(706)。次に、復元したバッファ内容を含む命令データをデバイスA130に送信し、その応答データをサーバ110へ送信し(707)。ステップ708を実行する。
ステップ703において、バッファの内容が圧縮されていないと判断した場合、通信プログラム209は、バッファ内容を含む命令データをデバイスA130に送信し、その返信データをサーバへ送信し(707)。ステップ708を実行する。
以上説明した手法により,サーバ110内のメモリ113に保存されたデータの参照を伴う命令データが,擬似バスドライバ203に送信された際にも,デバイスA130が命令データを処理可能になるように命令データを送信することができる。
また,送信される命令データの種別によっては,送信する命令データ量を削減でき,ネットワーク103上を通過するサーバ110と機器A120間の,他の通信の効率を低下させることを防いだり,不必要な回線利用料を発生させたりしないようにすることができる。
システム管理者は,サーバ110と機器A120間の,他の通信の効率や利用する回線の通信コストを鑑みてステップ603にて判定する回線品質のしきい値や回線種別を仮想デバイスマネージャ111にあらかじめ設定すればよい。定めたしきい値や回線種別は,仮想デバイスマネージャ111のインストール時もしくは,図示していない管理サーバとサーバ110の通信の過程で記憶させることが可能である。
上述のフローに従ってデバイスA130を制御することにより,本実施形態に示したデバイス管理システムは,ネットワークの回線品質が低い場合でも,遠隔操作などのサーバ110,機器A120間の他の通信に支障をきたさずにサーバ110からデバイスA130をコントロール可能とし,利用者に快適にシステムを利用可能とする効果がある。
また,同様に,利用者が高コストな回線種別を利用している場合でも,サーバ110,機器A120間の通信量を抑制するため,利用者に快適にシステムを利用可能とする効果がある。
以上説明したように,第一〜第三の本実施形態のデバイス管理システムによれば,利用者が手元で操作するクライアントに接続されたデバイスを,当該クライアントの利用場所とは隔たりのある場所に設置されたサーバ110上のプログラムから,効率良く,安全かつ簡便に,利用することが可能になる。これにより,利用者の利便性が向上する。
なお,上記の第一〜第三の実施形態では,サーバやクライアントにあたる情報機器を共にサーバ及びPCとして説明を行ったが,上記実施形態の構成を備えていれば,いずれか一方または両方がPersonal Digital Assistants(PDA),現金自動預け払い機(ATM),携帯電話,デジタルスチルカメラ,音楽再生(録音)装置,Intelligent Transport Systems(ITS)用送信機,自動販売機,入退室管理装置,ゲーム機等であってもよい。これらの場合も同様の効果が得られる。
また,上記第一〜第三の実施形態を組み合わせて実施することも可能である。例えば,管理者が予め定めた命令データとして,第一〜第三の実施形態で例示した命令データのすべてまたは任意の組み合わせであっても良く,上記いずれかの実施形態を対象となる命令データに適用しても良い。
103:ネットワーク,104:インターネット,105:ファイヤーウォール,110:サーバ,111:仮想デバイスマネージャ,112:ストレージ,113:メモリ,114:CPU,115:通信インターフェース,120:機器A,121:デバイスマネージャ,122:ストレージ,123:メモリ,124:CPU,125:通信インターフェース,130:デバイスA,140:機器B,150:デバイスB
Claims (10)
- サーバと,クライアントと,がネットワークで接続され,前記クライアントの物理バスに接続されたデバイスを前記サーバから制御するデバイス管理システムであって,
前記サーバは,前記デバイス用の物理バスドライバを実行し,
前記クライアントは,
前記物理バスドライバ用の物理バスドライバを実行し,
前記ネットワークを介して行われる,前記物理バスドライバと前記デバイスドライバとの通信を中継する,当該クライアント内のデバイス管理プログラムを実行し,
前記サーバは,
前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する,当該サーバ内の仮想デバイス管理プログラムを実行し,
前記仮想デバイス管理プログラムは,前記通信において,前記デバイスドライバから前記物理バスドライバへ送信されるデータの種別と,前記ネットワークの回線品質と,前記ネットワークの回線種別と,の少なくとも一つを取得し,
取得した情報に従って,前記仮想デバイス管理プログラムと前記デバイス管理プログラムとの前記通信における前記送信されるデータの通信量削減処理を実行する
ことを特徴とするデバイス管理システム。 - 請求項1に記載のデバイス管理システムであって,
前記送信されるデータは,前記物理バスドライバへの命令データであって,
前記仮想デバイス管理プログラムは,前記バスドライバから前記通信量削減処理として,前記物理バスドライバへの前記命令データの遅延処理を行う
ことを特徴とするデバイス管理システム。 - 請求項2に記載のデバイス管理システムであって,
前記仮想デバイス管理プログラムは,
前記デバイスドライバから前記物理バスドライバへの命令データが予め定められた対象となる命令データであって,予め定められた回数連続している場合に,前記遅延処理を行う
ことを特徴とするデバイス管理システム。 - 請求項1に記載のデバイス管理システムであって,
前記送信されるデータは,前記物理バスドライバへの命令データであって,
前記仮想デバイス管理プログラムは,前記通信量削減処理として,前記物理バスドライバへの命令データの単位時間当たりの数を減らす
ことを特徴とするデバイス管理システム。 - 請求項1に記載のデバイス管理システムであって,
前記送信されるデータは,前記物理バスドライバへの命令データであって,
前記仮想デバイス管理プログラムは,
前記デバイスドライバから前記物理バスドライバへの第一の命令データを受信した場合に,
前記通信量削減処理として,前記取得した情報に従って,
前記第一の命令データに対する第一の応答データを,すでに前記物理バスドライバから受信している第二の応答データから生成し,前記デバイスドライバへ送信することにより,前記第一の命令データの前記デバイス管理プログラムへの送信を行わない
ことを特徴とするデバイス管理システム。 - 請求項5に記載のデバイス管理システムであって,
前記仮想デバイス管理プログラムは,
前記第一の命令データより前に,前記デバイスドライバから受信した第二の前記命令データを,第三の前記命令データに変換して前記デバイス管理プログラムに送信し,
前記第三の命令データに対する第二の応答データを前記デバイス管理プログラムから受信して保存する
ことを特徴とするデバイス管理システム。 - 請求項1に記載のデバイス管理システムであって,
前記送信されるデータは,前記物理バスドライバへの第一の命令データであって,
前記仮想デバイス管理プログラムは,前記通信量削減処理として,
前記取得した情報に従って,前記デバイスドライバから受信した前記第一の命令データが含むポイントが指し示す前記サーバ上のバッファの内容を圧縮または削除し,
前記第一の命令データを,前記バッファの内容を削除,または,前記圧縮したバッファの内容を含む,第二の命令データに変換し,前記デバイス管理プログラムに送信し,
前記デバイス管理プログラムは,送信された前記第二の命令データから,前記第一の命令データを復元し,前記復元された第一の命令データを前記デバイスへ送信する
ことを特徴とするデバイス管理システム。 - 請求項7に記載のデバイス管理システムであって,
前記デバイス管理プログラムは,
前記第二の命令データから前記第一の命令データの復元において,前記第二の命令データに含まれる前記圧縮されたバッファの内容を解凍し,
前記復元された第一の命令データと解凍された前記バッファの内容を前記物理バスドライバに送信する
ことを特徴とするデバイス管理システム。 - 物理バスにデバイスが接続され,前記物理バスドライバ用の物理バスドライバを実行するクライアントとネットワークで接続されたサーバであって,
前記デバイス用のデバイスドライバを実行し,
前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する,当該サーバ内の仮想デバイス管理プログラムを実行し,
前記仮想デバイス管理プログラムは,前記通信において,前記クライアントへ送信されるデータの種別と,前記ネットワークの回線品質と,前記ネットワークの回線種別と,の少なくとも一つを取得し,
取得した情報に従って,前記クライアントとの前記通信における前記送信されるデータの通信量削減処理を実行する
ことを特徴とするデバイス管理システムに用いるサーバ。 - 物理バスにデバイスが接続され前記物理バスを制御する物理バスドライバを実行するクライアントとネットワークで接続され,前記デバイス用のデバイスドライバを実行する,サーバにおいて実行される,
前記ネットワークを介して行われる前記デバイスドライバと前記物理バスドライバとの前記通信を中継する,仮想デバイス管理プログラムであって,
前記仮想デバイス管理プログラムは,前記サーバに,
前記通信において,前記クライアントへ送信されるデータの種別と,前記ネットワークの回線品質と,前記ネットワークの回線種別と,の少なくとも一つを取得させ,
取得した情報に従って,前記クライアントとの前記通信における前記送信されるデータの通信量削減処理を実行させる
ことを特徴とする仮想デバイス管理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007192771A JP2009031882A (ja) | 2007-07-25 | 2007-07-25 | デバイス管理システム及びこれに用いるサーバ及び仮想デバイス管理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007192771A JP2009031882A (ja) | 2007-07-25 | 2007-07-25 | デバイス管理システム及びこれに用いるサーバ及び仮想デバイス管理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009031882A true JP2009031882A (ja) | 2009-02-12 |
Family
ID=40402348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007192771A Pending JP2009031882A (ja) | 2007-07-25 | 2007-07-25 | デバイス管理システム及びこれに用いるサーバ及び仮想デバイス管理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009031882A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016080427A1 (ja) * | 2014-11-19 | 2016-05-26 | 日本電気株式会社 | 情報処理システム、情報処理方法、サーバ、情報処理装置、通信端末およびそれらの制御方法と制御プログラム |
JP2016218871A (ja) * | 2015-05-22 | 2016-12-22 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信中継システム、デバイス収容端末、サーバ側コンピュータ、プログラム、及び通信中継方法 |
JPWO2016080426A1 (ja) * | 2014-11-19 | 2017-08-17 | 日本電気株式会社 | 情報処理システム、情報処理方法、デバイス、情報処理装置、通信端末およびそれらの制御方法と制御プログラム |
-
2007
- 2007-07-25 JP JP2007192771A patent/JP2009031882A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016080427A1 (ja) * | 2014-11-19 | 2016-05-26 | 日本電気株式会社 | 情報処理システム、情報処理方法、サーバ、情報処理装置、通信端末およびそれらの制御方法と制御プログラム |
JPWO2016080426A1 (ja) * | 2014-11-19 | 2017-08-17 | 日本電気株式会社 | 情報処理システム、情報処理方法、デバイス、情報処理装置、通信端末およびそれらの制御方法と制御プログラム |
JPWO2016080427A1 (ja) * | 2014-11-19 | 2017-09-07 | 日本電気株式会社 | 情報処理システム、情報処理方法、サーバ、情報処理装置、通信端末およびそれらの制御方法と制御プログラム |
US20170366309A1 (en) * | 2014-11-19 | 2017-12-21 | Nec Corporation | Information processing system, information processing method, and information processing device |
US10554348B2 (en) | 2014-11-19 | 2020-02-04 | Nec Corporation | Information processing system, information processing method, and information processing device |
JP2016218871A (ja) * | 2015-05-22 | 2016-12-22 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信中継システム、デバイス収容端末、サーバ側コンピュータ、プログラム、及び通信中継方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346105B2 (en) | Method and system for communicating between a remote printer and a server | |
RU2617631C2 (ru) | Способ обнаружения работы вредоносной программы, запущенной с клиента, на сервере | |
US10678913B2 (en) | Apparatus and method for enhancing security of data on a host computing device and a peripheral device | |
JP4698982B2 (ja) | 暗号処理を行うストレージシステム | |
US7200641B1 (en) | Method and system for encoding SCSI requests for transmission using TCP/IP | |
JP4938418B2 (ja) | データ通信プロトコル | |
US20100161759A1 (en) | Storage device and method thereof for integrating network attached storage with cloud storage services | |
US20040215673A1 (en) | Storage sub-system and management program | |
JP2007325274A (ja) | プロセス間データ通信システムおよびプロセス間データ通信方法 | |
JP2016186782A (ja) | データ処理方法及びデータ処理装置 | |
EP2476054B1 (en) | Viewing content under enterprise digital rights management without a client side access component | |
TW201514749A (zh) | 用於保全電腦大容量儲存資料的方法和裝置 | |
RU2498398C2 (ru) | Система и способ эффективной реализации улучшенного маршрутизаторного устройства | |
JP2005508059A (ja) | コンピュータシステムにおけるリソースリクエストの認証 | |
TWI416923B (zh) | 網路服務中之安全資料通信 | |
JP2004208145A (ja) | 通信装置および方法、記録媒体、並びにプログラム | |
US20130297718A1 (en) | Server device, client device, data sharing system and method for sharing data between client device and server device thereof | |
US20040158582A1 (en) | Method and apparatus for synchronously transferring data from a local storage medium to a remote storage medium, and method and system for managing transfer of data from a source storage medium to a repository storage medium | |
US20080270797A1 (en) | Symbiotic storage devices | |
JP2009031882A (ja) | デバイス管理システム及びこれに用いるサーバ及び仮想デバイス管理プログラム | |
JP4720959B2 (ja) | デバイス管理システム | |
CN111404842B (zh) | 数据传输方法、装置及计算机存储介质 | |
CN112532603B (zh) | 一种基于交换授权文件的跨域文件交换引接设备及方法 | |
US20100031016A1 (en) | Program method, and device for encryption communication | |
US11283768B1 (en) | Systems and methods for managing connections |