特許第6241351号(P6241351)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サイレックス・テクノロジー株式会社の特許一覧

<>
  • 特許6241351-周辺機器サーバ 図000002
  • 特許6241351-周辺機器サーバ 図000003
  • 特許6241351-周辺機器サーバ 図000004
  • 特許6241351-周辺機器サーバ 図000005
  • 特許6241351-周辺機器サーバ 図000006
  • 特許6241351-周辺機器サーバ 図000007
  • 特許6241351-周辺機器サーバ 図000008
  • 特許6241351-周辺機器サーバ 図000009
  • 特許6241351-周辺機器サーバ 図000010
  • 特許6241351-周辺機器サーバ 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6241351
(24)【登録日】2017年11月17日
(45)【発行日】2017年12月6日
(54)【発明の名称】周辺機器サーバ
(51)【国際特許分類】
   G06F 13/14 20060101AFI20171127BHJP
   G06F 13/12 20060101ALI20171127BHJP
【FI】
   G06F13/14 330A
   G06F13/12 340F
【請求項の数】3
【全頁数】16
(21)【出願番号】特願2014-71404(P2014-71404)
(22)【出願日】2014年3月31日
(65)【公開番号】特開2015-194826(P2015-194826A)
(43)【公開日】2015年11月5日
【審査請求日】2017年3月15日
【早期審査対象出願】
(73)【特許権者】
【識別番号】500112146
【氏名又は名称】サイレックス・テクノロジー株式会社
(72)【発明者】
【氏名】林 栄植
【審査官】 桜井 茂行
(56)【参考文献】
【文献】 特開2007−279932(JP,A)
【文献】 米国特許出願公開第2007/0245055(US,A1)
【文献】 特開2001−222503(JP,A)
【文献】 特開2006−127085(JP,A)
【文献】 米国特許出願公開第2006/0095602(US,A1)
【文献】 "USBデバイスサーバ SX-DS-3000WAN",[Online],日本,サイレックス・テクノロジー株式会社,[2017年4月12日検索], <URL: http://www.silex.jp/products/usbdeviceserver/sxds3000wan.html>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10−13/14
G06F 13/38−13/42
(57)【特許請求の範囲】
【請求項1】
少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバであって、
前記USBデバイスの各デバイスを検出するデバイス検出部と、
前記検出された各デバイスのUSBディスクリプタ情報を取得し、当該USBディスクリプタ情報を保持するデバイス情報取得部と、
前記クライアントから通知を受けると、ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスの前記USBディスクリプタ情報を1つの複合デバイスとして再構成し、当該再構成したUSBディスクリプタ情報を保持し、前記クライアントへ当該再構成したUSBディスクリプタ情報を送信する接続情報制御部と、
前記クライアントと前記USBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信する仮想USBポートドライバと
前記クライアントとの間でデータ入出力を制御するUSBディスクリプタ情報を前記クライアントへ通知する通信制御部と
を備える周辺機器サーバ。
【請求項2】
少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバを備える周辺機器サーバシステムのデバイス制御方法であって、
前記USBデバイスの各デバイスを検出するデバイス検出ステップと、
前記検出された各デバイスのUSBディスクリプタ情報を取得し、当該USBディスクリプタ情報を保持するデバイス情報取得ステップと、
前記クライアントから通知を受けると、ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスの前記USBディスクリプタ情報を1つの複合デバイスとして再構成し、当該再構成したUSBディスクリプタ情報を保持し、前記クライアントへ当該再構成したUSBディスクリプタ情報を送信する制御ステップと、
前記クライアントと前記USBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信するステップと
前記クライアントとの間でデータ入出力を制御するUSBディスクリプタ情報を前記クライアントへ通知するステップと
を含むデバイス制御方法。
【請求項3】
少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバのプログラムあって、
前記USBデバイスの各デバイスを検出するデバイス検出ステップと、
前記検出された各デバイスのUSBディスクリプタ情報を取得し、当該USBディスクリプタ情報を保持するデバイス情報取得ステップと、
前記クライアントから通知を受けると、ユーザによる入力または前記クライアントに予め設定された情報に基づいて、前記クライアントが接続を希望する全てのデバイスの前記USBディスクリプタ情報を1つの複合デバイスとして再構成し、当該再構成したUSBディスクリプタ情報を保持し、前記クライアントへ当該再構成したUSBディスクリプタ情報を送信する制御ステップと、
前記クライアントと前記USBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信するステップと
前記クライアントとの間でデータ入出力を制御するUSBディスクリプタ情報を前記クライアントへ通知するステップと
を含む処理を周辺機器サーバに実行させるプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを通じてクライアントPCから周辺機器サーバを経由して周辺機器を利用する周辺機器サーバシステムに関するものである。
【背景技術】
【0002】
近年、ネットワークの普及により、PC(パーソナルコンピュータ)のネットワーク化だけでなく、PC周辺機器もネットワークに接続して利用したいというニーズが拡大していることは周知のとおりである。ところで、PCを周辺機器と接続するものとして最も普及しているUSB(Universal Serial Bus)規格は、ホストであるPCに直接接続することを前提としている。このUSB規格に則った周辺機器をネットワークを介して利用するために、周辺機器サーバシステムという技術が開示されている(非特許文献1)。
【0003】
非特許文献1に開示の周辺機器サーバシステムによれば,ネットワーク経由でクライアントPCから周辺機器を利用することができるため,周辺機器インタフェースの規格によるケーブル長の制限(例えば、USB規格の場合は5メートル)を受けることがない。また,クライアントPC側にインストールした専用ツールを用いて、接続対象の周辺機器を選択し接続する(クライアントPCとの間の仮想的な通信経路を予め確立する)という作業は、周辺機器サーバがクライアントPCと周辺機器とをネットワーク経由で接続する運用形態となる当該システムにとって、必須のものと言える。上記の専用ツール(以後、周辺機器接続ツールと呼ぶ)は、クライアントPCとネットワークを介して、周辺機器サーバに接続されている周辺機器とを接続し、あるいは切断することで利用するか開放するかを管理するものである。また、非特許文献1に開示の周辺機器接続ツールは、ユーザが接続したい周辺機器に対し、接続可能な周辺機器1台毎に接続要求を行い、ディスクリプタ内の情報をもとに、ネットワークを介して、クライアントPCと周辺機器との接続を行う。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】サイレックス・テクノロジー株式会社ホームページ http://www.silex.jp/products/usbdeviceserver/sxds3000wan.html
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1では、複数の周辺機器と接続したい場合に、その台数に応じて、周辺機器接続ツールが接続要求を行うことになり、利用者にとっては、周辺機器を利用開始できるまでの時間が長く感じられるため、ユーザビリティの低下につながり、利便性を妨げる1つの要因になっている。
【0006】
本発明は、上述の問題を解決するためになされたものであり、クライアントPCからネットワークを経由して、周辺機器サーバに接続された複数の周辺機器をユーザが利用できるようになるまでの時間をできるだけ短くすることで、ユーザの利便性向上を図ることを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明の一態様に係る周辺機器サーバは、少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバであって、USBデバイスの各デバイスを検出するデバイス検出部と、検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得部と、ユーザによる入力またはクライアントに予め設定された情報に基づいて、クライアントが接続を希望する全てのデバイスについてクライアントから通知を受けると、デバイス情報取得部で取得したデバイス情報を1つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、クライアントへ当該再構築したデバイス情報を送信する接続情報制御部と、クライアントとUSBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信するUSB仮想ポートドライバとクライアントとの間でデータ入出力を制御するデバイス情報をクライアントへ通知する通信制御部とを備える周辺機器サーバである。
【0008】
これによれば、周辺機器サーバが自身に接続しているデバイスのデバイス情報を取得し、それを再構成することにより、あたかもクライアントPCが接続を要求するデバイス全てを1つの複合デバイスと擬制(同様の形態)することが可能となり、クライアントPCのOSは、周辺機器サーバに接続を要求したデバイス全体を1つの複合デバイスと認識することができ、その結果、従来よりも短時間で、クライアントPCとネットワークを介して、周辺機器サーバに接続したデバイスとの間でデータ入出力転送を開始できるようになる。
【0009】
また、好ましくは、前記デバイス情報がUSBディスクリプタに記載の情報である周辺機器サーバである。
【0010】
これによれば、周辺機器サーバは、USB規格に準拠したデバイスから取得するデバイス情報を再構成して、クライアントPCが接続を要求するデバイス全てを1つの複合デバイスに擬制することが可能となる。
【0011】
また、本発明の一態様に係る制御方法は、少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバを備える周辺機器サーバシステムのデバイス制御方法であって、USBデバイスの各デバイスを検出するデバイス検出ステップと、検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得ステップと、ユーザによる入力またはクライアントに予め設定された情報に基づいて、クライアントが接続を希望する全てのデバイスについてクライアントから通知を受けると、デバイス情報取得部で取得したデバイス情報を1つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、クライアントへ当該再構築したデバイス情報を送信する制御ステップと、クライアントとUSBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信するステップとクライアントとの間でデータ入出力を制御するデバイス情報をクライアントへ通知するステップとを含むデバイス制御方法である。
【0012】
これによれば、上記の周辺機器サーバと同様の効果を奏する。
【0013】
また、本発明の一態様に係るプログラムは、少なくとも1以上のクライアントにネットワークを介して接続されるとともに、少なくとも2以上のUSBデバイスと接続された周辺機器サーバのプログラムあって、USBデバイスの各デバイスを検出するデバイス検出ステップと、検出された各デバイスのデバイス情報を取得し、当該デバイス情報を保持するデバイス情報取得ステップと、ユーザによる入力またはクライアントに予め設定された情報に基づいて、クライアントが接続を希望する全てのデバイスについてクライアントから通知を受けると、デバイス情報取得部で取得したデバイス情報を1つの複合デバイスとして再構成し、当該再構成したデバイス情報を保持し、クライアントへ当該再構築したデバイス情報を送信する制御ステップと、クライアントとUSBデバイスとの間でネットワークを介して、所定の形式でIPパケットを送受信するステップと、クライアントとの間でデータ入出力を制御するデバイス情報をクライアントへ通知するステップとを含む処理を周辺機器サーバに実行させるためのプログラムである。
【0014】
これによれば、上記の周辺機器サーバと同様の効果を奏する。
【発明の効果】
【0015】
本発明は、クライアントPCからネットワークを経由して、周辺機器サーバに接続されている複数の周辺機器が利用開始できるまでの時間をできるだけ短くすることにより、利便性の向上をはかることができる。
【図面の簡単な説明】
【0016】
図1】実施の形態にかかる周辺機器サーバの接続システム図
図2a】実施の形態にかかるクライアントPCのハードウェア構成図
図2b】実施の形態にかかるクライアントPCの機能ブロック図
図3a】実施の形態にかかる周辺機器サーバのハードウェア構成図
図3b】実施の形態にかかる周辺機器サーバの機能ブロック図
図4】実施の形態にかかる周辺機器サーバシステムにおけるコネクション確立とプラグアンドプレイ完了までのシーケンス図
図5】実施の形態にかかる周辺機器サーバにデバイス情報を取得した当初のディスクリプタ情報構成図
図6】実施の形態にかかる周辺機器サーバで再構成したディスクリプタ情報構成図
図7】従来の周辺機器サーバの接続システム図
図8】従来の周辺機器サーバの機能ブロック図
【発明を実施するための形態】
【0017】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0018】
なお、以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、構成要素、構成要素の接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。
【0019】
<従来の周辺機器サーバシステムの構成>
はじめに、従来の周辺機器サーバの接続システムについて、図7を用いて説明する。
【0020】
図7は、従来の周辺機器サーバの接続システムの構成図を示している。
【0021】
図7で示す周辺機器サーバシステムでは、周辺機器サーバ710にUSBケーブル730でUSBデバイス720が接続され、クライアントPC700はネットワーク740経由で、周辺機器サーバ710に接続されたUSBデバイス(プリンタ)720を制御する。
【0022】
つぎに従来の周辺機器サーバシステムについて説明する。
図8は、従来の周辺機器サーバシステムにおけるクライアントPC700および周辺機器サーバ710の機能ブロック図を示したものである。
【0023】
クライアントPC700は、一般的なパーソナルコンピュータと同様なハードウェア構成を備えており、CPU、入力部、表示部、メモリ、記憶装置、ネットワークI/Fなど(図示しない)が内部バスで接続されている。また、クライアントPC700は、周辺機器サーバ710を介してUSBデバイス720との間でTCP接続確立(以後、コネクション確立と呼ぶ)を行い、入出力データを送受信することが可能となる。
【0024】
クライアントPC700には、アプリケーション800と接続ユーティリティ810とデバイスドライバ820とUSBクラスドライバ830と仮想USBポートドライバ840と通信制御部1050がソフトウェア部品として存在している。この他のソフトウェア部品としては、図示しないOS(Operating System)などがあり、制御に必要な各種データと共に記憶装置に格納されている。これらソフトウェア部品及び各種データは、CPUの制御に従い、メモリ上に読み出されて各種制御が実行される。
【0025】
接続ユーティリティ810は、データの監視、制御などを担う。つまり、仮想USBポートドライバ840を介して、ネットワーク740経由で周辺機器サーバ710と送受信を行うことにより、周辺機器サーバ710に接続されたUSBデバイス720を認識する。
【0026】
接続ユーティリティ810は、さらにUSBデバイス720のデバイス情報を受信し、受信したデバイス情報をもとに、USBデバイス720とのデータ入出力に必要なドライバソフトウェア部品を特定する。
【0027】
デバイスドライバ820は、OSやアプリケーション800など上位層のソフトウェアの指示により、USBデバイス720に対する制御コマンドを生成する一方、この制御コマンドに対するUSBデバイスからの応答を待ち、周辺機器サーバ710から当該応答を上位層のソフトウェアへ通知する。
【0028】
USBクラスドライバ830は、それぞれのUSBデバイスが備えている機能(HID、プリンタ、ストレージなど)に応じたドライバであり、周辺機器サーバ710に接続されたUSBデバイスに対応するクラスドライバがロードされる。
【0029】
仮想USBポートドライバ840は、アプリケーションプログラム800、デバイスドライバ820、USBクラスドライバ830を経由するデータあるいはコマンドのやりとりについて、ネットワーク740を介して周辺機器サーバ710の仮想USBポートドライバ870との間で入出力制御を行う。また、ネットワーク740を介してUSBデバイス720との間で送受信されるIPパケットをカプセル化・デカプセル化することで、USBデバイス720がクライアントPC700に直結しているかのように動作することを提供する。
【0030】
通信制御部850は、仮想USBポートドライバ840から要求されるデータ入出力について、ネットワーク740を介して周辺機器サーバ710と送受信するソフトウェアである。仮想USBポートドライバ840からデータ入出力を要求された場合、USBデバイス720に対してTCP接続し、通信を開始する。また、通信を完了するとTCP接続を切断する。
【0031】
つぎに、従来の周辺機器サーバ710について説明する。
【0032】
周辺機器サーバ710のハードウェア構成は、CPU、メモリ、記憶装置、ネットワークI/F、USB規格に準拠したI/Fなど(図示しない)が内部バスで接続されている。
【0033】
周辺機器サーバ710は、通信制御部860、仮想USBポートドライバ870、デバイス情報取得部880、デバイス検出部890を備えている。これら各機能は、CPUの制御に従い、メモリ上に読み出されて各種制御を実行する。
【0034】
デバイス検出部890は、周辺機器サーバ710に接続されたデバイスを検出する機能部である。
【0035】
デバイス情報取得部880は、USBデバイス720からUSB規格に準拠したI/F(図示しない)を介して、後述するデバイス識別情報、デバイス構成情報及び機能識別情報を取得し、メモリに保持する機能部である。
【0036】
仮想USBポートドライバ870は、ネットワーク740を介して、クライアントPC700の仮想USBポートドライバ840との間で入出力制御を行う。また、ネットワーク740を介して送受信されるIPパケットをカプセル化・デカプセル化することで、USBデバイス720がクライアントPC700と直結しているかのように動作することを可能にするネットワーク仮想制御ソフトウェアである。
【0037】
通信制御部860は、仮想USBポートドライバ870が受け付けたデータ入出力要求(通信路の確保と解放)に応じてUSBデバイス720との通信路を制御する機能部である。
【0038】
ここで、デバイス情報取得部がUSBデバイスから取得するデバイス情報とは、デバイス識別情報、デバイス構成情報、機能識別情報などのデバイスに関する情報のことであり、データ・テーブルの形で階層的に記述されている。つまり、USBデバイスにおいてはUSBディスクリプタ情報に相当する。
【0039】
具体的には、デバイス識別情報とは、デバイスメーカーを識別するために製造したメーカー毎に割り当てられたベンダーID、機種ID・モデルを識別するために機種毎に割り当てられた製品ID、機器毎に割り当てられたシリアル番号、コンフィギュレーションの数などに相当し、これらはデバイスディスクリプタに記載されている。また、デバイス構成識別情報とは、デバイスが備えるインタフェースの数などに相当し、これらはコンフィギュレーションディスクリプタに記載され、多くのデバイスはコンフィギュレーションが1 つとなっている。さらに、機能識別情報とは、各デバイスが備える機能(たとえば、キーボード、マウスなどのインターフェイスクラス)情報、インタフェース自身の番号、そのインタフェースのバリエーションの番号、エンドポイントの数などに相当し、これらはインタフェースディスクリプタに記載されている。
また、デバイス情報には、その他にもエンドポイントのデータ転送種別・転送方向・パケットサイズ、ポーリング時間を記載したエンドポイントディスクリプタが含まれ、さらに必須ではないが文字列を格納するストリングディスクリプタ、ハイスピード対応USBデバイスで使用される各種ディスクリプタなども適宜含まれる。
【0040】
つぎに、本発明における周辺機器サーバシステムについて、詳細に説明する。
【0041】
<本発明における周辺機器サーバシステムの構成>
図1は、本発明を実現するための周辺機器サーバシステムの接続構成図を示している。
【0042】
クライアンPC100とクライアントPC101と周辺機器サーバ102とUSBデバイス104、106、108および110から構成される。
【0043】
図1で示すように、周辺機器サーバ102に複数のUSBデバイス104、106、108および110をUSB規格のインタフェースに準拠した接続ケーブル105、107、109、111で接続しており、クライアントPC100、101は、有線又は無線によってネットワーク103を介して接続している。クライアントPCは、システムの実態により、1つでも複数でも構わない。
【0044】
つぎに、周辺機器サーバシステムを構成する各装置について説明する。
<クライアントPC100の構成>
クライアントPC100のハードウェア構成について、図2aを用いて説明する。
【0045】
クライアントPC100は、CPU200、入力部201、メモリ202、記憶装置203、通信I/F部204から構成され、各々が内部バス205で接続されている。
【0046】
CPU200は、所定の制御プログラムを実行するプロセッサであり、クライアントPC100を全体的に制御する。
【0047】
入力部201は、各種入力、ユーザの指示操作などを行なうための操作部であり、例えばキーボードやマウスなどで構成される。
【0048】
メモリ202は、ROM(Read Only Memory)およびRAM(Random Access Memory)で構成される記憶領域であり、所定のプログラムやデータを格納する。
【0049】
記憶装置203は、OS(Operating System)206、アプリケーションプログラム207、接続ユーティリティ208、デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211、通信制御部212を備えたソフトウェアプログラムを格納する。
【0050】
通信I/F部204は、IEEE802.3規格に準拠した有線ネットワーク、またはIEEE802.11規格に準拠した無線ネットワークなど、ネットワーク103に対応したネットワークパケットによる送受信や通信制御を行うためのインタフェースであり、周辺機器サーバ102とデータ通信を行うことで、クライアントPC100から入出力データを送受信することが可能となる。
【0051】
つぎに、クライアントPC100の機能ブロックについて、図2bを用いて説明する。
【0052】
デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211は、接続ユーティリティ208からUSBデバイス104、106、108および110のデバイス情報を取得、登録することにより、動的に生成されるドライバである。
【0053】
アプリケーションプログラム207は、デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211の各ドライバソフトウェア部品が生成された後、USBデバイス104、106、108および110に対して、デバイスドライバ209、USBクラスドライバ210、仮想USBポートドライバ211を介して、通信制御部212にデータの入出力を要求するアプリケーションソフトウェアである。
【0054】
接続ユーティリティ208は、OS206が起動している間、常に待機および動作しているソフトウェアである。ネットワーク103上にある周辺機器サーバ102と送受信を行うことにより、周辺機器サーバ102に接続されたUSBデバイス104、106、108および110を認識し、さらにそのデバイス情報を受信してこれをもとに、デバイス104、106、108および110とのデータ入出力に必要なドライバを特定する。
【0055】
デバイスドライバ209は、OS206やアプリケーションプログラム207など上位層のソフトウェアの指示により、USBデバイス104、106、108および110に対する制御コマンドを生成し、この制御コマンドに対するUSBデバイスからの応答を待ち、周辺機器サーバ102を経由したこのUSBデバイス応答を上位層のソフトウェアへ通知するソフトウェアである。
【0056】
USBクラスドライバ210は、プラグアンドプレイイベントを生成し、また、制御コマンドを送受信するためのUSBポートを作成する。また、その上位にデバイスドライバ209をロードし、さらに、デバイスドライバ209で生成される制御コマンドをUSBパケットに変換し、またはUSBパケットを制御コマンドに変換するソフトウェアである。
【0057】
仮想USBポートドライバ211は、アプリケーションプログラム207、デバイスドライバ209、USBクラスドライバ210を経由するデータあるいはコマンドのやりとりについて、ネットワーク103を介して周辺機器サーバ102の仮想USBポートドライバ308との間で入出力制御を行う。また、ネットワーク103を介してUSBデバイスとの間で送受信されるIPパケットをカプセル化・デカプセル化することで、クライアントPC100がUSBデバイス104、106、108および110に直結しているかのように動作することを提供するネットワーク仮想制御ソフトウェアである。
【0058】
通信制御部212は、仮想USBポートドライバ211から要求されるデータ入出力について、通信I/F部経由で、ネットワークを介して周辺機器サーバ102と送受信するソフトウェアである。仮想USBポートドライバ211からデータ入出力を要求された場合、USBデバイス104、106、108および110に対してTCP接続し、通信を開始する。また、通信を完了するとTCP接続を切断する。
【0059】
<周辺機器サーバ102の構成>
つぎに、周辺機器サーバ102のハードウェア構成について、図3aを用いて説明する。
【0060】
周辺機器サーバ102は、CPU300、メモリ301、記憶装置302、通信I/F部303などから構成されており、これらが内部バス304で接続されている。
【0061】
CPU300は、所定の制御プログラムを実行するプロセッサであり、周辺機器サーバ102を全体的に制御する。
【0062】
メモリ301は、ROMおよびRAMで構成される記憶領域であり、所定のプログラムやデータを格納する。
【0063】
記憶装置302は、デバイス検出部305、デバイス情報取得部306、接続情報制御部307、通信制御部308を備えた機能ブロックなどが格納されている。
【0064】
通信I/F部303は、IEEE802.3規格に準拠した有線ネットワーク、またはIEEE802.11規格に準拠した無線ネットワークなど、ネットワーク103に対応したネットワークパケットによる送受信や通信制御を行うためのインタフェースであり、ネットワーク103を介することで、クライアントPC100とUSBデバイス104、106、108および110との間で入出力データを送受信することが可能となる。
【0065】
つぎに、周辺機器サーバ102の機能ブロックについて、図3bを用いて説明する。
【0066】
デバイス検出部305は、周辺機器サーバ102に接続されたデバイスを検出する機能部である。
【0067】
デバイス情報取得部306は、USBデバイス104、106、108および110から通信I/F部303を介してデバイス識別情報、デバイス構成情報および機能識別情報を取得し、メモリ301に保持する機能部である。
【0068】
接続情報制御部307は、クライアントPC100からの要求に応じて、デバイス情報取得部306が取得したUSBデバイス104、106、108および110のデバイス識別情報、デバイス構成情報及び機能識別情報をもとに、後述する情報の再構成を行い、メモリ301に保持し、クライアントPC100に対して通知し、クライアントPC100からのデータ入出力要求を受け付ける機能部であり、本発明の最も重要な構成要素である。
【0069】
仮想USBポートドライバ308は、上位層の接続情報制御部307へデータ入出力を行い、ネットワーク103を介して、クライアントPC100の仮想USBポートドライバ211との間で入出力制御を行う。また、ネットワーク103を介して送受信されるIPパケットをカプセル化・デカプセル化することで、クライアントPC100と直結しているかのように動作することを提供するネットワーク仮想制御ソフトウェアである。
【0070】
通信制御部309は、仮想USBポートドライバ308が受け付けたデータ入出力要求(通信路の確保と解放)に応じてUSBデバイス104、106、108および110との通信路を制御する機能部である。
【0071】
上述したデバイス情報取得部306と接続情報制御部307によって、クライアントPC100から受信するデータ入出力要求に対して、プロトコル上に指定されているUSBデバイス104、106、108および110を識別するための情報(デバイス識別情報)とUSBデバイス104、106、108および110が備える各機能の情報(機能識別情報)を基に判断し、通信制御部309を介して、クライアントPC100がデータ入出力を求めるUSBデバイス104、106、108および110の機能を特定する。これによって、1台または複数のデバイスとの間でデータ入出力の制御が可能となる。
【0072】
図4を用いて、クライアントPC100と周辺機器サーバ102とUSBデバイス(デバイス104、106、108および110)との間のコネクション確立とプラグアンドプレイ完了までのシーケンス図を説明する。
【0073】
ステップS400では、デバイス検出部305が周辺機器サーバに接続されたデバイスの検出を行う。デバイス情報取得部306は、デバイス検出部305で検出したデバイス情報を取得し、メモリ301に保持する。
【0074】
ステップS401では、クライアントPC100の接続ユーティリティ208を介して周辺機器サーバ102と周辺機器サーバ102に接続しているUSBデバイスに対し、ブロードキャスト通信、マルチキャスト通信または特定の周辺機器サーバに接続されているUSBデバイスに対するユニキャスト通信を行い、各デバイスのデバイス情報を取得し、メモリ202に保持する。
【0075】
また、デバイス情報の取得は、上述の各種通信からではなく、サーバにあらかじめ使用可能であるデバイス情報を製品出荷の段階でメモリ301に書き込んでおいてもよいし、メモリ301に書き込まれた初期出荷時からの内容にアップデート処理によって行われてもよい。
【0076】
ステップS402では、クライアントPC100の接続ユーティリティ208からユーザが利用したいデバイスの指示を行う、あるいは接続ユーティリティ208に予め設定されたデバイス情報をもとに、周辺機器サーバ102に対し、クライアントPCが接続を希望する複数のUSBデバイスを特定した「複数USBデバイス接続」要求コマンドを送信することで指定されたデバイス全体を一つとするコネクション確立要求を行う。
【0077】
ステップS403では、周辺機器サーバ102の接続情報制御部307が、クライアントPC100の仮想USBポートドライバ211へ「複数USBデバイス接続」要求コマンドに対する応答を通知する。
【0078】
ステップS404では、クライアントPC100の仮想USBポートドライバ211が、周辺機器サーバ102からの「複数USBデバイス接続」要求コマンドの応答を受け、接続しようとするすべてのデバイスに対し、まとめて(一度に)コネクション確立の完了を通知する。
【0079】
ステップS405では、周辺機器サーバ102の接続情報制御部307が、仮想USBポートドライバ308を介して、ステップS404のクライアントPC100からの通知を受けて、取得しているデバイス情報を後で詳細に説明するように、1つの複合デバイスとしてデバイス情報を再構成し、メモリ301に保持する。
【0080】
ステップS406では、周辺機器サーバ102の接続情報制御部307が、ステップS405で再構成されたデバイス情報をクライアントPC100に応答する。
【0081】
ステップS407では、クライアントPC100の仮想USBポートドライバ211がステップS406での応答を受けたのち、OS206がデバイス情報に対応するデバイスドライバ209、USBクラスドライバ210をメモリ202へロード(搭載)し、仮想USBポートドライバ211との間でプラグアンドプレイ(Plug and Play)を完了する。
【0082】
このように、1つの複合デバイスとして、接続したいデバイスとの間でプラグアンドプレイを完了し、USBデバイスの利用が可能となる。
【0083】
ディスクリプタ情報を再構成することについて説明する。
<ディスクリプタ情報の再構成について>
【0084】
まず、従来の周辺機器サーバシステムにおいて、図1に示す接続システムであった場合のディスクリプタ情報の構成について、図5を用いて説明する。
【0085】
クライアントPCから接続ユーティリティを経由して、従来の周辺機器サーバに接続したデバイスにおけるディスクリプタ情報は、図5に示すような構成になっている。
【0086】
ここで、デバイス104は、スピーカに相当し、デバイスディスクリプタ500と識別される。
【0087】
デバイス106は、スキャナに相当し、デバイスディスクリプタ501と識別される。
【0088】
デバイス108は、マウス付キーボードに相当し、デバイスディスクリプタ502と識別される。
ここで、デバイス108は後述する複合デバイスの体をなしており、図5に示すとおり、デバイスディスクリプタ502の下位層にコンフィギュレーションディスクリプタ502aを有し、さらに下位層にキーボード機能を備えるインタフェースディスクリプタ502a(インタフェース0番)とマウス機能を備えるインタフェースディスクリプタ502b(インタフェース1番)とを備えるディスクリプタ構成になっている。
【0089】
デバイス110は、外部記憶装置に相当し、デバイスディスクリプタ503と識別される。
【0090】
ここで、USBデバイスを認識する際にOSが対応している複合デバイスについて説明をする。
通常、ディスクリプタ情報は、コンフィギュレーション1個に、1個のインタフェースで定義される1つの機能だけとなり、この機能の中には、いくつかのエンドポイントが含まれ、これがUSB通信の対象なる。しかし、複合デバイスでは、コンフィギュレーション1個に、インタフェースが複数定義され、それぞれ独立の動作をする機能ブロックごとにディスクリプタ情報が構成されており、複数の機能を持った複合のデバイスとして定義することができる。1つのデバイスディスクリプタの下に、コンフィギュレーションディスクリプタ内に含まれるインタフェース数に1以上の数値が記載され、インタフェースディスクリプタは、インタフェース自身の番号(例えば0、1、2など)が記載される。このように、1つのハードウェアに対し、複数のインタフェースを持つことで、動的にインタフェースを切り替えて異なった機能を持たせることもできる。
【0091】
つまり、デバイス108は、複合デバイスとしてOSが認識可能であり、従来の周辺機器サーバシステムのディスクリプタ情報の構成は、周辺機器サーバに接続したデバイスは各々1つのディスクリプタを備え、さらに複合デバイス(デバイス108)においては、その具備する機能各々に対してもインタフェースディスクリプタをそれぞれ備えている(図5の階層参照)。
【0092】
このような階層構成をクライアントPC700のOSが認識し、周辺機器サーバ710に接続している各デバイスに対し、デバイスディスクリプタごと(1つのデバイスごと)にコネクション確立手順とプラグアンドプレイ手順を接続したい台数回、繰り返す。このことで、クライアントPCがネットワーク740を介して、周辺機器サーバに接続した各デバイスとの間で入出力転送を開始できるようになる。
【0093】
つぎに、本発明における周辺機器サーバシステムにおいて、図1に示す接続システムであった場合のディスクリプタ情報の構成について、図6を用いて説明する。
【0094】
周辺機器サーバ102の接続情報制御部307で、クライアントPC100の接続ユーティリティ208から図4のステップS404のコネクション確立応答(「複数USBデバイス接続」コマンド送信)を受けて、接続指定されたデバイス全体を1つの複合デバイスとして、ディスクリプタ情報を再構成する。
【0095】
すなわち、従来の例と異なり、個々に独立したデバイスとその独立したデバイスに具備している機能も含め、クライアントから接続指定された任意の複数のデバイスを組み合わせて1つの複合デバイスとみなし、クライアントPC100とネットワーク103を介して、周辺機器サーバ102に接続したUSBデバイス104、106、108および110と入出力転送が行えるようにする。
【0096】
つまり、図6に示すとおり周辺機器サーバに接続しているデバイスの階層構成を再構成し、複合デバイスディスクリプタ600とみなし、複合デバイスのコンフィギュレーションディスクリプタ600aの下位層に、スピーカのオーディオ機能のインタフェースディスクリプタ600aとスキャナのスキャン/イメージング機能のインタフェースディスクリプタ600bとマウス付キーボードのキーボード機能のインタフェースディスクリプタ600cとマウス付キーボードのマウス機能のインタフェースディスクリプタ600dと外部記憶装置のストレージ機能のインタフェースディスクリプタ600eとで構成され、各々のインタフェースディスクリプタに、インタフェースディスクリプタ600aがインタフェース0番、インタフェースディスクリプタ600bがインタフェース1番、インタフェースディスクリプタ600cがインタフェース2番、インタフェースディスクリプタ600dがインタフェース3番、インタフェースディスクリプタ600eがインタフェース4番に各々相当する構成になり、複合デバイスにおけるインタフェースディスクリプタと同じ構成になる。(図6の階層参照)。
【0097】
また、これら各々のディスクリプタ下位層に位置するエンドポイントディスクリプタなどは、各インタフェースディスクリプタの下位層に順次構成される(図5図6には図示しない)。
【0098】
以上のことから、本発明の特徴である、周辺機器サーバが自身に接続しているデバイスのデバイス情報(ディスクリプタ情報)を取得するとともに、クライアントPCが通知する「複数USBデバイス接続」要求コマンドに基づいて、ディスクリプタ情報を再構成することにより、通常のデバイス情報取得により構成されたディスクリプタ構成情報と周辺機器サーバ内で生成される再構成後のディスクリプタ構成情報の2つのディスクリプタ構成情報を周辺機器サーバ内に保持する。このうち一方の再構成後のディスクリプタ構成情報を利用することで、あたかもクライアントPCが接続を要求するデバイス全てを1つの複合デバイスと擬制(同様の形態)することが可能となり、クライアントPCのOSは、周辺機器サーバに接続を要求したデバイス全体を1つの複合デバイスと認識することができ、その結果、従来よりも短時間で、クライアントPCとネットワークを介して、周辺機器サーバに接続したデバイスとの間でデータ入出力転送を開始できるようになる(プラグアンドプレイ完了)ため、ユーザの利便性向上に有用である。
【産業上の利用可能性】
【0099】
本発明は、クライアントがIPネットワークを介して複数の入出力デバイスを制御する用途に適用できる。
【符号の説明】
【0100】
100、101、700 クライアントPC
102、710 周辺機器サーバ
103、740 ネットワーク
104、106、108、110、720 USBデバイス
105、107、109、111、730 接続ケーブル
200、300 CPU
201 入力部
202、301 メモリ
203、302 記憶装置
204、303 通信I/F部
205、304 内部バス
206 OS
207、800 アプリケーション
208、810 接続ユーティリティ
209、820 デバイスドライバ
210、830 USBクラスドライバ
211、308、840、870 仮想USBポートドライバ
212、309、850、860 通信制御部
305、890 デバイス検出部
306、880 デバイス情報取得部
307 接続情報制御部

図1
図2a
図2b
図3a
図3b
図4
図5
図6
図7
図8