(57)【要約】【課題】  クライアントＰＣからネットワークを経由して周辺機器サーバに接続された複数の周辺機器を利用できる様になるまでの時間をできるだけ短くすることで、ユーザの利便性向上を図る。【解決手段】  ステップＳ４０３で、クライアントＰＣ１００から周辺機器サーバ１０２の接続情報制御部３０７へ「複数ＵＳＢデバイス接続」要求を通知し、周辺機器サーバ１０２を介して接続しようとするすべてのデバイスに対し、取得したデバイス情報をもとに情報を再構成し、１つの複合デバイスとしてコネクション確立を行う。続いてクライアントＰＣ１００が１つの複合デバイスとして、接続したいデバイスとの間でプラグアンドプレイを完了することで、クライアントＰＣ１００は周辺機器サーバ１０２を介してＵＳＢデバイスの利用が可能となる。【選択図】図４
2015194826.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１以上のクライアントにネットワークを介して接続されるとともに、少なくとも２以上のＵＳＢデバイスと接続された周辺機器サーバであって、
前記ＵＳＢデバイスの各デバイスを検出するデバイス検出部と、
前記検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得部と、
ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスについて前記クライアントから通知を受けると、前記デバイス情報取得部で取得した前記デバイス情報を１つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、前記クライアントへ当該再構築したデバイス情報を送信する接続情報制御部と、
前記クライアントと前記ＵＳＢデバイスとの間でネットワークを介して、所定の形式でＩＰパケットを送受信するＵＳＢ仮想ポートドライバと
前記クライアントとの間でデータ入出力を制御するデバイス情報を前記クライアントへ通知する通信制御部と
を備える周辺機器サーバ。
【請求項２】
前記デバイス情報は、ＵＳＢディスクリプタに記載の情報である請求項１に記載の周辺機器サーバ。
【請求項３】
少なくとも１以上のクライアントにネットワークを介して接続されるとともに、少なくとも２以上のＵＳＢデバイスと接続された周辺機器サーバを備える周辺機器サーバシステムのデバイス制御方法であって、
前記ＵＳＢデバイスの各デバイスを検出するデバイス検出ステップと、
前記検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得ステップと、
ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスについて前記クライアントから通知を受けると、前記デバイス情報取得部で取得した前記デバイス情報を１つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、前記クライアントへ当該再構築したデバイス情報を送信する制御ステップと、
前記クライアントと前記ＵＳＢデバイスとの間でネットワークを介して、所定の形式でＩＰパケットを送受信するステップと
前記クライアントとの間でデータ入出力を制御するデバイス情報を前記クライアントへ通知するステップと
を含むデバイス制御方法。
【請求項４】
少なくとも１以上のクライアントにネットワークを介して接続されるとともに、少なくとも２以上のＵＳＢデバイスと接続された周辺機器サーバのプログラムあって、
前記ＵＳＢデバイスの各デバイスを検出するデバイス検出ステップと、
前記検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得ステップと、
ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスについて前記クライアントから通知を受けると、前記デバイス情報取得部で取得した前記デバイス情報を１つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、前記クライアントへ当該再構築したデバイス情報を送信する制御ステップと、
前記クライアントと前記ＵＳＢデバイスとの間でネットワークを介して、所定の形式でＩＰパケットを送受信するステップと
前記クライアントとの間でデータ入出力を制御するデバイス情報を前記クライアントへ通知するステップと
を含む処理を周辺機器サーバに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを通じてクライアントＰＣから周辺機器サーバを経由して周辺機器を利用する周辺機器サーバシステムに関するものである。
【背景技術】
【０００２】
近年、ネットワークの普及により、ＰＣ（パーソナルコンピュータ）のネットワーク化だけでなく、ＰＣ周辺機器もネットワークに接続して利用したいというニーズが拡大していることは周知のとおりである。ところで、ＰＣを周辺機器と接続するものとして最も普及しているＵＳＢ（Universal Serial Bus）規格は、ホストであるＰＣに直接接続することを前提としている。このＵＳＢ規格に則った周辺機器をネットワークを介して利用するために、周辺機器サーバシステムという技術が開示されている（非特許文献１）。
【０００３】
非特許文献１に開示の周辺機器サーバシステムによれば，ネットワーク経由でクライアントＰＣから周辺機器を利用することができるため，周辺機器インタフェースの規格によるケーブル長の制限（例えば、ＵＳＢ規格の場合は５メートル）を受けることがない。また，クライアントＰＣ側にインストールした専用ツールを用いて、接続対象の周辺機器を選択し接続する（クライアントＰＣとの間の仮想的な通信経路を予め確立する）という作業は、周辺機器サーバがクライアントＰＣと周辺機器とをネットワーク経由で接続する運用形態となる当該システムにとって、必須のものと言える。上記の専用ツール（以後、周辺機器接続ツールと呼ぶ）は、クライアントＰＣとネットワークを介して、周辺機器サーバに接続されている周辺機器とを接続し、あるいは切断することで利用するか開放するかを管理するものである。また、非特許文献１に開示の周辺機器接続ツールは、ユーザが接続したい周辺機器に対し、接続可能な周辺機器1台毎に接続要求を行い、ディスクリプタ内の情報をもとに、ネットワークを介して、クライアントＰＣと周辺機器との接続を行う。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】サイレックス・テクノロジー株式会社ホームページ                  http://www.silex.jp/products/usbdeviceserver/sxds3000wan.html
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、非特許文献１では、複数の周辺機器と接続したい場合に、その台数に応じて、周辺機器接続ツールが接続要求を行うことになり、利用者にとっては、周辺機器を利用開始できるまでの時間が長く感じられるため、ユーザビリティの低下につながり、利便性を妨げる１つの要因になっている。
【０００６】
本発明は、上述の問題を解決するためになされたものであり、クライアントＰＣからネットワークを経由して、周辺機器サーバに接続された複数の周辺機器をユーザが利用できるようになるまでの時間をできるだけ短くすることで、ユーザの利便性向上を図ることを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様に係る周辺機器サーバは、少なくとも１以上のクライアントにネットワークを介して接続されるとともに、少なくとも２以上のＵＳＢデバイスと接続された周辺機器サーバであって、ＵＳＢデバイスの各デバイスを検出するデバイス検出部と、検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得部と、ユーザによる入力またはクライアントに予め設定された情報に基づいて、クライアントが接続を希望する全てのデバイスについてクライアントから通知を受けると、デバイス情報取得部で取得したデバイス情報を１つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、クライアントへ当該再構築したデバイス情報を送信する接続情報制御部と、クライアントとＵＳＢデバイスとの間でネットワークを介して、所定の形式でＩＰパケットを送受信するＵＳＢ仮想ポートドライバとクライアントとの間でデータ入出力を制御するデバイス情報をクライアントへ通知する通信制御部とを備える周辺機器サーバである。
【０００８】
これによれば、周辺機器サーバが自身に接続しているデバイスのデバイス情報を取得し、それを再構成することにより、あたかもクライアントＰＣが接続を要求するデバイス全てを１つの複合デバイスと擬制（同様の形態）することが可能となり、クライアントＰＣのＯＳは、周辺機器サーバに接続を要求したデバイス全体を１つの複合デバイスと認識することができ、その結果、従来よりも短時間で、クライアントＰＣとネットワークを介して、周辺機器サーバに接続したデバイスとの間でデータ入出力転送を開始できるようになる。
【０００９】
また、好ましくは、前記デバイス情報がＵＳＢディスクリプタに記載の情報である周辺機器サーバである。
【００１０】
これによれば、周辺機器サーバは、ＵＳＢ規格に準拠したデバイスから取得するデバイス情報を再構成して、クライアントＰＣが接続を要求するデバイス全てを１つの複合デバイスに擬制することが可能となる。
【００１１】
また、本発明の一態様に係る制御方法は、少なくとも１以上のクライアントにネットワークを介して接続されるとともに、少なくとも２以上のＵＳＢデバイスと接続された周辺機器サーバを備える周辺機器サーバシステムのデバイス制御方法であって、ＵＳＢデバイスの各デバイスを検出するデバイス検出ステップと、検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得ステップと、ユーザによる入力またはクライアントに予め設定された情報に基づいて、クライアントが接続を希望する全てのデバイスについてクライアントから通知を受けると、デバイス情報取得部で取得したデバイス情報を１つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、クライアントへ当該再構築したデバイス情報を送信する制御ステップと、クライアントとＵＳＢデバイスとの間でネットワークを介して、所定の形式でＩＰパケットを送受信するステップとクライアントとの間でデータ入出力を制御するデバイス情報をクライアントへ通知するステップとを含むデバイス制御方法である。
【００１２】
これによれば、上記の周辺機器サーバと同様の効果を奏する。
【００１３】
また、本発明の一態様に係るプログラムは、少なくとも１以上のクライアントにネットワークを介して接続されるとともに、少なくとも２以上のＵＳＢデバイスと接続された周辺機器サーバのプログラムあって、ＵＳＢデバイスの各デバイスを検出するデバイス検出ステップと、検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得ステップと、ユーザによる入力またはクライアントに予め設定された情報に基づいて、クライアントが接続を希望する全てのデバイスについてクライアントから通知を受けると、デバイス情報取得部で取得したデバイス情報を１つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、クライアントへ当該再構築したデバイス情報を送信する制御ステップと、クライアントとＵＳＢデバイスとの間でネットワークを介して、所定の形式でＩＰパケットを送受信するステップと、クライアントとの間でデータ入出力を制御するデバイス情報をクライアントへ通知するステップとを含む処理を周辺機器サーバに実行させるためのプログラムである。
【００１４】
これによれば、上記の周辺機器サーバと同様の効果を奏する。
【発明の効果】
【００１５】
本発明は、クライアントＰＣからネットワークを経由して、周辺機器サーバに接続されている複数の周辺機器が利用開始できるまでの時間をできるだけ短くすることにより、利便性の向上をはかることができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態にかかる周辺機器サーバの接続システム図
【図２ａ】実施の形態にかかるクライアントＰＣのハードウェア構成図
【図２ｂ】実施の形態にかかるクライアントＰＣの機能ブロック図
【図３ａ】実施の形態にかかる周辺機器サーバのハードウェア構成図
【図３ｂ】実施の形態にかかる周辺機器サーバの機能ブロック図
【図４】実施の形態にかかる周辺機器サーバシステムにおけるコネクション確立とプラグアンドプレイ完了までのシーケンス図
【図５】実施の形態にかかる周辺機器サーバにデバイス情報を取得した当初のディスクリプタ情報構成図
【図６】実施の形態にかかる周辺機器サーバで再構成したディスクリプタ情報構成図
【図７】従来の周辺機器サーバの接続システム図
【図８】従来の周辺機器サーバの機能ブロック図
【発明を実施するための形態】
【００１７】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【００１８】
なお、以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、構成要素、構成要素の接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。
【００１９】
＜従来の周辺機器サーバシステムの構成＞
はじめに、従来の周辺機器サーバの接続システムについて、図７を用いて説明する。
【００２０】
図７は、従来の周辺機器サーバの接続システムの構成図を示している。
【００２１】
図７で示す周辺機器サーバシステムでは、周辺機器サーバ７１０にＵＳＢケーブル７３０でＵＳＢデバイス７２０が接続され、クライアントＰＣ７００はネットワーク７４０経由で、周辺機器サーバ７１０に接続されたＵＳＢデバイス（プリンタ）７２０を制御する。
【００２２】
つぎに従来の周辺機器サーバシステムについて説明する。
図８は、従来の周辺機器サーバシステムにおけるクライアントＰＣ７００および周辺機器サーバ７１０の機能ブロック図を示したものである。
【００２３】
クライアントＰＣ７００は、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、ＣＰＵ、入力部、表示部、メモリ、記憶装置、ネットワークＩ／Ｆなど（図示しない）が内部バスで接続されている。また、クライアントＰＣ７００は、周辺機器サーバ７１０を介してＵＳＢデバイス７２０との間でＴＣＰ接続確立（以後、コネクション確立と呼ぶ）を行い、入出力データを送受信することが可能となる。
【００２４】
クライアントＰＣ７００には、アプリケーション８００と接続ユーティリティ８１０とデバイスドライバ８２０とＵＳＢクラスドライバ８３０と仮想ＵＳＢポートドライバ８４０と通信制御部１０５０がソフトウェア部品として存在している。この他のソフトウェア部品としては、図示しないＯＳ（Operating System）などがあり、制御に必要な各種データと共に記憶装置に格納されている。これらソフトウェア部品及び各種データは、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御が実行される。
【００２５】
接続ユーティリティ８１０は、データの監視、制御などを担う。つまり、仮想ＵＳＢポートドライバ８４０を介して、ネットワーク７４０経由で周辺機器サーバ７１０と送受信を行うことにより、周辺機器サーバ７１０に接続されたＵＳＢデバイス７２０を認識する。
【００２６】
接続ユーティリティ８１０は、さらにＵＳＢデバイス７２０のデバイス情報を受信し、受信したデバイス情報をもとに、ＵＳＢデバイス７２０とのデータ入出力に必要なドライバソフトウェア部品を特定する。
【００２７】
デバイスドライバ８２０は、ＯＳやアプリケーション８００など上位層のソフトウェアの指示により、ＵＳＢデバイス７２０に対する制御コマンドを生成する一方、この制御コマンドに対するＵＳＢデバイスからの応答を待ち、周辺機器サーバ７１０から当該応答を上位層のソフトウェアへ通知する。
【００２８】
ＵＳＢクラスドライバ８３０は、それぞれのＵＳＢデバイスが備えている機能（ＨＩＤ、プリンタ、ストレージなど）に応じたドライバであり、周辺機器サーバ７１０に接続されたＵＳＢデバイスに対応するクラスドライバがロードされる。
【００２９】
仮想ＵＳＢポートドライバ８４０は、アプリケーションプログラム８００、デバイスドライバ８２０、ＵＳＢクラスドライバ８３０を経由するデータあるいはコマンドのやりとりについて、ネットワーク７４０を介して周辺機器サーバ７１０の仮想ＵＳＢポートドライバ８７０との間で入出力制御を行う。また、ネットワーク７４０を介してＵＳＢデバイス７２０との間で送受信されるＩＰパケットをカプセル化・デカプセル化することで、ＵＳＢデバイス７２０がクライアントＰＣ７００に直結しているかのように動作することを提供する。
【００３０】
通信制御部８５０は、仮想ＵＳＢポートドライバ８４０から要求されるデータ入出力について、ネットワーク７４０を介して周辺機器サーバ７１０と送受信するソフトウェアである。仮想ＵＳＢポートドライバ８４０からデータ入出力を要求された場合、ＵＳＢデバイス７２０に対してＴＣＰ接続し、通信を開始する。また、通信を完了するとＴＣＰ接続を切断する。
【００３１】
つぎに、従来の周辺機器サーバ７１０について説明する。
【００３２】
周辺機器サーバ７１０のハードウェア構成は、ＣＰＵ、メモリ、記憶装置、ネットワークＩ／Ｆ、ＵＳＢ規格に準拠したＩ／Ｆなど（図示しない）が内部バスで接続されている。
【００３３】
周辺機器サーバ７１０は、通信制御部８６０、仮想ＵＳＢポートドライバ８７０、デバイス情報取得部８８０、デバイス検出部８９０を備えている。これら各機能は、ＣＰＵの制御に従い、メモリ上に読み出されて各種制御を実行する。
【００３４】
デバイス検出部８９０は、周辺機器サーバ７１０に接続されたデバイスを検出する機能部である。
【００３５】
デバイス情報取得部８８０は、ＵＳＢデバイス７２０からＵＳＢ規格に準拠したＩ／Ｆ（図示しない）を介して、後述するデバイス識別情報、デバイス構成情報及び機能識別情報を取得し、メモリに保持する機能部である。
【００３６】
仮想ＵＳＢポートドライバ８７０は、ネットワーク７４０を介して、クライアントＰＣ７００の仮想ＵＳＢポートドライバ８４０との間で入出力制御を行う。また、ネットワーク７４０を介して送受信されるＩＰパケットをカプセル化・デカプセル化することで、ＵＳＢデバイス７２０がクライアントＰＣ７００と直結しているかのように動作することを可能にするネットワーク仮想制御ソフトウェアである。
【００３７】
通信制御部８６０は、仮想ＵＳＢポートドライバ８７０が受け付けたデータ入出力要求（通信路の確保と解放）に応じてＵＳＢデバイス７２０との通信路を制御する機能部である。
【００３８】
ここで、デバイス情報取得部がＵＳＢデバイスから取得するデバイス情報とは、デバイス識別情報、デバイス構成情報、機能識別情報などのデバイスに関する情報のことであり、データ・テーブルの形で階層的に記述されている。つまり、ＵＳＢデバイスにおいてはＵＳＢディスクリプタ情報に相当する。
【００３９】
具体的には、デバイス識別情報とは、デバイスメーカーを識別するために製造したメーカー毎に割り当てられたベンダーＩＤ、機種ＩＤ・モデルを識別するために機種毎に割り当てられた製品ＩＤ、機器毎に割り当てられたシリアル番号、コンフィギュレーションの数などに相当し、これらはデバイスディスクリプタに記載されている。また、デバイス構成識別情報とは、デバイスが備えるインタフェースの数などに相当し、これらはコンフィギュレーションディスクリプタに記載され、多くのデバイスはコンフィギュレーションが1 つとなっている。さらに、機能識別情報とは、各デバイスが備える機能（たとえば、キーボード、マウスなどのインターフェイスクラス）情報、インタフェース自身の番号、そのインタフェースのバリエーションの番号、エンドポイントの数などに相当し、これらはインタフェースディスクリプタに記載されている。
また、デバイス情報には、その他にもエンドポイントのデータ転送種別・転送方向・パケットサイズ、ポーリング時間を記載したエンドポイントディスクリプタが含まれ、さらに必須ではないが文字列を格納するストリングディスクリプタ、ハイスピード対応ＵＳＢデバイスで使用される各種ディスクリプタなども適宜含まれる。
【００４０】
つぎに、本発明における周辺機器サーバシステムについて、詳細に説明する。
【００４１】
＜本発明における周辺機器サーバシステムの構成＞
図１は、本発明を実現するための周辺機器サーバシステムの接続構成図を示している。
【００４２】
クライアンＰＣ１００とクライアントＰＣ１０１と周辺機器サーバ１０２とＵＳＢデバイス１０４、１０６、１０８および１１０から構成される。
【００４３】
図１で示すように、周辺機器サーバ１０２に複数のＵＳＢデバイス１０４、１０６、１０８および１１０をＵＳＢ規格のインタフェースに準拠した接続ケーブル１０５、１０７、１０９、１１１で接続しており、クライアントＰＣ１００、１０１は、有線又は無線によってネットワーク１０３を介して接続している。クライアントＰＣは、システムの実態により、１つでも複数でも構わない。
【００４４】
つぎに、周辺機器サーバシステムを構成する各装置について説明する。
＜クライアントＰＣ１００の構成＞
クライアントＰＣ１００のハードウェア構成について、図２ａを用いて説明する。
【００４５】
クライアントＰＣ１００は、ＣＰＵ２００、入力部２０１、メモリ２０２、記憶装置２０３、通信Ｉ／Ｆ部２０４から構成され、各々が内部バス２０５で接続されている。
【００４６】
ＣＰＵ２００は、所定の制御プログラムを実行するプロセッサであり、クライアントＰＣ１００を全体的に制御する。
【００４７】
入力部２０１は、各種入力、ユーザの指示操作などを行なうための操作部であり、例えばキーボードやマウスなどで構成される。
【００４８】
メモリ２０２は、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）で構成される記憶領域であり、所定のプログラムやデータを格納する。
【００４９】
記憶装置２０３は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）２０６、アプリケーションプログラム２０７、接続ユーティリティ２０８、デバイスドライバ２０９、ＵＳＢクラスドライバ２１０、仮想ＵＳＢポートドライバ２１１、通信制御部２１２を備えたソフトウェアプログラムを格納する。
【００５０】
通信Ｉ／Ｆ部２０４は、ＩＥＥＥ８０２．３規格に準拠した有線ネットワーク、またはＩＥＥＥ８０２．１１規格に準拠した無線ネットワークなど、ネットワーク１０３に対応したネットワークパケットによる送受信や通信制御を行うためのインタフェースであり、周辺機器サーバ１０２とデータ通信を行うことで、クライアントＰＣ１００から入出力データを送受信することが可能となる。
【００５１】
つぎに、クライアントＰＣ１００の機能ブロックについて、図２ｂを用いて説明する。
【００５２】
デバイスドライバ２０９、ＵＳＢクラスドライバ２１０、仮想ＵＳＢポートドライバ２１１は、接続ユーティリティ２０８からＵＳＢデバイス１０４、１０６、１０８および１１０のデバイス情報を取得、登録することにより、動的に生成されるドライバである。
【００５３】
アプリケーションプログラム２０７は、デバイスドライバ２０９、ＵＳＢクラスドライバ２１０、仮想ＵＳＢポートドライバ２１１の各ドライバソフトウェア部品が生成された後、ＵＳＢデバイス１０４、１０６、１０８および１１０に対して、デバイスドライバ２０９、ＵＳＢクラスドライバ２１０、仮想ＵＳＢポートドライバ２１１を介して、通信制御部２１２にデータの入出力を要求するアプリケーションソフトウェアである。
【００５４】
接続ユーティリティ２０８は、ＯＳ２０６が起動している間、常に待機および動作しているソフトウェアである。ネットワーク１０３上にある周辺機器サーバ１０２と送受信を行うことにより、周辺機器サーバ１０２に接続されたＵＳＢデバイス１０４、１０６、１０８および１１０を認識し、さらにそのデバイス情報を受信してこれをもとに、デバイス１０４、１０６、１０８および１１０とのデータ入出力に必要なドライバを特定する。
【００５５】
デバイスドライバ２０９は、ＯＳ２０６やアプリケーションプログラム２０７など上位層のソフトウェアの指示により、ＵＳＢデバイス１０４、１０６、１０８および１１０に対する制御コマンドを生成し、この制御コマンドに対するＵＳＢデバイスからの応答を待ち、周辺機器サーバ１０２を経由したこのＵＳＢデバイス応答を上位層のソフトウェアへ通知するソフトウェアである。
【００５６】
ＵＳＢクラスドライバ２１０は、プラグアンドプレイイベントを生成し、また、制御コマンドを送受信するためのＵＳＢポートを作成する。また、その上位にデバイスドライバ２０９をロードし、さらに、デバイスドライバ２０９で生成される制御コマンドをＵＳＢパケットに変換し、またはＵＳＢパケットを制御コマンドに変換するソフトウェアである。
【００５７】
仮想ＵＳＢポートドライバ２１１は、アプリケーションプログラム２０７、デバイスドライバ２０９、ＵＳＢクラスドライバ２１０を経由するデータあるいはコマンドのやりとりについて、ネットワーク１０３を介して周辺機器サーバ１０２の仮想ＵＳＢポートドライバ３０８との間で入出力制御を行う。また、ネットワーク１０３を介してＵＳＢデバイスとの間で送受信されるＩＰパケットをカプセル化・デカプセル化することで、クライアントＰＣ１００がＵＳＢデバイス１０４、１０６、１０８および１１０に直結しているかのように動作することを提供するネットワーク仮想制御ソフトウェアである。
【００５８】
通信制御部２１２は、仮想ＵＳＢポートドライバ２１１から要求されるデータ入出力について、通信Ｉ／Ｆ部経由で、ネットワークを介して周辺機器サーバ１０２と送受信するソフトウェアである。仮想ＵＳＢポートドライバ２１１からデータ入出力を要求された場合、ＵＳＢデバイス１０４、１０６、１０８および１１０に対してＴＣＰ接続し、通信を開始する。また、通信を完了するとＴＣＰ接続を切断する。
【００５９】
＜周辺機器サーバ１０２の構成＞
つぎに、周辺機器サーバ１０２のハードウェア構成について、図３ａを用いて説明する。
【００６０】
周辺機器サーバ１０２は、ＣＰＵ３００、メモリ３０１、記憶装置３０２、通信Ｉ／Ｆ部３０３などから構成されており、これらが内部バス３０４で接続されている。
【００６１】
ＣＰＵ３００は、所定の制御プログラムを実行するプロセッサであり、周辺機器サーバ１０２を全体的に制御する。
【００６２】
メモリ３０１は、ＲＯＭおよびＲＡＭで構成される記憶領域であり、所定のプログラムやデータを格納する。
【００６３】
記憶装置３０２は、デバイス検出部３０５、デバイス情報取得部３０６、接続情報制御部３０７、通信制御部３０８を備えた機能ブロックなどが格納されている。
【００６４】
通信Ｉ／Ｆ部３０３は、ＩＥＥＥ８０２．３規格に準拠した有線ネットワーク、またはＩＥＥＥ８０２．１１規格に準拠した無線ネットワークなど、ネットワーク１０３に対応したネットワークパケットによる送受信や通信制御を行うためのインタフェースであり、ネットワーク１０３を介することで、クライアントＰＣ１００とＵＳＢデバイス１０４、１０６、１０８および１１０との間で入出力データを送受信することが可能となる。
【００６５】
つぎに、周辺機器サーバ１０２の機能ブロックについて、図３ｂを用いて説明する。
【００６６】
デバイス検出部３０５は、周辺機器サーバ１０２に接続されたデバイスを検出する機能部である。
【００６７】
デバイス情報取得部３０６は、ＵＳＢデバイス１０４、１０６、１０８および１１０から通信Ｉ／Ｆ部３０３を介してデバイス識別情報、デバイス構成情報および機能識別情報を取得し、メモリ３０１に保持する機能部である。
【００６８】
接続情報制御部３０７は、クライアントＰＣ１００からの要求に応じて、デバイス情報取得部３０６が取得したＵＳＢデバイス１０４、１０６、１０８および１１０のデバイス識別情報、デバイス構成情報及び機能識別情報をもとに、後述する情報の再構成を行い、メモリ３０１に保持し、クライアントＰＣ１００に対して通知し、クライアントＰＣ１００からのデータ入出力要求を受け付ける機能部であり、本発明の最も重要な構成要素である。
【００６９】
仮想ＵＳＢポートドライバ３０８は、上位層の接続情報制御部３０７へデータ入出力を行い、ネットワーク１０３を介して、クライアントＰＣ１００の仮想ＵＳＢポートドライバ２１１との間で入出力制御を行う。また、ネットワーク１０３を介して送受信されるＩＰパケットをカプセル化・デカプセル化することで、クライアントＰＣ１００と直結しているかのように動作することを提供するネットワーク仮想制御ソフトウェアである。
【００７０】
通信制御部３０９は、仮想ＵＳＢポートドライバ３０８が受け付けたデータ入出力要求（通信路の確保と解放）に応じてＵＳＢデバイス１０４、１０６、１０８および１１０との通信路を制御する機能部である。
【００７１】
上述したデバイス情報取得部３０６と接続情報制御部３０７によって、クライアントＰＣ１００から受信するデータ入出力要求に対して、プロトコル上に指定されているＵＳＢデバイス１０４、１０６、１０８および１１０を識別するための情報（デバイス識別情報）とＵＳＢデバイス１０４、１０６、１０８および１１０が備える各機能の情報（機能識別情報）を基に判断し、通信制御部３０９を介して、クライアントＰＣ１００がデータ入出力を求めるＵＳＢデバイス１０４、１０６、１０８および１１０の機能を特定する。これによって、１台または複数のデバイスとの間でデータ入出力の制御が可能となる。
【００７２】
図４を用いて、クライアントＰＣ１００と周辺機器サーバ１０２とＵＳＢデバイス（デバイス１０４、１０６、１０８および１１０）との間のコネクション確立とプラグアンドプレイ完了までのシーケンス図を説明する。
【００７３】
ステップＳ４００では、デバイス検出部３０５が周辺機器サーバに接続されたデバイスの検出を行う。デバイス情報取得部３０６は、デバイス検出部３０５で検出したデバイス情報を取得し、メモリ３０１に保持する。
【００７４】
ステップＳ４０１では、クライアントＰＣ１００の接続ユーティリティ２０８を介して周辺機器サーバ１０２と周辺機器サーバ１０２に接続しているＵＳＢデバイスに対し、ブロードキャスト通信、マルチキャスト通信または特定の周辺機器サーバに接続されているＵＳＢデバイスに対するユニキャスト通信を行い、各デバイスのデバイス情報を取得し、メモリ２０２に保持する。
【００７５】
また、デバイス情報の取得は、上述の各種通信からではなく、サーバにあらかじめ使用可能であるデバイス情報を製品出荷の段階でメモリ３０１に書き込んでおいてもよいし、メモリ３０１に書き込まれた初期出荷時からの内容にアップデート処理によって行われてもよい。
【００７６】
ステップＳ４０２では、クライアントＰＣ１００の接続ユーティリティ２０８からユーザが利用したいデバイスの指示を行う、あるいは接続ユーティリティ２０８に予め設定されたデバイス情報をもとに、周辺機器サーバ１０２に対し、クライアントＰＣが接続を希望する複数のＵＳＢデバイスを特定した「複数ＵＳＢデバイス接続」要求コマンドを送信することで指定されたデバイス全体を一つとするコネクション確立要求を行う。
【００７７】
ステップＳ４０３では、周辺機器サーバ１０２の接続情報制御部３０７が、クライアントＰＣ１００の仮想ＵＳＢポートドライバ２１１へ「複数ＵＳＢデバイス接続」要求コマンドに対する応答を通知する。
【００７８】
ステップＳ４０４では、クライアントＰＣ１００の仮想ＵＳＢポートドライバ２１１が、周辺機器サーバ１０２からの「複数ＵＳＢデバイス接続」要求コマンドの応答を受け、接続しようとするすべてのデバイスに対し、まとめて（一度に）コネクション確立の完了を通知する。
【００７９】
ステップＳ４０５では、周辺機器サーバ１０２の接続情報制御部３０７が、仮想ＵＳＢポートドライバ３０８を介して、ステップＳ４０４のクライアントＰＣ１００からの通知を受けて、取得しているデバイス情報を後で詳細に説明するように、１つの複合デバイスとしてデバイス情報を再構成し、メモリ３０１に保持する。
【００８０】
ステップＳ４０６では、周辺機器サーバ１０２の接続情報制御部３０７が、ステップＳ４０５で再構成されたデバイス情報をクライアントＰＣ１００に応答する。
【００８１】
ステップＳ４０７では、クライアントＰＣ１００の仮想ＵＳＢポートドライバ２１１がステップＳ４０６での応答を受けたのち、ＯＳ２０６がデバイス情報に対応するデバイスドライバ２０９、ＵＳＢクラスドライバ２１０をメモリ２０２へロード（搭載）し、仮想ＵＳＢポートドライバ２１１との間でプラグアンドプレイ（Ｐｌｕｇ ａｎｄ Ｐｌａｙ）を完了する。
【００８２】
このように、１つの複合デバイスとして、接続したいデバイスとの間でプラグアンドプレイを完了し、ＵＳＢデバイスの利用が可能となる。
【００８３】
ディスクリプタ情報を再構成することについて説明する。
＜ディスクリプタ情報の再構成について＞
【００８４】
まず、従来の周辺機器サーバシステムにおいて、図１に示す接続システムであった場合のディスクリプタ情報の構成について、図５を用いて説明する。
【００８５】
クライアントＰＣから接続ユーティリティを経由して、従来の周辺機器サーバに接続したデバイスにおけるディスクリプタ情報は、図５に示すような構成になっている。
【００８６】
ここで、デバイス１０４は、スピーカに相当し、デバイスディスクリプタ５００と識別される。
【００８７】
デバイス１０６は、スキャナに相当し、デバイスディスクリプタ５０１と識別される。
【００８８】
デバイス１０８は、マウス付キーボードに相当し、デバイスディスクリプタ５０２と識別される。
ここで、デバイス１０８は後述する複合デバイスの体をなしており、図５に示すとおり、デバイスディスクリプタ５０２の下位層にコンフィギュレーションディスクリプタ５０２ａを有し、さらに下位層にキーボード機能を備えるインタフェースディスクリプタ５０２ａ（インタフェース０番）とマウス機能を備えるインタフェースディスクリプタ５０２ｂ（インタフェース１番）とを備えるディスクリプタ構成になっている。
【００８９】
デバイス１１０は、外部記憶装置に相当し、デバイスディスクリプタ５０３と識別される。
【００９０】
ここで、ＵＳＢデバイスを認識する際にＯＳが対応している複合デバイスについて説明をする。
通常、ディスクリプタ情報は、コンフィギュレーション１個に、１個のインタフェースで定義される１つの機能だけとなり、この機能の中には、いくつかのエンドポイントが含まれ、これがＵＳＢ通信の対象なる。しかし、複合デバイスでは、コンフィギュレーション１個に、インタフェースが複数定義され、それぞれ独立の動作をする機能ブロックごとにディスクリプタ情報が構成されており、複数の機能を持った複合のデバイスとして定義することができる。１つのデバイスディスクリプタの下に、コンフィギュレーションディスクリプタ内に含まれるインタフェース数に１以上の数値が記載され、インタフェースディスクリプタは、インタフェース自身の番号（例えば０、１、２など）が記載される。このように、１つのハードウェアに対し、複数のインタフェースを持つことで、動的にインタフェースを切り替えて異なった機能を持たせることもできる。
【００９１】
つまり、デバイス１０８は、複合デバイスとしてＯＳが認識可能であり、従来の周辺機器サーバシステムのディスクリプタ情報の構成は、周辺機器サーバに接続したデバイスは各々１つのディスクリプタを備え、さらに複合デバイス（デバイス１０８）においては、その具備する機能各々に対してもインタフェースディスクリプタをそれぞれ備えている（図５の階層参照）。
【００９２】
このような階層構成をクライアントＰＣ７００のＯＳが認識し、周辺機器サーバ７１０に接続している各デバイスに対し、デバイスディスクリプタごと（１つのデバイスごと）にコネクション確立手順とプラグアンドプレイ手順を接続したい台数回、繰り返す。このことで、クライアントＰＣがネットワーク７４０を介して、周辺機器サーバに接続した各デバイスとの間で入出力転送を開始できるようになる。
【００９３】
つぎに、本発明における周辺機器サーバシステムにおいて、図１に示す接続システムであった場合のディスクリプタ情報の構成について、図６を用いて説明する。
【００９４】
周辺機器サーバ１０２の接続情報制御部３０７で、クライアントＰＣ１００の接続ユーティリティ２０８から図４のステップＳ４０４のコネクション確立応答（「複数ＵＳＢデバイス接続」コマンド送信）を受けて、接続指定されたデバイス全体を１つの複合デバイスとして、ディスクリプタ情報を再構成する。
【００９５】
すなわち、従来の例と異なり、個々に独立したデバイスとその独立したデバイスに具備している機能も含め、クライアントから接続指定された任意の複数のデバイスを組み合わせて１つの複合デバイスとみなし、クライアントＰＣ１００とネットワーク１０３を介して、周辺機器サーバ１０２に接続したＵＳＢデバイス１０４、１０６、１０８および１１０と入出力転送が行えるようにする。
【００９６】
つまり、図６に示すとおり周辺機器サーバに接続しているデバイスの階層構成を再構成し、複合デバイスディスクリプタ６００とみなし、複合デバイスのコンフィギュレーションディスクリプタ６００ａの下位層に、スピーカのオーディオ機能のインタフェースディスクリプタ６００ａとスキャナのスキャン／イメージング機能のインタフェースディスクリプタ６００ｂとマウス付キーボードのキーボード機能のインタフェースディスクリプタ６００ｃとマウス付キーボードのマウス機能のインタフェースディスクリプタ６００ｄと外部記憶装置のストレージ機能のインタフェースディスクリプタ６００ｅとで構成され、各々のインタフェースディスクリプタに、インタフェースディスクリプタ６００ａがインタフェース０番、インタフェースディスクリプタ６００ｂがインタフェース１番、インタフェースディスクリプタ６００ｃがインタフェース２番、インタフェースディスクリプタ６００ｄがインタフェース３番、インタフェースディスクリプタ６００ｅがインタフェース４番に各々相当する構成になり、複合デバイスにおけるインタフェースディスクリプタと同じ構成になる。（図６の階層参照）。
【００９７】
また、これら各々のディスクリプタ下位層に位置するエンドポイントディスクリプタなどは、各インタフェースディスクリプタの下位層に順次構成される（図５、図６には図示しない）。
【００９８】
以上のことから、本発明の特徴である、周辺機器サーバが自身に接続しているデバイスのデバイス情報（ディスクリプタ情報）を取得するとともに、クライアントＰＣが通知する「複数ＵＳＢデバイス接続」要求コマンドに基づいて、ディスクリプタ情報を再構成することにより、通常のデバイス情報取得により構成されたディスクリプタ構成情報と周辺機器サーバ内で生成される再構成後のディスクリプタ構成情報の２つのディスクリプタ構成情報を周辺機器サーバ内に保持する。このうち一方の再構成後のディスクリプタ構成情報を利用することで、あたかもクライアントＰＣが接続を要求するデバイス全てを１つの複合デバイスと擬制（同様の形態）することが可能となり、クライアントＰＣのＯＳは、周辺機器サーバに接続を要求したデバイス全体を１つの複合デバイスと認識することができ、その結果、従来よりも短時間で、クライアントＰＣとネットワークを介して、周辺機器サーバに接続したデバイスとの間でデータ入出力転送を開始できるようになる（プラグアンドプレイ完了）ため、ユーザの利便性向上に有用である。
【産業上の利用可能性】
【００９９】
本発明は、クライアントがＩＰネットワークを介して複数の入出力デバイスを制御する用途に適用できる。
【符号の説明】
【０１００】
１００、１０１、７００    クライアントＰＣ
１０２、７１０      周辺機器サーバ
１０３、７４０      ネットワーク
１０４、１０６、１０８、１１０、７２０    ＵＳＢデバイス
１０５、１０７、１０９、１１１、７３０    接続ケーブル
２００、３００      ＣＰＵ
２０１      入力部
２０２、３０１      メモリ
２０３、３０２      記憶装置
２０４、３０３      通信Ｉ／Ｆ部
２０５、３０４      内部バス
２０６      ＯＳ
２０７、８００      アプリケーション
２０８、８１０      接続ユーティリティ
２０９、８２０      デバイスドライバ
２１０、８３０      ＵＳＢクラスドライバ
２１１、３０８、８４０、８７０      仮想ＵＳＢポートドライバ
２１２、３０９、８５０、８６０      通信制御部
３０５、８９０      デバイス検出部
３０６、８８０      デバイス情報取得部
３０７      接続情報制御部
【図１】
2015194826.tif 000003
【図２ａ】
2015194826.tif 000004
【図２ｂ】
2015194826.tif 000005
【図３ａ】
2015194826.tif 000006
【図３ｂ】
2015194826.tif 000007
【図４】
2015194826.tif 000008
【図５】
2015194826.tif 000009
【図６】
2015194826.tif 000010
【図７】
2015194826.tif 000011
【図８】
2015194826.tif 000012