(57)【要約】      （修正有）【課題】転送帯域が確保されていない転送方式において、複数のＵＳＢデバイスを接続して使用する場合、個々のＵＳＢデバイスで使用できる帯域幅が小さくなり、転送速度が低下してしまうことを防止するデバイス制御装置、デバイス制御方法、およびプログラムを提供する。【解決手段】デバイス制御装置は、転送速度の低下を防止したいＵＳＢデバイスのデータ転送速度を含むデバイス識別情報を登録し、ＵＳＢデバイスに対しては転送帯域が確保されていない転送方式から転送帯域が確保された転送方式に切り替えてデータ送受信を行い、デバイスドライバに対しては転送方式を切り替える前のＵＳＢデバイスとして認識させる。【選択図】図１
2019020851.tif 000002
【特許請求の範囲】
【請求項１】
デバイスがローカル接続されたデバイス制御装置であって、
デバイスドライバから前記デバイスへのデータ入出力要求に記述されている第１の転送方式が所定の条件を満たす場合に、当該第１の転送方式を、より転送優先度が高い第２の転送方式に書き換え、当該デバイスから前記デバイスドライバへのデータ入出力応答に記述されている第２の転送方式を、前記第１の転送方式に書き換える転送方式変換手段と、
前記転送方式変換手段によって書き換えられた第１の転送方式または第２の転送方式に基づいてデータ送信するデータ送信手段と、
を備えることを特徴とするデバイス制御装置。
【請求項２】
前記デバイス制御装置は、ネットワークを介して情報処理装置に接続され、
前記デバイスがあたかも前記情報処理装置にローカル接続されているかのように前記情報処理装置へ認識させて制御できるように前記デバイスを仮想化制御する仮想化制御手段をさらに備えることを特徴とする請求項１に記載のデバイス制御装置。
【請求項３】
前記第１の転送方式はバルク転送方式であり、前記第２の転送方式はインタラプト転送方式であることを特徴とする請求項１または請求項２に記載のデバイス制御装置。
【請求項４】
デバイスがローカル接続されたデバイス制御装置の制御方法であって、
デバイスドライバから前記デバイスへのデータ入出力要求に記述されている第１の転送方式が所定の条件を満たす場合に、当該第１の転送方式を、より転送優先度が高い第２の転送方式に書き換える第１の転送方式変換ステップと、
当該デバイスから前記デバイスドライバへのデータ入出力応答に記述されている第２の転送方式を、前記第１の転送方式に書き換える第２の転送方式変換ステップと、
前記第１の転送方式変換ステップまたは前記第２の転送方式変換ステップにおいて書き換えられた第１の転送方式または第２の転送方式に基づいてデータ送信するデータ送信ステップと、
を備えることを特徴とするデバイス制御方法。
【請求項５】
請求項１乃至請求項３の何れか１項に記載のデバイス制御装置の各手段をコンピュータに機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス制御装置、デバイス制御方法、およびプログラムに関し、特に、ＵＳＢデバイスを制御する機能を備えたデバイス制御装置、デバイス制御方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、複数のＵＳＢデバイスを接続可能なデバイス制御装置や、ネットワークを介してＵＳＢデバイスを共有することが可能なデバイス制御装置が従来技術として知られている。
【０００３】
ＵＳＢのデータ転送方式にはコントロール転送、アイソクロナス転送、インタラプト転送、バルク転送の４種類あり、それぞれ転送の優先度がある。コントロール転送は、通信の優先度が４種類中で最も高く、転送帯域が確保されている。アイソクロナス転送は、通信の優先度が４種類中で２番目に高く、転送帯域が確保されている。インタラプト転送は、通信の優先度が４種類中で３番目に高く、転送帯域が確保されている。バルク転送は、通信の優先度が４種類中で最も低く、転送帯域が確保されていない。
【０００４】
複数のＵＳＢデバイスがデータ通信する場合、前述した各転送方式を使用し通信を行うが、ホスト（パーソナルコンピュータ）は、各ＵＳＢデバイスを同時に制御するので、バルク転送の場合は、転送帯域が確保されていないため、ＵＳＢデバイスの数が多くなると、データの転送速度はＵＳＢデバイスの数分低下する。
【０００５】
図９を用いてバルク転送において転送速度が低下することを説明する。ＵＳＢデバイスＡが１つのみ接続された場合、バルク転送方式で転送できる転送帯域の全部をＵＳＢデバイスＡが占有できる。しかし、ＵＳＢデバイスＡとＵＳＢデバイスＢが２つ接続された場合は、バルク転送方式で転送できる転送帯域をＵＳＢデバイスＡとＵＳＢデバイスＢで分け合う。
【０００６】
ＵＳＢデバイスＡのみが接続された場合の帯域幅をＢＬ（バルク転送用の帯域占有率：バルク転送用として使用することが可能な帯域の割合）×α（有効帯域率：ＢＬを１とした際にバルク転送用として実際に使用することが可能な帯域の割合）とした際に、ＵＳＢデバイスＡとＵＳＢデバイスＢが２つ接続された場合は、ＵＳＢデバイスＡの帯域幅がＢＬ×α×０．５となり、ＵＳＢデバイスＡのみが接続された場合の帯域幅に比べ、使用できる帯域幅が半分になる。その結果、転送速度が低下する。
【０００７】
この転送速度の低下を防止するいくつかの提案がされている。例えば、ＵＳＢデータのデータ転送方式に応じて、ネットワーク上に発行するパケットに優先度をつけて転送を行う方法がある（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−８９０１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１は、転送する各データに優先度をつける場合であっても、データ転送方式がバルク転送方式の際は、図９を参照して説明したように限られた帯域を複数のＵＳＢデバイスで共有するため、ＵＳＢデバイス個々で使用できる帯域幅が小さくなり、その結果、転送速度は低下する。
【００１０】
そこで、本発明では、転送帯域が確保されていない転送方式（バルク転送）において、複数のＵＳＢデバイスを接続して使用する場合に、特定のＵＳＢデバイスの転送速度が低下することを低減することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、請求項１に記載のデバイス制御装置は、デバイスがローカル接続されたデバイス制御装置であって、デバイスドライバから前記デバイスへのデータ入出力要求に記述されている第１の転送方式が所定の条件を満たす場合に、当該第１の転送方式を、より転送優先度が高い第２の転送方式に書き換え、当該デバイスから前記デイバスドライバへのデータ入出力応答に記述されている第２の転送方式を、前記第１の転送方式に書き換える転送方式変換手段と、前記転送方式変換手段によって書き換えられた第１の転送方式または第２の転送方式に基づいてデータ送信するデータ送信手段と、を備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、転送速度の低下を防止したいＵＳＢデバイスのデバイス識別情報を登録し、転送帯域が確保されていない転送方式（バルク転送）を転送帯域が確保された転送方式（インタラプト転送）に変換することにより、複数のＵＳＢデバイスを接続して使用する際に、目的とするＵＳＢデバイスの転送速度が低下することを防止することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るデバイス制御システムの構成の一例を概略的に示すブロック図である。
【図２】図１に示す情報処理装置におけるデバイスの仮想化制御に係る処理を説明するためのフローチャートである。
【図３】デバイス制御装置にデバイスが接続された際の処理を説明するためのフローチャートである。
【図４】情報処理装置がデバイスのデバイス情報を取得する際の処理を説明するためのフローチャートである。
【図５】デバイス制御装置が情報処理装置から送信されたデータを出力する際の処理を説明するためのフローチャートである。
【図６】デバイス制御装置が情報処理装置へデータを送信するための処理を説明するためのフローチャートである。
【図７】エンドポイントディスクリプタの書き換えを説明するための図である。
【図８】本発明の別実施形態に係るデバイス制御システムの構成の一例を概略的に示すブロック図である。
【図９】バルク転送時の転送速度が低下する課題を説明するための図である。
【図１０】バルク転送時に転送速度が低下することを防止する本発明の効果を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について、デバイス制御システムの一例について図面を参照して説明する。
【００１５】
図１は、本発明の実施形態に係るデバイス制御システムの構成の一例を概略的に示すブロック図である。
【００１６】
図示のデバイス制御システムにおいては、情報処理装置１００がローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）などのネットワークを介してデバイス制御装置２００に接続されている。ネットワークは有線回線または無線回線などで構成される。そして、デバイス制御装置２００には、例えば通信インターフェース（例えば、ＵＳＢまたはＨＤＭＩ（登録商標））によってデバイス３００がローカル接続されている。
【００１７】
なお、図１に示すデバイス制御システムにおいては、情報処理装置１００、デバイス制御装置２００、およびデバイス３００がそれぞれ１つのみ示されているが、情報処理装置１００、デバイス制御装置２００、およびデバイス３００の台数は図示の例に限定されるものではない。
【００１８】
デバイス３００が備える通信インターフェースは、ＵＳＢまたはＨＤＭＩ（登録商標）に限定されるものではない。以降の説明ではデバイス３００の通信インターフェースをＵＳＢとして説明する。
【００１９】
＜情報処理装置１００の構成＞
情報処理装置１００は、例えば、ＰＣ等の装置であって、ハードウェア構成として、ＣＰＵ１５１、入力部１５２、表示部１５３、メモリ１５４、通信部１５５、および記憶部１１０等を備え、これらハードウェアは内部バスで相互に接続されている。
【００２０】
ＣＰＵ１５１は情報処理装置１００全体の制御を司る。入力部１５２は、例えば、キーボードおよびマウスを備えている。表示部１５３として、例えば、液晶モニタが用いられる。メモリ１５４はＲＡＭおよびＲＯＭ等である。
【００２１】
通信部１５５はＬＡＮに接続するためのインターフェースであって、デバイス制御装置２００とデータ送受信を行う。これにより、情報処理装置１００はデバイス制御装置２００にローカル接続されたデバイス３００とデータ送受信することが可能となる。
【００２２】
記憶部１１０には、ソフトウェアであるオペレーティングシステム（以下「ＯＳ」と呼ぶ：図示せず）、デバイス識別情報設定部１０１、アプリケーション１０２、デバイスドライバ１０３、仮想化制御部１０４および通信制御部１０５が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリ１５４に読み出されて、ＣＰＵ１５１の制御に従い動作する。
【００２３】
デバイス識別情報設定部１０１は、転送速度の低下を防止したいデバイス３００のデータ転送速度を含むデバイス識別情報をデバイス制御装置２００に通知する。デバイス識別情報は、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーＩＤ（以下「ＶＩＤ」と呼ぶ）、機種を識別するために割り当てられた製品ＩＤ（以下「ＰＩＤ」と呼ぶ）などであり、転送速度の低下を防止したいデバイス３００を識別できればよい。なお、情報処理装置１００からデバイス制御装置２００に通知されたデバイス識別情報は、後述するデバイス識別情報２０９としてデバイス制御装置２００に保持・記憶される。
【００２４】
アプリケーション１０２は、デバイスドライバ１０３に対してデータ入出力要求を指示することにより、デバイス３００を制御するためのソフトウェアである。
【００２５】
デバイスドライバ１０３は、ＯＳまたはアプリケーション１０２からのデータ入出力要求を、デバイス３００に応じたデータ形式のデータ（以下「制御コマンド」と呼ぶ）に変換して、当該制御コマンドを仮想化制御部１０４に送る。さらに、デバイスドライバ１０３は制御コマンドに対する応答をアプリケーション１０２に通知する。このデバイスドライバ１０３は、一般に製造会社によって提供されるソフトウェアであって、情報処理装置１００は各デバイスに対応したデバイスドライバ１０３によってデバイス３００を制御することができる。
【００２６】
仮想化制御部１０４は、デバイスドライバ１０３から送られた制御コマンド（つまり、データ入出力要求）をＵＳＢデータ形式に準拠したパケットデータ（以下「ＵＳＢデータ」と呼ぶ）に変換する。また、仮想化制御部１０４は通信制御部１０５から送られてくるＵＳＢデータを制御コマンドと同様のデータ形式に変換してデバイスドライバ１０３に送る。
【００２７】
さらに、仮想化制御部１０４はデバイス３００に対するデータ送受信要求に対して、デバイス３００が情報処理装置１００に直接的に接続（ローカル接続）されている際と同様の振る舞いをシミュレートする機能（以下「仮想化制御機能」と呼ぶ）を備えている。この仮想化制御機能により、情報処理装置１００はデバイス３００の接続状態が、これらのデバイス３００をローカル接続した場合と同一の状態であると認識してデータの送受信を行うことができる。
【００２８】
通信制御部１０５は、仮想化制御部１０４から送られるＵＳＢデータとＬＡＮを介してデバイス制御装置２００と通信する際のネットワークパケットとの変換処理を行って、デバイス制御装置２００と情報処理装置１００の間でデータ送受信の制御を行うソフトウェアである。また、通信制御部１０５は仮想化制御部１０４を介してアプリケーション１０２またはデバイスドライバ１０３から送られるデータ送受信要求に応じて、デバイス制御装置２００と情報処理装置１００との間のセッションの開始および終了の制御を行う。
【００２９】
＜デバイス制御装置２００の構成＞
デバイス制御装置２００は、例えば、プロジェクタ、プリンタまたは複合機等の周辺機器であって、ハードウェア構成として、ＣＰＵ２５１、入力部２５２、表示部２５３、メモリ２５４、通信部２５５、および記憶部２１０等を備えている。また、デバイス制御装置２００は、オフィス機器に限定されるものではなく、様々な組込み装置、携帯電話機、またはモバイル端末機器であってもよい。
【００３０】
ＣＰＵ２５１はデバイス制御装置２００全体の制御を司る。入力部２５２は、例えば、操作ボタン、テンキーを備えている。表示部２５３として、例えば、液晶モニタが用いられる。メモリ２５４はＲＡＭおよびＲＯＭ等である。
【００３１】
通信部２５５はＬＡＮに接続するためのインターフェースであって、情報処理装置１００とデータ送受信を行う。
【００３２】
記憶部２１０には、ソフトウェアであるＯＳ（不図示）、通信制御部２０１、仮想化制御部２０２およびデバイス制御部２０５が記憶されるとともに、他の機能に係るソフトウェアが記憶されている。なお、これらソフトウェアはメモリ２５４に読み出されて、ＣＰＵ２５１の制御に従い動作する。
【００３３】
通信制御部２０１は、情報処理装置１００との間で行われる入出力データ等の送受信を制御するソフトウェアである。
【００３４】
仮想化制御部２０２は、デバイス制御装置２００に接続されたデバイス３００があたかも情報処理装置１００にローカル接続されているかのように情報処理装置１００へ認識させて制御できるようにするため、情報処理装置１００の仮想化制御部１０４からの制御要求に従って（連動して）デバイス３００の制御を行う。
【００３５】
また、仮想化制御部２０２は、デバイス属性情報通知部２０３と転送方式変換部２０４を備えている。
【００３６】
デバイス属性情報通知部２０３は、情報処理装置１００がデバイス属性情報２０８の取得を要求した際に、デバイス情報記憶部２０７に保持されているデバイス識別情報２０９と、デバイス識別情報設定部１０１によって設定した情報処理装置１００からのデバイス識別情報との照合をデバイス情報記憶部２０７に要求し、照合結果が一致した場合、デバイス属性情報２０８のデバイス属性情報をインタラプト転送からバルク転送に変換した内容を情報処理装置１００のデバイスドライバ１０３に返すための機能部である。なお、デバイス情報記憶部２０７、デバイス属性情報２０８およびデバイス識別情報２０９については、後述する。
【００３７】
また、デバイス属性情報通知部２０３は、デバイス属性情報２０８をバルク転送からコントロール転送または、バルク転送からアイソクロナス転送へ変換し、情報処理装置１００へ返すことも可能である。しかし、コントロール転送とアイソクロナス転送は、バルク転送とデータ形式が異なる。一方、バルク転送とインタラプト転送のデータ形式は同じである。そのため、本実施形態では、デバイス属性情報２０８をバルク転送からインタラプト転送または、インタラプト転送からバルク転送に変更する場合について例示する。データ形式が同じ転送方式間の変換であれば、これに限定したものではない。
【００３８】
転送方式変換部２０４は、情報処理装置１００から通知されたデータ入出力要求（転送要求）に含まれる転送方式を変更する機能部であって、デバイス情報記憶部２０７に保持されたデバイス識別情報２０９と、情報処理装置１００から通知された転送要求の中に含まれるデバイス識別情報との照合をデバイス情報記憶部２０７に要求し、照合結果が一致した場合、転送要求の中に含まれる転送方式をバルク転送からインタラプト転送に変更する。転送方式変換部２０４は、このバルク転送からインタラプト転送への転送方式の変更により、転送帯域を確保し転送速度を向上させている。
【００３９】
さらに、転送方式変換部２０４は、デバイス３００から通知された、応答情報またはデータの転送方式を変更する機能部であって、デバイス情報記憶部２０７に保持されたデバイス識別情報２０９と、デバイス３００から通知された転送結果の中に含まれるデバイス識別情報との照合をデバイス情報記憶部２０７に要求し、照合結果が一致した場合、応答情報またはデータ内の転送方式をインタラプト転送からバルク転送に変更する。転送方式変換部２０４は、デバイスからのインタラプト転送の転送結果を、情報処理装置１００に対してバルク転送の転送結果として戻すために転送方式の変更を行っている。転送方式変換部２０４は、バルク転送とインタラプト転送がＰａｃｋｅｔ  ＩＤが同一であり、バルク転送のデバイス３００はインタラプト転送のデータを授受できることを利用している。
【００４０】
デバイス制御部２０５は、デバイス属性情報変換部２０６およびデバイス情報記憶部２０７を備えており、デバイス３００を制御するための機能部であって、デバイス３００とデバイス制御装置２００との間のデータ送受信を制御する。
【００４１】
デバイス属性情報変換部２０６は、デバイス３００から通知されたデバイス属性情報３０２を変更する機能部であって、デバイス情報記憶部２０７に保持されたデバイス識別情報２０９と、デバイス３００から通知されたデバイス識別情報３０１との照合をデバイス情報記憶部２０７に要求する。デバイス属性情報変換部２０６は、照合結果に応じて転送速度の低下を防止したいデバイス３００である場合には、デバイス属性情報３０２をバルク転送からインタラプト転送に変更し、デバイス情報記憶部２０７にデバイス属性情報２０８として記憶する。転送方式の変更は、図７を用いて後述するエンドポイントディスクリプタの書き換えにより行う。
【００４２】
デバイス情報記憶部２０７は、デバイス制御装置２００に接続されたデバイス３００のデバイス識別情報３０１、デバイス属性情報３０２を情報処理装置１００から指示・設定に応じて記憶・保持するための機能部である。また、デバイス情報記憶部２０７は、デバイス識別情報設定部１０１により設定されたデバイス識別情報２０９と、デバイス属性情報通知部２０３、転送方式変換部２０４、またはデバイス属性情報変換部２０６から通知されたデバイス識別情報とを照合し、照合結果を通知する機能を有する。
【００４３】
デバイス属性情報２０８は、デバイス３００から通知されたデバイス属性情報３０２を、上述したデバイス属性情報変換部２０６の処理を通して、記憶した情報である。
【００４４】
デバイス識別情報２０９は、情報処理装置１００が備えるデバイス識別情報設定部１０１から通知されたデバイス識別情報である。
【００４５】
＜デバイス３００の構成＞
デバイス３００は、例えば、ＵＳＢメモリ、ＵＳＢプリンタ、ＵＳＢカメラなど、バルク転送を行うデバイスであり、デバイス３００はデバイス制御装置２００にＵＳＢインターフェース等の通信Ｉ／Ｆによって接続される。
【００４６】
デバイス識別情報３０１は、ＶＩＤ、ＰＩＤ、シリアル番号、デバイス名など、デバイス３００を一意に識別するための情報である。
【００４７】
デバイス属性情報３０２は、デバイス３００のデバイス属性情報を記憶した情報であって、デバイスの種類、ＵＳＢのデータ転送方式、データ転送速度が含まれている。
【００４８】
＜情報処理装置１００におけるデバイス３００の仮想化制御＞
図２は、図１に示す情報処理装置１００におけるデバイス３００の仮想化制御に係る処理を説明するためのフローチャートである。
【００４９】
情報処理装置１００内のＯＳ起動中に常に待機および動作しているソフトウェア（以後常駐モジュールと呼ぶ：不図示）は、デバイス制御装置２００を介してＬＡＮ接続されたデバイス３００を知るために、通信制御部１０５を介して、デバイス制御装置２００に対して検索パケットをブロードキャストする。具体的には、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのプロトコルを用いて、デバイス制御装置２００の検索（問い合わせ）を行なう。
【００５０】
常駐モジュールは、デバイス制御装置２００からデバイス識別情報３０１の受信を待ち（ステップＳ２０１）、デバイス制御装置２００から受信がない場合には（ステップＳ４０１でＮｏ）、仮想化制御は行わず、処理を終了する。
【００５１】
一方、常駐モジュールは、デバイス制御装置２００からデバイス識別情報３０１の受信があると（ステップＳ２０１でＹｅｓ）、デバイス識別情報３０１の登録を行う（ステップＳ２０２）。
【００５２】
常駐モジュールは、取得したデバイス識別情報３０１のうち、デバイスディスクリプタに記述されたベンダーＩＤ（ＶＩＤ）と製品ＩＤ（ＰＩＤ）、ストリングディスクリプタに記述されたシリアル番号とデバイス名称によってデバイス３００の個体を識別する。また、インターフェースディスクリプタに記述されたインターフェース番号を識別する。このようにして識別されたデバイス３００の個体に関する情報に基づいて、仮想化制御部１０４の生成（ステップＳ２０３）、デバイスドライバ１０３の生成（ステップＳ２０４）を動的に行う。
【００５３】
その後、アプリケーション１０２を起動し、アプリケーション１０２からドライバソフトウェア部品を制御するためのインターフェース（アプリケーション／ドライバインターフェース）を起動する（ステップＳ２０５）。起動が完了したらデバイス制御装置２００への通知を行う（ステップＳ２０６）。このようにして、情報処理装置１００内においてデバイス３００の仮想化制御が実行される。
【００５４】
＜デバイス３００の接続時の処理について＞
図３は、デバイス制御装置２００にデバイス３００が接続された際の処理（接続処理）を説明するためのフローチャートである。
【００５５】
ユーザは、デバイス３００が接続される前の処理（接続前処理）として、転送速度の低下を防止したい、デバイス３００のデータ転送速度を含むデバイス識別情報を、情報処理装置１００の入力部１５２から入力するか、メモリ１５４などに保存しておく。
【００５６】
情報処理装置１００は、ユーザにより指定されたデータ転送速度を含むデバイス識別情報をデバイス識別情報設定部１０１によりデバイス制御装置２００へ通知する。デバイス制御装置２００は、デバイス識別情報２０９としてデバイス情報記憶部２０７へ記憶する。
【００５７】
ユーザは、デバイス３００をデバイス制御装置２００に接続する。これにより、デバイス制御装置２００のデバイス制御部２０５がデバイス３００のプラグインを検知する（ステップＳ３０１）。
【００５８】
デバイス制御部２０５は、デバイス３００へデバイス情報を要求する（ステップＳ３０２）。ここでデバイス情報とは、デバイス識別情報３０１およびデバイス属性情報３０２を含む情報である。
【００５９】
デバイス３００は、デバイス制御装置２００からデバイス情報の取得要求を受けるとデバイス識別情報３０１およびデバイス属性情報３０２をデバイス制御装置２００へ通知する。デバイス制御部２０５は、デバイス情報を取得し、さらに、デバイス属性情報変換部２０６にデバイス情報を通知する（ステップＳ３０３）。
【００６０】
デバイス属性情報変換部２０６は、プラグインを検知したデバイス３００以外にデバイス３００が存在するかを判定する（ステップＳ３０４）。プラグインを検知したデバイス３００以外のデバイス３００が既に存在する場合（ステップＳ３０４でＹｅｓ）、ステップＳ３０５に進み、プラグインを検知したデバイス３００以外のデバイス３００が存在しない場合（ステップＳ３０４でＮｏ）、デバイス制御装置２００に接続されたデバイス３００は一つであり、転送速度が低下しないため、ステップＳ３０９に進む。
【００６１】
デバイス属性情報変換部２０６は、デバイス３００から通知されたデバイス情報が、転送速度の低下を防止したい対象デバイス（以下「変更対象デバイス」と呼ぶ）のものかどうか、デバイス情報記憶部２０７へ照合を要求する（ステップＳ３０５）。
【００６２】
デバイス属性情報変換部２０６は、ステップＳ３０５での照合結果をデバイス情報記憶部２０７から取得する（ステップＳ３０６）。
【００６３】
デバイス属性情報変換部２０６は、ステップＳ３０６で取得した照合結果を判定する（ステップＳ３０７）。デバイス情報記憶部２０７から取得した照合結果が、変更対象デバイスの場合（ステップＳ３０７でＹｅｓ）、ステップＳ３０８に進む。変更対象デバイスでないデバイスの場合（ステップＳ３０７でＮｏ）、ステップＳ３０９に進む。
【００６４】
デバイス属性情報変換部２０６は、デバイス３００から取得したデバイス属性情報３０２のデータ転送方式をバルク転送から転送帯域が確保されたインタラプト転送に変更する（ステップＳ３０８）。
【００６５】
デバイス情報記憶部２０７は、デバイス３００から取得し、ステップＳ３０８で変更したデバイス属性情報３０２をデバイス属性情報２０８としてデバイス情報記憶部２０７に記憶・保存する（ステップＳ３０９）。
【００６６】
＜情報処理装置１００のデバイス情報取得ついて＞
図４は、情報処理装置１００がデバイス３００のデバイス情報を取得する際のデバイス制御装置２００における処理（接続情報通知処理）を説明するためのフローチャートである。
【００６７】
デバイス制御装置２００は、情報処理装置１００からデバイス情報の要求を受ける（ステップＳ４０１）。
【００６８】
デバイス属性情報通知部２０３は、ステップＳ４０１の要求により、変更対象デバイスかどうか、デバイス情報記憶部２０７へ照合を要求し、デバイス情報記憶部２０７が照合する（ステップＳ４０２）。
【００６９】
デバイス属性情報通知部２０３は、デバイス情報記憶部２０７から照合結果を取得する（ステップＳ４０３）。
【００７０】
デバイス属性情報通知部２０３は、ステップＳ４０３で通知された照合結果を判定する（ステップＳ４０４）。変更対象デバイスである場合（ステップＳ４０４でＹｅｓ）、ステップＳ４０５に進む。変更対象デバイスでないデバイスの場合（ステップＳ４０４でＮｏ）、ステップＳ４０６に進む。
【００７１】
デバイス属性情報通知部２０３は、転送速度の低下を防止するためにバルク転送からインタラプト転送に書き換えたデバイス３００のデバイス属性情報２０８を、バルク転送を行うデバイス３００として情報処理装置１００に通知するためにインタラプト転送からバルク転送に変更する（ステップＳ４０５）。なお、デバイス属性情報２０８の変更は、デバイス属性情報２０８を直接変更するのではなく、情報処理装置１００に通知するデバイス情報を変更することであり、デバイス情報記憶部２０７に保持しているデバイス属性情報２０８が変更されるわけではない。
【００７２】
デバイス制御装置２００は、情報処理装置１００へデバイス情報を通知する（ステップＳ４０６）。このデバイス情報の通知により、アプリケーション１０２は、デバイス３００がバルク転送を行うデバイス３００であると認識し、情報処理装置１００は正しいデバイスドライバ１０３を起動することが可能となる。
【００７３】
＜データ出力時の処理について＞
図５は、デバイス制御装置２００が情報処理装置１００から送信されたデータをデバイス３００に出力する際の処理を説明するためのフローチャートである。
【００７４】
デバイス制御装置２００は、情報処理装置１００からデバイス３００に対するデータ転送要求を受信し、データ転送要求を転送方式変換部２０４に通知する。転送方式変換部２０４は、通知された出力データの送信元が、変更対象デバイスかどうか、デバイス情報記憶部２０７を参照する（ステップＳ５０１）。
【００７５】
転送方式変換部２０４は、デバイス情報記憶部２０７から照合結果を取得する（ステップＳ５０２）。
【００７６】
転送方式変換部２０４は、ステップＳ５０２での照合結果を判定する（ステップＳ５０３）。デバイス情報記憶部２０７から取得した照合結果が、変更対象デバイスの場合（ステップＳ５０３でＹｅｓ）、ステップＳ５０４に進む。変更対象デバイスでない場合（ステップＳ５０３でＮｏ）、ステップＳ５０５に進む。
【００７７】
転送方式変換部２０４は、エンドポイントディスクリプタの転送方式をバルク転送からインタラプト転送に変更し、データ転送速度もデバイス識別情報設定部１０１により設定されたものに変更する（ステップＳ５０４）。転送方式をバルク転送から、優先度の高いインタラプト転送に変更することで、データ出力における転送速度の低下を低減している。エンドポイントディスクリプタの変更については、図７にて後述する。
【００７８】
転送方式変換部２０４は、転送方式を含む出力データを、デバイス制御部２０５に通知する。デバイス制御部２０５はデバイス３００へ出力データを出力する（ステップＳ５０５）。
【００７９】
デバイス制御部２０５は、ステップＳ５０５の応答情報をデバイス３００から取得する（ステップＳ５０６）。
【００８０】
デバイス制御部２０５は、転送方式変換部２０４にデバイス３００からの応答情報を通知する。転送方式変換部２０４は、転送速度の低下を防止したい対象デバイスかどうかを確認するため、応答情報内のデバイス識別情報が、変更対象デバイスかどうか、デバイス情報記憶部２０７へ照合を要求する（ステップＳ５０７）
【００８１】
転送方式変換部２０４は、デバイス情報記憶部２０７から照合結果を取得する（ステップＳ５０８）。
【００８２】
転送方式変換部２０４は、ステップＳ５０８で照合結果を判定する（ステップＳ５０９）。デバイス情報記憶部２０７から取得した照合結果が、変更対象デバイスの場合（ステップＳ５０９でＹｅｓ）、ステップＳ５１０に進む。変更対象デバイスでない場合（ステップＳ５０９でＮｏ）、ステップＳ５１１に進む。
【００８３】
転送方式変換部２０４は、バルク転送を行うデバイス３００としてデータ転送要求を受けているため、応答情報の転送方式をインタラプト転送からバルク転送に変更する（ステップＳ５１０）。転送方式をインタラプト転送からバルク転送に変更することで、情報処理装置１００（デバイスドライバ１０３）に対してインタラプト転送ではなく、元々のバルク転送を行っているように認識させている。
【００８４】
転送方式変換部２０４は、転送方式を含む応答情報を通信制御部２０１に通知する。通信制御部２０１は情報処理装置１００へ応答情報を通知する（ステップＳ５１１）。
【００８５】
＜データ入力時の処理について＞
図６は、デバイス制御装置２００がデバイス３００から情報処理装置１００へデータを送信するための処理を説明するためのフローチャートである。
【００８６】
デバイス制御装置２００は、情報処理装置１００からデータの入力を要求され、データ入力要求が通知される。データ入力要求を受信した転送方式変換部２０４は、受信したデータ入力要求の送信元が、変更対象デバイスかどうか、デバイス情報記憶部２０７へ照合を要求する（ステップＳ６０１）。
【００８７】
転送方式変換部２０４は、デバイス情報記憶部２０７から照合結果を取得する（ステップＳ６０２）。
【００８８】
転送方式変換部２０４は、ステップＳ６０２での照合結果を判定する（ステップＳ６０３）。デバイス情報記憶部２０７から取得した照合結果が、変更対象デバイスの場合（ステップＳ６０３でＹｅｓ）、ステップＳ６０４に進む。変更対象デバイスでない場合（ステップＳ６０３でＮｏ）、ステップＳ６０５に進む。
【００８９】
転送方式変換部２０４は、エンドポイントディスクリプタの転送方式をバルク転送からインタラプト転送に変更し、データ転送速度もデバイス識別情報設定部１０１により設定されたものに変更する（ステップＳ６０４）。転送方式をバルク転送から、優先度の高いインタラプト転送に変更することで、データ入力における転送速度の低下を低減している。
【００９０】
転送方式変換部２０４は、転送方式を含むデータ入力要求を、デバイス制御部２０５に通知する。デバイス制御部２０５はデバイス３００へデータ入力要求を通知する（ステップＳ６０５）。
【００９１】
デバイス制御部２０５は、デバイス３００からデータ入力要求に応じた入力データを受信する（ステップＳ６０６）。
【００９２】
デバイス制御部２０５は、転送方式変換部２０４にデバイス３００からの入力データを通知する。転送方式変換部２０４は、通知された入力データの送信先が、変更対象デバイスかどうか、デバイス情報記憶部２０７へ照合を要求する（ステップＳ６０７）。
【００９３】
転送方式変換部２０４は、デバイス情報記憶部２０７から照合結果を取得する（ステップＳ６０８）。
【００９４】
転送方式変換部２０４は、ステップＳ６０８で照合結果を判定する（ステップＳ６０９）。デバイス情報記憶部２０７から取得した照合結果が、変更対象デバイスの場合（ステップＳ６０９でＹｅｓ）、ステップＳ６１０に進む。変更対象デバイスでない場合（ステップＳ６０９でＮｏ）、ステップＳ６１１に進む。
【００９５】
転送方式変換部２０４は、バルク転送を行うデバイス３００としてデータ入力要求を受けているため、入力データの転送方式をインタラプト転送からバルク転送に変更する（ステップＳ６１０）。転送方式をインタラプト転送からバルク転送に変更することで、情報処理装置１００（デバイスドライバ１０３）に対してインタラプト転送ではなく、元々のバルク転送を行っているように認識させている。
【００９６】
転送方式変換部２０４は、転送方式を含む入力データを、通信制御部２０１に通知する。通信制御部２０１は情報処理装置１００へ、入力データを通知する（ステップＳ６１１）。
【００９７】
＜エンドポイントディスクリプタの書き換えについて＞
図７は、エンドポイントディスクリプタの書き換えを説明するための図である。ＵＳＢにおけるディスクリプタとは、ＵＳＢデバイス自体がどのような仕様かを記述した情報である。エンドポイントとはＵＳＢデバイス内部に存在するもので、ホストとデバイス間のデータ転送におけるポートのようなものであり、一般的にある程度のバッファメモリも有している。エンドポイントディスクリプタとはエンドポイント用のディスクリプタであり、エンドポイント番号、転送方式の種類、最大パケットサイズなどの仕様を記述した情報である。
【００９８】
まず、エンドポイントディスクリプタを構成するｂＩｎｔｅｒｖａｌ、ｗＭａｘＰａｃｋｅｔＳｉｚｅ、ｂｍＡｔｔｒｉｂｕｔｅｓ、ｂＥｎｄｐｏｉｎｔＡｄｄｒｅｓｓ、ｂＤｅｓｃｒｉｐｔｏｒＴｙｐｅ、ｂＬｅｎｇｔｈについてそれぞれ説明する。
【００９９】
ｂＩｎｔｅｒｖａｌは、データ転送のエンドポイントのポーリング間隔である。ポーリング間隔はμフレーム（１２５μｓｅｃ）の整数倍となる。
【０１００】
ｗＭａｘＰａｃｋｅｔＳｉｚｅは、送受信可能な最大のパケットサイズである。ビット１２とビット１１はμフレームあたりの追加的なトランザクション数で、ハイスピード対応のアイソクロナス転送およびインタラプト転送時に有効になる。ビット１２とビット１１が「００」の場合は追加なし、「０１」の場合はトランザクションが１つ追加、「１０」の場合はトランザクションが２つ追加となる。なお、データ転送速度は、このｗＭａｘＰａｃｋｅｔＳｉｚｅの書き換えるための情報として使用される。
【０１０１】
ｂｍＡｔｔｒｉｂｕｔｅｓは、転送の属性である。ビット１とビット０が「００」の場合がコントロール転送、「０１」の場合がアイソクロナス転送、「１０」の場合がバルク転送、「１１」場合がインタラプト転送となる。
【０１０２】
ｂＥｎｄｐｏｉｎｔＡｄｄｒｅｓｓは、エンドポイントとアドレスである。ビット３からビット０はエンドポイントの番号、ビット７が方向を示し、「０」の場合は出力用ンドポイント、「１」の場合は入力用エンドポイントになる。
【０１０３】
ｂＤｅｓｃｒｉｐｔｏｒＴｙｐｅは、ディスクリプタのタイプである。エンドポイントディスクリプタの場合には、「０ｘ０５」となる。
【０１０４】
ｂＬｅｎｇｔｈは、ディスクリプタ全体のサイズである。
【０１０５】
バルク転送からインタラプト転送へ切り換える場合、デバイス属性情報変換部２０６がｂｍＡｔｔｒｉｂｕｔｅｓのビット１とビット０を「１０」（バルク転送）から「１１」（インタラプト転送）に書き換える。インタラプト転送からバルク転送に切り換える場合、ｂｍＡｔｔｒｉｂｕｔｅｓのビット１とビット０のデータを「１１」（インタラプト転送）から「１０」（バルク転送）に書き換える。
【０１０６】
また、μフレームあたりの処理数を変更する場合はｗＭａｘＰａｃｋｅｔＳｉｚｅのビット１２とビット１１を「００」、「０１」、「１０」のいずれかに書き換える。「００」＜「０１」＜「１０」の順でμフレームあたりの処理数が増加するので、転送速度が速くなる。
【０１０７】
上述のように、本発明の実施形態では、複数のＵＳＢデバイスを接続して使用する場合に、転送帯域が確保されていない転送方式（バルク転送）から、転送帯域が確保され、通信の優先度をバルク転送より高いインタラプト転送に切り換えることで、通信の転送速度の低下を低減することができる。
【０１０８】
なお、本発明を適用しない場合は、図９に例示したように、ＵＳＢデバイスＡとＵＳＢデバイスＢが２つ接続された場合、バルク転送方式で転送できる転送帯域をＵＳＢデバイスＡとＵＳＢデバイスＢで分け合い、ＵＳＢデバイスＡは帯域幅がＢＬ×α（有効帯域率）×０．５になる。
【０１０９】
一方、本発明を適用した場合は、ＵＳＢデバイスＡを高優先度のデバイスとして登録することで、ＵＳＢデバイスＡとＵＳＢデバイスＢが２つ接続された場合でも、優先的にＵＳＢデバイスＡの帯域を確保し転送速度の低下を抑制することができる。
【０１１０】
具体的には、図１０に例示するように、ＵＳＢデバイスＡとＵＳＢデバイスＢが２つ接続された場合のＵＳＢデバイスＡの帯域幅はＢＷ×０．８×Ｉ（インタラプト転送用の帯域占有率）になる。
【０１１１】
ここで、ＢＬ＝ＢＷ×０．８×（１−（Ｉ+Ａ））である（Ａはアイソクロナス転送用の帯域占有率）。また、ＢＷ＞ＢＬであり、図９と図１０を比較した場合、本発明を適用した場合の方が帯域幅は大きくなり、通信の転送速度の低下を低減することができる。
【０１１２】
また、仮想化制御により、デバイス制御装置２００とデバイス３００との間をバルク転送からインタラプト転送に切り換え、さらに、デバイス制御装置２００と情報処理装置１００との間をインタラプト転送からバルク転送を切り換えることで、情報処理装置１００側からは、あたかも元々の転送方式で転送しているように見える。
【０１１３】
なお、デバイス情報記憶部２０７が、デバイス識別情報２０９を記憶し、照合を行うとして説明したが、デバイス属性情報通知部２０３やデバイス属性情報変換部２０６が照合を行ってもよい。
【０１１４】
なお、情報処理装置１００とデバイス３００との間で、仮想化制御を行わずとも本発明は実施可能である。この場合、図８に示すようにネットワークを介さず、ＰＣ等の装置であるデバイス制御装置２２０とデバイス３００が接続され、デバイス制御装置２２０の内部にデバイス識別情報設定部１０１、アプリケーション１０２、デバイスドライバ１０３を具備する。
【０１１５】
以上、本発明について上記の各実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【０１１６】
例えば、上記の実施形態の機能の制御方法として、この制御方法をデバイス制御装置に実行させるようにすればよい。また、上述の実施形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムをデバイス制御装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
【０１１７】
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施形態の機能を実現するソフトウェア（プログラムコード）を、ネットワークまたは各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。
【０１１８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１１９】
また、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現されるように構成してもよい。
【０１２０】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１２１】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１２２】
１００：情報処理装置
１０１：デバイス識別情報設定部
１０２：アプリケーション
１０３：デバイスドライバ
１０４：仮想化制御部
１０５：通信制御部
１１０：記憶部
１５１：ＣＰＵ
１５２：入力部
１５３：表示部
１５４：メモリ
１５５：通信部
２００、２２０：デバイス制御装置
１０１：デバイス識別情報設定部
１０２：アプリケーション
１０３：デバイスドライバ
２０１：通信制御部
２０２：仮想化制御部
２０３：デバイス属性情報通知部
２０４：転送方式変換部
２０５：デバイス制御部
２０６：デバイス属性情報変換部
２０７：デバイス情報記憶部
２０８：デバイス属性情報
２０９：デバイス識別情報
２１０：記憶部
２５１：ＣＰＵ
２５２：入力部
２５３：表示部
２５４：メモリ
２５５：通信部
３００：デバイス
３０１：デバイス識別情報
３０２：デバイス属性情報
【図１】
2019020851.tif 000003
【図２】
2019020851.tif 000004
【図３】
2019020851.tif 000005
【図４】
2019020851.tif 000006
【図５】
2019020851.tif 000007
【図６】
2019020851.tif 000008
【図７】
2019020851.tif 000009
【図８】
2019020851.tif 000010
【図９】
2019020851.tif 000011
【図１０】
2019020851.tif 000012