(57)【特許請求の範囲】
【請求項１】
ホストコンピュータから送信される印刷データを受信した際に、当該印刷データに基づくファイルを作成し、印刷が指示された印刷装置のプリンタ構成ファイルに、当該作成したファイルを特定する情報を記述するリムーバブルメディアが接続される印刷装置であって、
前記リムーバブルメディアのＡプラグが接続された場合、前記印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かを判別する判別手段と、
前記判別手段により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判別された場合、当該リムーバブルメディアから印刷データを読み出し、印刷処理を実行する実行手段と、を有し、
前記リムーバブルメディアのＢプラグが前記印刷装置に接続された場合、当該リムーバブルメディアにより、当該印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在するか否かが判別された結果、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在すると判別された場合、当該リムーバブルメディアから印刷データを受信することを特徴とする印刷装置。
【請求項２】
前記判別手段により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在しないと判別された場合、他の印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かを判定する判定手段と、
前記判定手段により他の印刷装置のプリンタ構成ファイルが存在すると判定された場合、当該他の印刷装置の印刷ジョブの一覧を表示する表示手段と、を有し、
前記実行手段は、前記表示手段に表示された印刷ジョブの一覧から指定された印刷ジョブの印刷処理を実行することを特徴とする請求項１記載の印刷装置。
【請求項３】
前記表示手段は、他の印刷装置の印刷ジョブの一覧と、当該印刷ジョブで無視される設定機能があることと、を表示することを特徴とする請求項２記載の印刷装置。
【請求項４】
ホストコンピュータから送信される印刷データを受信した際、当該印刷データに基づくファイルを作成し、印刷が指示された印刷装置のプリンタ構成ファイルに、当該作成したファイルを特定する情報を記述するリムーバブルメディアであって、
前記リムーバブルメディアのＢプラグが前記印刷装置に接続された場合、当該印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在するか否かを判断する判断手段と、
前記判断手段により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判断された場合、当該印刷装置に印刷データを送信する送信する送信手段と、を有し、
前記リムーバブルメディアのＡプラグが前記印刷装置に接続された場合、当該印刷装置により、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かが判別された結果、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在すると判別された場合、当該印刷装置により、当該リムーバブルメディアの印刷データが読み出され、印刷処理が実行されるようにしたことを特徴とするリムーバブルメディア。
【請求項５】
ホストコンピュータから送信される印刷データを受信した際に、当該印刷データに基づくファイルを作成し、印刷が指示された印刷装置のプリンタ構成ファイルに、当該作成したファイルを特定する情報を記述するリムーバブルメディアと、当該リムーバブルメディアが接続される印刷装置とを用いた印刷制御方法であって、
前記リムーバブルメディアのＡプラグが前記印刷装置に接続された場合、当該印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在するか否かを判別する判別工程と、
前記判別工程により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判別された場合、当該リムーバブルメディアから印刷データを読み出し、印刷処理を実行する実行工程と、
前記リムーバブルメディアのＢプラグが前記印刷装置に接続された場合、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かを判断する判断工程と、
前記判断工程により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判断された場合、当該印刷装置に印刷データを送信する送信する送信工程と、を有することを特徴とする印刷制御方法。
【請求項６】
前記判別工程により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在しないと判別された場合、他の印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かを判定する判定工程と、
前記判定工程により他の印刷装置のプリンタ構成ファイルが存在すると判定された場合、当該他の印刷装置の印刷ジョブの一覧を表示する表示工程と、を有し、
前記実行工程は、前記表示工程に表示された印刷ジョブの一覧から指定された印刷ジョブの印刷処理を実行することを特徴とする請求項５記載の印刷制御方法。
【請求項７】
前記表示工程は、他の印刷装置の印刷ジョブの一覧と、当該印刷ジョブで無視される設定機能があることと、を表示することを特徴とする請求項６記載の印刷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置、リムーバブルメディア、及び印刷制御方法に関し、特に、リムーバブルメディアに記憶された印刷データを印刷するために用いて好適なものである。
【背景技術】
【０００２】
従来から、ネットワークに接続されていない情報機器からの指示に基づいて印刷装置で印刷を行う場合に、ＵＳＢ（Universal Serial Bus）ケーブルを介して情報機器と印刷装置とを相互に接続することが行われている。また、情報機器に一時的にネットワークケーブルを接続し、情報機器がネットワーク経由で印刷装置と通信できるようにすることも行われている。さらに、情報機器を無線ＬＡＮに接続し、情報機器がネットワーク経由で印刷装置と通信できるようにすることも行われている。
ここで、情報機器としては、デスクトップ型のパーソナルコンピュータ（以下ＰＣと呼ぶ）と、ノート型のＰＣやＰＤＡ（Personal Digital Assistance）等のモバイル機器とが挙げられる。
【０００３】
しかしながら、ＵＳＢケーブルを介してデスクトップ型のＰＣと印刷装置とを接続する場合、印刷装置とデスクトップ型のＰＣとの設置位置が離れていると、デスクトップ型のＰＣと印刷装置とをＵＳＢケーブルで相互に接続するのは困難である。また、ノート型のＰＣやＰＤＡ等のモバイル機器と印刷装置とをＵＳＢケーブルを介して接続する場合には、ＵＳＢケーブルを持ち歩かなければならない。このため、モバイル機器の携帯性に支障が生じる。また、印刷装置の周辺に、モバイル機器を置いて作業する場所が確保できない場合もある。
【０００４】
また、情報機器に一時的にネットワークケーブルを接続する場合、環境ごとに異なるネットワークの設定が煩わしい。また、ネットワークケーブルを持ち歩かなければならず、モバイル機器の携帯性に支障が生じる。さらに、前述したのと同様に、印刷装置の周辺に、モバイル機器を置いて作業する場所が確保できない場合もある。
また、情報機器を無線ＬＡＮに接続する場合も、情報機器に一時的にネットワークケーブルを接続する場合と同様に、環境ごとに異なるネットワークの設定が煩わしい。そもそも無線ＬＡＮの使用できる環境が、現時点ではまだまだ限定されている。
【０００５】
そこで、情報機器で作成した画像データをリムーバブルメディアの一例であるＵＳＢメモリに保存し、画像データが保存されたＵＳＢメモリを印刷装置に接続するようにすることが行われている（特許文献１を参照）。
【０００６】
【特許文献１】特開２００５−１３８５３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＵＳＢメモリを印刷装置に接続して印刷する場合、印刷装置で印刷可能な形式の画像データ（印刷データを含む）を情報機器側で作成してＵＳＢメモリに書き込まなければならない。具体的に説明すると、まず、任意のアプリケーションで作成した文書を印刷したい場合は、この文書をアプリケーションからプリンタドライバへ出力して画像データファイルを生成する。このとき、プリンタドライバの出力先を印刷装置のポートではなく、ファイルへ出力を選択して出力先を所定のフォルダへ変更する必要がある。これにより、プリンタドライバにより生成された画像データファイルが、ファイル出力先として選択された情報機器内の任意のフォルダに格納される。次に、ＵＳＢメモリを情報機器に装着し、ユーザによるポインティングデバイスを用いた操作により、所定のフォルダに格納された画像データファイルをＵＳＢメモリへ保存させる。このように、ＵＳＢメモリを印刷装置に接続して印刷を行う場合、従来の技術では、文書を印刷可能な画像データとしてＵＳＢメモリへ保存する際の操作手順が多かった。
【０００８】
以上のように、従来の技術では、ＵＳＢメモリのようなリムーバブルメディアに印刷データを保存し、保存した印刷データを印刷するためには、上述したように複数段階の作業が必要となり、印刷操作に慣れていないユーザにとっては操作性が悪かった。
本発明は、このような問題点に鑑みてなされたものであり、リムーバブルメディアに印刷データを保存して印刷することを容易に行えるようにする仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の印刷装置は、ホストコンピュータから送信される印刷データを受信した際に、当該印刷データに基づくファイルを作成し、印刷が指示された印刷装置のプリンタ構成ファイルに、当該作成したファイルを特定する情報を記述するリムーバブルメディアが接続される印刷装置であって、前記リムーバブルメディアのＡプラグが接続された場合、前記印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かを判別する判別手段と、前記判別手段により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判別された場合、当該リムーバブルメディアから印刷データを読み出し、印刷処理を実行する実行手段と、を有し、前記リムーバブルメディアのＢプラグが前記印刷装置に接続された場合、当該リムーバブルメディアにより、当該印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在するか否かが判別された結果、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在すると判別された場合、当該リムーバブルメディアから印刷データを受信することを特徴とする。
本発明のリムーバブルメディアは、ホストコンピュータから送信される印刷データを受信した際、当該印刷データに基づくファイルを作成し、印刷が指示された印刷装置のプリンタ構成ファイルに、当該作成したファイルを特定する情報を記述するリムーバブルメディアであって、前記リムーバブルメディアのＢプラグが前記印刷装置に接続された場合、当該印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在するか否かを判断する判断手段と、前記判断手段により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判断された場合、当該印刷装置に印刷データを送信する送信する送信手段と、を有し、前記リムーバブルメディアのＡプラグが前記印刷装置に接続された場合、当該印刷装置により、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かが判別された結果、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在すると判別された場合、当該印刷装置により、当該リムーバブルメディアの印刷データが読み出され、印刷処理が実行されるようにしたことを特徴とする。
【００１０】
本発明の印刷制御方法は、ホストコンピュータから送信される印刷データを受信した際に、当該印刷データに基づくファイルを作成し、印刷が指示された印刷装置のプリンタ構成ファイルに、当該作成したファイルを特定する情報を記述するリムーバブルメディアと、当該リムーバブルメディアが接続される印刷装置とを用いた印刷制御方法であって、前記リムーバブルメディアのＡプラグが前記印刷装置に接続された場合、当該印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在するか否かを判別する判別工程と、前記判別工程により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判別された場合、当該リムーバブルメディアから印刷データを読み出し、印刷処理を実行する実行工程と、前記リムーバブルメディアのＢプラグが前記印刷装置に接続された場合、当該印刷装置のプリンタ構成ファイルが当該リムーバブルメディアに存在するか否かを判断する判断工程と、前記判断工程により前記印刷装置のプリンタ構成ファイルが前記リムーバブルメディアに存在すると判断された場合、当該印刷装置に印刷データを送信する送信する送信工程と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、リムーバブルメディアに印刷データを保存して印刷することを容易に行うことができる。
【発明を実施するための最良の形態】
【００１３】
（第１の実施形態）
次に、図面を参照しながら、本発明の第１の実施形態について説明する。
図１は、印刷システムの構成の一例を示した図である。
図１において、本発明の情報処理装置に好適なホストコンピュータ１０１は、ＵＳＢデバイスを接続することが可能なＵＳＢホストとしての機能を有する。印刷機２０１は、ホストコンピュータ１０１と、ＵＳＢケーブルを介して通信可能であり、ホストコンピュータからの印刷データを受信するためのＵＳＢデバイスとしての機能を有する。また、印刷装置（以下、印刷機）２０１は、マス・ストレージクラスのＵＳＢデバイス（ＵＳＢメモリのこと）が接続されると、接続されたＵＳＢデバイスから印刷ファイルを直接読み出すことが可能なＵＳＢホストとしての機能も有している。言うまでもなく、ホストコンピュータ１０１と、印刷機２０１とは、ＵＳＢケーブルを介して相互に接続することで通信することが可能であり、ホストコンピュータ１０１で生成された印刷データを印刷機２０１で印刷することが可能である。
【００１４】
電子機器３０１は、フラッシュメモリに、マス・ストレージクラスのＵＳＢデバイス機能と、簡易ＵＳＢホストとしての機能とを持たせたものであり、持ち運び可能なリムーバブルメディアの一例である。電子機器３０１は、ＵＳＢ規格のＵＳＢホストに接続するためのＡプラグと、ＵＳＢデバイスに接続するためのＢプラグとを備えている。電子機器３０１は、Ａプラグを介してホストコンピュータ１０１又は印刷機２０１に接続することが可能であり、Ｂプラグを介して印刷機２０１に接続することが可能である。
【００１５】
図２の（ａ）〜図２（ｃ）は、各機器の構成の一例を示すブロック図である。
図２（ａ）は、ホストコンピュータ１０１の構成の一例を示すブロック図である。ＣＰＵ１０２は、ホストコンピュータ１０１にインストールされたソフトウェアを動作させるものである。ＲＡＭ１０３は、ＣＰＵ１０２で動作するソフトウェアが、データの保存や自身の動作を行う際に使用される読み書き可能な記憶媒体である。ハードディスク（ＨＤＤ）１０４は、アプリケーションソフトウェアやアプリケーションデータ等を保存する。また、印刷装置で印刷すべき印刷データを生成するプリンタドライバは、このハードディスク１０４に格納されており、動作時にＲＡＭ１０３に展開されてＣＰＵ１０２により実行される。ネットワークインターフェース１０５は、ホストコンピュータ１０１が、ネットワークを介して相互に接続された外部機器と通信を行うようにするためのインターフェースである。ＵＳＢホストコントローラ１０６は、Ａレセプタクル１０７に接続可能なＵＳＢデバイス（例えば印刷機２０１及び電子機器３０１）との通信を統括制御する。
【００１６】
図２（ｂ）は、印刷機２０１の構成の一例を示すブロック図である。操作パネル２０２は、ユーザによる印刷機２０１の設定を受け付ける。ＣＰＵ２０３は、印刷機２０１にインストールされたソフトウェアを動作させるものである。ＲＡＭ２０４は、ＣＰＵ２０３で動作するソフトウェアが、データ保存や自身の動作を行う際に使用される読み書き可能な記憶媒体である。また、ＲＡＭ２０４には、ユーザが操作パネル２０２を操作することにより設定されたプリンタ名（「印刷機２０１」の名称）が保存される。ＲＯＭ２０５は、ソフトウェアやフォント情報等を保存する。また、ＲＯＭ２０５には、印刷機２０１の特定情報である製品名「ABCDEF」、ベンダー名「GHIJK」が保存されている。
【００１７】
ネットワークインターフェース２０６は、印刷機２０１が、ネットワークを介して相互に接続された外部機器と通信を行うようにするためのインターフェースであり、外部機器から印刷データを受信する。ハードレンダラ２０７は、ＣＰＵ２０３を用いて動作するソフトウェアが印刷データから生成するディスプレイリスト（ＤＬ）を入力としてラスタイメージを生成する。プリンタエンジン２０８は、ＣＰＵ２０３を用いて動作するソフトウェア及びハードレンダラ２０７が作り出すイメージデータの印刷を行う。
【００１８】
ＵＳＢデバイスコントローラ２０９は、Ｂレセプタクル２１０及びＵＳＢケーブルで接続されたＵＳＢホストとの通信を統括制御する。ＵＳＢデバイスコントローラ２０９は、ＵＳＢ規格のプリンタクラスのファンクションとして動作するように実装されており、３つのエンドポイントから構成されている。第１のエンドポイント（エンドポイント０）は、コントロール転送をサポートしている。第２のエンドポイント（エンドポイント１）は、バルクアウト転送をサポートしている。第３のエンドポイント（エンドポイント２）は、バルクイン転送をサポートしている。ＵＳＢホストコントローラ２１１は、Ａレセプタクル２１２に接続することが可能なＵＳＢデバイス（例えば電子機器３０１）との通信を統括制御する。フィニッシャー２１４は、オプションコントローラ２１３による制御に従って、プリンタエンジン２０８で印刷された印刷物の後処理等を行うためのものである。
【００１９】
図２（ｃ）は、リムーバブルメディアとしての電子機器３０１の構成の一例を示すブロック図である。
ＣＰＵ３０２は、電子機器３０１にインストールされたソフトウェアを動作させるものである。ＵＳＢホストコントローラ３０５、ＵＳＢデバイスコントローラ３０７、ＵＳＢデバイスコントローラ３０８が、各種イベントを受け付けて、電子機器３０１を統括的に制御する。ＲＯＭ／ＲＡＭ３０３は、ＣＰＵ３０２を用いて動作するプログラムが格納されているＲＯＭと、ＣＰＵ３０２のワークメモリ等として使用されるＲＡＭとを備えた記憶領域である。
【００２０】
Flashメモリ３０４は、データの読み書きと、電源がオフされた時のデータの保持との両方を行える大容量の半導体メモリである。後述するプリンタ構成情報ファイルとＵＳＢコンフィグファイルは、このFlashメモリ３０４の所定のパスに格納される。ＵＳＢホストコントローラ３０５は、Ｂプラグ３０６に接続されるＵＳＢデバイスとの通信を統括制御する。なお、Ｂプラグ３０６に接続されるＵＳＢデバイスは、プリンタクラスファンクションを持つ。ＵＳＢデバイスコントローラ３０７は、ＵＳＢハブ３０９及びＡプラグ３１０を介して接続されたＵＳＢホストとの通信を統括制御する。ＵＳＢデバイスコントローラ３０７は、ＵＳＢ規格のマス・ストレージクラスのファンクションとして動作するように実装されており、４つのエンドポイントから構成されている。第１のエンドポイント（エンドポイント０）は、コントロール転送をサポートしている。第２のエンドポイント（エンドポイント１）は、バルクアウト転送をサポートしている。第３のエンドポイント（エンドポイント２）は、バルクイン転送をサポートしている。第４のエンドポイント（エンドポイント３）は、インターラプト転送をサポートしている。ＵＳＢデバイスコントローラ３０７は、通信中のＵＳＢホストに対してFlashメモリ３０４の領域をファイルシステムとして提供する。
【００２１】
ＵＳＢデバイスコントローラ３０８は、ＵＳＢハブ３０９及びＡプラグ３１０を介して接続されたＵＳＢホストとの通信を統括制御する。ＵＳＢデバイスコントローラ３０８は、ＵＳＢ規格のプリンタクラスのファンクションとして動作するように実装されており、３つのエンドポイントから構成されている。第１のエンドポイント（エンドポイント０）は、コントロール転送をサポートしている。第２のエンドポイント（エンドポイント１）は、バルクアウト転送をサポートしている。第３のエンドポイント（エンドポイント２）は、バルクイン転送をサポートしている。
【００２２】
電源制御回路３１１は、電子機器３０１への電力供給を制御する。Ｂプラグ３０６に、ＵＳＢデバイスが接続され、電子機器３０１がＵＳＢホストとして動作する場合、電源制御回路３１１は蓄電池３１２から電力供給を受ける。これにより、電子機器３０１の動作に必要な電力供給が行われる。Ａプラグ３１０に、ＵＳＢホストが接続され、電子機器３０１がＵＳＢデバイスとして動作する場合は、接続されたＵＳＢホストに設けられた電源供給ライン（VBUS）を介して供給される電力により、電子機器３０１に必要な電力が供給される。そして、この電力によって、蓄電池３１２への充電が行われる。
【００２３】
次に、図３と、図４のフローチャートとを参照しながら、電子機器３０１がホストコンピュータ１０１に接続されたときの動作の一例を説明する。
図３は、電子機器３０１に設けられたＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクル１０７に接続されたときに構成されるＵＳＢ接続の状態の一例を示す図である。図４は、電子機器３０１が接続されたときのホストコンピュータ１０１の動作の一例を説明するフローチャートである。
【００２４】
図３において、ＵＳＢホスト４０１は、図２（ａ）に示したＵＳＢホストコントローラ１０６上に構成される。ＵＳＢハブ４０２は、図２（ｃ）に示したＵＳＢハブ３０９上に構成される。マス・ストレージファンクション（ＵＳＢファンクション）４０３は、図２（ｃ）に示したＵＳＢデバイスコントローラ３０７上に構成される。プリンタファンクション（ＵＳＢファンクション）４０４は、ＵＳＢデバイスコントローラ３０８上に構成される。
図３（ａ）は、Flashメモリ３０４上にプリンタクラスを表す「/＿printer」がないときに構成されるＵＳＢ接続の状態の一例を示す図である。図３（ｂ）は、Flashメモリ３０４上に「/＿printer」があるときに構成されるＵＳＢ接続の状態の一例を示す図である。
【００２５】
図４において、電子機器３０１のＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクル１０７に接続されると、ＵＳＢホストコントローラ１０６が接続を検知する(ステップＳ１０１)。すると、ＵＳＢホストコントローラ１０６は、ＵＳＢ規格に基づくバス・エニュメレーション処理を実行して、ＵＳＢハブ３０９の接続を確立する(ステップＳ１０２)。この状態で、ＵＳＢホスト４０１とＵＳＢハブ４０２との接続が確立されている。エニュメレーション処理とは、ホストが接続されているデバイスを識別し、アドレスを指定し、収集したディスクリプタ情報を固定のものとする一連のデバイス識別動作である。
【００２６】
続いて、ＵＳＢホストコントローラ１０６は、ＵＳＢハブ３０９のダウンストリームポートに接続されている機器の問い合わせをＵＳＢハブ３０９に行う（ステップＳ１０３）。ＵＳＢハブ３０９とＵＳＢデバイスコントローラ３０７は、常に接続されている状態である。このため、ＵＳＢハブ３０９は、ＵＳＢホストコントローラ１０６へ、ＵＳＢデバイスコントローラ３０７が接続されていることを通知する。
ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０７がＵＳＢハブ３０９に接続されていること認識すると、バス・エニュメレーション処理を実行してＵＳＢデバイスコントローラ３０７との接続を確立する（ステップＳ１０４）。この時点で、ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０７上のファンクションがマス・ストレージファンクションであることを認識する。こうして、ＵＳＢホスト４０１とマス・ストレージファンクション４０３とがＵＳＢハブ４０２を介して相互に接続された状態となる（図３（ａ）及び図３（ｂ）を参照）。
【００２７】
電子機器３０１の状態により、ＵＳＢデバイスコントローラ３０８と、ＵＳＢハブ３０９との接続状態が異なる。電子機器３０１の初期状態では、ＵＳＢデバイスコントローラ３０８はＵＳＢハブ３０９と接続されていない状態となっている。電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクルに接続されると、ＣＰＵ３０２は、Flashメモリ３０４上にプリンタクラスを表す「/＿printer」を作成し、後述するＵＳＢコンフィグファイルを作成する。そして、「/＿printer」が作成されると、ＣＰＵ３０２は、ＵＳＢハブ３０９とＵＳＢデバイスコントローラ３０８とが相互に接続されている状態にする。電子機器３０１が、印刷機２０１と接続されたときの「/＿printer」の作成処理を含む動作については、図８で後述する。尚、このＵＳＢコンフィグファイルは、ホストコンピュータ１０１のＵＳＢホストコントローラ１０６がＡレセプタクル１０７に接続される電子機器３０１（ＵＳＢメモリ）を、プリンタクラスとして認識するために必要とされる。
【００２８】
こうして、ＵＳＢデバイスコントローラ３０８がＵＳＢハブ３０９と相互に接続された状態にあるときには、ＵＳＢハブ３０９は、ＵＳＢホストコントローラ１０６へ、ＵＳＢデバイスコントローラ３０８が接続されていることを通知する。ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０８がＵＳＢハブ３０９に接続されていることを認識すると（ステップＳ１０５のＹｅｓ）、バス・エニュメレーション処理を実行する。そして、ＵＳＢデバイスコントローラ３０８との接続を確立する（ステップＳ１０６）。バス・エニュメレーション処理において、ＵＳＢデバイスコントローラ３０８は、ＵＳＢ規格のプリンタクラスにおける各ディスクリプタのデバイス依存の値として、ＵＳＢコンフィグファイル「/＿printer/conf」に記載の値を読み出し、ＵＳＢデバイスコントローラ３０８に設定する。そして、ＵＳＢデバイスコントローラ３０８は、設定した値をＵＳＢホストコントローラ１０６へ通知する。
【００２９】
ここで、各ディスクリプタのデバイス依存の値とは、例えば、デバイスディスクリプタのベンダＩＤ(idVendor)である。この他、プロダクトＩＤ(idProduct)や、コンフィグレーションディスクリプタのインターフェース数（nNumInterfaces）等も各ディスクリプタのデバイス依存の値である。
前記ＵＳＢコンフィグファイルは、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクルに接続されたときに生成されるファイルである。このＵＳＢコンフィグファイルには、印刷機２０１のＵＳＢデバイスコントローラ２０９から取得した値が格納されており、電子機器３０１のFlashメモリ３０４に書き込まれる。このＵＳＢコンフィグファイルによって、ＵＳＢホストコントローラ１０６は、電子機器３０１のＵＳＢデバイスコントローラ３０８と、印刷機２０１のＵＳＢデバイスコントローラ２０９とを同一のものと認識することが可能となる。
【００３０】
ＵＳＢホストコントローラ１０６とＵＳＢデバイスコントローラ３０８とのバス・エニュメレーション処理が終了すると、ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０８上のファンクションがプリンタファンクションであると認識する。こうして、ＵＳＢホスト４０１とプリンタファンクション４０４とがＵＳＢハブ４０２を介して相互に接続された状態となる（図３（ｂ）を参照）。
【００３１】
続いて、図５のフローチャートを参照しながら、ホストコンピュータ１０１上で印刷機２０１を指定して印刷を行う場合のホストコンピュータ１０１の動作の一例を説明する。
【００３２】
まず、ユーザは、印刷機２０１で印刷を行うために、ホストコンピュータ１０１上で、印刷機２０１用のプリンタドライバを起動する。そうすると、プリンタドライバは、ネットワークインターフェース１０５又はＵＳＢホストコントローラ１０６を介して、印刷機２０１と通信可能か否かを判断する（ステップＳ２０１）。前述したように、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクルに接続されると、電子機器３０１にＵＳＢコンフィグファイルが作成される。よって、この接続処理後に、「/＿printer」にＵＳＢコンフィグファイルでプリンタクラスの定義がなされている電子機器３０１がＡレセプタクル１０７に接続されている場合、ホストコンピュータ１０１は、電子機器３０１を印刷機２０１と同一であると認識することが可能である。このため、ホストコンピュータ１０１は、印刷機２０１と通信可能であると判断する。なお、ステップＳ２０１の判定では、起動されたプリンタドライバの出力先のポートがＵＳＢポート（Ａレセプタクル１０７）である場合、ＵＳＢメモリ（電子機器３０１）がプリンタドライバに対応するプリンタと同一であるか判定される。
【００３３】
ホストコンピュータ１０１は、プリンタドライバに対応する印刷機２０１または同一と認識された電子機器３０１と通信可能であると判断すると（ステップＳ２０１のＹｅｓ）、ステップＳ２０２へ進む。ステップＳ２０２では、プリンタドライバは、ＵＳＢホストコントローラ１０６を介して、印刷機２０１またはプリンタクラスの電子機器３０１から、印刷機２０１の機能構成情報（プリンタ構成情報ファイルに機能構成情報のパスが指定されている）を取得する。ここで、印刷機２０１の機能構成情報とは、印刷機２０１の能力や状態を表す情報である。例えば、両面印刷機能の有無、カラー印刷機能の有無、フィニッシャー情報、及び印刷機２０１にセットされている用紙サイズやメディアタイプに関する情報等を含んでいる。尚、電子機器３０１は、後述するように、ホストコンピュータ１０１と接続されるか、印刷機２０１と接続されることに応じて、プリンタ構成情報ファイルと機能構成情報とが作成される。よって、少なくとも電子機器３０１がＵＳＢコンフィグファイルを保持しており、印刷機であると判定される場合には、この電子機器３０１には、プリンタ構成情報ファイルと機能構成情報が作成済みでFlashメモリ３０４に格納されていることになる。
【００３４】
ホストコンピュータ１０１は、ステップＳ２０２で取得した機能構成情報を元に、プリンタドライバ設定画面を表示して、ユーザにより行われた印刷設定と印刷開始の操作を受け付ける（ステップＳ２０３）。ここで、機能構成情報は、印刷機２０１に両面印刷機能がない場合にはプリンタドライバ設定画面で、両面印刷機能を選択できないようにするといった禁則処理等を行う際に使用される。ユーザが印刷開始の操作をすると、プリンタドライバは、ステップＳ２０３で行われたプリンタドライバの設定（印刷設定）に基づいて、印刷データの生成を行いスプールする（ステップＳ２０４）。スプールされた印刷データは、印刷機２０１またはプリンタクラスの電子機器３０１に接続されたインターフェース（Ａレセプタクル１０７）を介して、印刷機２０１またはプリンタクラスの電子機器３０１に送信される。
【００３５】
ホストコンピュータ１０１は、印刷機２０１と通信不能もしくは電子機器３０１を印刷機２０１と同一でない判断すると（ステップＳ２０１のＮｏ）、接続されているリムーバブルメモリデバイスを検索する(ステップＳ２０６)。リムーバブルメモリデバイスとは、ＵＳＢコントローラ１０６が、プリンタクラスではなくマス・ストレージデバイスとして認識しているＵＳＢデバイス（電子機器３０１）や、図示されないPCMCIAインターフェースに接続されているＰＣカード上のメモリ等である。ステップＳ２０６以下の処理では、電子機器３０１は、プリンタクラスではなくマス・ストレージデバイスとしてのリムーバブルメモリデバイスとして扱われる。リムーバブルメモリデバイスを検索した結果、接続されているリムーバブルメモリデバイスの数により、以降の処理が異なる（ステップＳ２０７）。
【００３６】
ホストコンピュータ１０１の利用可能なリムーバブルメモリデバイスが存在しない場合、ホストコンピュータ１０１は、リムーバブルメモリデバイスの接続又は印刷機２０１と通信可能とすることを促すメッセージを表示する（ステップＳ２０８）。そして、ステップＳ２０１へ戻る。このとき、プリンタクラスとしての電子機器３０１が接続された場合は、ステップＳ２０１で印刷機と同一であるため、通信可能であると判定される。マス・ストレージデバイスの場合は、ステップＳ２０９へ進む。
ホストコンピュータ１０１の利用可能なリムーバブルメモリデバイスが１個のみである場合、ホストコンピュータ１０１は、接続されているリムーバブルメモリデバイスを印刷に使用するリムーバブルメモリデバイスとして設定する（ステップＳ２０９）。そして、接続されているリムーバブルメモリデバイスを印刷出力先として決定された場合、ホストコンピュータ１０１は、ＵＳＢホストコントローラ１０６を介して、印刷機２０１のプリンタ構成ファイルの有無を検索する（ステップＳ２１０）。このリムーバブルメモリデバイスがはじめて印刷用に用いられる場合は、プリンタ構成ファイルは存在しない。
【００３７】
ここで、電子機器３０１が印刷データの格納用のメモリデバイスとして利用される場合、プリンタ構成情報ファイルは、リムーバブルメモリデバイス内の「/prc」ディレクトリ内にある「.prc」のプレフィクスのファイルとして存在する。ここで、電子機器３０１が、ホストコンピュータ１０１に印刷機として認識させる場合には、前述したように「/＿printer」ディレクトリにプリンタ構成情報ファイルが生成される。このように、電子機器３０１の振る舞いにより、プリンタ構成情報ファイルが生成される格納場所（パス）が異ならせることを特徴としている。
このプリンタ構成情報ファイル内には、印刷機２０１を特定するための情報として、製品名を表す「ProductName」、及びベンダー名を表す「VenderName」といった情報が含まれる。この他、プリンタ構成情報ファイル内には、デバイス固有のプリンタ名称を表す「PrinterName」、及びネットワークに接続する際に印刷機２０１が使用するＩＰアドレスを表す「IPAddress」といった情報も含まれる。さらに、プリンタ構成情報ファイル内には、印刷機２０１の機能構成情報を格納したファイルアドレス（パス）を表す「ConfigrationFile」、及び印刷データを格納したファイルのアドレス群を表す「Datafile」といった情報も含まれている。
【００３８】
「Datafile」内には、印刷データのアドレスを表す「Data」が０個以上含まれる。また、プリンタ構成情報ファイルには、各ディスクリプタのデバイス依存情報が格納されているファイルのアドレス「USBconfFile」の情報が含まれる。ここで、各ディスクリプタのデバイス依存情報は、ＵＳＢデバイスコントローラの設定情報である。
【００３９】
ホストコンピュータ１０１は、これらの情報を参照して、印刷機２０１のプリンタ構成情報ファイルの有無を検索する。図６はプリンタ構成情報ファイルの一例である。図６に示す内容のプリンタ構成情報ファイル６０１が、「/prc/p201.prc」としてリムーバブルメモリデバイス内に存在するとする。その場合、製品名、ベンダー名、プリンタ名が印刷機２０１のものと一致するため、印刷機２０１のプリンタ構成情報ファイルがあると判断する（ステップＳ２１１のＹｅｓ）。「/prc」ディレクトリ内に「.prc」のプレフィクスを持つファイルがない場合、又はあってもファイル内の印刷機を特定するための情報が印刷機２０１のものと一致しない場合、プリンタ構成情報ファイルがないと判断する（ステップＳ２１１のＮｏ）。
【００４０】
印刷機２０１のプリンタ構成情報ファイルがあった場合、ホストコンピュータ１０１は、機能構成情報を特定するため、プリンタ構成情報ファイル内に記載されている「ConfigrationFile」を参照する。そして、印刷機２０１の機能構成情報が格納されているファイルを読み出し、機能構成情報の取得を行う（ステップＳ２１２）。一方、印刷機２０１のプリンタ構成情報ファイルがなかった場合、ホストコンピュータ１０１は、ステップＳ２０９で設定された印刷に使用するリムーバブルメモリデバイスに対するプリンタ構成情報ファイルと、機能構成情報ファイルとを新規に作成する（ステップＳ２１３）。具体的に、プリンタ構成情報ファイルとして「/prc/p201.prc」を、機能構成情報ファイルとして「/prc/ABCDEF.conf」をそれぞれ新規に作成する。
【００４１】
新規に作成するプリンタ構成情報ファイルの内容のうち、「ProductName」には「ABCDEF」、「VenderName」には「GHIJK」、「PrinterName」には「印刷機２０１の名称」がそれぞれ設定される。また、印刷機２０１のポートがネットワークであればそのポートの示すＩＰアドレスが「IPAddress」に設定される。これに対して、印刷機２０１のポートがＵＳＢポートであれば「IPAddress」には何も設定しない。さらに、「ConfigrationFile」には、「/prc/ABCDEF.conf」を設定し、「Datafile」には何も設定しない。
「USBconfFile」は、電子機器３０１が印刷装置２０１に接続したときに、電子機器３０１が作成する情報であり、また、「/prc」ディレクトリに作成されるプリンタ構成情報ファイルは、印刷用のストレージデバイスとして利用するため、何も設定しない。新規に作成された機能構成情報ファイル「/prc/ABCDEF.conf」には、ホストコンピュータ１０１のプリンタドライバが現在保持している印刷機２０１の機能構成情報（両面ユニット、カラー印刷機能など）を格納する。
以上のようにしてステップＳ２１３でプリンタ構成ファイルと、機能構成情報ファイルとが作成されると、ホストコンピュータ１０１は、プリンタ構成ファイル内に記載されている「ConfigrationFile」を参照する。そして、ホストコンピュータ１０１は、印刷機２０１の機能構成情報が格納されているファイルを読み出し、機能構成情報の取得を行う（ステップＳ２１２）。
【００４２】
そして、ホストコンピュータ１０１は、取得した機能構成情報を元に、プリンタドライバ設定画面を表示して、ユーザにより行われた印刷設定と印刷開始の操作を受け付ける（ステップＳ２１４）。ユーザが印刷開始の操作をすると、プリンタドライバは、ステップＳ２１４で行われたプリンタドライバの設定（印刷設定）に基づいて、印刷データの生成を行いスプールする（ステップＳ２１５）。スプールされた印刷データは、印刷に使用するリムーバブルメモリデバイス内に、「.prn」のプレフィクスを持つファイルとして新規に作成される。作成されたファイルのリムーバブルメモリ内のアドレスを、印刷機２０１のプリンタ構成ファイル内の「Datafile」中に「Data」を追加して記述する。
【００４３】
ホストコンピュータ１０１の利用可能なリムーバブルメモリデバイスが２個以上あると判定された場合（ステップＳ２０７の「２個以上」）、印刷機２０１のプリンタ構成情報ファイルの有無を、各リムーバブルメモリデバイスにおいて検索する（ステップＳ２１７）。ステップＳ２１７でのプリンタ構成情報ファイルの検索結果により、以降の処理が異なる（ステップＳ２１８）。印刷機２０１のプリンタ構成情報ファイルが、いずれのリムーバブルメモリデバイス内に見つからなかった場合（ステップＳ２１８の「０」）、どのリムーバブルメモリデバイスを印刷に使用するかの選択を促す画面を表示する。そして、どのリムーバブルメモリデバイスを印刷に使用するかをユーザに選択させる（ステップＳ２１９）。
【００４４】
こうしてユーザがリムーバブルメモリデバイスを選択すると、ホストコンピュータ１０１は、選択されたリムーバブルメモリデバイスを、印刷に使用するリムーバブルメモリデバイスとして設定し（ステップＳ２２０）、前述したステップＳ２１３へ進む。
また、印刷機２０１のプリンタ構成情報ファイルが含まれるリムーバブルメモリが１個だけであると判定された場合（ステップＳ２１８の「１」）、ステップＳ２２１に進む。そして、そのリムーバブルメモリを印刷に使用するリムーバブルメモリデバイスとして設定し、前述したステップＳ２１２へ進む。
印刷機２０１のプリンタ構成情報ファイルを含むリムーバブルメモリが２個以上であると判定された場合（ステップＳ２１８の「２個以上」）、ステップＳ２２２に進む。そして、印刷機２０１のプリンタ構成情報ファイルを含むリムーバブルメモリの何れを印刷に使用するかの選択を促す画面を表示し、どのリムーバブルメモリデバイスを印刷に使用するかをユーザに選択させる。こうしてユーザがリムーバブルメモリデバイスを選択すると、ホストコンピュータ１０１は、選択されたリムーバブルメモリデバイスを、印刷に使用するリムーバブルメモリとして設定し、前述したステップＳ２１２へ進む。
【００４５】
続いて、図７のフローチャートを参照しながら、電子機器３０１のＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクル１０７に接続された状態で、印刷機２０１を指定して印刷を行う場合の電子機器３０１の動作の一例を説明する。
前述したように、電子機器３０１がホストコンピュータ１０１に接続されたときのＵＳＢ接続の状態は、図３（ａ）、図３（ｂ）に示した２通りの状態を取り得る。このうち、図３（ａ）に示した状態の場合、電子機器３０１は、既知のＵＳＢ規格であるマス・ストレージデバイスとして動作する。すなわち、電子機器３０１は、ホストコンピュータ１０１のリクエストに応じて、データのFlashメモリ３０４への読み込みと書き込みとを行うのみである。ここで、図３（ａ）に示した状態の場合は、電子機器３０１を印刷用のストレージデバイスとして用いる場合であるため、詳細な説明を省略する。簡単に説明すると、電子機器３０１を印刷用のストレージデバイスとして用いるように、プリンタ構成情報ファイルの作成を行い、印刷データの書き込みを行う。次に、電子機器３０１を印刷機として認識させる場合に対応する、図３（ｂ）に示した状態であるときの電子機器３０１の動作を説明する。尚、前述したように、図３（ｂ）の状態は、事前に印刷機２０１に電子機器３０１のＢプラグ３０６を接続し、ＵＳＢコンフィグファイルを生成しておく必要がある。また前述したように、図３（ｂ）の状態にある場合、プリンタ構成情報ファイルは、「/＿printer」ディレクトリに保持されている。
【００４６】
電子機器３０１がホストコンピュータ１０１に接続され、ＵＳＢデバイスコントローラ３０８がＵＳＢホスト４０１に接続され、図３（ｂ）に示した状態になると、ＣＰＵ３０２は、ＵＳＢデバイスコントローラ３０８からの割り込みを待つ（ステップＳ３０１）。ＵＳＢデバイスコントローラ３０８は、ホストコンピュータ１０１からＵＳＢ経由でリクエストを受けると、ＣＰＵ３０２に対して割り込みを発生し、そのリクエストの処理を依頼する。ＣＰＵ３０２は、ホストコンピュータ１０１からのリクエストを判断し、リクエストが、機能構成情報を獲得するリクエストであれば（ステップ３０２のＹｅｓ）、ステップＳ３０３へ進む。一方、印刷データを受信すれば（ステップＳ３０４のＹｅｓ）、ステップＳ３０５へ進む。その他のリクエストであれば、何も処理をせずに、ＵＳＢデバイスコントローラ３０８からの割り込みを待つ状態（ステップＳ３０１）に戻る。
【００４７】
ステップＳ３０３では、機能構成情報を獲得するリクエストの内容に応じて、ＵＳＢコンフィグファイル「/＿printer/print.conf」から必要な構成情報を読み出す。そして、読み出した構成情報を、ＵＳＢデバイスコントローラ３０８のバルクインエンドポイント経由でホストコンピュータ１０１へ通知する。
ステップＳ３０５では、送信された印刷データを、「/＿printer」に、「.prn」のプレフィクスを持つ新規ファイルとして作成する。そして、作成したファイル名を、プリンタ構成ファイル「/＿printer/print.prc」中の「Datafile」中に「Data」を追加して記述する。「/＿printer/print.conf」及び「/＿printer/print.prc」は、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクルに接続されたときに生成されるファイルである。
【００４８】
次に、図８のフローチャートを参照しながら、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクル２１０へ接続されたときの電子機器３０１の動作の一例を説明する。
【００４９】
まず、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクル２１０へ接続されると、ＵＳＢホストコントローラ３０５は、その接続を検知する。そして、ＵＳＢ規格に基づくバス・エニュメレーション処理を実行してＵＳＢ接続を確立する（ステップＳ４０１）。ＵＳＢ接続が確立するとＵＳＢホストコントローラ３０５は、ＣＰＵ３０２へ、ＵＳＢ接続が確立したことを通知する。通知を受けたＣＰＵ３０２は、印刷機２０１のプリンタ構成ファイル「/＿printer/print.prc」がFlashメモリ３０４に存在するか否かを確認し、処理を分岐する（ステップＳ４０２）。
【００５０】
印刷機２０１のプリンタ構成ファイルが存在しない場合（ステップＳ４０２のＮｏ）、ステップＳ４０３に進む。そして、ＵＳＢホストコントローラ３０５が受信したＵＳＢ規格の各ディスクリプタのうち、デバイス依存の値を含むＵＳＢコンフィグファイル「/＿printer/conf」を新規に作成する（ステップＳ４０３）。続いて、印刷機２０１の構成情報を取得するために、構成情報を取得するリクエストを、ＵＳＢホストコントローラ３０５を介して印刷機２０１に送る（ステップＳ４０４）。印刷機２０１から構成情報を取得すると、取得した印刷機２０１の構成情報を含む構成情報ファイル「/＿printer/print.conf」を新規に作成する（ステップＳ４０５）。続いて、印刷機２０１のプリンタ構成ファイル「/＿printer/print.prc」を作成した後（ステップＳ４０６）、ＵＳＢハブ３０９とＵＳＢデバイスコントローラ３０８とを接続状態にする（ステップＳ４０７）。そして、ＵＳＢ接続を切断して処理を終了する（ステップＳ４１４）。
【００５１】
新規に作成されたプリンタ構成ファイルの内容のうち、「ProductName」には「ABCDEF」が、「VenderName」には「GHIJK」が、「PrinterName」には「印刷機２０１の名称」がそれぞれ設定される。これらの値は、ＵＳＢホストコントローラ３０５が印刷機２０１から受信した値である。印刷機２０１がネットワークに接続されていれば、そのＩＰアドレスが「IPAddress」に設定されるが、接続されていなければ「IPAddress」には何も設定されない。さらに、「ConfigrationFile」には、「/＿printer/print.conf」が設定され、「Datafile」には何も設定されない。「USBconfFile」には、「/＿printer/conf」が設定される。
【００５２】
ステップＳ４０２で、印刷機２０１のプリンタ構成ファイルが存在したと判定された場合、プリンタ構成ファイルの「Datafile」に設定されている内容を確認する。そして、設定されている印刷データがなくなるまで、ステップＳ４０８からステップＳ４１０までの処理を繰り返し行う。具体的に、「Datafile」内の「Data」タグで指定されている印刷データの格納されているファイルを１つ読み出し、印刷機２０１に送信する（ステップＳ４０８）。プリンタ構成ファイルに含まれる印刷データを全て送信すると、送信した印刷データが含まれていたプリンタ構成ファイルを削除すると共に、「Datafile」中のファイルのエントリを削除する（ステップＳ４０９）。「Datafile」中の「Data」タグで指定されている印刷データを全て送信し終えると（ステップＳ４１０のＮｏ）、印刷機２０１から印刷の終了が通知されるまで待機する（ステップＳ４１１）。送信した全ての印刷データの印刷の終了が印刷機２０１から通知されると、印刷機２０１の構成情報を取得するために、構成情報を取得するリクエストを、ＵＳＢホストコントローラ３０５を介して印刷機２０１に送信する（ステップＳ４１２）。印刷機２０１から構成情報を取得すると、取得した構成情報でプリンタ構成ファイルの「ConfigrationFile」に設定されている構成情報ファイルを更新する（ステップＳ４１３）。そして、ＵＳＢ接続を切断して処理を終了する（ステップＳ４１４）。
【００５３】
次に、図９のフローチャートを参照しながら、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクル２１０に接続されたときの印刷機２０１の動作の一例を説明する。
電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクル２１０に接続されると、ＵＳＢホストコントローラ３０５によるバス・エニュメレーション処理によりＵＳＢ接続が確立される。そうすると、印刷機２０１は、ホストとなる電子機器３０１からのリクエストを受信するまで待機する（ステップＳ５０１）。
【００５４】
ＵＳＢデバイスコントローラ２０９は、電子機器３０１からＵＳＢ経由でリクエストを受け取ると、ＣＰＵ２０３に対して割り込み信号を発生し、受け取ったリクエストの処理をＣＰＵ２０３に依頼する。ＣＰＵ２０３は、電子機器３０１からのリクエストを判断し（ステップＳ５０２、Ｓ５０４）、そのリクエストが構成情報を獲得するリクエストであれば（ステップＳ５０２のＹｅｓ）ステップＳ５０３へ進む。一方、印刷データの受信であれば（ステップＳ５０４のＹｅｓ）、ステップＳ５０５へ進む。また、その他のリクエストであれば、ＣＰＵ２０３は、何も処理をせずに、ＵＳＢデバイスコントローラ２０９からの割り込み待ちの状態に戻る。
【００５５】
ステップＳ５０３に進むと、ＣＰＵ２０３は、構成情報を獲得するリクエストの内容に応じて、ＲＡＭ２０４の状態、プリンタエンジン２０８の状態、及びオプションコントローラ２１３状態のうち、少なくとも１つの状態を確認する。そして、確認した状態に基づいて、必要な構成情報を作成する。この構成情報は、ＵＳＢデバイスコントローラ２０９のバルクインエンドポイントを経由して電子機器３０１に通知される。
ステップＳ５０５に進むと、ＣＰＵ２０３は、受信した印刷データを解析し、解析した印刷データの内容に応じて、ＲＡＭ２０４内のデータの書き換え、プリンタエンジン２０８の設定、及びオプションコントローラ２１３の設定を行う（ステップＳ５０５）。そして、ハードウェアにより高速にレンダリング可能な形式の中間データを生成する（ステップＳ５０６）。尚、中間データのフォーマット形式については既知の技術であるため、詳細な説明は省略する。
【００５６】
レンダラ２０７は、生成された中間データをレンダリングしてラスタデータに変換する（ステップＳ５０７）。プリンタエンジン２０８は、このラスタデータを、ユーザによって指定された用紙に印刷する。フィニッシャー２１４は、印刷された用紙に対して、フィニッシング処理を行う（ステップＳ５０８）。ＣＰＵ２０３は、ステップＳ５０６からステップＳ５０８までの処理で送信されてきたデータに従って、印刷処理が終了すると判断すると、印刷終了通知を、ＵＳＢデバイスコントローラ２０９を介して、電子機器３０１へ通知する。以上の説明は、電子機器３０１が印刷機２０１のＢレセプタクル２１０に接続されたものとして説明しているが、この動作はホストコンピュータ１０１がＵＳＢ経由で印刷機２０１のＢレセプタクル２１０に接続される場合でも同一である。
続いて、図１０のフローチャートを参照しながら、電子機器３０１のＡプラグ３１０が印刷機２０１のＡレセプタクル２１２に接続されたときの印刷機２０１の動作の一例を説明する。以下の処理は、電子機器３０１を、印刷用のストレージデバイスとして利用する場合と、電子機器３０１を印刷機２０１と同一であると認識されて印刷データが保持されている場合の両方に対応する。
【００５７】
電子機器３０１のＡプラグ３１０が印刷機２０１のＡレセプタクルに接続されると、ＵＳＢホストコントローラ２１１は、その接続を検知して、バス・エニュメレーション処理を行って、ＵＳＢ接続を確立する。そしてＵＳＢホストコントローラ２１１は、電子機器３０１が、ＵＳＢ規格のマス・ストレージデバイスと認識して動作する。ＵＳＢホストコントローラ２１１は、電子機器３０１との間でＵＳＢ接続が確立するとＣＰＵ２０３に対して、割り込み信号を発生し、電子機器３０１との間でＵＳＢ接続が確立したことを通知する。ＣＰＵ２０３は、電子機器３０１が接続されたことを受けると、Flashメモリ３０４内のディレクトリ「/＿printer」及び／または「/prc」の中から、「.prc」のプレフィクスを持つプリンタ構成ファイルを検索する（ステップＳ６０１）。ＣＰＵ２０３は、検索して見つかったプリンタ構成ファイルの中身を検索して、印刷機２０１のプリンタ構成ファイルがあるか否かを判定する（ステップＳ６０２）。ここで、印刷機２０１のプリンタ構成ファイルがある場合とは、プリンタ構成ファイル中の、「ProductName」、「VenderName」、「PrinterName」、及び「IPAddress」が、印刷機２０１の持つ情報と一致する場合を言う。なお、設定により「ProductName」と「VenderName」のみが、印刷機２０１の持つ情報と一致した場合でも印刷機２０１のプリンタ構成ファイルがある場合としてもよい。
【００５８】
次に、ＣＰＵ２０３は、印刷機２０１のプリンタ構成ファイル中の「Datafiie」の設定内容を確認して、設定されている印刷データがなくなるまでステップＳ６０３からステップＳ６０９までの処理を繰り返し行う。具体的に、ＣＰＵ２０３は、「Datafile」内の「Data」タグで指定されている印刷データの格納されているファイルを１つ読み出す（ステップＳ６０３）。次に、ＣＰＵ２０３は、読み出した印刷データを解析し、解析した印刷データの内容に応じて、ＲＡＭ２０４内のデータの書き換え、プリンタエンジン２０８の設定、及びオプションコントローラ２１３の設定を行う（ステップＳ６０４）。そして、中間データを生成する（ステップＳ６０５）。
【００５９】
レンダラ２０７は、生成された中間データをレンダリングしてラスタデータに変換する（ステップＳ６０６）。プリンタエンジン２０８は、このラスタデータを、ユーザによって指定された用紙に印刷する。フィニッシャー２１４は、印刷された用紙に対して、フィニッシング処理を行う（ステップＳ６０７）。ＣＰＵ２０３は、ステップＳ６０３で読み出したファイルを削除すると共に、プリンタ構成ファイルの「Datafile」中のファイルのエントリを削除する（ステップＳ６０８）。
【００６０】
こうして「Datafile」中の「Data」タグで指定されている印刷データを全て印刷し終えると（ステップＳ６０９のＮｏ）、ＣＰＵ２０３は、印刷機２０１以外のプリンタ構成ファイルがあるか否かを判定する（ステップＳ６１０）。この判定の結果、印刷装置２０１のプリンタ構成ファイル以外のプリンタ構成ファイルが無ければそのまま処理を終了する。一方、印刷装置２０１のプリンタ構成ファイル以外のプリンタ構成ファイルがあれば、ＣＰＵ２０３は、印刷機２０１のプリンタ構成ファイル以外のプリンタ構成ファイルの中を参照する。そして、ＣＰＵ２０３は、プリンタ構成ファイルに含まれている全ての印刷データ、すなわち各プリンタ構成ファイルの「Datafie」内の「Data」タグで指定されている印刷ファイルの全てを検索する（ステップＳ６１１）。
【００６１】
そして、ＣＰＵ２０３は、検索した各印刷データの簡易解析を行い、各印刷データに含まれる、ジョブ名、生成時間、生成したユーザ名、両面設定、カラー設定、フィニッシング設定等の各種印刷情報を取得する（ステップＳ６１２）。そして、ＣＰＵ２０３は、ステップＳ６１１で検索した印刷データ毎に、ステップＳ６１２で取得した各種印刷情報の概要を操作パネル２０２に表示する（ステップ６１３）。これにより、印刷装置２０１に接続されたリムーバブルメモリデバイス（電子機器３０１）に、印刷機２０１宛以外の印刷データが含まれていることが、ユーザに示される。
【００６２】
図１１は、印刷機２０１に接続されたリムーバブルメモリデバイス（電子機器３０１）に、印刷機２０１宛以外の印刷データが含まれていることを表示する画面の一例を示す図である。図１１において、メッセージ１１０１により、「印刷機２０１宛以外の印刷データが接続したリムーバブルメモリに含まれており、印刷機２０１でも印刷可能であるが無視される設定がある場合ある」ことをユーザに通知する。対象プリンタ１１０２、時間１１０３、ユーザ名１１０４、ジョブ名１１０５の欄には、ステップＳ６１２で取得した各種印刷情報に関する情報が示している。
【００６３】
具体的に、対象プリンタ１１０２の欄は、印刷データをどの印刷機で印刷するつもりで作成されているのかを示している。この対象プリンタ１１０２には、印刷データのエントリが含まれていたプリンタ構成ファイルの「PrinterName」又は「IPAddrres」の項目が表示される。
時間１１０３の欄には、印刷データが生成された時間が表示される。ユーザ名１１０４の欄には、印刷データを生成したユーザが表示される。ジョブ名１１０５の欄には、印刷データのジョブ名が表示される。これらは、それぞれ印刷データの中に含まれている情報である。図１１に示す例では、リムーバブルメモリデバイス（電子機器３０１）に含まれている印刷データは２つある。これら２つの印刷データは、それぞれ「プリンタＡＡＡ」の印刷機、「192.168．2.1」の印刷機で印刷するつもりで作成されたデータであることを示している。
【００６４】
ユーザは、ボタン１１０６を押すことで、該当する印刷データを印刷機２０１で印刷することを指示する。また、ユーザが、ボタン１１０７を押すことで、該当する印刷データを印刷機２０１で印刷することで制限される機能の詳細が表示される。
図１２は、ユーザによってボタン１１０７が押されたときに表示される画面であって、印刷データを印刷機２０１で印刷することで制限される機能を表示する画面の一例を示す図である。図１２において、図１１に示した画面でボタン１１０７を押すことによってユーザが選択した印刷データの概要情報１２０１を示している。制限機能表示欄１２０２〜１２０４によって、ユーザが選択した印刷データの制限情報が示される。
【００６５】
図１２に示す例では、制限機能表示欄１２０２によって、カラー印刷の設定が無視されモノクロ印刷となることが示されている。また、制限機能表示欄１２０３によって、両面印刷の設定が無視され片面印刷になることが示されている。さらに、制限機能表示欄１２０４によって、ステイプル設定が無視されステイプルが実行されないことを示している。ユーザは、ボタン１２０５を押すことで、該当する印刷データを印刷することを指示する。また、ユーザが、ボタン１２０６を押すと、図１１に示した画面に戻る。
【００６６】
図１０に説明を戻し、ユーザが、ボタン１１０６、１２０５を押すことで印刷データの印刷が指示されると（ステップ６１４のＹｅｓ）、印刷機２０１は、該当する印刷データの印刷処理を行う（ステップＳ６１５）。この印刷処理は、前述したＳ６０３〜Ｓ６０８の処理と同一であるため詳細な説明を省略する。
印刷処理が行われた後、ＣＰＵ２０３は、ステップＳ６１１で検索した印刷データのうち、印刷処理が行われていない印刷データの有無を判定する。この判定の結果、印刷処理が行われていない印刷データがなければ処理を終了する。一方、印刷処理が行われていない印刷データが残っていれば、ステップＳ６１３に戻って、図１１に示した画面を再度表示する。このとき、印刷済みの印刷データは、画面のリストから削除される。
【００６７】
以上のように、本実施形態では、電子機器３０１のＢプラグ３０６が、印刷機２０１のＢレセプタクルに接続されると、電子機器３０１がＵＳＢホストとして動作する。具体的に、電子機器３０１は、印刷機２０１の構成情報を印刷機２０１から取得する。このとき、印刷機２０１から見ると、電子機器３０１はホストコンピュータ１０１と同一の動作をしている。
【００６８】
続いて、電子機器３０１のＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクルに１０７に接続されると、電子機器３０１はプリンタファンクションのデバイスとして動作する。すなわち、ホストコンピュータ１０１は、電子機器３０１と、印刷機２０１とが同一のものと認識する。したがって、ホストコンピュータ１０１では、印刷機２０１が接続されているのと同じ状態になる。よって、ユーザは、ホストコンピュータ１０１上で印刷機２０１へ印刷するときと同じ操作を行うことにより、印刷データが電子機器３０１へ格納される。
【００６９】
このようにして印刷データが電子機器３０１に格納された状態で、ユーザは、ホストコンピュータ１０１から電子機器３０１を取り外し、電子機器３０１を再度印刷機２０１のＢレセプタクル２１０に接続する。そうすると、電子機器３０１が、格納している印刷データを印刷機２０１へ送信することによって、印刷機２０１で自動的に印刷が行われる。以降、ユーザは、ホストコンピュータ１０１から印刷機２０１へ印刷を行うとき、電子機器３０１をホストコンピュータ１０１に接続して印刷操作をした後、印刷機２０１へ電子機器３０１を接続するという手順を行えばよい。
【００７０】
すなわち、ユーザから見ると、ホストコンピュータ１０１での操作は、ホストコンピュータ１０１と印刷機２０１とが、ネットワークやＵＳＢケーブルで接続されているときと同じ操作で印刷を行うことができる。また、ホストコンピュータ１０１の動作、及び印刷機２０１の動作は既存の動作と同一であり、既存の印刷環境で電子機器３０１を媒介として印刷を行うことが可能である。
【００７１】
さらに、一度も印刷装置２０１へ接続したことが無い状態で電子機器３０１をホストコンピュータ１０１に接続すると、電子機器３０１はＵＳＢ規格のマス・ストレージクラスのデバイスとして動作する。このとき、ユーザは通常の印刷操作と変わらぬホストコンピュータ１０１上の操作で電子機器３０１へ印刷データを格納できる。続いて、電子機器３０１のＡプラグ３１０が、印刷機２０１のＡレセプタクルに接続されると、印刷機２１０がＵＳＢホストとして動作する。具体的に、印刷機２０１は、電子機器３０１から印刷データを吸い出して自動的に印刷する。
【００７２】
すなわち、ユーザから見ると、ホストコンピュータ１０１上での操作は、ホストコンピュータ１０１と印刷機２０１とが、ネットワークやＵＳＢケーブルで接続されているときと同じ操作で印刷を行うことができる。また、電子機器３０１では、プリンタ構成ファイルにより、印刷データの宛先が管理されているため、複数の印刷機がある印刷環境においても、自分（印刷機２０１）宛の印刷データについては自動的に印刷することができる。一方、自分以外宛の印刷データについては、印刷機２０１がユーザに問い合わせることによって、自分以外宛の印刷データであってもユーザが意図すれば、印刷機２０１は、印刷データを印刷することができる。また、電子機器３０１を印刷用のストレージデバイスとして利用することと、電子機器３０１を印刷機と同一であるとプリンタドライバに認識させて印刷データを受け取ることの両方の利用方法を用いることが可能となる。
【００７３】
（第２の実施形態）
次に、本発明の第２実施形態について説明する。前述した第１の実施形態では、電子機器（リムーバルルメモリデバイス）３０１に１台の印刷機２０１が接続される場合について説明した。これに対し、本実施形態では、電子機器に複数台の印刷機が接続される場合について説明する。このように、前述した第１の実施形態と本実施形態とは、電子機器に接続される印刷機の数と、電子機器の構成の一部が異なるだけである。したがって、以下の説明において、前述した第１の実施形態と同一の部分については、図１〜図１２に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００７４】
図１３は、印刷システムの構成の一例を示した図である。
図１３において、ホストコンピュータ１０１、印刷機２０１は、第１の実施形態と同一の構成を持った機器である。電子機器１３０１は、図１４に示す構成を持つ電子機器である。電子機器１３０１は、第１の実施形態の電子機器３０１とは、ＵＳＢデバイスコントローラ１３１０及びＬＣＤ操作部１３２０を追加で持つこと以外に変わりはない。
ＵＳＢデバイスコントローラ１３１０は、ＵＳＢデバイスコントローラ３０８と同一の構成を持つＵＳＢデバイスコントローラである。ＵＳＢ規格のプリンタクラスのファンクションとして動作するように実装されており、ＵＳＢデバイスコントローラ１３１０は、３つのエンドポイントから構成されている。第１のエンドポイント（エンドポイント０）は、コントロール転送をサポートしている。第２のエンドポイント（エンドポイント１）は、バルクアウト転送をサポートしている。第３のエンドポイント（エンドポイント２）は、バルクイン転送をサポートしている。印刷機１３０２、１３０３は、印刷機２０１と同一の構成を持つ印刷機である。ＬＣＤ操作部１３２０は、ＬＣＤ画面を有し、メッセージ表示や小型ボタンによるユーザ操作が可能になるように構成されているユーザインタフェースである。
【００７５】
ここで、図１５のフローチャートを参照しながら、電子機器１３０１のＢプラグ３０６が、印刷機２０１、１３０２、又は１３０３のＢレセプタクル２１０に接続されたときの電子機器１３０１の動作の一例を説明する。
【００７６】
まず、電子機器１３０１のＢプラグ３０６が、印刷機のＢレセプタクル２１０へ接続されると、ＵＳＢホストコントローラ３０５は、その接続を検知する。そして、ＵＳＢ規格に基づくバス・エニュメレーション処理を実行してＵＳＢ接続を確立する（ステップＳ７０１）。ＵＳＢ接続が確立するとＵＳＢホストコントローラ３０５は、ＣＰＵ３０２へ、ＵＳＢ接続が確立したことを通知する。通知を受けたＣＰＵ３０２は、「/＿printer」以下の「.prc」プレフィクスを持つプリンタ構成ファイルをFlashメモリ３０４から検索する。そして、接続された印刷機２０１、１３０２、又は１３０３と一致するプリンタ構成ファイルが存在するか否かによって処理を分岐する（ステップＳ７０２）。
【００７７】
接続された印刷機２０１、１３０２、又は１３０３のプリンタ構成ファイルが存在しない場合、「/＿printer」内のプリンタ構成ファイルの数によって処理を分岐する（ステップＳ７０３）。プリンタ構成ファイルの数が２個よりも少なければ（ステップＳ７０３のＹｅｓ）、ステップＳ７０４に進む。ステップＳ７０４では、ＵＳＢホストコントローラ３０５が受信したＵＳＢ規格の各ディスクリプタのうち、デバイス依存の値を含むＵＳＢコンフィグファイル「/＿printer/conf」又は「/＿printer/conf2」を新規に作成する。続いて、印刷機２０１の構成情報を取得するために、構成情報を取得するリクエストを、ＵＳＢホストコントローラ３０５を介して印刷機２０１送る（ステップＳ７０５）。印刷機２０１から構成情報を取得すると、取得した印刷機２０１の構成情報を構成情報ファイル「/＿printer/print.conf」又は「/＿printer/print2.conf」を新規に作成する（ステップＳ７０６）。
続いて、接続された印刷機２０１、１３０２、又は１３０３のプリンタ構成ファイル「/＿printer/print.prc」又は「/＿printer/print2.prc」を作成する（ステップＳ７０７）。
【００７８】
新規に作成されたプリンタ構成ファイルの内容のうち、「ProductName」、「VenderName」、及び「PrinterName」には、ＵＳＢホストコントローラ３０５に接続された印刷機から受信した値が設定される。接続された印刷機がネットワークに接続されていれば、そのＩＰアドレスが「IPAddress」に設定されるが、接続されていなければ「IPAddress」には何も設定されない。さらに、「ConfigrationFile」には、ステップＳ７０６で作成された構成情報ファイルのファイル名が設定され、「Datafile」には何も設定されない。「USBconfFile」には、ステップＳ７０４で作成されたＵＳＢコンフィグファイルのファイル名が設定される。
【００７９】
以上のような構成情報ファイルが設定されると、ステップＳ７３０に進む。ステップＳ７０７でプリンタ構成ファイルとして「/＿printer/print.prc」が作成された場合、ＵＳＢハブ３０９とＵＳＢデバイスコントローラ３０８とを接続状態にする。一方、ステップＳ７０７でプリンタ構成ファイルとして「/＿printer/print2.prc」が作成された場合、ＵＳＢハブ３０９とＵＳＢデバイスコントローラ１３１０とを接続状態にする。そして、接続された印刷機とのＵＳＢ接続を切断して処理を終了する（ステップＳ７２１）。
【００８０】
ステップＳ７０３で、「/＿printer」以下のプリンタ構成ファイルの数が２個以上であると判定された場合、各プリンタ構成ファイルの内容を参照し、「Datafile」に印刷データが記述されているか否かを判定する（ステップＳ７０８）。この判定の結果、印刷データが記述されていないプリンタ構成ファイルがあれば、ステップ７０９へ進む。一方、全てのプリンタ構成ファイルに印刷データが記述されていればステップＳ７１４へ進む。
ステップＳ７１４では、ＣＰＵ３０２は、「新規プリンタを登録できません」というメッセージをＬＣＤ操作部１３２０に表示する。これにより、電子機器１３０１に接続された印刷機とホストコンピュータ１０１と間の印刷を、電子機器１３０１を利用して行うことができないことがユーザに知らせる。そして、接続された印刷機とのＵＳＢ接続を切断して処理を終了する（ステップ７２１）。
【００８１】
ステップ７０９では、印刷データが記述されていないプリンタ構成ファイルの中から、どのプリンタ構成ファイルを更新するかを選択する。選択する方法としては、プリンタ構成ファイルの中で最も更新時期の古いものを選択する方法や、予め決めておいたプリンタ構成ファイルを常に更新するようにするという方法等が考えられる。
次に、ＵＳＢホストコントローラ３０５が受信したＵＳＢ規格の各ディスクリプタに含まれるデバイス依存の値で、選択したプリンタ構成ファイル中の「USBconfFile」に設定されているファイルの内容を書き換える（ステップＳ７１０）。続いて、印刷機２０１の構成情報を取得するために、構成情報を取得するリクエストを、ＵＳＢホストコントローラ３０５を介して印刷機２０１に送る（ステップＳ７１１）。印刷機２０１から構成情報を取得すると、取得した印刷機２０１の構成情報で、ステップＳ７０９で選択されたプリンタ構成ファイル中の「ConfigrationFile」に設定されているファイルの内容を書き換える（ステップＳ７１２）。
【００８２】
次に、選択したプリンタ構成ファイルの中の「ProductName」、「VenderName」及び「PrinterName」を、ＵＳＢホストコントローラ３０５に接続された印刷機から取得した値で書き変える（ステップＳ７１３）。また、接続された印刷機がネットワークに接続されていれば、そのＩＰアドレスで「IPAddress」を書き換える（ステップＳ７１３）。こうしてプリンタ構成ファイルの更新が終了すると、接続された印刷機とのＵＳＢ接続を切断して処理を終了する（ステップ７２１）。
【００８３】
ステップＳ７０２で、接続された印刷機のプリンタ構成ファイルが存在したと判定された場合、プリンタ構成ファイルの「Datafile」に設定されている内容を確認する。そして、設定されている印刷データがなくなるまで、ステップＳ７１５からステップＳ７１７までの処理を繰り返し行う。具体的に、「Datafile」内の「Data」タグで設定されている印刷データの格納されているファイルを１つ読み出し、接続された印刷機に送信する（ステップ７１５）。プリンタ構成ファイルに含まれる印刷データを全て送信すると、送信した印刷データが含まれていたプリンタ構成ファイルを削除すると共に、「Datafile」中のファイルのエントリを削除する（ステップ７１６）。「Datafile」中の「Data」タグで指定されている印刷データを全て送信し終えると（ステップＳ７１７のＹｅｓ）、接続された印刷機から印刷の終了が通知されるまで待機する（ステップＳ７１８）。接続された印刷機に送信した全ての印刷データの印刷の終了が、接続された印刷機から通知されると、その印刷機の構成情報を取得するために、構成情報を取得するリクエストを、ＵＳＢホストコントローラ３０５を介して印刷機に送信する（ステップＳ７２０）。接続された印刷機から構成情報を取得すると、取得した構成情報で、接続された印刷機のプリンタ構成ファイルの「ConfigrationFile」に設定されている構成ファイルを更新する（ステップＳ７２０）。そして、ＵＳＢ接続を切断して処理を終了する（ステップＳ７２１）。
【００８４】
次に、図１６と、図１７のフローチャートとを参照しながら、電子機器１３０１がホストコンピュータ１０１に接続されたときの動作の一例を説明する。
【００８５】
図１６は、電子機器１３０１に設けられたＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクル１０７に接続されたときに構成されるＵＳＢ接続の状態の一例を示す図である。図１７は、電子機器３０１が接続されたときのホストコンピュータ１０１の動作の一例を説明するフローチャートである。
【００８６】
図１６において、ＵＳＢホスト４０１は、図２（ａ）に示したＵＳＢホストコントローラ１０６上に構成される。ＵＳＢハブ４０２は、図１４に示したＵＳＢハブ３０９上に構成される。マス・ストレージファンクション４０３は、図１４に示したＵＳＢデバイスコントローラ３０７上に構成される。プリンタファンクション４０４は、図１４に示したＵＳＢデバイスコントローラ３０８上に構成される。プリンタファンクション１４０１は、図１４に示したＵＳＢデバイスコントローラ１３１０上に構成される。
【００８７】
図１６（ａ）は、Flashメモリ３０４上に「/＿printer/print.prc」及び「/＿printer/print2.prc」の何れもがないときに構成されるＵＳＢ接続の状態の一例を示す図である。図１６（ｂ）は、Flashメモリ３０４上に「/＿printer/print.prc」があり、「/＿printer/print2.prc」がないときに構成されるＵＳＢ接続の状態の一例を示す図である。図１６（ｃ）は、Flashメモリ３０４上に「/＿printer/print.prc」がなく、「/＿printer/print2.prc」あるときに構成されるＵＳＢ接続の状態の一例を示す図である。図１６（ｄ）は、Flashメモリ３０４上に「/＿printer/print.prc」及び「/＿printer/print2.prc」があるときに構成されるＵＳＢ接続の状態の一例を示す図である。
【００８８】
図１７において、電子機器１３０１のＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクル１０７に接続されると、ＵＳＢホストコントローラ１０６が接続を検知する（ステップＳ８０１）。すると、ＵＳＢホストコントローラ１０６は、ＵＳＢ規格に基づくバス・エニュメレーション処理を実行して、ＵＳＢハブ３０９の接続を確立する（ステップＳ８０２）。この状態で、ＵＳＢホスト４０１とＵＳＢハブ４０２との接続が確立されている。
【００８９】
続いて、ＵＳＢホストコントローラ１０６は、ＵＳＢハブ３０９のダウンストリームポートに接続されている機器の問い合わせをＵＳＢハブ３０９に行う（ステップＳ８０３）。ＵＳＢハブ３０９とＵＳＢデバイスコントローラ３０７は、常に接続されている状態である。このため、ＵＳＢハブ３０９は、ＵＳＢホストコントローラ１０６へ、ＵＳＢデバイスコントローラ３０７が接続されていることを通知する。
ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０７がＵＳＢハブ３０９に接続されていること認識すると、バス・エニュメレーション処理を実行してＵＳＢデバイスコントローラ３０７との接続を確立する（ステップＳ８０４）。この時点で、ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０７上のファンクションがマス・ストレージファンクションであることを認識する。こうして、ＵＳＢホスト４０１とマス・ストレージファンクション４０３とがＵＳＢハブ４０２を介して接続された状態となる（図１６（ａ）〜図１６（ｂ）を参照）。
【００９０】
電子機器１３０１の状態により、ＵＳＢデバイスコントローラ３０８、１３１０と、ＵＳＢハブ３０９との接続状態が異なる。電子機器１３０１の初期状態では、ＵＳＢデバイスコントローラ３０８、１３１０は、ＵＳＢハブ３０９と接続されていない状態となっている。電子機器１３０１のＢプラグ３０６が、前述したように各印刷機のＢレセプタクルに接続されると、ＣＰＵ３０２は、Flashメモリ３０４上に「/＿printer/print.prc」又は「/＿printer/print2.prc」を作成する。また、ＣＰＵ３０２は、ＵＳＢハブ３０９と、ＵＳＢデバイスコントローラ３０８、１３１０とが相互に接続されている状態にする。
【００９１】
こうして、ＵＳＢデバイスコントローラ３０８、１３１０が、ＵＳＢハブ３０９と相互に接続された状態にあるときには、ＵＳＢハブ３０９は、ＵＳＢホストコントローラ１０６へ、ＵＳＢデバイスコントローラ３０８、１３１０が接続されていることを通知する。ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０８、１３１０の何れか一方、又は両方が接続されていることを認識すると、接続されているＵＳＢデバイスコントローラ３０８、１３１０に対して、バス・エニュメレーション処理を実行する。そして、ＵＳＢデバイスコントローラ３０８、１３１０との接続を確立する（ステップＳ８０６）。
【００９２】
この処理でＵＳＢデバイスコントローラ３０８は、ＵＳＢ規格のプリンタクラスにおける各ディスクリプタのデバイス依存の値として、「/＿printer/print.prc」の「USBconfFile」に設定されたファイルの値を設定する。そして、設定した値をＵＳＢホストコントローラ１０６へ通知する。
また、ＵＳＢデバイスコントローラ１３１０は、ＵＳＢ規格のプリンタクラスにおける各ディスクリプタのデバイス依存の値として、「/＿printer/print2.prc」の「USBconfFile」に設定されたファイルの値を設定する。そして、設定した値をＵＳＢホストコントローラ１０６へ通知する。
【００９３】
「/＿printer/print.prc」又は「/＿printer/print2.prc」の「USBconfFile」に設定されているファイルには、各印刷機のＵＳＢデバイスコントローラから電子機器１３１０が取得する値が格納されている。したがって、ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ３０８を、プリンタ構成ファイル「/＿printer/print.prc」を生成したときに接続された印刷機のＵＳＢデバイスコントローラと同一のものであると認識する。また、ＵＳＢホストコントローラ１０６は、ＵＳＢデバイスコントローラ１３１０を、プリンタ構成ファイル「/＿printer/print2.prc」を生成したときに接続された印刷機のＵＳＢデバイスコントローラと同一のものと認識する。
【００９４】
ＵＳＢホストコントローラ１０６と各ＵＳＢデバイスコントローラとのバス・エニュメレーション処理が終了すると、ＵＳＢホストコントローラ１０６は、各ＵＳＢデバイスコントローラ上のファンクションがプリンタファンクションであると認識する。こうして、ＵＳＢホスト４０１と、プリンタファンクション４０４及びプリンタファンクション１４０１との少なくとも何れか一方とがＵＳＢハブ４０２を介して接続された状態となる（図１６（ｂ）〜図１６（ｄ）を参照）。
【００９５】
続いて、図１８のフローチャートを参照しながら、電子機器１３０１のＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクル１０７に接続された状態で、特定の印刷機を指定して印刷を行う場合の電子機器１３０１の動作の一例を説明する。
前述したように、電子機器１３０１がホストコンピュータ１０１に接続されたときのＵＳＢ接続の状態は、図１６（ａ）〜（ｄ）に示した４通りの状態を取り得る。このうち、図１６（ａ）に示した状態の場合、電子機器１３０１は、既知のＵＳＢ規格であるマス・ストレージデバイスとして動作する。すなわち、電子機器１３０１は、ホストコンピュータ１０１のリクエストに応じてデータのFlashメモリ３０４への読み込みと書き込みとを行うのみである。したがって、図１６（ａ）に示した状態の場合の詳細な説明を省略する。ここでは、図１６（ｂ）〜（ｄ）に示した状態であるときの電子機器１３０１の動作を説明する。
【００９６】
電子機器１３０１がホストコンピュータ１０１に接続され、ＵＳＢ接続の状態が、図１６（ｂ）〜図１６（ｄ）に示した状態の何れかになると、ＣＰＵ３０２は、ＵＳＢデバイスコントローラ３０８、１３１０からの割り込みを待つ（ステップＳ９０１）。ＵＳＢデバイスコントローラ３０８、１３１０は、ホストコンピュータ１０１からＵＳＢ経由でリクエストを受けると、ＣＰＵ３０２対して割り込みを発生し、そのリクエストの処理を依頼する。ＣＰＵ３０２は、ホストコンピュータ１０１のリクエストを判断し、リクエストが、構成情報を獲得するリクエストであれば（ステップＳ９０２のＹｅｓ）、ステップＳ９０３へ進む。一方、印刷データを受信すれば（ステップＳ９０４のＹｅｓ）、ステップＳ９０５へ進む。その他のリクエストであれば、何も処理をせずに、ＵＳＢデバイスコントローラ３０８、１３１０からの割り込みを待つ状態（ステップＳ９０１）に戻る。
【００９７】
ステップＳ９０３に進むと、ＣＰＵ３０２は、リクエストの内容に応じて、「/＿printer/print.prc」又は「/＿printer/print2.prc」の「ConfigrationFile」から構成情報を読み出す。そして、リクエストを受けたＵＳＢデバイスコントローラ３０８、１３１０のバルクインエンドポイント経由でホストコンピュータ１０１へ通知する。なお、ＵＳＢデバイスコントローラ３０８からリクエストを受けた場合は、「/＿printer/print.prc」の「ConfigrationFile」を使用する。一方、ＵＳＢデバイスコントローラ１３１０からリクエストを受けた場合は、「/＿printer/print2.prc」の「ConfigrationFile」を使用する。
【００９８】
ステップＳ９０５に進むと、ＣＰＵ３０２は、受信した印刷データを、「/＿printer」に「.prn」のプレフィクスを持つ新規のファイルとして作成する。そして、作成したファイルの名前を、プリンタ構成ファイル「/＿printer/print.prc」又は「/＿printer/print2.prc」中の「Datafile」に「Data」を追加して記述する。なお、ＵＳＢデバイスコントローラ３０８からリクエストを受けた場合は、「/＿printer/print.prc」の「Datafile」に、作成したファイルの名前を記述する。一方、ＵＳＢデバイスコントローラ１３１０からリクエストを受けた場合は、「/＿printer/print2.prc」の「Datafile」に、作成したファイルの名前を記述する。
【００９９】
なお、ホストコンピュータ１０１が、各印刷機を指定して印刷するときの動作と、電子機器１３０１が各印刷機に接続されたときの動作は、前述した第１の実施形態と同様であるため、説明を省略する。
【０１００】
以上のように、本実施形態では、電子機器１３０１のＢプラグ３０６が、各印刷機のＢレセプタクルに接続されると、電子機器１３０１がＵＳＢホストとして動作する。具体的に、電子機器１３０１は、接続された印刷機の構成情報を、その印刷機から取得する。このとき、印刷機から見ると、電子機器１３０１はホストコンピュータ１０１と同一の動作をしている。
【０１０１】
続いて、電子機器１３０１のＡプラグ３１０が、ホストコンピュータ１０１のＡレセプタクルに１０７に接続されると、電子機器１３０１はプリンタファンクションのデバイスとして動作する。すなわち、ホストコンピュータ１０１は、電子機器１３０１と、電子機器１３０１に接続された各印刷機とが同一のものと認識する。このとき、電子機器１３０１に２台の印刷機が接続された場合、ホストコンピュータ１０１は、それら２台の印刷機がそれぞれ電子機器１３０１に接続されていると認識する。したがって、ホストコンピュータ１０１では、電子機器１３０１に接続された各印刷機が接続されているのと同じ状態になる。よって、ユーザは、ホストコンピュータ１０１上で各印刷機へ印刷するときと同じ操作を行うことにより、印刷データが電子機器１３０１へ格納される。
【０１０２】
このようにして印刷データが電子機器１３０１に格納された状態で、ユーザは、ホストコンピュータ１０１から電子機器１３０１を取り外し、電子機器１３０１を各印刷機のＢレセプタクル２１０に接続する。そうすると、電子機器３０１が、格納している印刷データを接続されている印刷機へ送信することによって、その印刷機で自動的に印刷が行われる。以降、ユーザは、ホストコンピュータ１０１から各印刷機へ印刷を行うとき、電子機器３０１をホストコンピュータ１０１に接続して印刷操作をした後、各印刷機へ電子機器３０１を接続するという手順を行えばよい。
【０１０３】
すなわち、ユーザから見ると、ホストコンピュータ１０１での操作は、ホストコンピュータ１０１と各印刷機とが、ネットワークやＵＳＢケーブルで接続されているときと同じ操作で印刷を行うことができる。また、ホストコンピュータ１０１の動作、及び各印刷機の動作は既存の動作と同一であり、既存の印刷環境で電子機器３０１を媒介として印刷を行うことが可能である。
【０１０４】
（本発明の他の実施形態）
なお、前述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、前記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給する。そして、そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【０１０５】
また、この場合、前記ソフトウェアのプログラムコード自体が上述した実施形態の機能を実現することになる。そして、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、例えば、かかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１０６】
また、プログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれる。
【０１０７】
さらに、供給されたプログラムコードをコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納する。その後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【０１０８】
なお、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１０９】
【図１】本発明の第１の実施形態を示し、印刷システムの構成の一例を示した図である。
【図２】本発明の第１の実施形態を示し、各機器の構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態を示し、電子機器に設けられたＡプラグが、ホストコンピュータのＡレセプタクルに接続されたときに構成されるＵＳＢ接続の状態の一例を示す図である。
【図４】本発明の第１の実施形態を示し、電子機器が接続されたときのホストコンピュータの動作の一例を説明するフローチャートである。
【図５】本発明の第１の実施形態を示し、ホストコンピュータ上で印刷機を指定して印刷を行う場合のホストコンピュータの動作の一例を説明するフローチャートである。
【図６】本発明の第１の実施形態を示し、プリンタ構成ファイルの一例を示した図である。
【図７】本発明の第１の実施形態を示し、電子機器のＡプラグが、ホストコンピュータのＡレセプタクルに接続された状態で、印刷機を指定して印刷を行う場合の電子機器の動作の一例を説明するフローチャートである。
【図８】本発明の第１の実施形態を示し、電子機器のＢプラグが、印刷機のＢレセプタクルへ接続されたときの電子機器の動作の一例を説明するフローチャートである。
【図９】本発明の第１の実施形態を示し、電子機器のＢプラグが、印刷機のＢレセプタクルに接続されたときの印刷機の動作の一例を説明するフローチャートである。
【図１０】本発明第１の実施形態を示し、電子機器のＡプラグが印刷機のＡレセプタクルに接続されたときの印刷機の動作の一例を説明するフローチャートである。
【図１１】本発明第１の実施形態を示し、印刷機に接続されたリムーバブルメモリデバイス（電子機器）に、印刷機宛以外の印刷データが含まれていることを表示する画面の一例を示す図である。
【図１２】本発明第１の実施形態を示し、印刷データを印刷機で印刷することで制限される機能を表示する画面の一例を示す図である。
【図１３】本発明第２の実施形態を示し、印刷システムの構成の一例を示した図である。
【図１４】本発明第２の実施形態を示し、電子機器の構成の一例を示したブロック図である。
【図１５】本発明第２の実施形態を示し、電子機器のＢプラグが、印刷機のＢレセプタクルに接続されたときの電子機器の動作の一例を説明するフローチャートである。
【図１６】本発明第２の実施形態を示し、電子機器に設けられたＡプラグが、ホストコンピュータのＡレセプタクルに接続されたときに構成されるＵＳＢ接続の状態の一例を示す図である。
【図１７】本発明第２の実施形態を示し、電子機器が接続されたときのホストコンピュータの動作の一例を説明するフローチャートである。
【図１８】本発明第２の実施形態を示し、電子機器のＡプラグが、ホストコンピュータのＡレセプタクルに接続された状態で、特定の印刷機を指定して印刷を行う場合の電子機器の動作の一例を説明するフローチャートである。
【符号の説明】
【０１１０】
１０１  ホストコンピュータ
１０２  ＣＰＵ
１０６  ＵＳＢホストコントローラ
２０１、１３０２、１３０３  印刷機
２０２  ＣＰＵ
２０９  ＵＳＢデバイスコントローラ
２１１  ＵＳＢホストコントローラ
３０１、１３０１  電子機器
３０２  ＣＰＵ
３０５  ＵＳＢホストコントローラ
３０７、３０８、１３１０  ＵＳＢデバイスコントローラ
３０８  ＵＳＢデバイスコントローラ
３０９  ＵＳＢハブ
【図１】
0004750532.tif 000002
【図２】
0004750532.tif 000003
【図３】
0004750532.tif 000004
【図４】
0004750532.tif 000005
【図５】
0004750532.tif 000006
【図６】
0004750532.tif 000007
【図７】
0004750532.tif 000008
【図８】
0004750532.tif 000009
【図９】
0004750532.tif 000010
【図１０】
0004750532.tif 000011
【図１１】
0004750532.tif 000012
【図１２】
0004750532.tif 000013
【図１３】
0004750532.tif 000014
【図１４】
0004750532.tif 000015
【図１５】
0004750532.tif 000016
【図１６】
0004750532.tif 000017
【図１７】
0004750532.tif 000018
【図１８】
0004750532.tif 000019