(57)【特許請求の範囲】
【請求項１】
ホストとの通信コマンド種別に対応したＵＳＢサブクラスを有する複数デバイスを備え，前記デバイスに論理インターフェースを割当て，前記論理インターフェースごとに単一のＵＳＢサブクラスを対応させて，前記ホストと通信を行うＵＳＢ複合デバイスにおいて，
第１の通信コマンドに対応した第１のＵＳＢサブクラスである第１のデバイスと，前記第１の通信コマンドと共通の通信コマンドを有する第２の通信コマンドに対応した第２のＵＳＢサブクラスである第２のデバイスとを，共通のＵＳＢサブクラスのデバイスとして共通の論理インターフェースに割当て，前記共通の論理インターフェースに前記共通のＵＳＢサブクラスを対応させた論理インターフェース情報を前記ホストの要求に応答して送信し，前記ホストに，前記論理インターフェースに関連づけて定義される論理ユニット数の問合せを前記共通の通信コマンドにより発行させ，
前記ホストからの論理ユニット数の問合せに応答して，前記第１，第２のデバイス数に対応する論理ユニット数を送信し，前記ホストに，前記論理ユニットごとのデバイス情報の問合せを前記共通の通信コマンドにより発行させ，
前記ホストからのデバイス情報の問合せに応答して，第１の論理ユニットに割当てられた前記第１のデバイスは前記第１のＵＳＢサブクラスに対応したデバイス情報を，第２の論理ユニットに割当てられた前記第２のデバイスは前記第２のＵＳＢサブクラスに対応したデバイス情報をそれぞれ前記ホストに送信し，その後は前記ホストに，前記第１のデバイスとは前記第１の通信コマンドで，前記第２のデバイスとは前記第２の通信コマンドで通信を行わせることを特徴とするＵＳＢ複合デバイス。
【請求項２】
請求項１において，前記第１，第２のデバイスは，記憶媒体に対しデータの入出力を行うストレージデバイスであることを特徴とするＵＳＢ複合デバイス。
【請求項３】
ホストとの通信コマンド種別に対応したＵＳＢサブクラスを有する複数デバイスを備え，前記デバイスに論理インターフェースを割当て，前記論理インターフェースごとに単一のＵＳＢサブクラスを対応させたＵＳＢ複合デバイスと，前記ＵＳＢ複合デバイスと通信を行うホストとを有するＵＳＢ通信システムにおいて，
前記ＵＳＢ複合デバイスは，第１の通信コマンドに対応した第１のＵＳＢサブクラスである第１のデバイスと，前記第１の通信コマンドと共通の通信コマンドを有する第２の通信コマンドに対応した第２のＵＳＢサブクラスである第２のデバイスとを，共通のＵＳＢサブクラスのデバイスとして共通の論理インターフェースに割当て，前記共通の論理インターフェースに前記共通のＵＳＢサブクラスを対応させた論理インターフェース情報を前記ホストの要求に応答して送信し，
前記ホストは，前記論理インターフェースに関連づけて定義される論理ユニット数の問合せを前記共通の通信コマンドにより前記ＵＳＢ複合デバイスに発行し，
前記ＵＳＢ複合デバイスは，前記ホストからの論理ユニット数の問合せに応答して，前記第１，第２のデバイス数に対応する論理ユニット数を送信し，
前記ホストは，前記論理ユニットごとのデバイス情報の問合せを前記共通の通信コマンドにより前記ＵＳＢ複合デバイスに発行し，
前記ホストからのデバイス情報の問合せに応答して，第１の論理ユニットに割当てられた前記第１のデバイスは前記第１のＵＳＢサブクラスに対応したデバイス情報を，第２の論理ユニットに割当てられた前記第２のデバイスは前記第２のＵＳＢサブクラスに対応したデバイス情報をそれぞれ前記ホストに送信し，
前記ホストは，前記第１のデバイスとは前記第１の通信コマンドで，前記第２のデバイスとは前記第２の通信コマンドで通信を行うことを特徴とするＵＳＢ通信システム。
【請求項４】
請求項３において，前記第１，第２のデバイスは，記憶装置に対しデータの入出力を行うストレージデバイスであることを特徴とするＵＳＢ通信システム。
【請求項５】
ホストとの通信コマンド種別に対応したＵＳＢサブクラスを有する複数デバイスを備え，前記デバイスに論理インターフェースを割当て，前記論理インターフェースごとに単一のＵＳＢサブクラスを対応させたＵＳＢ複合デバイスと，前記ＵＳＢ複合デバイスと通信を行うホストにおけるＵＳＢ通信方法において，
前記ＵＳＢ複合デバイスにて，第１の通信コマンドに対応した第１のＵＳＢサブクラスである第１のデバイスと，前記第１の通信コマンドと共通の通信コマンドを有する第２の通信コマンドに対応した第２のＵＳＢサブクラスである第２のデバイスとを，共通のＵＳＢサブクラスのデバイスとして共通の論理インターフェースに割当て，前記共通の論理インターフェースに，前記共通のＵＳＢサブクラスを対応させた論理インターフェース情報を前記ホストの要求に応答して送信する工程と，
前記ホストにて，前記論理インターフェースに関連づけて定義される論理ユニット数の問合せを前記共通の通信コマンドにより前記ＵＳＢ複合デバイスに発行する工程と，
前記ＵＳＢ複合デバイスにて，前記ホストからの論理ユニット数の問合せに応答して，前記第１，第２のデバイス数に対応する論理ユニット数を送信する工程と，
前記ホストにて，前記論理ユニットごとのデバイス情報の問合せを前記共通の通信コマンドにより前記ＵＳＢ複合デバイスに発行する工程と，
前記ホストからのデバイス情報の問合せに応答して，第１の論理ユニットに割当てられた前記第１のデバイスにて前記第１のＵＳＢサブクラスに対応したデバイス情報を前記ホストに送信する工程と，
前記ホストからのデバイス情報の問合せに応答して，第２の論理ユニットに割当てられた前記第２のデバイスにて前記第２のＵＳＢサブクラスに対応したデバイス情報を前記ホストに送信する工程と，
前記ホストにて，前記第１のデバイスとは前記第１の通信コマンドで，前記第２のデバイスとは前記第２の通信コマンドで通信を行う工程とを有することを特徴とするＵＳＢ通信方法。
【請求項６】
請求項５において，前記第１，第２のデバイスは，記憶装置に対しデータの入出力を行うストレージデバイスであることを特徴とするＵＳＢ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＵＳＢ複合デバイス，ＵＳＢ通信システム，及びＵＳＢ通信方法に関し，特に，異なるＵＳＢサブクラスの複数デバイスを，共通のＵＳＢサブクラスのデバイスとして同一の論理インターフェースに割当てて，ホストには前記共通の論理インターフェースの論理ユニットごとにそれぞれのデバイスに対応した通信コマンドで各デバイスと通信を行わせるＵＳＢ複合デバイス，ＵＳＢシステム，及びＵＳＢ通信方法に関する。
【背景技術】
【０００２】
プリンタ，スキャナ，ファクシミリ装置などのデバイスを備え，パーソナルコンピュータなどのホストに接続される複合機が知られている。例えば，特許文献１には，かかる複合機がＵＳＢ（ユニバーサルシリアルバス）インターフェースによりパーソナルコンピュータと接続され，パーソナルコンピュータから複合機の各デバイスの機能を制御する方法が記載されている。
【０００３】
更に，近時ではこうした複合機に，メモリカード等の記憶媒体が装着可能なメモリカード用リーダライタなどのデバイスを設け，ＵＳＢインターフェースにより接続されたホストから，複合機に装着された記憶媒体へのデータ送受信を行う方法が提案されている。より具体的には，単一の物理インターフェース上にＵＳＢ規格で定める複数の論理インターフェースを設け，その論理インターフェースにプリンタやメモリカード用リーダライタなどのデバイスを割当てることにより，ホストは各論理インターフェースごとにデバイスを認識でき，ホストとデバイスとのデータ送受信が可能となる。
【特許文献１】特開２００３−１９８７７９
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここで，プリンタやメモリカード用リーダライタなどのデバイスは，デバイスの種類とデバイスがサポートする通信コマンドの種別に応じて，ＵＳＢ規格におけるＵＳＢクラス及びＵＳＢサブクラスが定義されている。例えば，メモリカード用リーダライタのＵＳＢクラスは「マスストレージ」であり，ＵＳＢサブクラスは「ＳＣＳＩ」である。そして，複数のデバイスを接続する際には，ＵＳＢ規格では，ＵＳＢクラスとＵＳＢサブクラスの１つの組合せのデバイスに対し，１つの論理インターフェースが割当てられる。すると，複合機がＵＳＢクラスやＵＳＢサブクラスが異なるデバイスを複数搭載する場合には，ＵＳＢクラスとＵＳＢサブクラスの組合せの数だけ論理インターフェースを設ける必要がある。
【０００５】
よって，複合機にプリンタとスキャナといったＵＳＢクラスが異なるデバイスの場合は当然別々の論理インターフェースを割当てる必要がある。また，メモリカード用リーダライタとＣＤ／ＤＶＤ−Ｒドライブのように，ＵＳＢクラスはいずれも「マスストレージ」で同じであるが，メモリカード用リーダライタはＵＳＢサブクラスが「ＳＣＳＩ」，ＣＤ／ＤＶＤ−ＲドライブはＵＳＢサブクラスが「ＡＴＡＰＩ」というようにＵＳＢサブクラスが異なるデバイスを設ける場合には，ＵＳＢサブクラス別に論理インターフェースを割当てる必要がある。
【０００６】
しかしながら，論理インターフェース数を増加すると，増加した論理インターフェースを制御するために複合機に搭載されるデバイスコントローラの回路規模を拡大せねばならず，そのためにはコスト高となってしまうという問題がある。
【０００７】
そこで，上記の問題点に鑑みてなされた本発明の目的は，論理インターフェース数を増やすことなくＵＳＢサブクラスの異なるデバイスを設け，それぞれのデバイスとホストとの通信を可能にするＵＳＢ複合デバイス等を提供することにある。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために，本発明の第１の側面によれば，ホストとの通信コマンド種別に対応したＵＳＢサブクラスを有する複数デバイスを備え， 前記デバイスに論理インターフェースを割当て，前記論理インターフェースごとに単一のＵＳＢサブクラスを対応させて，前記ホストと通信を行うＵＳＢ複合デバイスにおいて，第１の通信コマンドに対応した第１のＵＳＢサブクラスである第１のデバイスと，前記第１の通信コマンドと共通の通信コマンドを有する第２の通信コマンドに対応した第２のＵＳＢサブクラスである第２のデバイスとを，共通のＵＳＢサブクラスのデバイスとして共通の論理インターフェースに割当て，前記共通の論理インターフェースに前記共通のＵＳＢサブクラスを対応させた論理インターフェース情報を前記ホストの要求に応答して送信し，前記ホストに，前記論理インターフェースに関連づけて定義される論理ユニット数の問合せを前記共通の通信コマンドにより発行させる。そして，前記ホストからの論理ユニット数の問合せに応答して，前記第１，第２のデバイス数に対応する論理ユニット数を送信し，前記ホストに，前記論理ユニットごとのデバイス情報の問合せを前記共通の通信コマンドにより発行させる。更に，前記ホストからのデバイス情報の問合せに応答して，第１の論理ユニットに割当てられた前記第１のデバイスは前記第１のＵＳＢサブクラスに対応したデバイス情報を，第２の論理ユニットに割当てられた前記第２のデバイスは前記第２のＵＳＢサブクラスに対応したデバイス情報をそれぞれ前記ホストに送信し，前記ホストに，前記第１のデバイスとは前記第１の通信コマンドで，前記第２のデバイスとは前記第２の通信コマンドで通信を行わせることを特徴とする。
【０００９】
上記第１の側面によれば，ＵＳＢ複合デバイスは，ＵＳＢサブクラスが異なるデバイスを共通のＵＳＢサブクラスのデバイスとして共通の論理インターフェースを割り当て，その共通の論理インターフェースについては，共通のＵＳＢサブクラスを対応させた論理インターフェース情報をホストに送信することにより，ホストにその共通の論理インターフェースに関連付けて論理ユニットを一旦認識させる。そして，その後に各論理ユニットに割当てられたデバイスがそのＵＳＢサブクラスを含むデバイス情報をホストに送信することにより，ホストはそのＵＳＢサブクラスにしたがって各デバイスがサポートするコマンドにより各デバイスと通信する。よって，ＵＳＢ複合デバイスは論理インターフェースを増やすことなく異なるＵＳＢサブクラスのデバイスを接続することが可能となる。  
【発明を実施するための最良の形態】
【００１０】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１１】
ここで，以下の説明で用いる用語を説明する。「デバイス」とは，プリンタ，ＣＤ／ＤＶＤ−Ｒドライブなどの各種周辺機器をいい，「ＵＳＢ複合デバイス」とは，複数のデバイスを備え，それ自体ホストとはＵＳＢ規格に即した単一の物理インターフェースで接続されつつ，個々のデバイスとホストとの通信を制御する装置をいう。また，「ＵＳＢクラス」とは，プリンタやマスストレージといった，デバイスの種類に基づくＵＳＢ規格上のデバイスの分類をいい，「ＵＳＢサブクラス」とは，ＳＣＳＩやＡＴＡＰＩといった，デバイスがサポートするコマンド種別に応じたＵＳＢ規格上のデバイスの分類であってＵＳＢサブクラスの下位の分類をいう。また，「論理インターフェース」とは，ＵＳＢ規格にしたがって設けられる論理上の接続先をいい，それぞれが論理アドレスを有し，個々のデバイスに割当てられる。また，「論理ユニット」とは，ＵＳＢ規格にしたがって設けられる論理上の接続先であって論理インターフェースの下位のものをいい，それぞれが論理アドレスを有し，同一の論理インターフェース下の個々のデバイスに割当てられる。更に，「論理インターフェース情報」とは，論理インターフェースに割当てられたデバイスのＵＳＢクラス，ＵＳＢサブクラス等の論理インターフェースに関する情報をいい，「デバイス情報」とは論理インターフェースや論理ユニットに割当てられたデバイスのＵＳＢサブクラスや，メモリカード用リーダライタ，ＣＤ／ＤＶＤ−Ｒドライブなどのデバイスの種別に関する情報をいう。
【００１２】
図１は，本実施の形態におけるホストとＵＳＢ複合デバイスの構成図である。本実施の形態においては，パーソナルコンピュータ１００によりホストを構成し，プリンタ，スキャナ，メモリカード用リーダライタ（以下，「メモリカードデバイス」という），及びＣＤ／ＤＶＤ−Ｒドライブといったデバイスを搭載した複合機２００により構成されるＵＳＢ複合デバイスを，パーソナルコンピュータ１００にＵＳＢ規格に則ったインターフェースで接続する。まず，図１（Ａ）では，従来技術における構成を説明し，図１（Ｂ）では，本実施の形態における特徴的な構成を説明する。
【００１３】
図１（Ａ）において，パーソナルコンピュータ１００は，ソフトウェアとしてアプリケーションプログラム１０２，オペレーティングシステム１１０，汎用ＵＳＢドライバ１２０，プリンタ用デバイスドライバ１１２，スキャナ用デバイスドライバ１１４，メモリカードデバイス用デバイスドライバ１１６，ＣＤ／ＤＶＤ−Ｒドライブ用デバイスドライバ１１８を有し，ハードウェアとしてＵＳＢホストコントローラ１４０とを有する。
【００１４】
アプリケーションプログラム１０２は，ユーザに必要な機能を実装したワープロや表計算，画像処理等のソフトウェアプログラムであり，入力されたデータや各種コマンドをオペレーティングシステム１１０に渡す。オペレーティングシステム１１０は，パーソナルコンピュータ１００のリソースを統括的に制御するソフトウェアであり，一例としてマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）である。オペレーティングシステム１１０は，アプリケーションプログラム１０２から受け取ったデータやコマンドをプリンタ用デバイスドライバ１１２等の各種デバイスドライバ１１２〜１１８に渡す。
【００１５】
プリンタ用デバイスドライバ１０２等の各種デバイスドライバ１１２〜１１８は，後述する複合機２００に備えられた個々のデバイスがサポートするコマンドに準拠したドライバプログラムである。例えば，メモリカード用のデバイスドライバ１１６は，オペレーティングシステム１１０から受け取ったコマンドを，メモリカードデバイスがサポートするＳＣＳＩコマンドに変換して，汎用ＵＳＢドライバ１２０に渡す。
【００１６】
汎用ＵＳＢドライバ１２０はＵＳＢホストコントローラ１４０を制御し，ＵＳＢホストコントローラ１４０は，不図示のＵＳＢコネクタによりＵＳＢケーブル１８０を介して複合機２００と接続され，複合機２００とのＵＳＢ規格に基づく通信を可能にする。ＵＳＢホストコントローラ１４０は複合機２００に搭載されたデバイスの論理インターフェースや論理ユニット番号を記憶し，プリンタ用デバイスドライバ１０２等から渡される各種コマンドやデータをＵＳＢ規格に従ってパケットに変換して，対象となる論理インターフェースまたは論理ユニットに向けて複合機２００に送信する。
【００１７】
複合機２００は，ＵＳＢインターフェース２０２，デバイスコントローラ２０４，プリンタ２０６，スキャナ２０８，メモリカードデバイス２１０，及びＣＤ／ＤＶＤ−Ｒドライブ２１２とを備える。
【００１８】
ＵＳＢインターフェース２０２は，不図示のＵＳＢコネクタによりＵＳＢケーブル１８０を介してパーソナルコンピュータ１００との通信を行う。すなわち，ＵＳＢインターフェース２０２は，ＵＳＢ規格に基づいたパケットの送受信，シリアルデータとパラレルデータとの相互変換，パケットの生成分解を行い，パーソナルコンピュータ１００から受信したコマンドやデータをパケットから取り出してデバイスコントローラ２０４に渡し，あるいはデバイスコントローラ２０４からのデータをパーソナルコンピュータ１００へ送信する。
【００１９】
デバイスコントローラ２０４は，ＵＳＢハブ２０３を介してプリンタ２０６，スキャナ２０８，メモリカードデバイス２１０，ＣＤ／ＤＶＤ−Ｒドライブ２１２といったデバイスと接続される。これらのデバイスには論理インターフェースＩＦ１〜ＩＦ４が割当てられ，デバイスコントローラ２０４は，論理インターフェースＩＦ１〜ＩＦ４ごとに，割当てられたデバイスのＵＳＢクラス，ＵＳＢサブクラスなどの論理インターフェース情報を記憶装置２０５に格納する。そして，デバイスコントローラ２０４がＵＳＢホストコントローラ１４０からの要求に応答して論理インターフェース情報を記憶装置２０５から読み出して送信することにより，汎用ＵＳＢドライバ１２０は論理インターフェースごとのデバイスを認識して，ＵＳＢホストコントローラ１４０の記憶装置に論理インターフェースとデバイスとの対応関係を格納することができる。
【００２０】
ここで，図２を用いて，上記プリンタ２０６等の各デバイスへの論理インターフェースＩＦ１〜ＩＦ４の割当てが，ＵＳＢ規格に基づき，デバイスのＵＳＢクラス，ＵＳＢサブクラスに従ってなされることについて説明する。
【００２１】
まず，各デバイスには，図２（Ａ）に示すように，デバイスの種類に応じたＵＳＢクラスと，そのデバイスがサポートする，ホストとの通信コマンド種別に応じたＵＳＢサブクラスとがＵＳＢ規格で定義されている。すなわち，プリンタ２０６のＵＳＢクラスは「プリンタ」，ＵＳＢサブクラスは「プリンタ」である。また，スキャナ２０８のＵＳＢクラスは「イメージデバイス」，ＵＳＢサブクラスは「イメージデバイス」である。また，メモリカードデバイス２１０のＵＳＢクラスは「マスストレージ」，ＵＳＢサブクラスは「ＳＣＳＩ」である。そして，ＣＤ／ＤＶＤ−Ｒドライブ２１２のＵＳＢクラスは「マスストレージ」，ＵＳＢサブクラスは「ＡＴＡＰＩ」である。
【００２２】
そして，ＵＳＢ規格では，原則として，ホスト側の汎用ＵＳＢドライバが，論理インターフェースごとに，その論理インターフェースに割当てられたデバイスがサポートするコマンドでそのデバイスのデバイス情報の問合せを行う。このため，１つの論理インターフェースには，１つのＵＳＢクラスとＵＳＢサブクラスの組合せのデバイスのみを割当て，論理インターフェースに対応するコマンド種別が１つになるように規定されている。
【００２３】
よって，図２（Ｂ）に示すように，１つの論理インターフェースに対しては，ＵＳＢクラスが異なる複数のデバイスや，ＵＳＢクラスが同じでもＵＳＢサブクラスが異なる，つまりサポートするコマンド種別が異なる複数のデバイスを割当てることができない。すなわち，ＵＳＢクラスが「プリンタ」，ＵＳＢサブクラスが「プリンタ」であるプリンタ２０６には第１論理インターフェースＩＦ１が割当てられ，ＵＳＢクラスが「イメージデバイス」，ＵＳＢサブクラスが「イメージデバイス」であるスキャナ２０８には第２論理インターフェースＩＦ２が割当てられる。また，ＵＳＢクラスが「マスストレージ」，ＵＳＢサブクラスが「ＳＣＳＩ」であるメモリカードデバイス２１０には第３論理インターフェースＩＦ３が割当てられる。ここで，ＣＤ／ＤＶＤ−Ｒドライブ２１２のＵＳＢクラスは「マスストレージクラス」であり，メモリカードデバイス２１０と同じであるが，ＵＳＢサブクラスが「ＡＴＡＰＩ」であり異なるため，ＣＤ／ＤＶＤ−Ｒドライブ２１２にはメモリカードデバイス２１０とは異なる第４論理インターフェースＩＦ４が割当てられる。
【００２４】
このように，ＵＳＢ規格上は論理インターフェースを適宜設けることにより，複数のデバイスをＵＳＢハブ２０３を介してデバイスコントローラ２０４に接続することができる。しかしながら，ＵＳＢクラスやＵＳＢサブクラスの異なるデバイスを増設してゆくと，論理インターフェース数も増加し，これに応じてデバイスコントローラ２０４は回路規模を拡大しなくてはならなくなる。また，論理インターフェースごとに論理インターフェース情報を管理しなくてはならず，そのためのメモリ資源消費や処理負担が増加するという問題が生じる。
【００２５】
ここで，ＵＳＢ規格では，上述したように１つの論理インターフェースには１つのＵＳＢクラスとＵＳＢサブクラスの組合せのデバイスのみを割当てるのが原則なので，ＵＳＢクラスとＵＳＢサブクラスが同じデバイスであれば，複数のデバイスを１つの論理インターフェースに割当てることができる。例えば，図２（Ｃ）に示すように，ＵＳＢクラス「マスストレージ」，ＵＳＢサブクラス「ＳＣＳＩ」を有する，メモリカードデバイス２１０，第２のメモリカードデバイス２１０ａ，ハードディスクドライブ２１０ｂの３つのデバイスには１つの論理インターフェースＩＦ３を割当てることができる。また同様にＵＳＢクラス「マスストレージ」，ＵＳＢサブクラス「ＡＴＡＰＩ」を有する，ＣＤ−ＤＶＤ−Ｒドライブ２１２，第２のＣＤ−ＤＶＤ−Ｒドライブ２１２ａの２つのデバイスにも１つの論理インターフェースＩＦ４を割当てることができる。いずれの場合にも，論理インターフェースの下に論理ユニットＬＵＮ１，ＬＵＮ２，…が設けられ，汎用ＵＳＢドライバ１２０は論理ユニットごとに割当てられたデバイスを認識することができる。
【００２６】
上記のような場合，汎用ＵＳＢドライバ１２０が論理ユニットに割当てられたデバイスを認識する際には，２段階の問合せを行う。詳しくは図４を用いて後述するが，まず第１段階として，論理インターフェースに割当てられたデバイスのＵＳＢクラス，ＵＳＢサブクラス等の論理インターフェース情報をデバイスコントローラ２０４に問い合わせ，デバイスコントローラ２０４がこれに応答する。そして，第２段階として，汎用ＵＳＢドライバ１２０が論理インターフェースに対応するＵＳＢサブクラスを取得すると，そのＵＳＢサブクラスに対応したコマンドで，その論理インターフェースに割当てられた論理ユニットの各デバイスに対しデバイス情報の問合せを行い，デバイスから返信されるデバイス情報に基づき論理ユニットごとにデバイスがサポートするコマンドやデバイスの種別を認識する。
【００２７】
よって，上記の第１段階で問合せにデバイスコントローラ２０４が応答する際に，例えば第３論理インターフェースＩＦ３にＵＳＢサブクラス「ＳＣＳＩ」を対応付けた論理インターフェース情報を送信すると，第２段階で汎用ＵＳＢドライバ１２０からはＳＣＳＩコマンドで問合せが発行され，第３論理インターフェースＩＦ３に割当てられたＳＣＳＩコマンドをサポートするメモリカードデバイス２１０等はこれに応答してデバイス種別を返信することができる。
また，第４論理インターフェースＩＦ４にＵＳＢサブクラス「ＡＴＡＰＩ」を対応付けた論理インターフェース情報を送信すると，汎用ＵＳＢドライバ１２０からはＡＴＡＰＩコマンドで問合せが発行され，第４論理インターフェースＩＦ４に割当てられたＡＴＡＰＩコマンドをサポートするＣＤ／ＤＶＤ−Ｒドライブ２１２等はこれに応答してデバイス種別を返信することができる。
【００２８】
ここで，ＳＣＳＩコマンドとＡＴＡＰＩコマンドは，相互に共通のコマンドを有している。例えば，図３の表に示すように，デバイスの記憶媒体にデータを読み書きするＲｅａｄ，Ｗｒｉｔｅなどのコマンドや，ホストがデバイス種別を問合せるＩｎｑｕｉｒｙコマンドは共通にサポートされている。よって，論理インターフェースに対応付けるＵＳＢサブクラスが「ＳＣＳＩ」であっても「ＡＴＡＰＩ」であっても，第１段階の問合せにはＩｎｑｕｉｒｙコマンドが発せられる。すると，ＵＳＢサブクラスが「ＳＣＳＩ」であるメモリカードデバイス２１０等のデバイスも，ＵＳＢサブクラスが「ＡＴＡＰＩ」であるＣＤ／ＤＶＤ−Ｒドライブ２１２等のデバイスも，いずれも，上記共通コマンドであるＩｎｑｕｉｒｙコマンドを受付けて，デバイス情報を返信することができる。
【００２９】
そこで，図１（Ｂ）に戻ると，本実施の形態では複合機２００はメモリカードデバイス２１０とＣＤ／ＤＶＤ−Ｒドライブ２１２とを，共通のＵＳＢサブクラスのデバイスとして第３論理インターフェースＩＦ３に割当てる。すなわち，デバイス認識の第１段階では，実際はメモリカードデバイス２１０のＵＳＢサブクラスは「ＳＣＳＩ」であるにもかかわらず，第３論理インターフェースＩＦ３に対応する共通のＵＳＢサブクラスを「ＡＴＡＰＩ」として一旦ホストに論理インターフェース情報を送信する。
【００３０】
そうすることにより，デバイス認識の第２段階で，汎用ＵＳＢドライバ１２０には，ＳＣＳＩコマンドとＡＴＡＰＩコマンドに共通のＩｎｑｕｉｒｙコマンドで，第３論理インターフェースＩＦ３に関連付けた論理ユニット（ＬＵＮ１，ＬＵＮ２）ごとにメモリカードデバイス２１０とＣＤ／ＤＶＤ−Ｒドライブ２１２にデバイス情報の問合せを発行させることができる。
【００３１】
そして，各論理ユニットごとに，第１論理ユニットＬＵＮ１のメモリカードデバイス２１０はＵＳＢサブクラス「ＳＣＳＩ」であるメモリカードデバイスであるというデバイス情報を，第２論理ユニットＬＵＮ２ＣＤ／ＤＶＤ−Ｒドライブ２１２はＵＳＢサブクラスが「ＡＴＡＰＩ」であるＣＤ／ＤＶＤ−Ｒドライブであるというデバイス情報をそれぞれ送信する。これにより，送信されたＵＳＢサブクラスにしたがって，汎用ＵＳＢドライバ１２０にそれぞれのデバイスとの通信に必要なデバイスドライバをロードさせることができる。
【００３２】
このようにして，パーソナルコンピュータ１００では，それぞれのデバイスに対して適したデバイスドライバを用いて通信を行うことができ，複合機２００側では，デバイスコントローラの回路規模増加等を招くことなく，これらのデバイスを接続することが可能となる。
【００３３】
図４は，パーソナルコンピュータ１００と複合機２００とで行うデータ送受信手順を説明する図である。図４では，パーソナルコンピュータ１００と複合機２００とがＵＳＢケーブル１８０を介して接続された際に，ＵＳＢ接続の起動処理のために，ＵＳＢホストコントローラ１４０が汎用ＵＳＢドライバ１２０に従ってデバイスコントローラ２０４に問合せを行い，デバイスコントローラ２０４がこれに応答してデータを送信する手順について説明する。
【００３４】
まず，全体の手順は，上述したように，ＵＳＢホストコントローラ１４０が複合機２００に設けられた論理インターフェースに関する情報を取得する第１段階（手順Ｓ１０２〜Ｓ１０４，手順Ｓ２０２〜Ｓ２０４），論理インターフェースごとに，個々のデバイスに対してデバイス種別を問合せる第２段階（手順Ｓ１０６〜Ｓ１０８，手順Ｓ２０６〜Ｓ２０８）とに分けられる。そして更に，第３段階として汎用ＵＳＢドライバ１２０がデバイスドライバをロードしてデバイス毎にサポートされるコマンドで通信が行われる（手順Ｓ１１０，Ｓ１１２）。以下，段階ごとに説明する。
［第１段階］
まず，起動処理が開始されると，汎用ＵＳＢドライバ１２０は複合機２００のデバイスに関する情報を得るために，ＵＳＢホストコントローラ１４０にＵＳＢ規格に基づくＧｅｔＤｅｓｃｒｉｐｔｏｒコマンドを送信させる（Ｓ１０２）。
【００３５】
すると，デバイスコントローラ２０４は，複合機２００のコンフィグレーション情報として，全論理インターフェース数「３」が記述されたコンフィグレーションディスクリプタを返信し，さらに全ての論理インターフェースＩＦ１〜ＩＦ３ごとに，論理インターフェースに割当てられたデバイスのＵＳＢクラスとＵＳＢサブクラスを含む論理インターフェース情報が記述されたインターフェースディスクリプタを返信する（Ｓ２０２）。その際，記憶装置２０５には図５に示すような論理インターフェースとＵＳＢクラス，ＵＳＢサブクラスの対応関係が格納されており，これを読み出して論理インターフェースごとの論理インターフェース情報を送信する。
【００３６】
図５に示すように，第３論理インターフェースＩＦ３には，ＵＳＢクラス「マスストレージ」と，ＵＳＢサブクラス「ＡＴＡＰＩ」が対応付けて記憶装置２０５に格納されている。本実施の形態では，第３論理インターフェースＩＦ３にＵＳＢサブクラスが「ＳＣＳＩ」であるメモリカードデバイス２１０と，ＵＳＢサブクラスが「ＡＴＡＰＩ」であるＣＤ／ＤＶＤ−Ｒドライブ２１２とを，ＵＳＢサブクラス「ＡＴＡＰＩ」のデバイスとして割り当て，第３論理インターフェースＩＦ３にＵＳＢサブクラス「ＡＴＡＰＩ」を対応させた論理インターフェース情報をホストに送信する。そうすることにより，汎用ＵＳＢドライバ１２０は第３論理インターフェースＩＦ３の下位に定義される論理ユニット番号を用いて，ＡＴＡＰＩコマンドによるデバイス種別問合せを行うことが可能になる。
【００３７】
図４に戻り，ＵＳＢホストコントローラ１４０が全ての論理インターフェースについての論理インターフェース情報を受け取ると，汎用ＵＳＢドライバ１２０は，第３論理インターフェースＩＦ３については，上記内容の論理インターフェース情報に基づき，論理インターフェース下に定義される論理ユニット数の最大値を要求する。そのために，ＵＳＢ規格で最大論理ユニット数を問合せるコマンドである，ＧｅｔＭａｘＬＵＮ（Ｌｏｇｉｃａｌ Ｕｎｉｔ Ｎｕｍｂｅｒ）をデバイスコントローラ２０４に送信する（Ｓ１０４）。すると，デバイスコントローラ２０４は，この問合せに応答して，記憶装置２０５に格納されている第３論理インターフェースＩＦ３の論理ユニット数，すなわちメモリカードデバイス２１０とＣＤ／ＤＶＤ−Ｒドライブ２１２を割当てる論理ユニット数「２」を読み出して送信する（Ｓ２０４）。
［第２段階］
次に，ＵＳＢホストコントローラ１４０が最大論理ユニット数を受け取ると，汎用ＵＳＢドライバ１２０は，論理ユニット番号ごとにデバイスの種別を要求する。すなわち，まず第１論理ユニットＬＵＮ１に対し，ＡＴＡＰＩコマンドによりＩｎｑｕｉｒｙコマンドを送信する（Ｓ１０６）。
【００３８】
ここで，第１論理ユニットＬＵＮ１に対応するメモリカードデバイス２１０は，ＳＣＳＩコマンドをサポートするデバイスであるが，上述したようにＩｎｑｕｉｒｙコマンドはＳＣＳＩ，ＡＴＡＰＩいずれのコマンドにも共通であるので，メモリカードデバイス２１０はこのＩｎｑｕｉｒｙコマンドを受付けて応答することができる。よって，メモリカードデバイス２１０は，ＵＳＢサブクラスが「ＳＣＳＩ」のメモリカードデバイスであるというデバイス情報を送信する（Ｓ２０６）。
【００３９】
また，汎用ＵＳＢドライバ１２０は，第２論理ユニットＬＵＮ２に対しても，ＡＴＡＰＩコマンドによりＩｎｑｕｉｒｙコマンドを送信する（Ｓ１０８）。すると，第２論理ユニットＬＵＮ２に対応するＣＤ／ＤＶＤ−Ｒドライブ２１２は，ＡＴＡＰＩコマンドをサポートしているので，このＩｎｑｕｉｒｙコマンドを受付けて，これに応答してＵＳＢサブクラスが「ＡＴＡＰＩ」のＣＤ／ＤＶＤ−Ｒであるというデバイス情報を送信する（Ｓ２０８）。
【００４０】
すると汎用ＵＳＢドライバ１２０は，メモリカードデバイス２１０から送信されたデバイス情報から，第３論理インターフェースＩＦ３の第１論理ユニットＬＵＮ１には，ＳＣＳＩコマンドをサポートするメモリカードデバイスが接続されていることを認識し，ＳＣＳＩコマンドに準拠するメモリカードデバイス用のデバイスドライバ１１６をロードする。また，ＣＤ／ＤＶＤ−Ｒドライブ２１２から送信されたデバイス情報からは，第３インターフェースＩＦ３の第２論理ユニットＬＵＮ２には，ＡＴＡＰＩコマンドをサポートするＣＤ／ＤＶＤ−Ｒドライブが接続されていることを認識し，ＡＴＡＰＩコマンドに準拠したＣＤ／ＤＶＤ−Ｒドライブ用のデバイスドライバ１１８をロードする。
［第３段階］
これより後は，メモリカード用のデバイスドライバ１１６がオペレーティングシステム１１０から受け取ったコマンドをＳＣＳＩコマンドに変換して汎用ＵＳＢドライバ１２０に渡し，汎用ＵＳＢドライバ１２０は第３論理インターフェースＩＦ３の第１論理ユニットＬＵＮ１に向けてＳＣＳＩコマンドでデータを送信することができ，メモリカードデバイス２１０に対するデータの読出しや書込みを行うことができる（Ｓ１１０）。
【００４１】
同様に，ＣＤ／ＤＶＤ−Ｒ用のデバイスドライバ１１８がオペレーティングシステム１１０から受け取ったコマンドをＡＴＡＰＩコマンドに変換して汎用ＵＳＢドライバ１２０に渡し，汎用ＵＳＢドライバ１２０は第３論理インターフェースＩＦ３の第２論理ユニットＬＵＮ２に向けてＡＴＡＰＩコマンドでデータを送信することができ，ＣＤ／ＤＶＤ−Ｒ２１２に対するデータの読出しや書込みを行うことができる（Ｓ１１２）。
【００４２】
なお，上述した第１段階で，第３論理インターフェースＩＦ３のＵＳＢサブクラスを「ＳＣＳＩ」ではなく「ＡＴＡＰＩ」と記述した論理インターフェース情報を送信するのは，次の理由による。上記のホストコントローラ２０４の動作手順は，現時点のＵＳＢ規格における仕様に基づく汎用ＵＳＢドライバ１２０の動作に対応するものであるが，仕様変更などにより汎用ＵＳＢドライバ１２０の動作手順が変更される可能性がある。すなわち，現時点では，汎用ＵＳＢドライバ１２０は第２段階において論理ユニットごとにデバイス情報を受け取った時点で各デバイスに適したデバイスドライバをロードするが，例えば，汎用ＵＳＢドライバ１２０が論理インターフェースごとの論理インターフェース情報に含まれるＵＳＢサブクラスを取得した第１段階において，ＵＳＢサブクラスに応じたコマンドをサポートするデバイスドライバをロードする場合が考えられる。そのような場合に，第３論理インターフェースＩＦ３のＵＳＢサブクラスを「ＳＣＳＩ」とすると，次のような問題が生じる。
【００４３】
図６に示すように，デバイスコントローラ２０４が仮に第３論理インターフェースＩＦ３のＵＳＢサブクラスを「ＳＣＳＩ」と記述した論理インターフェース情報を送信したとすると（Ｓ２０２ａ），汎用ＵＳＢドライバ１２０は，ＳＣＳＩコマンド準拠のデバイスドライバとしてメモリカードデバイス用デバイスドライバ１１６をロードする。すると，それ以後はメモリカードデバイス用デバイスドライバ１１６がメモリカードデバイス２１０，あるいはＣＤ／ＤＶＤ−Ｒドライブ２１２にデータの読み出し・書込みを行う（Ｓ１１０ａ，Ｓ１１２ａ）。
【００４４】
しかしながら，ＳＣＳＩコマンドとＡＴＡＰＩコマンドとの比較において（図３），ＡＴＡＰＩコマンドが主なＳＣＳＩコマンドをサポートしているのに対し，ＡＴＡＰＩコマンドでのみサポートされるＣＤ／ＤＶＤ−Ｒドライブ特有のコマンド，例えばＲｅａｄＤｉｓｃＩｎｆｏｒｍａｉｔｏｎや，ＳｅｔＣＤＳｐｅｅｄ等がＳＣＳＩコマンドではサポートされていない。このため，メモリカードデバイス用デバイスドライバ１１６がＳＣＳＩコマンドでメモリカードデバイス２１０と通信する場合（Ｓ１１０ａ）は問題ないものの，ＳＣＳＩコマンドでＣＤ／ＤＶＤ−Ｒドライブ２１２と通信する場合（Ｓ１１２ａ）には，上記のようなＣＤ／ＤＶＤ−Ｒドライブ特有のコマンドを使用できないという問題が生じる。
【００４５】
そこで，本実施の形態では，デバイスコントローラ２０４が汎用ＵＳＢドライバ１２０に対し，第３論理インターフェースＩＦ３のＵＳＢサブクラスを「ＡＴＡＰＩ」と記述した論理インターフェース情報を送信することにより，汎用ＵＳＢドライバ１２０の動作手順が変更された場合であっても上記のような問題を回避することができる。すなわち，図７に示すように，第３論理インターフェースＩＦ３に対応するＵＳＢサブクラスを「ＡＴＡＰＩ」と記述した論理インターフェース情報をデバイスコントローラ２０４が送信すれば（Ｓ２０２ｂ），主なＳＣＳＩコマンドをサポートしているＡＴＡＰＩコマンドに準拠したデバイスドライバであるＣＤ／ＤＶＤ−Ｒドライブ用デバイスドライバ１１８がロードされ，それ以後はＣＤ／ＤＶＤ−Ｒドライブ用デバイスドライバ１１８がメモリカードデバイス２１０，あるいはＣＤ／ＤＶＤ−Ｒドライブ２１２にデータの読み出し・書込みを行う（Ｓ１１０ｂ，Ｓ１１２ｂ）ので，上記のような事態を回避することができる。
【００４６】
また，この場合にはＡＴＡＰＩコマンドでのみサポートされる上記のようなＣＤ／ＤＶＤ−Ｒドライブ特有のコマンドがメモリカードデバイス２１０に対して送信される（Ｓ１１０ｂ）可能性がある。通常かかる場合には，メモリカードデバイス２１０のコントローラからはコマンドが未サポートであるというエラーが返信されるが，そうすると第３論理インターフェースＩＦ３のＵＳＢサブクラスを「ＡＴＡＰＩ」としたことと矛盾し，汎用ＵＳＢドライバ１２０の処理が破綻するおそれがある。よって，代わりに例えばメディアのフォーマットが異なるなどのエラーを返信することにより（Ｓ２１０），論理矛盾を来たさないようにして，汎用ＵＳＢドライバ１２０の処理の破綻を回避する。
【００４７】
なお，上記説明におけるＵＳＢ複合デバイスとして，複合機２００に代わり，複数のストレージデバイス，例えば上記のようなメモリカードデバイスや，ＣＤ／ＤＶＤ−Ｒの他にハードディスクドライブやＭＯドライブなどを備えたＵＳＢ複合ストレージデバイスであってもよい。
【００４８】
以上説明したとおり，本実施の形態におけるＵＳＢ複合デバイスによれば，デバイスコントローラの回路規模を拡大することなく，ＵＳＢサブクラスが異なるデバイスを同一の論理インターフェースに割当ててホストと通信を行うことができる。
【図面の簡単な説明】
【００４９】
【図１】本実施の形態におけるホストとＵＳＢ複合デバイスの構成図である。
【図２】本実施の形態におけるデバイスのＵＳＢクラスとＵＳＢサブクラスの組合せに対する論理インターフェースの割当てを説明する表である。
【図３】ＳＣＳＩコマンドとＡＴＡＰＩコマンドを比較説明する表である。
【図４】パーソナルコンピュータ１００と複合機２００とで行うデータ送受信手順を説明する図である。
【図５】記憶装置２０５に格納される論理インターフェースとＵＳＢクラス，ＵＳＢサブクラスの対応関係を説明する図である。
【図６】汎用ＵＳＢドライバ１２０の動作手順が異なる場合の，パーソナルコンピュータ１００と複合機２００とで行うデータ送受信手順を説明する図である。
【図７】汎用ＵＳＢドライバ１２０の動作手順が異なる場合の，パーソナルコンピュータ１００と複合機２００とで行う別のデータ送受信手順を説明する図である。
【符号の説明】
【００５０】
１２０：  汎用ＵＳＢドライバ              １４０：ＵＳＢホストコントローラ
２０４：  デバイスコントローラ            ＩＦ３：第３論理インターフェース
ＬＵＮ１：第１論理ユニット
【図１】
0004725397.tif 000002
【図２】
0004725397.tif 000003
【図３】
0004725397.tif 000004
【図４】
0004725397.tif 000005
【図５】
0004725397.tif 000006
【図６】
0004725397.tif 000007
【図７】
0004725397.tif 000008