(57)【特許請求の範囲】
【請求項１】
周辺機器が接続可能な周辺機器サーバとコンピュータとがネットワークで接続され，当該コンピュータから当該周辺機器を利用可能な周辺機器利用システムにおける当該周辺機器サーバであって，
（１）周辺機器を接続する周辺機器インタフェースと，
（２）前記周辺機器サーバを常にユニークに特定することができる情報を取得する周辺機器サーバ情報取得手段と，
（３）前記周辺機器インタフェースに固定的に関連付けられた情報を取得する周辺機器インタフェース情報取得手段と，
（４）前記周辺機器の機器情報を取得する機器情報取得手段と，
（５）前記周辺機器インタフェースに接続された周辺機器が自身の識別情報（周辺機器識別情報）を備えているかどうかを判断する，周辺機器識別情報存否判断手段，とを備えており，
更に前記周辺機器サーバは，前記周辺機器識別情報存否判断手段が，周辺機器識別情報を備えていないと判断した場合動作する手段であって，
（６−ａ）前記周辺機器サーバ情報取得手段と前記周辺機器インタフェース情報取得手段とによって取得されたそれぞれの情報に基づき前記周辺機器利用システム内において常にユニークであり不変な第１の仮想識別情報を生成する第１の仮想識別情報生成手段，
（６−ｂ）前記周辺機器から取得した前記機器情報に基づき第２の仮想識別情報を生成する第２の仮想識別情報生成手段，および
（６−ｃ）前記コンピュータから送信された前記周辺機器の識別情報の問い合わせに対し，生成した前記第１の仮想識別情報および前記第２の仮想識別情報を応答する周辺機器識別情報応答手段，を備え，
前記第１の仮想識別情報および前記第２の仮想識別情報は，前記コンピュータにおいて，前記周辺機器に対する，常に固定の論理通信経路を生成するために用いられ，かつ，
前記機器情報は前記周辺機器のデバイスディスクリプタであり，
前記第２の仮想識別情報生成手段は，前記ディスクリプタのiManufacturer情報と
iProduct情報を取得し，当該取得した情報に基づいて不変の値を特定し，当該不変の値を第２の仮想識別情報として生成する，
ことを特徴とする周辺機器サーバ。
【請求項２】
周辺機器が接続可能な周辺機器サーバとコンピュータとがネットワークで接続され，当該コンピュータから当該周辺機器を利用可能な周辺機器利用システムにおける当該周辺機器サーバを，
（１）前記周辺機器サーバを常にユニークに特定することができる情報を取得する周辺機器サーバ情報取得手段と，
（２）前記周辺機器サーバの備える周辺機器インタフェースに固定的に関連付けられた情報を取得する周辺機器インタフェース情報取得手段と，
（３）前記周辺機器の機器情報を取得する機器情報取得手段と，
（４）前記周辺機器インタフェースに接続された周辺機器が自身の識別情報（周辺機器識別情報）を備えているかどうかを判断する，周辺機器識別情報存否判断手段と，
前記周辺機器識別情報存否判断手段が，周辺機器識別情報を備えていないと判断した場合動作する手段であって，
（５−ａ）前記周辺機器サーバ情報取得手段と前記周辺機器インタフェース情報取得手段とによって取得されたそれぞれの情報に基づき前記周辺機器利用システム内において常にユニークであり不変な第１の仮想識別情報を生成する第１の仮想識別情報生成手段，
（５−ｂ）前記周辺機器から取得した前記機器情報に基づき第２の仮想識別情報を生成する第２の仮想識別情報生成手段，および
（５−ｃ）前記コンピュータから送信された前記周辺機器の識別情報の問い合わせに対し，生成した前記第１の仮想識別情報および前記第２の仮想識別情報を応答する周辺機器識別情報応答手段，
として機能させるプログラムであり，
前記第１の仮想識別情報および前記第２の仮想識別情報は，前記コンピュータにおいて，前記周辺機器に対する，常に固定の論理通信経路を生成するために用いられ，かつ
前記機器情報は前記周辺機器のデバイスディスクリプタであり，
前記第２の仮想識別情報生成手段は，前記ディスクリプタのiManufacturer情報と
iProduct 情報を取得し，当該取得した情報に基づいて不変の値を特定し，当該不変の値を第２の仮想識別情報として生成する
ことを特徴とするプログラム。
【請求項３】
周辺機器が接続可能な周辺機器サーバとコンピュータとがネットワークで接続され，当該コンピュータから当該周辺機器を利用可能な周辺機器利用システムであって，
前記周辺機器サーバは，
（１）周辺機器を接続する周辺機器インタフェースと，
（２）前記周辺機器サーバを常にユニークに特定することができる情報を取得する周辺機器サーバ情報取得手段と，
（３）前記周辺機器インタフェースに固定的に関連付けられた情報を取得する周辺機器インタフェース情報取得手段と，
（４）前記周辺機器の機器情報を取得する機器情報取得手段と，
（５）周辺機器インタフェースに接続された周辺機器が自身の識別情報（周辺機器識別情報）を備えているかどうかを判断する，周辺機器識別情報存否判断手段と，
前記周辺機器識別情報存否判断手段が，周辺機器識別情報を備えていないと判断した場合動作する手段であって，
（６−ａ）前記周辺機器サーバ情報取得手段と前記周辺機器インタフェース情報取得手段とによって取得されたそれぞれの情報に基づき前記周辺機器利用システム内において常にユニークであり不変な第１の仮想識別情報を生成する第１の仮想識別情報生成手段，
（６−ｂ）前記周辺機器から取得した前記機器情報に基づき第２の仮想識別情報を生成する第２の仮想識別情報生成手段，および
（６−ｃ）前記コンピュータから送信された前記周辺機器の識別情報の問い合わせに対し，生成した前記第１の仮想識別情報および前記第２の仮想識別情報を応答する周辺機器識別情報応答手段，を備え，
前記コンピュータは，
（７）前記周辺機器サーバに向けて，周辺機器識別情報の問い合わせを送信する手段と，
（８）前記問い合わせに対する応答として，前記周辺機器サーバから送信された周辺機器識別情報を受信する手段と，
（９）受信した周辺機器識別情報に基づいて，前記周辺機器に対する，常に固定の論理通信経路を生成する手段と，
を備え，
前記機器情報は前記周辺機器のデバイスディスクリプタであり，
前記第２の仮想識別情報生成手段は，前記ディスクリプタのiManufacturer情報と
iProduct情報を取得し，当該取得した情報に基づいて不変の値を特定し，当該不変の値を第２の仮想識別情報として生成する，
ことを特徴とする周辺機器利用システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は，デバイスサーバシステムにおいてデバイスを識別する技術に関し，特に，デバイス自身が自己を識別させるための情報（デバイス識別情報）を備えていない場合に適用可能なものである。
【背景技術】
【０００２】
ＵＳＢ機器（以下，ＵＳＢデバイス）に代表される周辺機器をネットワークで共有するデバイスサーバシステムという技術が知られている。デバイスサーバシステムとは，図１に示すようなシステムであり，ＰＣ１０１などのコンピュータとＵＳＢデバイスであるプリンタＡ１０３およびプリンタＢ１０４が接続されたデバイスサーバ１０２とがネットワーク接続されている環境において，ＰＣ１０１からネットワーク越しに当該ＵＳＢデバイスを利用させることのできるシステムである。
【０００３】
図１でも示すとおり，通常，デバイスサーバ１０２には複数のＵＳＢデバイスが接続可能であり，ＰＣ１０１はネットワークを通じてこれらＵＳＢデバイスを利用することができる（詳細は非特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１４０３６号公報
【０００５】
【非特許文献１】サイレックス・テクノロジー株式会社  ホームページ＜http://www.silex.jp/products/usbdeviceserver/index.html?init＞
【０００６】
ところで，デバイスサーバシステムにおいて複数のＵＳＢデバイスを利用する場合，以下のような問題があった。
【０００７】
通常，ＵＳＢデバイスは，製造時に自身に割り当てられたユニークな番号であるシリアル番号（以下で記載のデバイス識別情報と同義）を，自身の備える不揮発性メモリに保存している。ＰＣ１０１上で動作し，ＵＳＢデバイスを制御するドライバは，このシリアル番号を用いて生成された論理的な通信経路（以下，論理通信経路）によって，通信する相手(ＵＳＢデバイス)を特定し，通信を行う。
【０００８】
しかし，ＵＳＢデバイスによっては，コスト等の事情から不揮発性メモリを搭載していない，即ち，シリアル番号を持たないものも存在する。そこで従来は，このようなＵＳＢデバイスを識別する手段として，ＵＳＢデバイスがデバイスサーバ１０２に接続された際，デバイスサーバ１０２によって仮想のシリアル番号（以下，第１の仮想シリアル番号と称し，その理由は後述する。）が生成され，ドライバとＵＳＢデバイス間の通信は，この第１の仮想シリアル番号に基づいて生成された論理通信経路を用いて行われていた。なお，後述する本願発明においては，この仮想シリアル番号のほか，他の仮想シリアル番号も用いるため，第１の仮想シリアル番号と記載している。
【０００９】
上述した第１の仮想シリアル番号は，ＵＳＢデバイスの接続台数や接続順，および接続ポートなどの情報を元に生成されるものであるため，ＵＳＢデバイスの電源を入れる順序やデバイスサーバ１０２がＵＳＢデバイスを認識する順序などによって，その都度，変化してしまうことがあった。
【００１０】
このような動作は，複数のＵＳＢデバイスをそれぞれ区別して利用したいユーザにとっては，大きな問題となる。特に，同一機種のＵＳＢデバイスを複数使用する場合，その区別をすることは事実上不可能であった。
【００１１】
例えば，シリアル番号を持たない複数の同じ機種のＵＳＢプリンタが接続されている場合，プリンタのステータスを監視するアプリケーションが表示するステータス情報が何れのプリンタのものかは一見しただけではわからない。また，表示されている情報とプリンタの対応関係が判明したとしても，次回の起動時に同じ対応関係になるとは限らないという問題もあった。
【００１２】
特許文献１に開示の技術は，シリアル番号を持たないＵＳＢデバイスが接続された際，上述した第１の仮想シリアル番号を生成するものであるが，この仮想シリアル番号が，常にユニーク（一意）で，固定的であることが特徴となるものである。これにより，ＵＳＢデバイスの電源を入れなおしたとしても，常に固定的な論理通信経路が生成され，ドライバからは，常に希望するＵＳＢデバイスへ通信が行えることを意図したものである。
【００１３】
具体的には図２に示すとおり，ＵＳＢデバイスが接続されたデバイスサーバ１０２のＭＡＣアドレスと，デバイスサーバ１０２のＵＳＢポートに固定的に割り当てられている番号とを組みわせたものを第１の仮想シリアル番号として用いる。
【００１４】
ところが，特許文献１に開示の技術は，常に一意の第１の仮想シリアル番号を生成できるものの，これをもとに生成される論理通信経路が，常に固定であるとは限らなかった。つまり，常に固定的な論理通信経路を生成するには，第１の仮想シリアル番号が固定なだけでは十分でなかったわけである。
【００１５】
図３はこのような問題の具体例である。本図は，非特許文献１に開示のデバイスサーバシステムにおいてデータ通信経路を図示したものであり，ＰＣ１０１のドライバからデバイスサーバ１０２に接続されたプリンタＡ１０３およびプリンタＢ１０４を使う場面を想定したものである。
【００１６】
デバイスサーバシステムは，本図で示す仮想ドライバが大きな役割を果たしている。この仮想ドライバが，ドライバが送受信可能なＵＳＢパケットとデバイスサーバが送受信可能なネットワークパケットとを相互に変換することにより，ＰＣ１０１からデバイスサーバ１０２に接続されたデバイス（プリンタＡ１０３およびプリンタＢ１０４）が利用できるわけである。
【００１７】
図３の論理通信経路Ａおよび論理通信経路Ｂは，本来は，プリンタのシリアル番号をもとにドライバによって生成されるものである。特許文献１では，デバイスサーバ１０２のＭＡＣアドレスである１１２２３３４４５５６６と，デバイスサーバ１０２が備えるＵＳＢポートの物理的（固定的）番号である０１および０２を組みわせた第１の仮想シリアル番号をもとに生成していた。
【００１８】
図３の上側は，論理通信経路ＡがプリンタＡ１０３に対応しており，論理通信経路ＢがプリンタＢ１０４に対応している様子を示している。つまり，ドライバが論理通信経路Ａを指定して通信することでプリンタＡ１０３と通信が行え，同様に論理通信経路Ｂを指定することでプリンタＢ１０４と通信が行えるわけである。
【００１９】
しかしながら，特許文献１に開示の発明だけでは，毎回このような対応関係とならない場合もあった。つまり，図３の下側に示すように，論理通信経路ＢがプリンタＡ１０３に対応し，論理通信経路ＡがプリンタＢ１０４に対応することもあったわけである。
【００２０】
このようになる原因は，ドライバが固定的な論理通信経路を生成する際に必要な情報が欠落していたことにある。すなわち，デバイスサーバ１０２のＭＡＣアドレスとデバイスサーバ１０２の物理的ＵＳＢポート番号に基づいて生成された第１の仮想シリアル番号だけでは，常に固定的な論理通信経路を生成できなかったわけである。
【発明の概要】
【発明が解決しようとする課題】
【００２１】
本願発明の目的は，上述した問題を解決するためのものである。すなわち，シリアル番号を持たない複数の周辺機器が接続された場合であっても，常に当該周辺機器を一意に識別できる装置，プログラムおよびシステムを提供することである。
【課題を解決するための手段】
【００２２】
本願発明にかかる第１の形態は，周辺機器が接続可能な周辺機器サーバとコンピュータとがネットワークで接続され，当該コンピュータから当該周辺機器を利用可能な周辺機器利用システムにおける当該周辺機器サーバであって，周辺機器を接続する周辺機器インタフェースと，周辺機器サーバを常にユニークに特定することができる情報を取得する周辺機器サーバ情報取得手段と，周辺機器インタフェースに固定的に関連付けられた情報を取得する周辺機器インタフェース情報取得手段と，周辺機器の機器情報を取得する機器情報取得手段と，周辺機器インタフェースに接続された周辺機器が自身の識別情報（周辺機器識別情報）を備えているかどうかを判断する，周辺機器識別情報存否判断手段，とを備えており，更に周辺機器サーバは，周辺機器識別情報存否判断手段が，周辺機器識別情報を備えていないと判断した場合動作する手段であって，周辺機器サーバ情報取得手段と周辺機器インタフェース情報取得手段とによって取得されたそれぞれの情報に基づき周辺機器利用システム内において常にユニークであり不変な第１の仮想識別情報を生成する第１の仮想識別情報生成手段，周辺機器から取得した機器情報に基づき第２の仮想識別情報を生成する第２の仮想識別情報生成手段，およびコンピュータから送信された周辺機器の識別情報の問い合わせに対し，生成した第１の仮想識別情報および第２の仮想識別情報を応答する周辺機器識別情報応答手段，を備える。
【００２３】
さらに好ましくは，第１の仮想識別情報および第２の仮想識別情報は，コンピュータにおいて，周辺機器に対する，常に固定の論理通信経路を生成するために用いられ，かつ，
機器情報は周辺機器のデバイスディスクリプタであり，第２の仮想識別情報生成手段は，ディスクリプタのiManufacturer情報とiProduct情報を取得し，当該取得した情報に基づいて不変の値を特定し，当該不変の値を第２の仮想識別情報として生成することを特徴とする。
【００２４】
本願発明にかかる第２の形態は，周辺機器が接続可能な周辺機器サーバとコンピュータとがネットワークで接続され，当該コンピュータから当該周辺機器を利用可能な周辺機器利用システムにおける当該周辺機器サーバを，周辺機器サーバを常にユニークに特定することができる情報を取得する周辺機器サーバ情報取得手段と，周辺機器サーバの備える周辺機器インタフェースに固定的に関連付けられた情報を取得する周辺機器インタフェース情報取得手段と，周辺機器の機器情報を取得する機器情報取得手段と，周辺機器インタフェースに接続された周辺機器が自身の識別情報（周辺機器識別情報）を備えているかどうかを判断する，周辺機器識別情報存否判断手段と，周辺機器識別情報存否判断手段が，周辺機器識別情報を備えていないと判断した場合動作する手段であって，周辺機器サーバ情報取得手段と周辺機器インタフェース情報取得手段とによって取得されたそれぞれの情報に基づき周辺機器利用システム内において常にユニークであり不変な第１の仮想識別情報を生成する第１の仮想識別情報生成手段，周辺機器から取得した機器情報に基づき第２の仮想識別情報を生成する第２の仮想識別情報生成手段，およびコンピュータから送信された周辺機器の識別情報の問い合わせに対し，生成した第１の仮想識別情報および第２の仮想識別情報を応答する周辺機器識別情報応答手段，として機能させるプログラムである。
【００２５】
さらに好ましくは，第１の仮想識別情報および第２の仮想識別情報は，コンピュータにおいて，周辺機器に対する，常に固定の論理通信経路を生成するために用いられ，かつ機器情報は周辺機器のデバイスディスクリプタであり，第２の仮想識別情報生成手段は，ディスクリプタのiManufacturer情報とiProduct 情報を取得し，当該取得した情報に基づいて不変の値を特定し，当該不変の値を第２の仮想識別情報として生成することを特徴とする。
【００２６】
本願発明にかかる第３の形態は，周辺機器が接続可能な周辺機器サーバとコンピュータとがネットワークで接続され，当該コンピュータから当該周辺機器を利用可能な周辺機器利用システムであって，周辺機器サーバは，周辺機器を接続する周辺機器インタフェースと，周辺機器サーバを常にユニークに特定することができる情報を取得する周辺機器サーバ情報取得手段と，周辺機器インタフェースに固定的に関連付けられた情報を取得する周辺機器インタフェース情報取得手段と，周辺機器の機器情報を取得する機器情報取得手段と，周辺機器インタフェースに接続された周辺機器が自身の識別情報（周辺機器識別情報）を備えているかどうかを判断する，周辺機器識別情報存否判断手段と，周辺機器識別情報存否判断手段が，周辺機器識別情報を備えていないと判断した場合動作する手段であって，周辺機器サーバ情報取得手段と周辺機器インタフェース情報取得手段とによって取得されたそれぞれの情報に基づき周辺機器利用システム内において常にユニークであり不変な第１の仮想識別情報を生成する第１の仮想識別情報生成手段，周辺機器から取得した機器情報に基づき第２の仮想識別情報を生成する第２の仮想識別情報生成手段，およびコンピュータから送信された周辺機器の識別情報の問い合わせに対し，生成した前記第１の仮想識別情報および前記第２の仮想識別情報を応答する周辺機器識別情報応答手段，を備え，コンピュータは，周辺機器サーバに向けて，周辺機器識別情報の問い合わせを送信する手段と，問い合わせに対する応答として，周辺機器サーバから送信された周辺機器識別情報を受信する手段と，受信した周辺機器識別情報に基づいて，周辺機器に対する，常に固定の論理通信経路を生成する手段と，を備える。
【００２７】
さらに好ましくは，機器情報は周辺機器のデバイスディスクリプタであり，第２の仮想識別情報生成手段は，ディスクリプタのiManufacturer情報とiProduct情報を取得し，当該取得した情報に基づいて不変の値を特定し，当該不変の値を第２の仮想識別情報として生成する，ことを特徴とする。
【発明の効果】
【００２８】
本願発明によれば，デバイスサーバシステムにおいて，ドライバがＵＳＢデバイスを指定する際に用いる論理通信経路の生成に，デバイスサーバのＭＡＣアドレスおよびＵＳＢの物理ポート番号に基づいた第１の仮想シリアル番号とＵＳＢデバイスの機器情報に基づいた第２の仮想シリアル番号の両方を用いる。これにより，ドライバからＵＳＢデバイスへの通信経路である論理通信経路を常に固定的にすることができる。この結果，シリアル番号を持たないＵＳＢデバイスを複数接続したとしても，ドライバからは，常に希望するＵＳＢデバイスに対して通信を行うことができる。
【発明を実施するための形態】
【００２９】
以下では図面を参照し本願発明に係る実施例を説明する。
［実施例１］
［システム全体図］
【００３０】
図１は本願発明にかかるシステム全体図の一例である。詳細説明は背景技術においてすでになされているため割愛する。なお，プリンタＡ１０３とプリンタＢ１０４は，同一機種である場合を想定する。
［シーケンス図（１）］
【００３１】
図４は，本願発明にかかるデバイスサーバシステムのシーケンス図である。デバイスサーバ１０２にＵＳＢデバイス（本実施例では同一機種プリンタを想定）が接続（ステップ４０１）され，デバイスサーバ１０２のステップ４０２およびステップ４０３において，それぞれのデバイス識別情報を生成する。
【００３２】
その後，ＰＣ１０１からＵＳＢデバイスへの接続要求（ステップ４０４）があれば，これに対してデバイスサーバ１０２は，生成したデバイス識別情報を応答（ステップ４０５）する。これを受信したＰＣ１０１では，ＵＳＢデバイスのドライバインストール（ステップ４０６）が行われ，ＰＣ１０１からデバイスへの通信が可能になる。この時，ＵＳＢデバイスへの論理通信経路が生成される。
【００３３】
そして，ＰＣ１０１，具体的にはＰＣ１０１のドライバはＵＳＢデバイスを指定して通信を行う（ステップ４０７）。この通信は，デバイスサーバ１０２を経由してＵＳＢデバイスに到達する（ステップ４０８）。
【００３４】
なお，本願発明は，上述したデバイス識別情報の生成（ステップ４０２）の処理に特徴を有するものであり，以下では，この部分を中心に説明する。
［機能ブロック図］
【００３５】
図５はデバイスサーバ１０２の機能ブロック図である。
【００３６】
デバイス識別情報存否判断手段５０５は，周辺機器インタフェース５０１を介してＵＳＢデバイスの識別情報が存在するかどうかを判断する。このデバイス識別情報が上述した論理通信経路を生成する際に必要な情報であり，これが存在しない場合は，後述する第１の仮想シリアル番号生成手段５０４，および第２の仮想シリアル番号生成手段５０７に生成を指示する。
【００３７】
第１の仮想シリアル番号生成手段５０４は，上記指示に基づき，デバイスサーバ情報取得手段５０３が取得したデバイスサーバ情報と周辺機器インタフェース情報取得手段５０２が取得した周辺機器インタフェース５０１のインタフェース情報をもとに第１の仮想シリアル番号を生成する。この第１の仮想シリアル番号は，背景技術において説明したとおりのものであり，デバイスサーバ１０２自身のＭＡＣアドレスと物理ＵＳＢポート番号に基づいて生成されるものである。つまり，デバイスサーバ情報取得手段５０３が取得する情報は，デバイスサーバ１０２のＭＡＣアドレスであり，周辺機器インタフェース情報取得手段５０２が取得する情報は，当該ＵＳＢデバイスが接続されている周辺機器インタフェース５０１の物理ポート番号である。
【００３８】
第２の仮想シリアル番号生成手段５０７は，上記指示に基づき，機器情報取得手段５０６を経由して取得したデバイスの機器情報をもとに第２の仮想シリアル番号を生成する。ここでいう機器情報とは具体的には図８に示すものであり，一般的にはデバイスディスクリプタと呼ばれている。機器情報内にあるiManufacture，iProductおよびiSerialNumberは，本願発明において重要な情報であり，利用の仕方については後述する。
【００３９】
デバイス識別情報生成手段５０８は，生成された第１の仮想シリアル番号と第２の仮想シリアル番号とを用いて，デバイス識別情報を生成する。
【００４０】
デバイス識別情報問合受信手段５１０は，ネットワークインタフェース５０９を通じて，ＰＣ１０１からのデバイス識別情報問合せを受信し，デバイス識別情報応答手段５１１は，これに対する応答として，デバイス識別情報生成手段５０８が生成したデバイス識別情報を応答する。
［シーケンス図（２）］
【００４１】
図６は，本願発明にかかるデバイスサーバシステムのシーケンス図である。図４との違いは，デバイス識別情報，およびその元となる第１の仮想シリアル番号と第２の仮想シリアル番号の使われ方を中心に記載している点である。なお，図示するように，ドライバと仮想ドライバは，いずれもＰＣ１０１内部のものである。なお，仮想ドライバについては背景技術にて説明済みのため説明を省略する。
【００４２】
ステップ６０１にて，ＵＳＢデバイスがデバイスサーバ１０２に接続される。
【００４３】
ステップ６０２にて，デバイスサーバ１０２は，接続されたＵＳＢデバイスがデバイス識別情報を備えているかどうかを判断し，備えていなければ，ステップ６０３に進む。
【００４４】
ステップ６０３にて，デバイスサーバ１０２は，ＵＳＢデバイスのデバイス識別情報を生成する。具体的には，すでに説明した第１の仮想シリアル番号，および第２の仮想シリアル番号を生成し，これらをもとにデバイス識別情報を生成する。
【００４５】
ステップ６０４にて，ＰＣ１０１の仮想ドライバからデバイスサーバ１０２に向けて送信された，ＵＳＢデバイスへの接続要求を受信する。
【００４６】
ステップ６０５にて，受信した接続要求に対し，デバイスサーバ１０２は生成したデバイス識別情報を応答する。
【００４７】
ステップ６０６にて，仮想ドライバは受信したデバイス識別情報をドライバに渡す。
【００４８】
ステップ６０７にて，ドライバは渡されたデバイス識別情報をもとにＵＳＢデバイスへの論理通信経路を生成する。
【００４９】
ステップ６０８にて，ドライバは生成した論理通信経路を指定してＵＳＢデバイスへの通信を開始する。
【００５０】
ステップ６０９にて，仮想ドライバは，ドライバが指定した論理通信経路をもとにＵＳＢデバイスへの通信経路を特定する。具体的には，ＵＳＢデバイスに対するインタフェースおよびエンドポイントを特定する。
【００５１】
ステップ６１０にて，仮想ドライバは特定した通信経路をネットワークパケットに変換する。
【００５２】
ステップ６１１にて，このネットワークパケットをデバイスサーバ１０２に送信する。
【００５３】
ステップ６１２にて，ネットワークパケットを受信したデバイスサーバ１０２は，中身のインタフェースおよびエンドポイントを参照し，該当するＵＳＢデバイスに対して通信を行う。
［デバイス識別情報生成の動作フロー］
【００５４】
図７はデバイスサーバ１０２がデバイス識別情報を生成する際の動作フローである。この処理は図６におけるステップ６０７の具体的動作である。
【００５５】
すでに述べたように，本願発明では，ＵＳＢデバイスがデバイス識別情報を備えていない場合，デバイスサーバ１０２がこれを生成する。そして，このデバイス識別情報は，第１の仮想シリアル番号と第２の仮想シリアル番号をもとに生成されるものである。
【００５６】
したがって，デバイス識別情報を生成するフローとしては，ステップ７０１〜ステップ７０３に示す通りとなる。
【００５７】
第１の仮想シリアル番号を生成するため，ステップ７１１において，デバイスサーバ１０２のＭＡＣアドレスを取得する。
【００５８】
ステップ７１２において，ＵＳＢデバイスが接続されているＵＳＢポートの物理ポート番号を取得する。
【００５９】
ステップ７１３において，これらの情報をもとに第１の仮想シリアル番号を生成する。この生成の過程は図２で示したとおりである。
【００６０】
第２の仮想シリアル番号を生成するため，ステップ７２１にて，ＵＳＢデバイスの機器情報を取得する。この機器情報は図８に示した通りでる。
【００６１】
ステップ７２２にて，取得した機器情報のiManufacturer情報を参照する。
【００６２】
ステップ７２３にて，取得した機器情報のiProduct情報を参照する。
【００６３】
ステップ７２４にて，参照したiManufacturer情報およびiProduct情報をもとに第２の仮想シリアル番号を生成する。
［第２の仮想シリアル番号生成の規則］
【００６４】
すでに述べたように，本願発明の特徴は，デバイス識別情報の生成にある。このデバイス識別情報の生成には第１の仮想シリアル番号と第２の仮想シリアル番号が用いられる。従来技術においては，第１の仮想シリアル番号だけを用いており，それだけでは不十分であると述べた。そこで本願発明では，第２の仮想シリアル番号も用いるが，以下で，その生成の詳細について説明する。
【００６５】
第２の仮想シリアル番号の生成には，ＵＳＢデバイスの機器情報（デバイスディスクリプタ）が用いられてり，中でもiManufacturer情報とiProduct情報を用いる。これらの情報はＵＳＢデバイスの製造者が任意に設定できる値である。
【００６６】
図９は，第２の仮想シリアル番号生成の規則について図示したものである。図９において第２の仮想シリアル番号に相当するのは，iSerialNumberである。これは１バイトの値で表されるものであり，iManufacturer情報とiProduct情報をもとに生成される。
【００６７】
iManufacturer情報とiProduct情報も通常は１バイトの値である。図示するように，iManufacturer情報が１であり，iProduct情報が２である場合には，iSerialNumberは３を割り当てる。
【００６８】
別の例として，iManufacturer情報が２であり，iProduct情報が０である場合には，iSerialNumberは１を割り当てる。
【００６９】
このようにiSerialNumberを生成するには所定の規則がある。つまり，iManufacturer情報とiProduct情報を除いた値で１に最も近い値が，iSerialNumberになるわけである。
【００７０】
このような規則を設けることにより，iManufacturer情報とiProduct情報との重複を避けつつ，常に固定のiSerialNumberを生成することができる。ひいては，これをもとに生成されるデバイス識別情報や，さらには論理通信経路を常に固定のものとすることができるわけである。
【００７１】
なお，iSerialNumberは，iManufacturer情報とiProduct情報と重複せず，常に不変（固定的）なものであればどのような値でもよい。上述したように，最も１に近い値とするのは，こうした条件を満たす方法のうちの１つである。
【００７２】
ところで，ＵＳＢデバイスが同じ機種の場合には，iManufacturer情報とiProduct情報とが同じ値になることもある。このような場合，上記の規則に従ってiSerialNumberを生成すると，当然同じ値のiSerialNumberが得られることとなる。ＵＳＢデバイスの識別は，上述の第１の仮想シリアル番号で可能であるため，同じ値のiSerialNumberが生成されることは特に問題ではない。本願発明にとって重要なのは，任意のＵＳＢデバイスに対して生成されるiSerialNumberが常に同じ値であることであり，それが他のＵＳＢデバイスのiSerialNumberと同じであるかどうかは問わないわけである。
【００７３】
さらに別の場合として，iManufacturer情報とiProduct情報を持たないＵＳＢデバイスもある。ただ，どのようなＵＳＢデバイスであってもデバイスディスクリプタは備えていることから，iManufacturer情報とiProduct情報には，単に０（ゼロ）の値が入っているだけである。このような場合も，上述するように同じ値のiSerialNumberが生成されることとなる。
［まとめ］
【００７４】
本願発明によれば，デバイスサーバシステムにおいて，ドライバがＵＳＢデバイスを指定する際に用いる論理通信経路の生成に，デバイスサーバのＭＡＣアドレスおよびＵＳＢの物理ポート番号に基づいた第１の仮想シリアル番号とＵＳＢデバイスの機器情報に基づいた第２の仮想シリアル番号の両方を用いる。これにより，ドライバからＵＳＢデバイスへの通信経路である論理通信経路を常に固定的にすることができる。この結果，シリアル番号を持たないＵＳＢデバイスを複数接続したとしても，ドライバからは，常に希望するＵＳＢデバイスに対して通信を行うことができる。
【図面の簡単な説明】
【００７５】
【図１】システム全体図
【図２】第１の仮想シリアル番号生成の様子
【図３】論理通信経路とデバイスとの対応
【図４】シーケンス図（１）
【図５】デバイスサーバの機能ブロック
【図６】シーケンス図（２）
【図７】デバイス識別情報生成の動作フロー
【図８】機器情報の詳細
【図９】第２の仮想シリアル番号生成の規則
【符号の説明】
【００７６】
５０１  周辺機器インタフェース
５０２  周辺機器インタフェース情報取得手段
５０３  デバイスサーバ情報取得手段
５０４  第１の仮想シリアル番号生成手段
５０５  デバイス識別情報存否判断手段
５０６  機器情報取得手段
５０７  第２の仮想シリアル番号生成手段
５０８  デバイス識別情報生成手段
５１０  デバイス識別情報問合受信手段
５１１  デバイス識別情報応答手段
【図１】
0005803600.tif 000002
【図２】
0005803600.tif 000003
【図３】
0005803600.tif 000004
【図４】
0005803600.tif 000005
【図５】
0005803600.tif 000006
【図６】
0005803600.tif 000007
【図７】
0005803600.tif 000008
【図８】
0005803600.tif 000009
【図９】
0005803600.tif 000010