(57)【要約】【課題】他のコンピュータに接続されているＵＳＢデバイス等の周辺デバイスをあたかも自己のコンピュータにローカル接続されているかのように利用できるように、ドライバレベルにてネットワークを介した周辺デバイスの透過的利用を実現するリモートデバイス制御プログラムを提供する。【解決手段】本発明に係るリモートデバイス制御プログラムは、ネットワークを介した他のコンピュータにローカル接続されている周辺デバイスの接続情報を取得し、その接続情報をユーザに対し表示し選択を促す接続管理部と、ユーザが選択した周辺デバイスに対応する周辺デバイスドライバの制御権のスイッチングを行うポート制御部と、周辺デバイス用のデータ構造とネットワーク用の通信パケットデータ構造とのデータ変換処理を行うトンネリングドライバを備える。【選択図】図２
2007219711.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上の１乃至複数のコンピュータにローカル接続されている周辺デバイスをネットワークを介して利用するリモートデバイス制御プログラムであって、
前記コンピュータにローカル接続されている周辺デバイスの接続情報を取得するサーバ機能としての接続管理部と、
ユーザにより選択された周辺デバイスに対応する周辺デバイスドライバの制御権のスイッチングを行うサーバ機能としてのポート制御部と、
周辺デバイス用のデータ構造とネットワーク用の通信パケットデータ構造とのデータ変換処理を行うトンネリングドライバを備えたことを特徴とするリモートデバイス制御プログラム。
【請求項２】
ネットワーク上の１乃至複数のコンピュータにローカル接続されている周辺デバイスの接続情報をネットワークを介して要求し、前記周辺デバイスの接続情報をユーザに対し表示し選択を促すクライアント機能としての接続管理部をさらに備えたことを特徴とする請求項１に記載のリモートデバイス制御プログラム。
【請求項３】
オペレーティングシステムから周辺デバイスドライバ制御を切り離すコマンドを前記ポート制御部が発行し、前記トンネリングドライバが周辺デバイスドライバ制御を得るコマンドを前記ポート制御部が発行することにより、周辺デバイスドライバの制御権のスイッチングを行うことを特徴とする請求項１又は２に記載のリモートデバイス制御プログラム。
【請求項４】
請求項１に記載のリモートデバイス制御プログラムに、フィルタリングドライバとオペレーティングシステム標準搭載とは異なる周辺デバイスドライバとを更に備え、前記フィルタリングドライバが、前記ポート制御部からのコマンドを受けて、オペレーティングシステム標準搭載の周辺デバイスドライバと、オペレーティングシステム標準搭載とは異なる周辺デバイスドライバとのスイッチングを行うことを特徴とする請求項１又は２に記載のリモートデバイス制御プログラム。
【請求項５】
前記周辺デバイスがＵＳＢデバイスであることを特徴とする請求項１乃至４のいずれか１項に記載のリモートデバイス制御プログラム。
【請求項６】
前記周辺デバイスがキーボード、カメラ、スピーカー、マイク、プリンタ、スキャナー、マウス、ディスプレイ、外部記憶装置、生体認証デバイスのいずれかであることを特徴とする請求項１乃至４のいずれか１項に記載のリモートデバイス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにローカル接続されていないＵＳＢ（Universal Serial Bus）デバイスの透過的利用を実現するＵＳＢデバイスドライバの技術に関するもので、特に、任意のコンピュータから通信ネットワーク経由で別のコンピュータに接続されているＵＳＢデバイスを制御できる技術に関する。
【背景技術】
【０００２】
ＬＡＮ（local  area  network)等の通信ネットワークの環境が普及し、共有プリンタや、共有ファクシミリ機器などの周辺機器（周辺デバイス）が増加している。かかる周辺機器がネットワークに接続されるためには、プリントサーバやファクシミリサーバなどＯＳ（Operating System）のユーザモード上にてネットワークを介した周辺機器の透過的利用を実現するものがある。
しかし、かかる利用においては、特定の周辺機器の利用に限定されたり、周辺機器固有の専用アプリケーションを必要とするなどの制限が存在するのが実状である。このため、ネットワークを介してアクセスする周辺機器の利用の利便性とコンピュータにローカルに接続されている周辺機器の利用の利便性との間には大きな隔たりが生じている。
【０００３】
このような実状に鑑みて、ネットワークを介してアクセスする周辺機器の利用の利便性を向上すべく、ＵＳＢデバイスをＬＡＮネットワーク経由で利用するための専用のハードウェア（ＵＳＢデバイスサーバ）が知られている。（例えば、非特許文献１）
これは、任意のコンピュータ（クライアントＰＣ）から通信ネットワーク経由でＵＳＢデバイスサーバに接続されているＵＳＢデバイスを制御できるものである。かかるシステム構成を図１に示すが、クライントＰＣ上でＵＳＢデバイスに必要とされるデータをカプセル化して、ＬＡＮネットワーク経由でＵＳＢデバイスサーバに送信し、ＵＳＢデバイスサーバにおいて、ＵＳＢデバイスに必要とされるデータをカプセルから取り出し再構築した上でＵＳＢデバイスに送信するものである。
このシステムでは、クライアントＰＣからＵＳＢデバイスサーバに接続されたＵＳＢデバイスをネットワーク経由で操作することができるのである。
【０００４】
上述のＵＳＢデバイスサーバをネットワークに接続することで、コンピュータにローカル接続されているＵＳＢデバイスのアクセスの利便性を損なうことなく、ネットワーク上のリモートなＵＳＢデバイスを利用できるのであるが、更なるニーズとして、かかるＵＳＢデバイスサーバのハードウェアを介することなく、ネットワーク上のリモートなＵＳＢデバイス、すなわち、ネットワークに接続されている他のコンピュータにローカル接続されているＵＳＢデバイスを簡便に利用できることが望まれている。
【０００５】
また、コンピュータ・ネットワークシステムにおいて、個々のコンピュータが制御しているプリンタ、スキャナー、ファクシミリ、認証デバイス、マウス、ディスプレイなどの周辺デバイスを相互運用することが容易に実現できるソフトウェアが要望されている。
かかるソフトウェアを用いて、例えば、会議参加者によって共用される表示を行なう大画面ディスプレイに、参加者個別設置の端末コンピュータのマウス・キーボードから共通に記述を行うようにして会議の進行を支援する会議支援協調作業システムを簡単に構築するのである。
【０００６】
また、かかるソフトウェアを用いて、プラント監視操作システムなど、多数の運転操作員（オペレータ）がプラントを監視し操作運転する場合に、共通の大画面表示装置（ディスプレイ）に表示された操作アイコン、ウィンドウに対して、各オペレータが大画面表示装置の表示により把握し、各オペレータのそれぞれの端末で操作することができるといった、各オペレータ間の協調作業システムを容易に構築するのである。
こうしたニーズに対応する方法として、ＵＳＢデバイスサーバの機能を実現するハードウェア（デバイスサーバＩ／Ｆカード）をコンピュータに接続する方法がある。この場合、ハードウェア構成としては、ネットワークで送受信されるデータを扱うＵＳＢホストコントローラおよびＵＳＢポート（デバイスサーバＩ／Ｆカード上に備わる）と、コンピュータが自身のローカル接続されたＵＳＢデバイスへ送受信するデータを扱うＵＳＢホストコントローラおよびＵＳＢポート（コンピュータ自身に備わる）とが互いに独立している。またソフトウェア構成においても、ネットワーク経由で送受信されるデータを扱うＵＳＢポートドライバと、コンピュータがローカル接続されたＵＳＢデバイスへデータを送受信する際に利用するＵＳＢポートドライバとが独立している。すなわちデバイスサーバＩ／Ｆカードを利用する場合、デバイスサーバＩ／ＦカードのＵＳＢポートに接続されたＵＳＢデバイスのみ、ネットワーク経由で利用することができるのである。言い換えれば、コンピュータの既存のローカルＵＳＢポートに接続されたＵＳＢデバイスをネットワーク経由で利用することは依然としてできないという問題がある。また、専用のハードウェアをコンピュータに接続しなければならないので、そのためのコストも負担しなければならない。
【０００７】
したがって、コンピュータに備わっている既存のＵＳＢポートに接続されているＵＳＢデバイスをハードウェアの拡張をする必要なくネットワーク経由で利用したいとの要望がある。また、既存のＵＳＢポートに接続されているＵＳＢデバイスに対し、データ送受信のためのローカルパスとネットワークパスを動的に切り替えて、ローカルからもネットワークからも利用したいという要望がある。
【０００８】
【非特許文献１】サイレックス・テクノロジー社のＨＰ「ＵＳＢデバイスサーバ」（ＵＲＬアドレス；http://www.silex.jp/japan/products/network/what/index3.html）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述の問題点やニーズに対応すべく、本発明のリモートデバイス制御プログラムは、特定の周辺機器の利用や専用のアプリケーションを必要とするなどの制限が無く、また、周辺デバイスをネットワーク経由で利用するための専用のハードウェアを設けることなく、ネットワークで接続された複数のコンピュータシステムにおいて、任意のコンピュータからネットワーク経由で別のコンピュータに接続されているＵＳＢデバイス等の周辺デバイスを制御できる機能を提供することを目的とする。
【００１０】
また、本発明のリモートデバイス制御プログラムは、他のコンピュータに接続されているＵＳＢデバイス等の周辺デバイスをあたかも自己のコンピュータにローカル接続されているかのように利用できることを目的とする。
【００１１】
さらに、本発明のリモートデバイス制御プログラムは、ドライバレベルにてネットワークを介した周辺デバイスの透過的利用を実現することを目的とする。  
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の第１の観点に係るリモートデバイス制御プログラムは、ネットワーク上の１乃至複数のコンピュータにローカル接続されている周辺デバイスをネットワークを介して利用するリモートデバイス制御プログラムであって、前記コンピュータにローカル接続されている周辺デバイスの接続情報を取得するサーバ機能としての接続管理部と、ユーザにより選択された周辺デバイスに対応する周辺デバイスドライバの制御権のスイッチングを行うサーバ機能としてのポート制御部と、周辺デバイス用のデータ構造とネットワーク用の通信パケットデータ構造とのデータ変換処理を行うトンネリングドライバとを備える。
【００１３】
本発明の第１の観点に係るリモートデバイス制御プログラムは、任意のコンピュータ（これをクライアントＰＣとする）からネットワーク経由で他のコンピュータ（これをサーバＰＣとする）に接続されているＵＳＢデバイス等の周辺デバイスを制御できる機能を実現する。
【００１４】
本発明の第２の観点に係るリモートデバイス制御プログラムは、前記第１の観点における構成に加えて、ネットワーク上の１乃至複数のコンピュータにローカル接続されている周辺デバイスの接続情報をネットワークを介して要求し、前記周辺デバイスの接続情報をユーザに対し表示し選択を促すクライアント機能としての接続管理部をさらに備えている。
本発明の第２の観点に係るリモートデバイス制御プログラムは、クライアントＰＣからネットワーク経由でサーバＰＣに接続されているＵＳＢデバイス等の周辺デバイスを制御できる機能を実現する。また、クライアントＰＣとサーバＰＣにそれぞれに本発明のリモートデバイス制御プログラムが搭載される。
【００１５】
ここで、本発明の第２の観点に係るリモートデバイス制御プログラムの構成要素である接続管理部は、クライアントＰＣ上では、サーバＰＣに接続されている周辺デバイスの接続情報を取得し、その接続情報をクライアントＰＣのユーザに対し表示し選択を促すことを行う。また、接続管理部は、サーバＰＣ上では、クライアントＰＣからの要求に応じて、サーバＰＣにローカル接続されている周辺デバイスの情報を返信するか、若しくは、サーバＰＣからブロードキャスト通信を用いてローカル接続されている周辺デバイスの情報を送信することを行う。
ここで、クライアントＰＣとサーバＰＣは、相互に入れ替わることが可能である。すなわち、リモートデバイス制御プログラムを組み込んだコンピュータは、クライアントＰＣとして動作することができるしサーバＰＣとして動作することもできる。本発明が実現するネットワークではリモートデバイス制御プログラムを組み込んだ複数のコンピュータ同士が、時にはクライアントＰＣとして、時にはサーバＰＣとして動作することで、それぞれのコンピュータにローカル接続された周辺デバイスを相互に利用している。
【００１６】
また、本発明のリモートデバイス制御プログラムの構成要素であるポート制御部はユーザが選択した周辺デバイスに対応する周辺デバイスドライバの制御権のスイッチングを行うものである。これは、上述の接続管理部によって、クライアントＰＣのユーザがサーバＰＣに接続されている周辺デバイスを知ることができるため、サーバＰＣの周辺デバイスが選択された場合に、サーバＰＣ側における周辺デバイスの制御をクライアントＰＣ側での制御に切り替えるものである。
具体的には、サーバＰＣ上のＯＳに組み込まれている周辺デバイスドライバと、本発明のリモートデバイス制御プログラムの構成要素であるトンネリングドライバとの間で、制御権のスイッチングを行う。
【００１７】
上述したポート制御により、周辺デバイスドライバの制御権を得ると、その再構築した周辺デバイス用のデータを、周辺デバイスドライバに送信する。
本発明のリモートデバイス制御プログラムの構成要素であるトンネリングドライバは、周辺デバイス用のデータ構造とネットワーク用の通信パケットデータ構造とのデータ変換処理を行う。
クライアントＰＣからサーバＰＣの周辺デバイスにデータを送信する場合は、クライアントＰＣ上のトンネリングドライバでは、周辺デバイス用のデータ構造をそのままネットワーク用の通信パケットデータ構造に合致するように変換処理（カプセル化処理）を行い、ネットワーク通信を介してサーバＰＣへ送信する。また、サーバＰＣ上のトンネリングドライバでは、カプセル化されたデータを受信すると、周辺デバイス用のデータ構造に再構築する。
ここで、変換処理（カプセル化処理）とは、オブジェクト指向におけるデータ構造と振る舞いをグループ化して１つの抽象物を定義し、異なる抽象物を互いに別物として分離する処理のことであり、具体的には、暗号化処理、ヘッダ・フッダの追加処理などを行うものである。
【００１８】
また、反対に、クライアントＰＣがサーバＰＣの周辺デバイスからデータを受信する場合、サーバＰＣ上のトンネリングドライバは、周辺デバイスドライバの制御権を得て、周辺デバイスからデータを受信し、その周辺デバイス用のデータ構造をそのままネットワーク用の通信パケットデータ構造に合致するように変換処理（カプセル化処理）を行い、ネットワーク通信を介してクライアントＰＣへ送信する。クライアントＰＣ上のトンネリングドライバでは、カプセル化されたデータを受信すると、周辺デバイス用のデータ構造に再構築する。
【００１９】
ここで、本発明のリモートデバイス制御プログラムの構成要素であるポート制御部における周辺デバイスドライバの制御の切替え方法としては、ポート制御部がオペレーティングシステムから周辺デバイスドライバ制御を切り離すコマンドを発行し、前記トンネリングドライバが周辺デバイスドライバ制御を得るコマンドをポート制御部が発行することにより、周辺デバイスドライバの制御権のスイッチングを行う方法が好ましい。
【００２０】
また、ポート制御部における周辺デバイスドライバの制御の他の切替え方法としては、フィルタリングドライバとオペレーティングシステム標準搭載とは異なる周辺デバイスドライバとを更に備え、フィルタリングドライバが、オペレーティングシステム（ＯＳ）標準搭載の周辺デバイスドライバと、オペレーティングシステム（ＯＳ）標準搭載とは異なる周辺デバイスドライバとのスイッチングを行うことが好ましい。オペレーティングシステム標準搭載とは異なる周辺デバイスドライバを用いることで機能拡張にも柔軟に対応することができ好適である。
ＯＳと周辺デバイスドライバが密に結合しているような場合や、ＯＳに周辺デバイスドライバ制御を切り離すコマンドが用意されていない場合などのケースでは、オペレーティングシステム標準搭載とは異なる周辺デバイスドライバを用意して、周辺デバイスとのデータ授受のルートを別個に構築し、フィルタリングドライバにより、周辺デバイスとのデータ授受のルートを切り替えるようにするものである。
【００２１】
これらの周辺デバイスは、広く使用されている規格であるＵＳＢ（Universal Serial Bus）に対応した機器であるＵＳＢデバイスであることが好ましい。現在広く利用されているＵＳＢデバイスをローカルに接続されているコンピュータから利用できるのみならず、ネットワーク経由で多くのコンピュータから利用することができることはユーザにとって利便性が高い。
尚、本明細書ではＵＳＢの規格仕様は引用により包括的に本発明に取り込んでいる。
【００２２】
また、周辺デバイスは、キーボード、カメラ、スピーカー、マイク、プリンタ、スキャナー、マウス、ディスプレイ、外部記憶装置、生体認証デバイスのいずれかであることを特徴とする。
【発明の効果】
【００２３】
本発明のリモートデバイス制御プログラムによれば、他のコンピュータに接続されているＵＳＢデバイス等の周辺デバイスをあたかも自己のコンピュータにローカル接続されているかのように利用できるといった効果を有する。
【００２４】
また、本発明のリモートデバイス制御プログラムによれば、アプリケーションレベルにおけるネットワークを介した周辺デバイスの透過的利用ではなく、ドライバレベルにてネットワークを介した周辺デバイスの透過的利用を実現できるといった効果を有する。トンネリングドライバにより、周辺デバイスが用いるデータをそのままカプセル化してネットワークに流すことから、当該周辺デバイスのアプリケーションおよびドライバは、データがネットワークを経由していることを意識する必要がなく、アプリケーションレベルよりも下位のレベルであるドライバレベルにて透過的なデータ授受が可能となる。
【００２５】
また、本発明のリモートデバイス制御プログラムによれば、特定の周辺機器の利用や周辺機器固有の専用アプリケーションを必要とするなどの制限が無く、また、周辺デバイスをネットワーク経由で利用するための専用のハードウェアを設ける必要がないといった効果を有する。すなわち、専用のハードウェアを個別に導入する必要はなく、コンピュータ・ネットワークシステムにおいて、コンピュータ上でソフト的に実現するのである。
【００２６】
また、本発明のリモートデバイス制御プログラムによれば、ネットワークに対応していない周辺デバイスもネットワーク上で共有することができるといった効果を有する。コンピュータにローカル接続される周辺デバイスであっても、当該コンピュータがネットワークに接続されることにより、ネットワーク上でグローバルに周辺デバイスを共有できるのである。
【００２７】
また、特に、ＵＳＢデバイスの場合は、ＵＳＢケーブル長の制限があるために、本発明のリモートデバイス制御プログラムによって、ネットワークを介することで距離的な制限が排除されることとなり、遠隔の場所に位置するＵＳＢデバイスを制御できるといった効果を有する。すなわち、本発明のリモートデバイス制御プログラムによって、ネットワークを介したリモートコントロールが可能となるため、遠距離に位置するＵＳＢデバイスを使用することが可能となる。
ＵＳＢは広く使用されている規格であり、ＵＳＢ対応機器（ＵＳＢデバイス）をネットワーク経由で利用することができることはユーザにとって利便性が高いと考える。
【００２８】
また、任意のコンピュータからネットワーク経由で他のコンピュータに接続されているＵＳＢデバイスを制御できるため、ＵＳＢデバイスを相互運用することが可能となるといった効果を有する。
すなわちリモートデバイス制御プログラムをネットワークにつながる全てのコンピュータにインストールすることで、容易に相互運用のシステムが構築できる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施形態について、特に周辺デバイスとしてＵＳＢデバイスを例に挙げながら、図面を参照しながら詳細に説明していく。ただし、本発明の範囲は、図示例に限定されるものではない。
【実施例１】
【００３０】
（クライアントＰＣからサーバＰＣの周辺デバイスにデータを送信する場合）
図２に、本発明のリモートデバイス制御プログラムの構成要素と関連する構成要素とのブロック図を示す。図２において、１はクライアントＰＣ、２はサーバＰＣ、３はＵＳＢデバイスである。クライアントＰＣ１にＵＳＢデバイスがローカルに接続されていてもよく、クライアントＰＣ１とサーバＰＣ２は相互に入れ替えることが可能な構成としている。
【００３１】
クライアントＰＣ１には、図２に示すように、接続管理部１１とトンネリングドライバ１２が搭載されている。この他関連する構成要素として、ＬＡＮネットワークを介してデータを送受信するＬＡＮ制御部１５と、ＵＳＢデバイスを利用するアプリケーション１６と、ＵＳＢデバイス３を利用するためのドライバ１７とＯＳに組み込まれているＵＳＢクラスドライバ１８がある。
【００３２】
また、サーバＰＣ２には、接続管理部２１とトンネリングドライバ２２とポート制御部２３が搭載されている。サーバＰＣ２がサーバとして固定されている場合、接続管理部２１は、最小の構成として、サーバＰＣ２にローカル接続されているＵＳＢデバイスの接続情報を取得するサーバ機能だけを有していればよい。しかし、クライアントＰＣとサーバＰＣの両方にリモートデバイス制御プログラムを組み込んで、クライアントＰＣとサーバＰＣを相互に入れ替える場合には、接続管理部２１はサーバ機能に加えてクライアント機能も実現する。すなわち、リモートデバイス制御プログラムの接続管理部は、サーバＰＣとしてのみ利用される場合にはサーバ機能だけを構成要素とすれば良く、サーバＰＣとクライアントＰＣの両方の機能を実現するＰＣで利用される場合にはサーバ機能およびクライアント機能を構成要素とするのである。ここでクライアント機能とは、ネットワーク上の１乃至複数のコンピュータにローカル接続されているＵＳＢデバイスの接続情報をネットワーク経由で要求し、かかる接続情報をユーザに対し表示し選択を促す機能をいう。この他関連する構成要素として、ＬＡＮネットワークを介してデータを送受信するＬＡＮ制御部２５と、ＵＳＢデバイスを利用するアプリケーション２６と、ＵＳＢデバイス３を利用するためのドライバ２７とＯＳに組み込まれているＵＳＢクラスドライバ２８がある。また、ＵＳＢデバイスを最終段で制御するＵＳＢポートドライバ３１がある。ＵＳＢポートドライバとは、ＵＳＢＨＵＢ．ｓｙｓおよびＵＳＢホストコントローラドライバのことである。なお、本実施形態においてはオペレーティングシステム（ＯＳ）にWindows（登録商標）を用いるが、これに限定されるものではない。
【００３３】
また、図６に、クライアントＰＣおよびサーバＰＣのＨ／Ｗ構成図を示す。図６から理解できるように、クライアントＰＣとサーバＰＣは、一般的なパーソナルコンピュータであり、ネットワーク上で特定されるものである必要は無く、クライアントＰＣとサーバＰＣが相互に入れ替わっても構わない。かかるクライアントＰＣおよびサーバＰＣは、その動作を制御するＣＰＵ６０と、ＣＰＵ６０が実行時に参照するプログラムやデータが一時記憶されるＲＡＭ（ランダムアクセスメモリ）６２と、ＣＰＵが実行する所定のプログラムが格納されているＲＯＭ（読み出し専用メモリ）６１と、リモートデバイス制御プログラムなどを格納している補助記憶手段であるハードディスク６５と、ＬＡＮ等のネットワークを介して通信するためのネットワークＩ／Ｆ６３と、ＵＳＢデバイスとのデータ送受信を行うためのＵＳＢポート６４と、図示しないキーボードなどの入力装置、モニタなどの表示装置および光学式ドライブなどを備えている。
【００３４】
以下では、ＬＡＮ等で接続されたコンピュータ・ネットワークシステムにおいて、任意のコンピュータ（クライアントＰＣ）からネットワーク経由で他のコンピュータ（サーバＰＣ）に接続されているＵＳＢデバイスを制御する処理について、図２〜図４を参照しながら順をおって説明する。図３と図４は、本発明のリモートデバイス制御プログラムのデータ処理フローを示すもので、図３は、クライアントＰＣとサーバＰＣの内部のプロセスのデータ授受を示しており、図４は、クライアントＰＣとサーバＰＣ間のネットワーク上の通信データの授受を表している。以下では、図３、図４のデータ処理フローに従い、左上から順に説明していく。
【００３５】
（１）先ず、クライアントＰＣ１上の接続管理部１１が、ＬＡＮネットワーク上に存在するＵＳＢデバイスが接続されているサーバＰＣ２を検索する処理を実行する。
具体的には、クライアントＰＣ１から、ＬＡＮ制御部を介してブロードキャスト通信を用いて、ネットワーク上の他の１乃至複数のコンピュータに対して機器情報検索要求メッセージ送信を行う。
【００３６】
（２）次に、検索要求を受けたサーバＰＣ２上の接続管理部２１が、自身の接続機器情報テーブル２４を参照して、接続されているＵＳＢデバイスと自身の情報（サーバＰＣ２の機器情報）をクライアントＰＣ１に返信する。
ここで、接続機器情報テーブル２４は、接続されたＵＳＢデバイスの機器情報をサーバＰＣ起動時やＵＳＢデバイス接続時に情報収集して保存しているものである。ＵＳＢデバイスが活線挿抜可能なデバイスであることを考慮して、ＵＳＢデバイス接続時に情報収集を行うこととしている。ＵＳＢデバイスがＵＳＢポートにアタッチされるとき、ユニークな識別番号(ポートＩＤ)がデバイスに割り当てられ、ＵＳＢホストコントローラ（図示しない）によって機器情報（デバイスディスクリプタ）が読込まれる。なお、デバイスディスクリプタは、デバイスのコンフィギュレーションの情報と同時にデバイス全般の情報も含んでおり、コンフィギュレーションでは、ＵＳＢデバイスの機能性および動作を定義するものである。
【００３７】
（３）サーバＰＣ２から返信されてきたＵＳＢデバイス等の機器情報を、クライアントＰＣ１の接続管理部１１で集約し、接続管理部１１は検索で収集したサーバＰＣとそれに接続されているＵＳＢデバイスの情報をリストとして、クライアントＰＣ１のウィンドウ画面にて一覧表示する。
【００３８】
（４）クライアントＰＣ１のユーザは、ウィンドウ画面の一覧表示にて、利用したいサーバＰＣおよびＵＳＢデバイスを選択する。仮に、このサーバＰＣがサーバＰＣ２だとすると、このタイミングにて、クライアントＰＣ１の接続管理部１１からサーバＰＣ２の接続管理部２１に対して機器接続要求メッセージが送信される。
【００３９】
（５）サーバＰＣ２の接続管理部２１が機器接続要求メッセージを受信すると、サーバＰＣ２のポート制御部２３は、ＵＳＢポートドライバ３１が利用可能か否かを判断する。利用不可である場合には、利用不可のメッセージをクライアントＰＣ１に返信して処理を終了する。利用可能である場合には、Windows（登録商標）などのＯＳの制御下にあるＵＳＢポートドライバ３１の制御権をトンネリングドライバに切り替える処理を行う。
【００４０】
このＵＳＢポートドライバ３１の制御権をトンネリングドライバに切り替える処理方法として、ポート制御部２３はＯＳからＵＳＢポートドライバ３１の制御を切り離すコマンド（制御を無効にする命令）を発行し、ポート制御部２３はトンネリングドライバ２２がＵＳＢポートドライバ３１の制御権を得るコマンドを発行することにより、ＵＳＢポートドライバ３１の制御権をトンネリングドライバ２２へ切り替えを行う方法を用いる（図７を参照）。
【００４１】
（６）ＵＳＢポートドライバ３１の制御権をトンネリングドライバ２２に切り替える処理が完了すると、サーバＰＣ２の接続管理部２１はクライアントＰＣ１のトンネリングドライバ１２にＵＳＢデバイスの機器設定情報を送信する。ここで送信される機器設定情報とは、ＵＳＢデバイスのコンフィギュレーション情報のことであり、デバイスディスクリプタなどＵＳＢデバイスの動作や機能性を定義することのできる情報を含んでいる（その他サーバＰＣ２自身の情報（ＩＰアドレスなど）を含んでも良い）。機器設定情報は例えばＵＤＰプロトコル（User Datagram Protocol）を用いて送信される。機器設定情報を受信したクライアントＰＣ１のトンネリングドライバ１２は当該機器設定情報から利用するＵＳＢデバイスのドライバを特定しそのドライバと接続し動作を開始させる。ここでドライバがインストールされていないとＯＳは必要に応じてドライバをインストールしクライアントＰＣ１のシステムを構成する。すなわちＵＳＢ仕様で定義されているプラグアンドプレイ機能が実行されるのである。次にクライアントＰＣ１のトンネリングドライバ１２はサーバＰＣ２とのドライバレベルでの接続を確立する。クライアントＰＣ１のトンネリングドライバ１２から例えばＴＣＰプロトコル（Transmission Control Protocol）による接続処理を開始することによりサーバＰＣ２との間でネットワークを介したデータ通信チャネルを確立する。ここで、ドライバレベルで行われる通信は、ＯＳが関与しない論理的レイヤでの通信プロトコルを意味する。すなわちＵＳＢクラスドライバ１８およびＵＳＢポートドライバ３１はトンネリングドライバ１２、２２の存在を全く意識しなくてよい。
【００４２】
具体的には、クライアントＰＣ１上のトンネリングドライバ１２が、ＵＳＢデバイス３に出力するデータ構造をそのままＬＡＮネットワーク用の通信パケットデータ構造に合致するように変換処理（カプセル化）を行い、ネットワーク４経由でサーバＰＣ２のトンネリングドライバ２２へ送信する。また、サーバＰＣ２上のトンネリングドライバ２２では、カプセル化されたデータを受信すると、ＵＳＢデバイス３のデータ構造に再構築する。
そして、ポート制御により、ＵＳＢポートドライバ３１の制御権を得ているので、その再構築したＵＳＢデバイス３のデータを、ＵＳＢポートドライバ３１に送信する。
トンネリングドライバでのＵＳＢデバイスの利用が終了すると、サーバＰＣ２のポート制御部２３は、ＵＳＢポートドライバ３１の制御をＯＳに戻す処理（切り替え処理）を行いドライバレベルでの接続を切断する。具体的にはクライアントＰＣ１の接続管理部１１からサーバＰＣ２の接続管理部２１へ機器切断要求メッセージを送信する。かかるメッセージを受信すると、サーバＰＣ２のポート制御部２３は、ＵＳＢポートドライバ３１の制御権をトンネリングドライバ２２からＵＳＢクラスドライバ２８へと切り替える。そして、サーバＰＣ２のトンネリングドライバ２２から切断処理を開始し、クライアントＰＣ１とのドライバレベルの接続を切断する。
【００４３】
（７）上記の手順により、クライアントＰＣ１のユーザは、サーバＰＣ２にローカル接続されているＵＳＢデバイス３をネットワーク４経由で利用することができるのである。すなわち、任意のコンピュータ（クライアントＰＣ）からネットワーク経由で他のコンピュータ（サーバＰＣ）に接続されているＵＳＢデバイスを制御（データ出力）できることとなる。
【実施例２】
【００４４】
（クライアントＰＣからサーバＰＣの周辺デバイスのデータを受信する場合）
次に、クライアントＰＣ１からネットワークを利用してサーバＰＣ２にローカルに接続されたＵＳＢデバイス３のデータを受信する場合について、図２、図３および図５の処理フロー図を用いて説明する。
（１）先ず、上述の実施例１と同様、クライアントＰＣ１上の接続管理部１１が、ＬＡＮネットワーク上に存在するＵＳＢデバイスが接続されているサーバＰＣ２を検索する処理を実行する。
【００４５】
（２）実施例１と同様に、検索要求を受けたサーバＰＣ２上の接続管理部２１が、自身の接続機器情報テーブル２４を参照して、接続されているＵＳＢデバイスと自身の機器情報（サーバＰＣ２の情報）をクライアントＰＣ１に返信する。
【００４６】
（３）実施例１と同様に、サーバＰＣ２から返信されてきたＵＳＢデバイス等の機器情報を、クライアントＰＣ１の接続管理部で集約し、検索で収集したサーバＰＣとそれに接続されているＵＳＢデバイスの機器情報をリストとして、クライアントＰＣ１のウィンドウ画面にて一覧表示する。
【００４７】
（４）実施例１と同様に、クライアントＰＣ１のユーザは、ウィンドウ画面の一覧表示にて、利用したいサーバＰＣおよびＵＳＢデバイスを選択する。仮に、このサーバＰＣがサーバＰＣ２だとすると、このタイミングにて、クライアントＰＣ１の接続管理部１１からサーバＰＣ２の接続管理部２１に対して機器接続要求メッセージが送信される。
【００４８】
（５）実施例１と同様に、サーバＰＣ２の接続管理部２１が機器接続要求メッセージを受信すると、サーバＰＣ２のポート制御部２３は、ＵＳＢポートドライバ３１が利用可能か否かを判断する。利用不可である場合には、利用不可のメッセージをクライアントＰＣ１に返信して処理を終了する。利用可能である場合には、ＯＳの制御下にあるＵＳＢポートドライバ３１の制御権をトンネリングドライバに切り替える処理を行う。
【００４９】
（６）実施例１と同様に、サーバＰＣ２からクライアントＰＣ１へ機器設定情報が送信され、クライアントＰＣ１でプラグアンドプレイ処理が実行される。そして、クライアントＰＣ１のトンネリングドライバ１２とサーバＰＣ２のトンネリングドライバ２２との間のドライバレベルでの接続で、ネットワークを介したデータ通信チャネルを確立する。
具体的には、サーバＰＣ２上のトンネリングドライバ２２が、ＵＳＢデバイス３から受信するデータ構造をそのままＬＡＮネットワーク用の通信パケットデータ構造に合致するように変換処理（カプセル化）を行い、ネットワーク４経由でクライアントＰＣ１のトンネリングドライバ１２へ送信する。また、クライアントＰＣ１上のトンネリングドライバ２２では、カプセル化されたデータを受信すると、ＵＳＢデバイス３のデータ構造に再構築する。
実施例１と同様に、トンネリングドライバでのＵＳＢデバイスの利用が終了すると、サーバＰＣ２のポート制御部２３は、ＵＳＢポートドライバ３１の制御をＯＳに戻す処理（切り替え処理）を行う。
【００５０】
（７）上記の手順により、クライアントＰＣ１のユーザは、サーバＰＣ２にローカル接続されているＵＳＢデバイス３をネットワーク４経由で利用することができるのである。すなわち、任意のコンピュータ（クライアントＰＣ）からネットワーク経由で他のコンピュータ（サーバＰＣ）に接続されているＵＳＢデバイスを制御（データ入出力）できることとなる。
【実施例３】
【００５１】
（フィルタリングドライバとオペレーティングシステム標準搭載とは異なる周辺デバイスドライバをサーバＰＣに搭載した場合）
実施例３は、ポート制御部におけるＵＳＢポートドライバ（ＯＳ標準搭載）の制御の他の切替え方法として、フィルタリングドライバとオペレーティングシステム（ＯＳ）標準搭載とは異なるＵＳＢポートドライバとを更に備え、フィルタリングドライバが、オペレーティングシステム（ＯＳ）標準搭載のＵＳＢポートドライバ（ＯＳ標準搭載）と、オペレーティングシステム（ＯＳ）標準搭載とは異なるＵＳＢポートドライバ（独自に搭載）との切り替えを行う方法について説明する。
【００５２】
ＯＳとＵＳＢポートドライバが密に結合しているような場合や、ＯＳにＵＳＢポートドライバ制御を切り離すコマンドが用意されていない場合などのケースでは、オペレーティングシステム標準搭載とは異なるＵＳＢポートドライバを用意して、ＵＳＢデバイスとのデータ授受のルートを別個に構築し、フィルタリングドライバにより、ＵＳＢデバイスとのデータ授受のルートを切り替えるようにする。またオペレーティングシステム標準搭載とは異なるＵＳＢポートドライバを用意することで機能拡張にも柔軟に対応できるという利点がある。
【００５３】
図８に、ポート制御部におけるＵＳＢポートドライバの制御の他の切替え方法を示すブロック図を示す。ＯＳ標準搭載のＵＳＢポートドライバ３１を全く用いず、独自に用意したＯＳ標準搭載とは異なるＵＳＢポートドライバ４２の制御をＯＳの管理下にあるＵＳＢクラスドライバ２８が制御するのか、トンネリングドライバ２２で制御するのかを、ポート制御部からのコマンドを受けて、フィルタリングドライバ４１が切り替えを行っている。
【産業上の利用可能性】
【００５４】
本発明のリモートデバイス制御プログラムは、特定の周辺機器の利用や専用のアプリケーションを必要とするなどの制限が無く、また、周辺デバイスをネットワーク経由で利用するための専用のハードウェアを設けることなく、コンピュータにローカル接続されていないＵＳＢデバイスなどの周辺機器を任意のコンピュータから通信ネットワーク経由で制御できることを目的とするシステムに利用できる。
【図面の簡単な説明】
【００５５】
【図１】任意のコンピュータ（クライアントＰＣ）から通信ネットワーク経由でＵＳＢデバイスサーバに接続されているＵＳＢデバイスを制御できる様子を示す概略システム構成図を示す。
【図２】本発明のリモートデバイス制御プログラムの構成要素と関連する構成要素とのブロック図を示す。
【図３】本発明のリモートデバイス制御プログラムの処理フローを示す。
【図４】本発明のリモートデバイス制御プログラムの処理フロー（データ出力）を示す。
【図５】本発明のリモートデバイス制御プログラムの処理フロー（データ受信）を示す。
【図６】クライアントＰＣおよびサーバＰＣのＨ／Ｗ構成図を示す。
【図７】ポート制御部におけるＵＳＢポートドライバの制御の切替え方法を示すブロック図を示す。
【図８】ポート制御部におけるＵＳＢポートドライバの制御の他の切替え方法を示すブロック図を示す。
【符号の説明】
【００５６】
１    クライアントＰＣ    
２    サーバＰＣ
３    ＵＳＢデバイス
４    ネットワーク
１１，２１    接続管理部
１２，２２    トンネリングドライバ
２３          ポート制御部
２４          接続機器情報テーブル
１５，２５    ＬＡＮ制御部
１６，２６    アプリケーション
１７，２７    ドライバ
１８，２８    ＵＳＢクラスドライバ
３１    ＵＳＢポートドライバ
４１    フィルタリングドライバ
４２    独自に用意したＯＳ標準搭載とは異なるＵＳＢポートドライバ
５１    デバイスサーバ
５２    ＵＳＢハブ
５３    スキャナー
５４    レーザプリンタ
５５    デジタルカメラ
５６    ハードディスク
５７    無線ＬＡＮアクセスポイント
【図１】
2007219711.tif 000003
【図２】
2007219711.tif 000004
【図３】
2007219711.tif 000005
【図４】
2007219711.tif 000006
【図５】
2007219711.tif 000007
【図６】
2007219711.tif 000008
【図７】
2007219711.tif 000009
【図８】
2007219711.tif 000010