(57)【特許請求の範囲】
【請求項１】
接続情報に基づき装置の接続状況を表示するホストコンピュータであって、
各装置の接続情報の文字列の長さを調べ短い順にソートするソート手段と、
接続情報の文字列の長さが一番短い装置がホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別する判別手段と、
次に接続情報の文字列の長さが短い装置が前記判別手段により判別されたホストコンピュータのハブに接続されている場合、前記判別手段により判別されたホストコンピュータのハブに接続されている装置のハブに接続されていると判定する判定手段とを有することを特徴とするホストコンピュータ。
【請求項２】
前記判定手段は、次に接続情報の文字列の長さが短い装置が前記判別手段により判別されたホストコンピュータのハブに接続されていない場合、ホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別することを特徴とする請求項１記載のホストコンピュータ。
【請求項３】
接続情報に基づき装置の接続状況を表示するホストコンピュータにおける接続状態表示方法であって、
前記ホストコンピュータのソート手段が、各装置の接続情報の文字列の長さを調べ短い順にソートするソートステップと、
前記ホストコンピュータの判別手段が、接続情報の文字列の長さが一番短い装置がホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別する判別ステップと、
前記ホストコンピュータの判定手段が、次に接続情報の文字列の長さが短い装置が前記判別ステップにより判別されたホストコンピュータのハブに接続されている場合、前記判別ステップにより判別されたホストコンピュータのハブに接続されている装置のハブに接続されていると判定する判定ステップとを有することを特徴とするホストコンピュータにおける接続状態表示方法。
【請求項４】
前記判定ステップは、次に接続情報の文字列の長さが短い装置が前記判別ステップにより判別されたホストコンピュータのハブに接続されていない場合、ホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別することを特徴とする請求項３記載のホストコンピュータにおける接続状態表示方法。
【請求項５】
接続情報に基づき装置の接続状況を表示するホストコンピュータで実行されるプログラムを記憶した記憶媒体であって、
各装置の接続情報の文字列の長さを調べ短い順にソートするソートステップと、
接続情報の文字列の長さが一番短い装置がホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別する判別ステップと、
次に接続情報の文字列の長さが短い装置が前記判別ステップにより判別されたホストコンピュータのハブに接続されている場合、前記判別ステップにより判別されたホストコンピュータのハブに接続されている装置のハブに接続されていると判定する判定ステップとをホストコンピュータに実行させるためのプログラムを記憶した記憶媒体。
【請求項６】
前記判定ステップは、次に接続情報の文字列の長さが短い装置が前記判別ステップにより判別されたホストコンピュータのハブに接続されていない場合、ホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別することを特徴とする請求項５記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置に接続されたプリンタやスキャナ等のＯＡ装置の接続状態を表示する表示手法に関する。
【０００２】
【従来の技術】
通常、ホストコンピュータ等の情報処理装置に複数のプリンタ装置やスキャナ装置を接続して原稿の印刷や原稿の読み取り処理を実行する場合には、ユーザは、印刷用紙や読み取り原稿を使用すべき装置にセットするために、当該装置が情報処理装置にどのように接続されているかを確認する必要がある。
【０００３】
また、例えばユーザが情報処理装置のディスプレイ上の操作によって、デバイスドライバと、接続された各装置とを関連付けるために、使用すべき装置が情報処理装置のどのポートに接続されているかを確認する必要がある。
【０００４】
このため、従来、１つのポートに1台の装置が接続されるセントロニクスインタフェース等のパラレルインタフェースを介してスキャナ装置等が接続されている場合には、インタフェースの各ポートと該ポートに接続されている装置とを関連付けたポート接続情報（例えば、「スキャナ装置AがLPTポート1に接続されている」と云う表示）を情報処理装置のディスプレイ上に表示することによって、ユーザは、使用すべき装置がどれであるか、当該装置が情報処理装置のどのポートに接続されているのかを容易に確認することが可能であった。
【０００５】
【発明が解決しようとする課題】
しかしながら、情報処理装置がUSBポート等のカスケード（直列）接続、あるいはスター接続可能なインタフェースを有し、当該インタフェースに複数のスキャナ装置等が接続されたシステムでは、従来、上述したポート接続情報だけでは、各装置が情報処理装置とどのように接続されているかを確認することができなかった。例えば、情報処理装置にポートが１つあり、このポートから計４台のプリンタ装置等が順次カスケード（直列）接続されている例においては、ユーザは各装置がどのような順番で情報処理装置に実際に直列接続されているのかを把握することができないと共に、使用すべき装置がどこにあるかを直ちに判別することができないという不都合があった。
【０００６】
本発明は、上記問題点を解決するためになされたもので、接続されている複数の装置の実際の接続状態を容易に確認することができると共に、使用すべき装置の所在を直ちに把握することができる情報処理装置、接続状態表示方法、情報処理システム及び記憶媒体を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するために本発明のホストコンピュータは、
接続情報に基づき装置の接続状況を表示するホストコンピュータであって、
各装置の接続情報の文字列の長さを調べ短い順にソートするソート手段と、
接続情報の文字列の長さが一番短い装置がホストコンピュータのハブに接続されていると判定し、接続情報の文字列の長さが一番短い装置がホストコンピュータの何番目のハブに接続されているか判別する判別手段と、
次に接続情報の文字列の長さが短い装置が前記判別手段により判別されたホストコンピュータのハブに接続されている場合、前記判別手段により判別されたホストコンピュータのハブに接続されている装置のハブに接続されていると判定する判定手段とを有することを特徴とする。
【０００９】
【発明の実施の形態】
図１は、本発明による、シリアルプリンタのキャリッジ上に着脱自在なスキャナ／プリンタカートリッジを載せることによって原稿印刷機能／原稿画像読み取り機能を備えた小型、低価格なプリンタ／スキャナ装置を複数台ホストコンピュータに接続した情報処理システムの実施の形態の特徴を表す外観図である。同図において、１０１はノート型ホストコンピュータ（情報処理装置）、１０２はプリンタ／スキャナ装置Ａ、１０３はプリンタ／スキャナ装置Ｂ、１０４はプリンタ／スキャナ装置Ｃ、１０５はプリンタ／スキャナ装置Ｄである。
【００１０】
ノート型ホストコンピュータ１０１は接続数２のUSBハブを持ち、各プリンタ／スキャナ装置１０２，１０３，１０４，１０５は、接続数１のUSBハブを持っている。
【００１１】
システムを構成する各機器は、USB（ユニバーサル・シリアル・バス）ケーブルにより接続されており、ホストコンピュータ１０１、プリンタ／スキャナ装置Ａ１０２の順、およびホストコンピュータ１０１、プリンタス／キャナ装置Ｂ１０３、プリンタ／スキャナ装置Ｃ１０４、プリンタ／スキャナ装置Ｄ１０５の順で、それぞれカスケード（直列）接続されている。
【００１２】
上記のような接続行った場合、ホストコンピュータ１０１からみてプリンタ／スキャナ装置Ａ１０２はUSBPRN01ポートに、プリンタ／スキャナ装置Ｂ１０３はUSBPRN02ポートに、はプリンタ／スキャナ装置Ｃ１０４はUSBPRN03ポートにプリンタ／スキャナ装置Ｄ１０５はUSBPRN04ポートに接続されているように見える。
【００１３】
本実施の形態では、プリンタ／スキャナ装置を単純にカスケード（直列）接続しているが、複数台接続可能なハブを接続すればスター接続を追加することも可能である。
【００１４】
図２は、本実施の形態におけるノート型ホストコンピュータ１０１の背面図であり、同図において、２０１はUSBコネクタ部、２０２はUSBコネクタ部の拡大図である。２０３はUSBコネクタ１、２０４はUSBコネクタ２であり、ホストコンピュータは計２個のUSBインタフェースコネクタを備えている。
【００１５】
図３は、本実施の形態における各プリンタ／スキャナ装置１０２，１０３，１０４，１０５共通の背面図であり、同図において、３０１はUSBコネクタ部、３０２はUSBコネクタ部の拡大図である。また、３０３はUSBコネクタ３、３０４はUSBコネクタ４であり、プリンタ／スキャナ装置は計２個のUSB I/Fコネクタを備えている。
【００１６】
図４は、本実施の形態におけるUSBケーブルの概観図である。
【００１７】
図４のUSBケーブルによって、ホストコンピュータ１０１背面のUSBコネクタ１とプリンタ／スキャナ装置Ａ１０２背面のUSBコネクタ４、ホストコンピュータ１０１背面のUSBコネクタ２とプリンタ／スキャナ装置Ｂ１０３のコネクタ４、プリンタ／スキャナ装置Ｂ１０３背面のUSBコネクタ３とプリンタ／スキャナ装置Ｃ１０４背面のUSBコネクタ４、プリンタ／スキャナ装置Ｃ１０４背面のUSBコネクタ３とプリンタ／スキャナ装置Ｄ１０５背面のUSBコネクタ４がそれぞれ接続されている。
【００１８】
すなわち、プリンタ／スキャナ装置Ａ１０２およびプリンタ／スキャナ装置Ｂ１０３はノート型ホストコンピュータ１０１のハブに、プリンタ／スキャナ装置Ｃ１０４はプリンタ／スキャナ装置Ｂ１０３のハブに、プリンタ／スキャナ装置Ｄ１０５はプリンタ／スキャナ装置Ｃ１０４のハブにそれぞれ接続されていることになる。
【００１９】
図５は、本実施の形態におけるノート型ホストコンピュータ１０１の内部構成を示すブロック図である。駆動源として、ＡＣアダプタ（定格電圧２０〔Ｖ〕，５４〔Ｗ〕）５０１と ニッケル水素２次電池（定格電圧１２〔Ｖ〕，２７００〔ｍＡ／ｈ〕）５０２が有る。内蔵している機能としては、電源ユニット５０３、Power Management IC５０４、 CPU５０５、 BIOS５０６、 LCD５０７、ビデオコントローラ(VGAC)５０８、ビデオメモリ(VRAM)５０９、ハード・ディスク・ドライブ(HDD)５１０、ハード・ディスク・コントローラ(HDC)５１１、DMAコントローラ(DMAC)５１２、ポート(PORT)５１３、浮動小数点プロセッサー(FPU)５１４、リアルタイムクロック(RTC)５１５、キーボードコントローラ(KBC)５１６、キーボード５１７、システムメインメモリ５１８、フロッピー・ディスク・コントローラ(FDC)５１９、フロッピー・ディスク・ドライブ(FDD)５２０、割り込みコントローラ(IRQC)５２１、シリアルインタフェース(SIO)５２２などが有る。USB I/Fはポート５１３に内包されているUSBポートを介して提供される。
【００２０】
図６は、本実施の形態におけるプリンタ／スキャナ装置の内部構成を示すブロック図である。同図において、６０１は電源スイッチ、レジュームスイッチ、パワー表示用LED、およびエラー表示用LEDスイッチにより構成されるパネルユニット、６０２は電源ユニット、６０３はプリンタコントローラ、６０４はシステムメモリ（ROM）、６０５はマルチプロセッサーユニット（MPU）、６０６はCRモータ（キャリッジ用モータ）およびLFモータ（ラインフィード用モータ）により構成されるモータコントロールユニット、６０７はプリンタヘッド、６０８はUSBインタフェースコントローラ、６０９はUSBコネクタ、６１０はUSB用マルチプロセッサーユニット(MPU)である。
【００２１】
図７は、本実施の形態におけるプリンタ／スキャナ装置のフロントカバーを開けた状態の斜視図である。同図において、７０１はフロントカバーである。７０２はカートリッジ交換スイッチ、７０３はカートリッジホルダである。カートリッジ交換スイッチはトグルスイッチになっている。カートリッジ交換スイッチ７０２を押下するとカートリッジホルダ７０３が左右に移動する。
【００２２】
初期状態においてカートリッジホルダ７０３は、正面から見てプリンタ右端に位置している。その後、カートリッジ交換スイッチ７０２を押下するとカートリッジホルダ７０３はプリンタ中心部に移動しカートリッジ交換が可能となる。更にカートリッジ交換スイッチ７０２を押下するとカートリッジホルダ７０３は再び正面から見てプリンタ右端に移動する。
【００２３】
図８は、本実施の形態におけるプリンタ／スキャナ装置において、カートリッジ取り外し時のフロントカバーを開けた状態の斜視図である。同図において、８０１はフロントカバーである。８０２はカートリッジ交換スイッチ、８０３はカートリッジホルダ、８０４はプリンタカートリッジである。
【００２４】
同図を用いてカートリッジの取り外し方法について説明する。
【００２５】
カートリッジを取り外すためには、まずカートリッジ交換スイッチ８０２を押下してカートリッジホルダ８０３をプリンタ中心部に移動しカートリッジ交換が可能な状態とする。次にカートリッジホルダ８０３に付随しているカートリッジ着脱レバーを操作しカートリッジ８０４を着脱可能な状態にする。最後にカートリッジ８０４をカートリッジホルダ８０３から手動で取り外す。カートリッジ取り外しが終了するとプリンタは使用不可能状態となる。
【００２６】
図９は、本実施の形態におけるプリンタ／スキャナ装置において、カートリッジ取り付け時のフロントカバーを開けた状態の斜視図である。同図において、９０１はフロントカバー、９０２はカートリッジ交換スイッチである。９０３はカートリッジホルダ部の拡大図であり、９０４はカートリッジホルダ、９０５はカートリッジ着脱レバー、９０６はプリンタカートリッジである。
【００２７】
同図を用いてカートリッジの取り付け方法について説明する。
【００２８】
カートリッジを取り付けるためには、まずカートリッジ９０６をカートリッジホルダ９０４に手動で取り付ける。次にカートリッジホルダ９０４に付随しているカートリッジ着脱レバー９０５を操作しカートリッジ９０６をカートリッジホルダ９０４に固定する。最後にカートリッジ交換スイッチ９０２を押下しカートリッジホルダ９０４を正面から見てプリンタ右端に移動する。カートリッジ取り付けが終了するとプリンタは使用可能状態となる。
【００２９】
図１０は、本発明におけるプリンタ／スキャナ装置に装着可能なスキャナーカートリッジの外観図である。同図において、１００１はスキャナカートリッジの筐体、１００２はカートリッジホルダ装着時に電気的接触をはかるための内部Ｉ／Ｆであるところのコネクター部、１００３は原稿照明用の光源である３色（赤、緑、青）LED（発光ダイオード）の発光部、１００４は原稿からの反射光を受光する受光部である。原稿からの反射光は光電変換素子（Basisセンサ）により画像データに変換される。
【００３０】
画像のスキャンに用いられるスキャナカートリッジ１００１とプリントに用いられるプリンタカートリッジは同形状をしており、プリンタ／スキャナ装置に着脱可能となっている。また、プリンタカートリッジには、モノクロプリンタカートリッジ（１種類）、カラープリンタカートリッジ（４種類）、の計５種類がある。
【００３１】
次に、上記構成のホストコンピュータ１０１にプリンタ／スキャナ装置を複数台接続した情報処理装置の制御方法について説明する。
【００３２】
図１１は、上記構成のホストコンピュータにプリンタ／スキャナ装置を複数台接続した情報処理装置において各プリンタ／スキャナ装置１０２，１０３，１０４，１０５を制御するソフトウェアの構成ブロック図である。
【００３３】
同図において、１１０１はUSBコピーユーティリティであり、特定のプリンタ／スキャナ装置から読み取った画像データを特定のプリンタ／スキャナ装置へプリントする機能を持ったアプリケーションソフトウェアである。USBコピーユーティリティ１１０１は、専用APIによりUSBプリンタマネージャ１１０２からプリンタ／スキャナ装置の情報を取得することができる。
【００３４】
１１０２はUSBプリンタマネージャであり、各プリンタ／スキャナ装置のステータスを監視し、他のソフトウェアプログラムにプリンタ／スキャナ装置の情報を通知する機能、プリンタ／スキャナ装置のステータス変化に応じてコピーユーティリティ１１０１を自動起動する機能などを持った監視制御ソフトウェアである。
【００３５】
１１０３はスキャナドライバ（IS Scan USB）であり、特定のプリンタ／スキャナ装置を制御して原稿をスキャンさせ画像データを読み取る機能、該読み取った画像データを特定のアプリケーションソフトウェアに転送する機能をもったデバイスドライバソフトウェアである。スキャナドライバ１１０３は専用APIによりUSBプリンタマネージャ１１０２からプリンタ／スキャナ装置の情報を取得することができる。
【００３６】
１１０４はプリンタドライバであり、特定のプリンタ／スキャナ装置を制御して特定のアプリケーションソフトウェアが生成した画像データをプリント（印刷）する機能を持ったデバイスドライバソフトウェアである。システムに存在するすべてのプリンタ／スキャナ装置を使用してプリント（印刷）を実行するために、プリンタドライバ１１０４は接続されているプリンタ／スキャナ装置１台に対し１つずつ関連付けて登録されていなければならない（図２０参照）。
【００３７】
プリンタドライバ１１０４は、専用APIによるUSBプリンタマネージャ１１０２からプリンタ／スキャナ装置の情報を取得することができる。
【００３８】
１１０５はUSBポートモニターであり、USBプリンタマネージャ１１０２、スキャナドライバ１１０３、およびプリンタドライバ１１０４が、プリンタ／スキャナ装置を制御するために使用するアプリケーション・プログラミング・インタフェース(API)を提供している。
【００３９】
APIとして、特定のUSBポートのオープン命令、特定のUSBポートのクローズ命令、特定のUSBポートへのデータ書き込み命令、特定のUSBポートからのデータ読み込み命令などのUSBポート制御命令が用意されている。
【００４０】
USBプリンタマネージャ１１０２、スキャナドライバ１１０３、およびプリンタドライバ１１０４がAPIをコールすると、USBポートモニタ１１０５はコールされたAPIの命令を解釈した後、APIの命令を変換して、後述するUSBポートドライバ１１０６に引き渡す。
【００４１】
１１０６はUSBポートドライバであり、USBポートモニタ１１０５から受け取った制御命令を解釈した後、さらに命令を変換して後述するOS USBドライバスタック１１０７に引き渡す。
【００４２】
１１０７は、オペレーティング・システム・USBドライバ・スタック（OS USBドライバスタック）であり、USBポートドライバ１１０６から受け取った制御命令に応じて、ホストコンピュータ１０１のUSBポートを直接制御しUSBプリンタ／スキャナ装置１１０８とデータの送受信を行う。
【００４３】
上記各ソフトウェアプログラムはホストコンピュータ１０１のシステムメインメモリ５１８に展開されCPU５０５により実行処理される。
【００４４】
図１２は図１のように接続された情報処理装置においてUSBプリンタマネージャ１１０２が表示するユーザーインタフェースのメイン画面である。
【００４５】
同図において、１２０１は終了ボタンであり、本ボタンを押下すればUSBプリンタマネージャ１１０２が終了する。１２０２はヘルプボタンで本ボタンを押下するとヘルプ情報が表示される。
【００４６】
１２０３はUSB接続状況表示部であり、プリンタ／スキャナ装置のUSB接続状況が俯瞰図で表示される。１２０４はノズルチェックパターン印刷ボタンであり、本ボタンを押下した時USB接続状況表示部１２０３で選択状態にあるプリンタ／スキャナ装置にノズルチェックパターン印刷開始命令を発行する。１２０５はデモパターン印刷ボタンであり、本ボタンを押下した時USB接続状況表示部１２０３で選択状態にあるプリンタ／スキャナ装置にデモパターン印刷開始命令を発行する。１２０６はクリーニングボタンであり、本ボタンを押下した時USB接続状況表示部１２０３で選択状態にあるプリンタ／スキャナ装置にクリーニング開始命令を発行する。１２０７はカートリッジ交換ボタンであり、本ボタンを押下した時USB接続状況表示部１２０３で選択状態にあるプリンタ／スキャナ装置にカートリッジ交換開始命令を発行する。１２０８はメッセージ通知チェックボックスである。１２０９はポートの選択ボックスで本ボックスに操作することによりUSB接続状況表示部１２０３で選択状態にあるプリンタ／スキャナ装置を変更することができる。１２１０はOKボタンであり、本ボタンを押下するとUSBプリンタマネージャ１１０２の表示部が縮小化する。
【００４７】
図１３はUSB接続状況表示部１２０３の詳細説明図である。同図において、１３０１はUSBポートに接続されているプリンタ／スキャナ装置の状態を表すビットマップである。１３０２はUSBポートに接続されているプリンタ／スキャナ装置の状態を表記したテキストである。１３０３は簡易制御機能ポップアップメニューであり、接続状況表示部内でホストコンピュータに接続されているマウスで右ボタンクリックすると表示される。
【００４８】
１３０４はスクロールバーであり、操作することによりUSB接続状況表示部の表示画面を左右に移動することができる。１３０５は図１中プリンタ／スキャナ装置Ａ１０２の状態表示部である。１３０６は図１中プリンタ／スキャナ装置Ｂ１０３の状態表示部である。１３０７は図１中プリンタ／スキャナ装置Ｃ１０４の状態表示部である。１３０８は図１中プリンタ／スキャナ装置Ｄ１０５の状態表示部である。
【００４９】
図１４はホストコンピュータ１０１に２台のプリンタ／スキャナ装置が接続された状態でUSBプリンタマネージャ１１０２のタイトルバーをホストコンピュータ１０１に接続されているマウスで右ボタンクリックした時の表示画面である。同図において１４０１はタイトルバーである。１４０２はシステムメニューである。
【００５０】
図１５はホストコンピュータ１０１に2台のプリンタ／スキャナ装置が接続された状態でUSBコピーユティリティ１１０１およびスキャナドライバ１１０３がスキャンに使用可能なスキャナ／プリンタ装置選択命令をUSBプリンタマネージャ１１０２に発行した際の表示画面ある。同図において１５０１はスキャンに使用するスキャナ／プリンタ装置選択要求メッセージウィンドウ、１５０２はスキャンに使用可能なプリンタ／スキャナ装置Ａ１０２、１５０３はスキャンに使用可能なプリンタ／スキャナ装置Ｂ１０４である。
【００５１】
図１６は図１のように接続された情報処理システムにおいてホストコンピュータ１０１に保存されているプリンタ／スキャナ装置の接続情報である。
【００５２】
図３５を用いてＯＳによるシステム設定情報データベース（レジストリ）を作成する処理を説明する。
【００５３】
まずＳ３５０１でユーザがホストコンピュータにプリンタ／スキャナ装置を接続する。
【００５４】
次にＳ３５０２に進み、これ以降はＯＳ付属のソフトウェア（ＯＳ  ＵＳＢ  Ｄｒｉｖｅｒ  Ｓｔａｃｋ（１１０７））の処理になり、Ｓ３５０１での装置の接続を検知する。
【００５５】
次にＳ３５０３に進み、ＯＳ付属ソフトウェアがレジストリを検索して検知された装置の接続情報が既に登録されているか調べる。
【００５６】
次に、Ｓ３５０４に進み、接続情報がレジストリに登録されているか否かを判別する。
【００５７】
Ｓ３５０４で登録されていないと判別された場合、Ｓ３５０５に進みＯＳ付属のソフトウェアが検知された装置の接続情報をレジストリに登録し、終了する。
【００５８】
Ｓ３５０４で登録されていると判別された場合、終了する。
【００５９】
本接続情報は、オペレーティングシステム（ＯＳ）により作成され、ＯＳが提供するシステム設定情報データベース（レジストリ）に保存されている。同図において１６０１はホストコンピュータ１０１の持っているUSBハブの接続情報である。１６０２はプリンタ／スキャナ装置Ａ１０２の持っているハブの接続情報である。１６０３はプリンタ／スキャナ装置Ｄ１０５の持っているハブの接続情報である。１６０４はプリンタ／スキャナ装置Ｃ１０４の持っているハブの接続情報である。１６０５はプリンタ／スキャナ装置Ｂ１０３の持っているハブの接続情報である。１６０６はプリンタ／スキャナ装置Ａ１０２の接続情報である。１６０７はプリンタ／スキャナ装置Ｄ１０５の接続情報である。１６０８はプリンタ／スキャナ装置Ｃ１０４の接続情報である。１６０９はプリンタ／スキャナ装置Ｂ１０３の接続情報である。プリンタ／スキャナ装置の接続状況によって接続情報は変化する。
【００６０】
また、特定のプリンタ／スキャナ装置の接続情報には、必ずそのプリンタ／スキャナ装置が接続されているハブの接続情報が含まれる。
【００６１】
例えば、プリンタ／スキャナ装置Ａ１０２の接続情報１６０６"4USB&VID_04A9&PID_1000&1USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"にはプリンタ／スキャナ装置Ａ１０２が接続されているホストコンピュータのUSBハブの接続情報"PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"が含まれている。
【００６２】
そして、プリンタ／スキャナ装置Ａ１０２の接続情報１６０６の"4USB&VID_04A9&PID_1000&1USB&ROOT_HUB&PCI・・・・"に含まれる文字列"1USB"は、プリンタ／スキャナ装置Ａ１０２がホストコンピュータ１０１に備えられている２つのUSBハブのうちUSBハブ１に接続されていることを表す。
【００６３】
図１７は図１のように接続された情報処理システムにおいて図１６中プリンタ／スキャナ装置Ａ１０２の接続情報１６０２に関連付けられたプリンタ／スキャナ装置Ａ１０２の詳細情報である。
【００６４】
本詳細情報は、ファイル形式でホストコンピュータに保存されている。同図において１７０１はプリンタ／スキャナ装置Ａ１０２に関連付けられたデバイスドライバ登録情報である。本実施の形態では、プリンタ／スキャナ装置Ａ１０２に関連付けられたデバイスドライバは"USB\0003"となっている。１７０２は、プリンタ／スキャナ装置Ａ１０２のステータス情報である。プリンタ／スキャナ装置Ａ１０２がUSB I/Fで正常に接続されている場合は、この値が"0x00000001"に設定される。一方、プリンタ／スキャナ装置Ａ１０２がUSB I/Fで正常に接続されていない場合は、この値が"0x00000000"に設定される。
【００６５】
本実施の形態では、プリンタ／スキャナ装置Ａ１０２の接続情報に関連付けられたプリンタ／スキャナ装置Ａ１０２の詳細情報についてのみ説明するが、システムには、プリンタ／スキャナ装置Ｂ１０３、プリンタ／スキャナ装置Ｃ１０４、プリンタ／スキャナ装置Ｄ１０５の接続情報に関連付けられた各プリンタ／スキャナ装置の詳細情報も同様の形式で存在する。
【００６６】
図１８は図１のように接続された情報処理システムにおいて図１７のプリンタ／スキャナ装置Ａ１０２の詳細情報に関連付けられたプリンタ／スキャナ装置Ａ１０２のポート接続情報である。
【００６７】
本ポート接続情報は、ファイル形式でホストコンピュータに保存されている。同図において１８０１はプリンタ／スキャナ装置Ａ１０２に関連付けられたデバイスドライバ登録情報である。本実施の形態では、プリンタ／スキャナ装置Ａ１０２に関連付けられたデバイスドライバは"USB\0003"となっている。この登録情報はプリンタ／スキャナ装置Ａ１０２に関連付けられたデバイスドライバ登録情報１７０１と同一である。
【００６８】
１８０２は、プリンタ／スキャナ装置Ａ１０２の接続ポート情報である。本実施例では、プリンタ／スキャナ装置Ａ１０２の接続ポートは"USBPRN01"となっている。
【００６９】
本実施の形態では、プリンタ／スキャナ装置Ａ１０２の接続情報に関連付けられたプリンタ／スキャナ装置Ａ１０２のポート接続情報についてのみ説明するが、システムには、プリンタ／スキャナ装置Ｂ１０３、プリンタ／スキャナ装置Ｃ１０４、プリンタ／スキャナ装置Ｄ１０５の接続情報に関連付けられた各プリンタ／スキャナ装置の詳細情報も同様の形式で存在する。
【００７０】
図１９は図１のように接続された情報処理システムにおいてプリンタ／スキャナ装置Ａ１０２に関連付けて登録されているプリンタドライバの詳細情報である。この情報はプリンタ／スキャナ装置Ａ１０２のポート接続情報に関連付けられている。
【００７１】
本詳細情報は、プリンタ／スキャナ装置に関連づけてプリンタドライバ１１０４が登録されている場合にのみ、ファイル形式でホストコンピュータ１０１に保存されている。
【００７２】
同図において１９０１はプリンタ／スキャナ装置Ａ１０２の接続ポート情報である。この情報はプリンタ／スキャナ装置Ａ１０２の接続ポート情報１８０２と同一である。１９０２はプリンタ／スキャナ装置Ａ１０２に関連付けられて登録されているプリンタドライバのフレンドリーネームである。本実施の形態では、プリンタ／スキャナ装置Ａ１０２に関連付けて登録されているプリンタドライバのフレンドリーネームは" BJC-430J USB"となっている。
【００７３】
本実施の形態では、プリンタ／スキャナ装置Ａ１０２に関連付けて登録されているプリンタドライバの詳細情報についてのみ説明するが、システムには、プリンタ／スキャナ装置Ｂ１０３、プリンタ／スキャナ装置Ｃ１０４、プリンタ／スキャナ装置Ｄ１０５の接続情報に関連付けられた、プリンタドライバの詳細情報も同様の形式で存在する。
【００７４】
図２０は図１のように接続された情報処理システムにおいてホストコンピュータ１０１に保存されているプリンタドライバ１１０４の登録情報である。
【００７５】
本登録情報は、プリンタ／スキャナ装置に関連づけてプリンタドライバが登録されている場合にのみ、ファイル形式でホストコンピュータ１０１に保存されている。同図において２００１はプリンタ／スキャナ装置Ａ１０２に関連付けて登録されたプリンタドライバＡ１１０４の登録情報であり、文字列"BJC-430J USB"は、プリンタドライバＡ１１０４を識別するプリンタフレンドリーネームである。本情報は、図１９のプリンタドライバ詳細情報と関連付けられている。
【００７６】
２００２はプリンタ／スキャナ装置Ｂ１０３に関連付けて登録されたプリンタドライバＢ１１０４の登録情報であり、文字列"BJC-430J USB (コピー2)"は、プリンタドライバＢ１１０４を識別するプリンタフレンドリーネームである。２００３はプリンタ／スキャナ装置Ｃ１１０４に関連付けて登録されたプリンタドライバＣ１１０４の登録情報であり、文字列"BJC-430J USB (コピー3)"は、プリンタドライバＣ１１０４を識別するプリンタフレンドリーネームである。２００４はプリンタ／スキャナ装置Ｄ１０５に関連付けて登録されたプリンタドライバＤ１１０４の登録情報であり、文字列"BJC-430J USB (コピー4)"は、プリンタドライバＤ１１０４を識別するプリンタフレンドリーネームである。
【００７７】
登録情報には、１台のプリンタ／スキャナ装置に対し１個のプリンタドライバが関連付けられて登録されている。各プリンタドライバを識別するプリンタフレンドリーネームは、文字列を書き換えることによりユーザーが変更可能である。
【００７８】
図２１は USB接続状況表示部１２０３で表示されるビットマップの一覧である。ビットマップは、全１２種類、選択時と非選択時の２セットで計２４個用意されている。選択時と非選択時のビットマップの違いは背景色が異なることである。
【００７９】
同図において、２１０１はホストコンピュータ１０１を表すビットマップであり、２１０２は使用可能状態でカラープリンタカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１０３は使用可能状態でモノクロプリンタカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１０４は使用可能状態でスキャナカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１０５は使用不可能状態で装着カートリッジ不明のプリンタ／スキャナ装置を表すビットマップであり、２１０６は使用不可能状態でカラープリンタカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１０７は使用不可能状態でモノクロプリンタカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１０８は使用不可能状態でスキャナカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１０９は情報取得不可能状態で装着カートリッジ不明のプリンタ／スキャナ装置を表すビットマップであり、２１１０は情報取得不可能状態でカラープリンタカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１１１は情報取得不可能状態でカラープリンタカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップであり、２１１２は情報取得不可能状態でスキャナカートリッジが装着されたプリンタ／スキャナ装置を表すビットマップである。
【００８０】
図２２はUSB接続状況表示部１２０３で表示されるテキストの一覧である。テキストは、"ポート名表記部（ドライバ情報表記部／カートリッジ情報表記部）"の構成で全８種類用意されている。ポート名表記部には、プリンタ／スキャナ装置が接続されているホストコンピュータのUSBポート名が記述される。ドライバ情報表記部には、プリンタ／スキャナ装置に関連付けられて登録されているデバイスドライバ情報が記述される。カートリッジ情報表記部には、プリンタ／スキャナ装置に装着されているカートリッジ情報が記述される。
【００８１】
同図において、２２０１はプリンタ／スキャナ装置が使用可能状態でかつプリンタドライバが関連付けられて登録されており、かつプリンタカートリッジが装着されている場合に表示されるテキストである。この時、ドライバ情報表記部には、プリンタドライバを識別するプリンタフレンドリーネームが記述され、カートリッジ情報表記部には印字（プリンタ）カートリッジ名が記述される。
【００８２】
２２０２はプリンタ／スキャナ装置が使用可能状態でかつスキャナドライバが登録されておりかつスキャナカートリッジが装着されている場合に表示されるテキストである。この時、ドライバ情報表記部には、スキャナドライバ名が記述され、カートリッジ情報表記部にはスキャナカートリッジ名が記述される。
【００８３】
２２０３はプリンタ／スキャナ装置が使用不可能状態で現状のデバイスドライバ情報およびカートリッジ情報を取得できず、かつ第１回目のシステム起動後、一度もデバイスドライバ情報、およびカートリッジ情報が取得できていない場合に表示されるテキストである。この時、ドライバ情報表記部には、"ドライバ不明"と記述され、カートリッジ情報表記部には"カートリッジ不明"と記述される。
【００８４】
２２０４はプリンタ／スキャナ装置が使用不可能状態で現状のデバイスドライバ情報およびカートリッジ情報を取得できないが、過去において、第１回目のシステム起動後、デバイスドライバ情報およびカートリッジ情報が取得できている場合に表示されるテキストである。この時、ドライバ情報表記部には、最近取得のデバイスドライバ名が記述され、カートリッジ情報表記部には最近取得のカートリッジ名が記述される。
【００８５】
２２０５はプリンタ／スキャナ装置が使用不可能状態でかつプリンタドライバが関連付けられて登録されていない場合でかつプリンタカートリッジが装着されている場合に表示されるテキストである。この時、ドライバ情報表記部には、"プリンタドライバなし"と記述され、カートリッジ情報表記部には印字（プリンタ）カートリッジ名が記述される。
【００８６】
２２０６はプリンタ／スキャナ装置が使用不可能状態で且つスキャナドライバが関連付けられて登録されていない場合でかつスキャナカートリッジが装着されている場合を表すテキストである。この時、ドライバ情報表記部には、"スキャナドライバなし"と記述され、カートリッジ情報表記部にはスキャナカートリッジ名が記述される。
【００８７】
２２０７はプリンタ／スキャナ装置が情報取得不可能状態でかつ第１回目のシステム起動後、一度もデバイスドライバ情報およびカートリッジ情報が取得できていない場合に表示されるテキストである。この時、ドライバ情報表記部には、最近取得のデバイスドライバ名が記述され、カートリッジ情報表記部には最近取得のカートリッジ名が記述される。
【００８８】
２２０８はプリンタ／スキャナ装置が情報取得不可能状態でかつ過去において第１回目のシステム起動後、デバイスドライバ情報およびカートリッジ情報が取得できている場合に表示されるテキストである。この時、ドライバ情報表記部には、最近取得のデバイスドライバ名が記述され、カートリッジ情報表記部には最近取得のカートリッジ名が記述される。
【００８９】
以下、本実施の形態おいて、USBプリンタマネージャ１１０２が接続されている複数台のプリンタ／スキャナ装置の情報を取得する処理の動作について、図２３、図２４、図２５、図２６、図２７、図２８、図２９を用いて説明する。
【００９０】
図２３は、本実施の形態のホストコンピュータ１０１に計４台のプリンタ／スキャナ装置１０２，１０３，１０４，１０５を接続した情報処理システムにおいて、各プリンタ／スキャナ装置の情報を保存するための情報保存構造体を表したものである。本情報保存構造体は、各プリンタ／スキャナ装置に１つずつ用意される。
【００９１】
同図において、２３０１はデバイスドライバエリアでデバイスドライバ情報を保存するための６４バイトの領域を持っている。この領域にデバイスドライバ情報が文字列で保存される。２３０２は接続ポート情報エリアで接続ポート情報を保存するための１６バイトの領域を持っている。この領域に接続ポート情報が文字列で保存される。２３０３は接続情報エリアで接続情報を保存するための２５６バイトの領域を持っている。この領域に接続情報が文字列で保存される。２３０４はカートリッジ情報エリアでカートリッジ情報を保存するための４バイトの領域を持っている。この領域にカートリッジ情報が０から６までの整数で保存される。各整数の意味は次のようになる。
【００９２】
０：カートリッジ未装着
１：モノクロプリンタカートリッジ
２：カラープリンタカートリッジ１
３：カラープリンタカートリッジ２
４：カラープリンタカートリッジ３
５：カラープリンタカートリッジ４
６：スキャナカートリッジ
【００９３】
２３０５はステータス情報エリアでステータス情報を保存するための４バイトの領域を持っている。この領域にステータス情報が０から３までの整数で保存される。各整数の意味は次のようになる。
【００９４】
０：使用不可能状態
１：使用可能状態
２：アクセス不可能状態
【００９５】
図２４、図２５、図２６、図２７、図２８、図２９は、本実施の形態のホストコンピュータ１０１に計４台のプリンタ／スキャナ１０２，１０３，１０４，１０５装置を接続した情報処理システムにおいて、USBプリンタマネージャ１１０２が各プリンタ／スキャナ装置の情報を取得し図２３の構造体に情報を保存する処理の手順を示したフローチャートである。
【００９６】
まず、ステップＳ２４０１でプログラムはホストコンピュータ１０１に保存されているプリンタ／スキャナ装置の接続情報（図１６）を読み込む。本実施の形態では、プリンタ／スキャナ装置Ｂ１０３の接続情報１６０６、プリンタ／スキャナ装置Ｃ１０４の接続情報１６０７、プリンタ／スキャナ装置Ｄ１０５の接続情報１６０８、およびプリンタ／スキャナ装置Ａ１０２の接続情報１６０９が読み込める。
【００９７】
次に、ステップＳ２４０２で、まだ情報を取得していないプリンタ／スキャナ装置があるか否かを判別する。すべてのプリンタ／スキャナ装置の情報を取得している場合、プログラムは終了する。一方、情報を取得していないプリンタ／スキャナ装置が存在している場合、ステップＳ２４０３に進む。ステップＳ２４０３からは、各プリンタ／スキャナ装置の情報取得処理が開始される。
【００９８】
ステップＳ２４０３では、各プリンタ／スキャナ装置の詳細情報を検索し、ステータス情報を読み込む。プリンタ／スキャナ装置Ａ１０２の情報取得処理では図１７のプリンタ／スキャナ装置Ａ１０２の詳細情報を検索し、ステータス情報１７０２を読み込む。
【００９９】
次に、ステップＳ２４０４で読み込んだステータス情報の値を調べプリンタ／スキャナ装置がUSB I/Fで正常に接続されているか否かを判別する。ステータス情報が"0x00000001"に設定されている場合は正常に接続されていると判断してステップＳ２４０５に進む。一方、"0x00000000"に設定されている場合は正常に接続されていないと判断し処理をステップＳ２４０２に戻り、次のプリンタ／スキャナ装置を調べる。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、プリンタ／スキャナ装置Ａ１０２のステータス情報は"0x00000001"であるから、ステップＳ２４０５に進む。
【０１００】
ステップＳ２４０５では、図１７のプリンタ／スキャナ装置Ａ１０２の詳細情報に含まれているデバイスドライバ登録情報１７０１を読み込む。今デバイスドライバ登録情報は"USB\0003"になっている。
【０１０１】
次に、ステップＳ２４０６で、読み込んだデバイスドライバ登録情報を用いて関連付けられているポート接続情報を検索し接続ポート情報を読み込む。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、デバイスドライバ登録情報 "USB\0003"を用いて検索すると図１８のプリンタ／スキャナ装置Ａ１０２のポート接続情報が検索され、接続ポート情報１８０２である"USBPNR01"を読み込む。
【０１０２】
次に、ステップＳ２４０７でプリンタ／スキャナ装置の接続情報と関連付けて接続ポート情報を保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、接続情報"4USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI&VEN_8086&DEV_7072&BUS_00&DEV_07&FUNC_02"を図２３に示す構造体の接続情報エリア２３０３に、プリンタ／スキャナ装置Ａ１０２の接続情報"USBPRN01"を図２３に示す構造体の接続ポート情報エリア２３０２に、それぞれ保存する。
【０１０３】
次に、処理２のステップＳ２５０１に進み、プリンタ／スキャナ装置にアクセスするために接続ポートをオープンする。ポートオープン処理では、接続ポート情報をパラメータとして、ポートオープン命令APIを呼び出すことにより実行される。プリンタ／スキャナ装置の情報取得処理では接続ポート"USBPRNA"をパラメータとしてAPIを呼び出す。
【０１０４】
次に、ステップＳ２５０２で接続ポートが正常にオープンできたか否か、すなわち、ポートオープン命令APIの実行結果を調べる。ここでポートのオープンに失敗した場合、プリンタ／スキャナ装置が他のソフトウェアプログラムにより使用中であると判断し、ステップＳ２５０３に進む。ステップＳ２５０３では、プリンタ／スキャナ装置の接続情報と関連付けてアクセス不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数２（アクセス不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１０５】
一方、ステップＳ２５０２でポートのオープンにできた場合、ステップＳ２５０４に進みプリンタ／スキャナ装置に対しデバイスID取得コマンドを発行する。デバイスIDコマンド発行処理は、デバイスID取得コマンドをパラメータとして、ポートへのデータ書き込みAPIを呼び出すことにより実行される。
【０１０６】
次に、ステップＳ２５０５に進みデバイスID取得コマンドが正常に発行できたか調べる。ここでコマンド発行に失敗した場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２５０８に進む。ステップＳ２５０８では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報２３０５エリアに整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１０７】
一方、ステップＳ２５１０でコマンド発行に成功した場合、ステップＳ２５０６に進みプリンタ／スキャナ装置からデバイスIDを取得する。正常動作をしている限り、プリンタ／スキャナ装置はステップＳ２５０４で発行したデバイスID取得コマンドを受け取るとすぐに自分自身のデバイスIDを準備するので、この情報を読み出す。デバイスID取得処理はポートからのデータ読み込みAPIを使用して行われる。
【０１０８】
次に、ステップＳ２５０７に進み、デバイスIDが正常に取得できたか否かを判別する。ここでデバイスIDの取得に失敗した場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２５０８に進む。ステップＳ２５０８では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１０９】
一方、ステップＳ２５０７でデバイスIDの取得に成功した場合、ステップＳ２５０９に進み、プリンタ／スキャナ装置に対しステータス取得コマンドを発行する。ステータス取得コマンド発行処理は、ステータス取得コマンドをパラメータとして、ポートへのデータ書き込みAPIを呼び出すことにより実行される。
【０１１０】
次に、ステップＳ２５１０に進みステータス取得コマンドが正常に発行できたか調べる。ここでコマンド発行に失敗した場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２５０８に進む。ステップＳ２５０８では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１１１】
一方、ステップＳ２５０１で、コマンド発行に成功した場合、処理３ステップＳ２６０１に進む。ステップＳ２６０１では、プリンタ／スキャナ装置からステータス情報を取得する。正常動作をしている限り、プリンタ／スキャナ装置はステップＳ２５０９で発行したステータス取得コマンドを受け取るとすぐに自分自身のステータス情報を準備するので、この情報を読み出す。ステータス取得処理はポートからのデータ読み込みAPIを使用して行われる。
【０１１２】
次に、ステップＳ２６０２に進み、ステータス情報が正常に取得できたか否かを判別する。ここで、ステータス情報の取得に失敗した場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２６０３に進む。ステップＳ２６０３では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１１３】
一方、ステップＳ２６０２でステータス情報の取得に成功した場合、ステップＳ２６０４に進む。ステップＳ２６０４では、取得したステータス情報が使用可能ステータスか否かを判別する。取得したステータス情報が使用可能ステータスでなかった場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２６０３に進む。ステップＳ２６０３では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１１４】
一方、ステップＳ２６０４で取得したステータス情報が使用可能ステータスだった場合、プリンタ／スキャナ装置は使用可能状態にあると判断し、ステップＳ２６０５に進みプリンタ／スキャナ装置に対しカートリッジ情報取得コマンドを発行する。カートリッジ情報取得コマンド発行処理は、カートリッジ情報取得コマンドをパラメータとして、ポートへのデータ書き込みAPIを呼び出すことにより実行される。
【０１１５】
次に、ステップＳ２６０６に進み、カートリッジ情報取得コマンドが正常に発行できたか否かを判別する。ここでコマンド発行に失敗した場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２６０３に進む。
【０１１６】
ステップＳ２６０３では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１１７】
一方、ステップＳ２６０６でコマンド発行に成功した場合、ステップＳ２６０７に進み、プリンタ／スキャナ装置からカートリッジ情報を取得する。正常動作をしている限り、プリンタ／スキャナ装置はステップＳ２６０５で発行したカートリッジ情報取得コマンドを受け取るとすぐに自分自身に装着されているカートリッジ情報を準備するので、この情報を読み出す。カートリッジ情報取得処理はポートからのデータ読み込みAPIを使用して行われる。
【０１１８】
次に、ステップＳ２６０８に進みカートリッジ情報が正常に取得できたか否かを判別する。ここで、カートリッジ情報の取得に失敗した場合、プリンタ／スキャナ装置が何らかの要因で使用不可能状態にあると判断し、ステップＳ２６０３に進む。ステップＳ２６０３では、プリンタ／スキャナ装置の接続情報と関連付けて使用不可能状態ステータスを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のステータス情報エリア２３０５に整数０（使用不可能状態）を保存する。その後、処理７のステップＳ２９０１に進む。
【０１１９】
一方、ステップＳ２６０８でカートリッジ情報の取得に成功した場合、処理４のステップＳ２７０１に進む。ステップＳ２７０１では、取得したカートリッジ情報が"スキャナカートリッジ"であるか調べる。ここでカートリッジ情報が"スキャナカートリッジ"でない場合、処理６のステップＳ２８０１に進む。一方、取得したカートリッジ情報が"スキャナカートリッジ"である場合、ステップＳ２７０２に進む。
【０１２０】
ステップＳ２７０２では、プリンタ／スキャナ装置の接続情報と関連付けてスキャナカートリッジ情報を保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のカートリッジ情報エリア２３０４に整数６（スキャナカートリッジ）を保存する。その後、ステップ２７０３に進む。
【０１２１】
ステップＳ２７０３では、システムのホストコンピュータ１０１にスキャナドライバが存在するか否かを判別する。スキャナドライバ１１０３の存在チェック処理は、スキャナドライバ１１０３のメイン実行ファイルがホストコンピュータ１０１のハードディスクドライバ上に存在するかサーチして行う。
【０１２２】
次に、ステップＳ２７０４でスキャナドライバ１１０３のメイン実行ファイルが存在した場合、スキャナドライバは存在していると判断し、処理６のステップＳ２８０１に進む。一方、スキャナドライバ１１０３のメイン実行ファイルが存在しなかった場合、スキャナドライバ１１０３は存在していないと判断してステップＳ２７０５に進む。
【０１２３】
ステップＳ２７０５では、プリンタ／スキャナ装置の接続情報と関連付けてドライバ情報"スキャナドライバなし"を保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のデバイスドライバエリアに文字列"スキャナドライバなし"を保存する。この後、ステップＳ２４０２に戻り、次のプリンタ／スキャナ装置の情報取得処理を開始する。
【０１２４】
一方、ステップＳ２７０１およびステップＳ２７０４から処理６に進んだ場合、まず、ステップＳ２８０１でプリンタ／スキャナ装置の接続情報と関連付けてプリンタカートリッジ情報を保存する。保存するカートリッジ情報は、ステップＳ２６０９で取得したカートリッジ情報である。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のカートリッジ情報エリア２３０４に整数１，２，３，４，５のいずれかの値を保存する（保存する値は、プリンタ／スキャナ装置Ａ１０２に装着されているプリンタカートリッジの種類により変わる）。その後、ステップＳ２８０２に進む。
【０１２５】
ステップＳ２８０２ではステップＳ２４０６で読み込んだ接続ポート情報を用いてプリンタドライバ詳細情報を検索する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、ポート接続情報"USBPRN01"と用いて、図１９のプリンタドライバ詳細情報を検索する。
【０１２６】
次に、ステップＳ２８０３でプリンタドライバ詳細情報が存在するか否かを判別する。プリンタドライバ詳細情報の検索は、ポート接続情報を検索キーとしてホストコンピュータ１０１に保存されている情報ファイルを検索して行う。ここで、プリンタドライバ詳細情報が存在しなかった場合、システムには現在情報取得中のプリンタ／スキャナ装置に関連付けられて登録されている、プリンタドライバ１１０４が存在しないと判断し、ステップＳ２８０４に進む。
【０１２７】
ステップＳ２８０４では、プリンタ／スキャナ装置の接続情報と関連付けてドライバ情報"プリンタドライバなし"を保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のデバイスドライバエリア２３０１に文字列"プリンタドライバなし"を保存する。この後、ステップＳ２４０２に戻り、次のプリンタ／スキャナ装置の情報取得処理を開始する。
【０１２８】
一方、ステップＳ２８０３でプリンタドライバ詳細情報が存在する場合システムには、現在情報取得中のプリンタ／スキャナ装置に関連付けられて登録されている、プリンタドライバが存在する判断してステップＳ２８０５に進む。ステップＳ２８０５ではプリンタドライバ詳細情報に含まれるプリンタドライバ・フレンドリネームを読み込む。
【０１２９】
次に、ステップＳ２８０６で、プリンタ／スキャナ装置の接続情報と関連付けてプリンタドライバ・フレンドリネームを保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のデバイスドライバエリア２３０１に読み込んだプリンタドライバ・フレンドリネーム"BJC-430J USB"を文字列で保存する（ステップＳ２８０７）。次いで、ステップＳ２８０８で、プリンタ／スキャナ装置の接続情報と関連付けて使用可能状態ステータスを保存する（選択手段）。この後、ステップＳ２４０２に戻り、次のプリンタ／スキャナ装置の情報取得処理を開始する。
【０１３０】
以下に、ステップＳ２５０３，Ｓ２５０８，Ｓ２６０３から処理７に進んだ場合について説明する。まず、ステップＳ２９０１で前回の情報取得でプリンタ／スキャナ装置の接続情報と関連付けて保存しておいたドライバ情報を読み込む。そして、ステップＳ２９０２で前回の情報取得で保存しておいたドライバ情報にデータが存在するか否かを判別する。ドライバ情報にデータがなかった場合、ステップＳ２９０３に進み、プリンタ／スキャナ装置の接続情報と関連付けてドライバ情報"ドライバ不明"を文字列で保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のデバイスドライバエリア２３０１に文字列"ドライバ不明"を保存する。そして次にステップＳ２９０４に進み、プリンタ／スキャナ装置の接続情報と関連付けてカートリッジ未装着情報を整数で保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のカートリッジ情報エリア２３０４に整数０を保存する。この後、ステップＳ２４０２に戻り、次のプリンタ／スキャナ装置の情報取得処理を開始する。そして、システムに存在する、すべてのプリンタ／スキャナ装置の情報取得が終了するまで繰り返される。
【０１３１】
一方、ステップＳ２９０２でドライバ情報にデータがあった場合、ステップＳ２９０５に進み、前回の情報取得でプリンタ／スキャナ装置の接続情報と関連付けて保存しておいたカートリッジ情報を読み込む。
【０１３２】
そして、ステップＳ２９０６で前回の情報取得で保存しておいたカートリッジ情報にデータが存在するか否かを判別する。カートリッジ情報にデータがなかった場合、ステップＳ２９０３に進み、プリンタ／スキャナ装置の接続情報と関連付けてドライバ情報"ドライバ不明"を文字列で保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のデバイスドライバエリア２３０１に文字列"ドライバ不明"を保存する。次に、ステップＳ２９０４に進み、プリンタ／スキャナ装置の接続情報と関連付けてカートリッジ未装着情報を整数で保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のカートリッジ情報エリア２３０４に整数０を保存する。この後、ステップＳ２４０２に戻り、次のプリンタ／スキャナ装置の情報取得処理を開始する。そして、システムに存在する、すべてのプリンタ／スキャナ装置の情報取得が終了するまで繰り返される。
【０１３３】
一方、ステップＳ２９０６でカートリッジ情報にデータがあった場合、ステップＳ２９０７に進み、読み込んだ保存ドライバ情報をプリンタ／スキャナ装置の接続情報と関連付けて保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のデバイスドライバエリア２３０１に読み込んだドライバ情報を文字列で保存する。
【０１３４】
次に、ステップＳ２９０８に進み、読み込んだ保存カートリッジ情報をプリンタ／スキャナ装置の接続情報と関連付けて保存する。プリンタ／スキャナ装置Ａ１０２の情報取得処理では、図２３に示す構造体のカートリッジ情報エリア２３０４に読み込んだカートリッジ情報を整数で保存する。
【０１３５】
この後、ステップＳ２４０２に戻り、次のプリンタ／スキャナ装置の情報取得処理を開始する。そして、システムに存在する、すべてのプリンタ／スキャナ装置の情報取得が終了するまで繰り返される。
【０１３６】
また、本実施の形態では、システム起動時、上記情報取得処理を６秒に１回繰り返し行っている。取得した情報は、２回分の情報がホストコンピュータ上に保存される。すなわち、直前の取得処理で取得された情報、および現在の取得処理で取得された情報が保存される。
【０１３７】
上記情報取得処理を実行した際、プリンタ／スキャナ装置の状態に応じてデータ保存構造体の内容が変化する。本実施の形態では、データ保存構造体の内容の変化パターンは９パターンになる。以下にその内容について説明する。
【０１３８】
・パターン１
プリンタ／スキャナ装置がアクセス不可能な状態でかつ過去に保存しておいたドライバ情報あるいはヘッド情報が存在しない場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列"ドライバ不明"
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数０
ステータス情報エリア    ＝  整数２
【０１３９】
・パターン２
プリンタ／スキャナ装置がアクセス不可能な状態でかつ過去に保存しておいたドライバ情報およびヘッド情報が存在する場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列  保存ドライバ情報
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数 保存カートリッジ情報
ステータス情報エリア    ＝  整数２
【０１４０】
・パターン３
プリンタ／スキャナ装置が使用不可能な状態でかつ過去に保存しておいたドライバ情報あるいはヘッド情報が存在しない場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列"ドライバ不明"
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数０
ステータス情報エリア    ＝  整数０
【０１４１】
・パターン４
プリンタ／スキャナ装置が使用不可能な状態でかつ過去に保存しておいたドライバ情報およびヘッド情報が存在する場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列  保存ドライバ情報
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数 保存カートリッジ情報
ステータス情報エリア    ＝  整数０
【０１４２】
・パターン５
プリンタ／スキャナ装置が使用可能な状態でかつ装着されているカートリッジがプリンタカートリッジでかつシステムにプリンタドライバが登録されている場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列  プリンタドライバ・フレンドリネーム
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数 取得したプリンタカートリッジ情報
ステータス情報エリア    ＝  整数１
【０１４３】
・パターン６
プリンタ／スキャナ装置が使用可能な状態でかつ装着されているカートリッジがプリンタカートリッジでかつシステムにプリンタドライバが登録されていない場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列"プリンタドライバなし"
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数 取得したプリンタカートリッジ情報
ステータス情報エリア    ＝  整数0
【０１４４】
・パターン７
プリンタ／スキャナ装置が使用可能な状態でかつ装着されているカートリッジがスキャナカートリッジでかつシステムにプリンタドライバが登録されている場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列  プリンタドライバ・フレンドリネーム
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数6
ステータス情報エリア    ＝  整数１
【０１４５】
・パターン８
プリンタ／スキャナ装置が使用可能な状態でかつ装着されているカートリッジがスキャナカートリッジでかつシステムにプリンタドライバが登録されていない場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列"プリンタドライバなし"
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数6
ステータス情報エリア    ＝  整数１
【０１４６】
・パターン９
プリンタ／スキャナ装置が使用可能な状態でかつ装着されているカートリッジがスキャナカートリッジでかつシステムにスキャナドライバが存在しない場合（文字列のxx部は接続状況に依存する）
デバイスドライバエリア  ＝  文字列"スキャナドライバなし"
接続ポート情報エリア    ＝  文字列"USBPRNxx"
接続情報エリア          ＝  文字列"xxxxxxxxxxx"
カートリッジ情報エリア  ＝  整数6
ステータス情報エリア    ＝  整数0
【０１４７】
以下、本実施の形態おいてUSBプリンタマネージャが接続されている複数台のプリンタ／スキャナ装置の情報を表示する処理の動作について、図３０、図３１、図３２、図３３を用いて説明する。
【０１４８】
図３０、図３１、図３２、図３３は、本実施の形態のホストコンピュータ１０１にの計４台のプリンタ／スキャナ装置１０２，１０３，１０４，１０５を接続した情報処理システムにおいて、USBプリンタマネージャが上記処理により各プリンタ／スキャナ装置の情報を取得した後、その情報を図１３のUSB接続状況表示部の詳細説明図に表示する処理の手順を示したフローチャートである。
【０１４９】
まず、ステップＳ３００１でプログラムはすべてのプリンタ／スキャナ装置の表示情報が作成できたか否かを判別する。すべての表示情報の作成が終了している場合、処理３に進み、各プリンタ／スキャナ装置の接続順を調べる。一方、すべての表示情報の作成が終了していない場合、ステップＳ３００２に進む。
【０１５０】
ステップＳ３００２では上記、情報取得処理において保存しておいたプリンタ／スキャナ装置のステータス情報およびカートリッジ情報を読み込む。次に、ステップＳ３００３で読み込んだステータス情報およびカートリッジ情報を調べ情報内容が合致する表示用ビットマップを図２１のビットマップ一覧の中から１つ選択する。例えば、ステータス情報が使用可能状態でカートリッジ情報がカラープリンタカートリッジであった場合、図２１中のビットマップ２１０２を選択する。
【０１５１】
次に、ステップＳ３００４に進み、プログラムは表示テキスト作成用のメモリバッファを確保する。次いで、ステップＳ３００５で、上記情報取得処理において保存しておいたプリンタ／スキャナ装置の接続ポート情報を読み込み、ステップＳ３００６において、ステップＳ３００５で読み込んだ接続ポート情報をステップＳ３００４で作成した表示テキスト作成用のメモリバッファにコピーして保存する。その後、処理２のステップＳ３１０１に進む。
【０１５２】
ステップＳ３１０１では、ステップＳ３００２で読み込んだカートリッジ情報がスキャナカートリッジが調べる。読み込んだカートリッジ情報がスキャナカートリッジでない場合、ステップＳ３１０３に進む。一方、読み込んだカートリッジ情報がスキャナカートリッジの場合、ステップＳ３１０２に進む。
【０１５３】
ステップＳ３１０２では、ステップＳ３００２で読み込んだステータス情報が使用可能状態か否かを判別する。読み込んだステータス情報が使用可能状態でない場合、ステップＳ３１０３に進む。一方、読み込んだステータス情報が使用可能状態の場合、ステップＳ３１０５に進み、デバイスドライバ情報としてスキャナドライバ名文字列"IS Scan USB"をステップＳ３００４で作成した表示テキスト作成用のメモリバッファにコピーして保存する。この後、ステップＳ３１０６に進む。
【０１５４】
次に、ステップＳ３１０１およびステップＳ３１０２から、ステップＳ３１０３に進んだ場合について説明する。ステップＳ３１０３では、上記、情報取得処理時に保存しておいたプリンタ／スキャナ装置のデバイスドライバ情報を読み込み、次にステップＳ３１０４で、ステップＳ３１０３で読み込んだデバイスドライバ情報をステップＳ３００４で作成した表示テキスト作成用のメモリバッファにコピーして保存する。この後、ステップＳ３１０６に進む。
【０１５５】
ステップＳ３１０６では、ステップ３００２で読み込んだカートリッジ情報を調べ情報表示用のカートリッジ名文字列を作成する。
【０１５６】
すなわち、カートリッジ情報が整数０（カートリッジ未装着）の時は、カートリッジ名文字列"カートリッジ不明"を作成し、カートリッジ情報が整数１（モノクロプリンタカートリッジ）の時は、カートリッジ名文字列"モノクロBJカートリッジ"を作成し、カートリッジ情報が整数２（カラープリンタカートリッジ１）の時は、カートリッジ名文字列"カラーBJカートリッジ１"を作成し、カートリッジ情報が整数３（カラープリンタカートリッジ２）の時は、カートリッジ名文字列"カラーBJカートリッジ２"を作成し、カートリッジ情報が整数４（カラープリンタカートリッジ３）の時は、カートリッジ名文字列"カラーBJカートリッジ３"を作成し、カートリッジ情報が整数５（カラープリンタカートリッジ４）の時は、カートリッジ名文字列"カラーBJカートリッジ４"を作成し、カートリッジ情報が整数６（スキャナカートリッジ）の時は、カートリッジ名文字列"スキャナカートリッジ"を作成する。
【０１５７】
次に、ステップＳ３１０７に進み、ステップＳ３１０６で作成したカートリッジ名文字列をステップＳ３００４で作成した表示テキスト作成用のメモリバッファにコピーして保存する。その後、ステップＳ３００１に戻り、次のプリンタ／スキャナ装置の表示情報を作成する。
【０１５８】
以下、ステップＳ３００１ですべてのプリンタ／スキャナ装置の表示情報の作成が終了している場合について説明する。
【０１５９】
処理３のステップＳ３２０１でプログラムは、上記情報取得処理において保存しておいたすべてのプリンタ／スキャナ装置の接続情報を読み込む。ステップＳ３２０２では、ステップＳ３２０１で読み込んだ各プリンタ／スキャナ装置の接続情報の文字列の長さを比較してプリンタ／スキャナ装置の接続順を調べる。次に、ステップＳ３２０３で各プリンタ／スキャナ装置の情報として、ステップＳ３００２で読み込まれた情報から調べられた接続順に従って、ステップＳ３００３で選択したビットマップおよびバッファメモリに保存されている表示用テキストを接続ポートと共に、図１２のUSB接続状況１２０３に表示する。
【０１６０】
以下、図３３を用いてステップＳ３２０２におけるプリンタ／スキャナ装置の接続順検出処理について詳細に説明する。
【０１６１】
図３３のステップＳ３３０１においてプログラムは、ステップＳ３２０１で読み込んだ各プリンタ／スキャナ装置の接続情報の文字列の長さを調べ短い順にソートする。
【０１６２】
本実施の形態では、図１６の接続情報が得られるため以下のようになる。
・プリンタ／スキャナ装置Ａ１０２の接続情報：
"4USB&VID_04A9&PID_1000&1USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"
・プリンタ／スキャナ装置Ｂ１０３の接続情報：
"4USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"
・プリンタ／スキャナ装置Ｃ１０４の接続情報：
"4USB&VID_04A9&PID_1000&1USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"
・プリンタ／スキャナ装置Ｄ１０５の接続情報：
"4USB&VID_04A9&PID_1000&1USB&PID_04A9&PID_1000&1USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"
【０１６３】
したがって、各プリンタ／スキャナ装置を文字列の短い順にソートすると、プリンタ／スキャナ装置Ａ１０２、プリンタ／スキャナ装置Ｂ１０３、プリンタ／スキャナ装置Ｃ１０４、プリンタ／スキャナ装置Ｄ１０５の順になる。ただしプリンタ／スキャナ装置Ａ１０２とプリンタ／スキャナ装置Ｂ１０３の文字列の長さは同じなので、この２台は同順位にあると判断する。
【０１６４】
次に、ステップＳ３３０２に進み、接続情報の文字列が一番短いプリンタ／スキャナ装置がホストコンピュータのUSBハブに接続されていると判断する。
【０１６５】
本実施の形態では、プリンタ／スキャナ装置Ａ１０２の接続情報とプリンタ／スキャナ装置Ｂ１０３の接続情報が同じ長さでかつ一番短いので、この２台がホストコンピュータ１０１のUSBハブに接続されていると判定する。
【０１６６】
次に、ステップＳ３３０３に進み、接続情報の文字列が一番短いプリンタ／スキャナ装置がホストコンピュータ１０１のUSBハブの何番目に接続されているか否かを判別する。具体的には、特定のプリンタ／スキャナ装置の接続情報には、必ずそのプリンタ／スキャナ装置が接続されているハブの接続情報が含まれることを利用する。
【０１６７】
例えば、本実施の形態においてプリンタ／スキャナ装置Ａ１０２の接続情報"4USB&VID_04A9&PID_1000&1USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"にはプリンタ／スキャナ装置Ａ１０２が接続されているホストコンピュータ１０１のUSBハブの接続情報"PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"が含まれている。
【０１６８】
そして、プリンタ／スキャナ装置Ａ１０２の接続情報"4USB&VID_04A9&PID_1000&1USB&ROOT_HUB&PCI・・・・"に含まれる文字列"1USB"により、プリンタ／スキャナ装置Ａ１０２がホストコンピュータが備えている２つのUSBハブのうち、USBハブ１に接続されていることが判る。
【０１６９】
同様に、プリンタ／スキャナ装置Ｂ１０３の接続情報"4USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"にはプリンタ／スキャナ装置Ｂ１０３が接続されているホストコンピュータ１０１のUSBハブの接続情"PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"が含まれている。
【０１７０】
そして、プリンタ／スキャナ装置Ｂ１０３の接続情報"4USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI・・・・"に含まれる文字列"2USB"により、プリンタ／スキャナ装置Ｂ１０３がホストコンピュータ１０１が備えている２つのUSBハブのうち、USBハブ２に接続されていることが判る。
【０１７１】
次に、ステップＳ３３０４に進みすべてのプリンタ／スキャナ装置の判定が終了したか調べる。すべての判定が終了していれば、接続順検出処理を終了する。一方、すべての判定が終了していなければ、ステップＳ３３０５に進む。ステップＳ３３０５では、次に文字列が短いプリンタ／スキャナ装置が、ステップＳ３３０３で調べたUSBハブに接続されているか否かを判別する。
【０１７２】
本実施の形態では、まずプリンタ／スキャナ装置Ｃ１０４の接続情報が次に短いので、プリンタ／スキャナ装置Ｃ１０４がホストコンピュータの何番目のUSBハブに接続されているか否かを判別する。
【０１７３】
具体的には、プリンタ／スキャナ装置Ｃ１０４の接続情報"4USB&VID_04A9&PID_1000&1USB&VID_04A9&PID_1000&2USB&ROOT_HUB&PCI&VEN_8086&DEV_7020&BUS_00&DEV_07&FUNC_02"を調べ文字列"&ROOT_HUB"を検出する。
【０１７４】
次に、文字列"&ROOT_HUB"の前、4文字を読み出すと"2USB"となっている。よって、プリンタ／スキャナ装置Ｃ１０３はホストコンピュータのUSBハブ２に接続されていることが判る。
【０１７５】
次に、ステップＳ３３０６に進み、ステップＳ３３０２で検出されたUSBハブと、ステップＳ３３０５で検出されたUSBハブが同じであるか否かを判別する。同じハブであった場合、ステップＳ３３０７に進み、違うハブであった場合、ステップ３３０８に進む。
【０１７６】
本実施の形態では、プリンタ／スキャナ装置Ｃ１０４の接続されているホストコンピュータ１０１のUSBハブは、プリンタ／スキャナ装置Ｂ１０３の接続されているホストコンピュータ１０１のUSBハブと同じ（共にUSBハブ２）なので処理をステップＳ３３０７に進める。
【０１７７】
ステップＳ３３０７では、ステップＳ３３０５で調べたプリンタ／スキャナ装置が、同じホストコンピュータのUSBハブに接続され、かつステップＳ３３０２もしくは前回のステップＳ３３０５で検出されたプリンタ／スキャナ装置のハブに接続されていると判定する。
【０１７８】
今、ステップＳ３３０５で調べたのはプリンタ／スキャナ装置Ｃ１０４であり、同じホストコンピュータ１０１に接続され、かつステップＳ３３０２もしくは前回のステップＳ３３０５で検出されたプリンタ／スキャナ装置は、プリンタ／スキャナ装置Ｂ１０３であるから、プリンタ／スキャナ装置Ｃ１０４はプリンタ／スキャナ装置Ｂ１０３のハブに接続されていると判定する。その後、ステップＳ３３０４に戻り、次のプリンタ／スキャナ装置の判定を行う。
【０１７９】
今、次のステップＳ３３０５で調べるのはプリンタ／スキャナ装置Ｄ１０５である。プリンタ／スキャナ装置Ｄ１０５はホストコンピュータ１０１のUSBハブ２に接続されている。同じホストコンピュータ１０１に接続され、かつステップＳ３２０２もしくは前回のステップＳ３３０５で検出されたプリンタ／スキャナ装置は、プリンタ／スキャナ装置Ｃ１０４である。ゆえに、プリンタ／スキャナ装置Ｄ１０５は、プリンタ／スキャナ装置Ｃ１０４のハブに接続されていると判定する。
【０１８０】
一方、ステップＳ３３０６で、ステップＳ３３０２で検出されたUSBハブとステップＳ３３０５で検出されたUSBハブが違った場合の処理について説明する。
【０１８１】
ステップＳ３３０８では、ステップＳ３３０５で検出されたプリンタ／スキャナ装置がホストコンピュータのUSBハブに接続されていると判定する。次に、ステップＳ３３０９に進み、ステップＳ３３０５で検出されたプリンタ／スキャナ装置がホストコンピュータのUSBハブの何番目に接続されているか調べる。
【０１８２】
その後、ステップＳ３３０４に戻り、次のプリンタ／スキャナ装置の判定を行う。
【０１８３】
次に、ユーザが、図１２のUSB接続俯瞰図１２０３内で、特定のプリンタ／スキャナ装置の状態を表すビットマップをダブルクリックした場合に、プリンタマネージャがシステムに接続されている特定のプリンタ／スキャナ装置に個体識別処理実行命令を発行する処理について、図３４を用いて説明する。
【０１８４】
図３４は、本実施の形態のホストコンピュータ１０１に計4台のプリンタ／スキャナ装置１０２，１０３，１０４，１０５を接続した情報処理装置において、USBプリンタマネージャ１１０２がシステムに接続されている特定のプリンタ／スキャナ装置に対し個体識別実行命令を発行する処理の手順を示したフローチャートである。
【０１８５】
まず、ステップＳ３４０１でユーザーがUSB接続俯瞰図１２０３内で、特定のプリンタ／スキャナ装置の状態を表すビットマップをダブルクリックする。すると、プログラムはステップＳ３４０２で、ダブルクリックされたビットマップを検出し、そのビットマップに対応する特定のプリンタ／スキャナ装置を識別対象プリンタ／スキャナ装置と指定する。
【０１８６】
次に、ステップＳ３４０３では情報取得処理の過程で保存しておいた識別対象プリンタ／スキャナ装置のステータス情報を読み込む。
【０１８７】
次に処理はステップＳ３４０４に進み、ステップＳ３４０３で読み込んだステータス情報が当該装置が使用可能な状態を示しているか否かを調べる。ここで、読み込んだステータス情報が仕様可能な状態ではなかった場合、処理を終了する一方、読み込んだステータス情報が使用可能な状態であった場合、処理はステップＳ３４０５に進む。
【０１８８】
ステップＳ３４０５では、識別対象プリンタスキャナ装置に個体識別処理実行命令を発行する。個体識別処理実行命令は、以下の３つの命令の組み合わせで構成される。即ち、
１．Beep（ビープ）音発生命令、２．LED点灯命令、３．待ち命令である。ここで、Beep音発生命令は、各プリンタ／スキャナ装置に設けられた図示しないブザー等の音響装置からBeep音を鳴らさせる命令であり、LED点灯命令はプリンタ／スキャナ装置のパネルユニット６０１に設けられているパワー表示用LED及びエラー表示用LEDの少なくとも一方を点灯させる命令であり、待ち命令はBeep音の発生又はLEDの点灯を指定した時間に亘って中止させる命令である。
【０１８９】
次に処理はステップＳ３４０６に進み、個体識別処理実行命令を受け取ったプリンタ／スキャナ装置がLEDを点灯させながらBeep音を鳴らす。
【０１９０】
例えば、ステップＳ３４０５で発行された個体識別命令の構成が以下のようになっている場合、ステップＳ３４０６で、識別対象プリンタ／スキャナ装置は、３、３、７拍子でLEDを点灯させながらBeep音を鳴らす。
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；1000m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；1000m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；200m秒待ち命令；
LED点灯命令；Beep音発生命令；200m秒待ち命令；
LED点灯命令；Beep音発生命令；200m秒待ち命令；
LED点灯命令；Beep音発生命令；200m秒待ち命令；
LED点灯命令；Beep音発生命令；200m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；500m秒待ち命令；
LED点灯命令；Beep音発生命令；1000m秒待ち命令；
【０１９１】
ユーザーは、LEDを点灯させながらBeep音を鳴らしているプリンタ／スキャナ装置を視覚、聴覚で検知して、識別対象プリンタ／スキャナ装置がホストコンピュータから見て何番目に接続されているかを確認することができる。
【０１９２】
尚、上述した動作例では、発行する個体識別処理実行命令の構成を１パターンだけ説明したが、識別対象プリンタ／スキャナ装置の台数に応じて、個体識別処理実行命令を各プリンタ／スキャナ装置毎に異ならせるために、複数の構成パターンを用意することも可能である。
【０１９３】
以上詳述したように、本実施の形態によれば、ユーザーがUSB接続俯瞰図で、特定のプリンタ／スキャナ装置の状態を表すビットマップをダブルクリックすると、ダブルクリックされたビットマップが検出され、そのビットマップに対応する特定のプリンタ／スキャナ装置のステータス情報が読み込まれ、当該装置のステータス情報が当該装置が使用可能な状態を示しているか否かを調べて使用可能な状態であった場合、当該装置に個体識別処理実行命令が発行され、当該装置がBeep音の発生やLED装置の点滅によって、当該装置が選択されたことを識別できるように報知するので、使用すべきプリンタ／スキャナ装置がホストコンピュータから見て何番目に接続されているか及びどこにあるかを容易に確認することができる。
【０１９４】
尚、上述した実施の形態においては、情報処理装置（ホストコンピュータ１０１）に複数台のプリンタ／スキャナ装置を接続した場合を説明したが、これに限られるものではなく、本発明は、キーボード、ビデオテープレコーダー、マウス、フロッピーディスクドライブ、スピーカ等のUSBポートに直列に接続可能な全ての装置に対して接続の関係又は順番を表示する場合に適用可能である。
【０１９５】
また、本実施の形態において、本発明を達成するためのソフトウェアによって表される制御プログラムを記憶した記憶媒体を、ホストコンピュータ１０１やシステムに読み出すことによっても、同様の効果を奏することができる。
【０１９６】
例えば、情報処理装置に使用される記憶媒体としての不図示のＲＯＭに、複数の装置が接続可能な情報処理装置で使用されるプログラムを記憶すると共に、選択工程のコードと命令出力工程のコードとを記憶させる。各工程のコードはそれぞれ以下の機能を有する。即ち、選択工程のコードは、前記情報処理装置に接続されている複数の装置の少なくとも１つを選択する。命令出力工程のコードは選択工程により選択された装置に当該装置が選択されたことが識別できるように報知させる命令を出力する。
【０１９７】
尚、これらの場合の記憶媒体としては、ＲＯＭのほか、フロッピーディスク、ハードディスク、光ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード等を用いることができる。
【０１９８】
【発明の効果】
以上説明したように、本発明の実施の形態によれば、情報処理装置に接続されている複数の装置のうちの少なくとも１つが選択され、該選択された装置に当該装置が選択されたことが識別できるように報知させる命令が出力されるので、情報処理装置に接続されている複数の装置の実際の接続状態を容易に確認することができると共に、使用すべき装置の所在を直ちに把握することができる。
【０１９９】
また、本発明の実施の形態によれば、前記情報処理装置に接続されている複数の装置が、原稿印刷機能又は原稿読み取り機能を有する装置である場合に、印刷用紙や読み取り原稿を使用すべき装置にセットするために、接続されている複数の装置の実際の接続状態を容易に確認することができると共に、使用すべき装置の所在を直ちに把握することができる。
【０２００】
なお、ＯＳの種類によって、システム設定情報データベース（レジストリ）の内部構成は変化する。しかし、接続されている複数の装置の接続状態情報がシステム設定情報データベース（レジストリ）に何らかの形式で保存されているかぎり、本実施例と同様な方法により、装置の接続状態を判別し、画面に表示可能なことは、いうまでもない。
【０２０１】
また、本発明によれば、オペレーティングシステムのレジストリ情報を利用して、接続されている機器に関する情報を獲得し、接続状態を表示するため、表示する際に、接続されている機器の情報を接続されている機器に問い合せなくてもすみ、高速に表示を行うことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態の情報処理システムの外観図である。
【図２】本実施の形態におけるノート型ホストコンピュータの背面図である。
【図３】本実施の形態における各プリンタ／スキャナ装置共通の背面図である。
【図４】本実施の形態におけるUSBケーブルの概観図である。
【図５】本実施の形態におけるノート型ホストコンピュータの内部構成を示すブロック図である。
【図６】本実施の形態におけるプリンタ／スキャナ装置の内部構成を示すブロック図である。
【図７】本実施の形態におけるプリンタ／スキャナ装置のフロントカバーを開けた状態の斜視図である。
【図８】本実施の形態におけるプリンタ／スキャナ装置においてカートリッジ取り外し時のフロントカバーを開けた状態の斜視図である。
【図９】本実施の形態におけるプリンタ／スキャナ装置においてカートリッジ取り付け時のフロントカバーを開けた状態の斜視図である。
【図１０】本発明におけるプリンタ／スキャナ装置に装着可能なスキャナーカートリッジの外観図である。
【図１１】プリンタ／スキャナ装置を制御するソフトウェアのブロック図である。
【図１２】  USBプリンタマネージャが表示するユーザーインターフェイスメイン画面の説明図である。
【図１３】  USB接続状況表示部の詳細説明図である。
【図１４】ホストコンピュータに２台のプリンタ／スキャナ装置が接続された状態でUSBプリンタマネージャのタイトルバーをホストコンピュータに接続されているマウスで右ボタンクリックした時の表示画面の説明図である。
【図１５】ホストコンピュータに２台のプリンタ／スキャナ装置が接続された状態でUSBコピーユティリティおよびスキャナドライバがスキャンに使用可能なスキャナ／プリンタ装置選択命令をUSBプリンタマネージャに発行した際の表示画面の説明図である。
【図１６】ホストコンピュータに保存されているプリンタ／スキャナ装置の接続情報図である。
【図１７】ホストコンピュータに保存されているプリンタ／スキャナ装置Ａの詳細情報図である。
【図１８】ホストコンピュータに保存されているプリンタ／スキャナ装置Ａのポート接続情報図である。
【図１９】ホストコンピュータに保存されているプリンタ／スキャナ装置Ａに関連付けて登録されているプリンタドライバの詳細情報図である。
【図２０】ホストコンピュータに保存されているプリンタドライバの登録情報図である。
【図２１】接続状況表示部で表示されるビットマップの一覧図である。
【図２２】接続状況表示部で表示されるテキストの一覧図である。
【図２３】情報保存構造体の詳細図である。
【図２４】プリンタ／スキャナ装置の情報取得処理手順を示したフローチャートである。
【図２５】プリンタ／スキャナ装置の情報取得処理手順を示したフローチャートである。
【図２６】プリンタ／スキャナ装置の情報取得処理手順を示したフローチャートである。
【図２７】プリンタ／スキャナ装置の情報取得処理手順を示したフローチャートである。
【図２８】プリンタ／スキャナ装置の情報取得処理手順を示したフローチャートである。
【図２９】プリンタ／スキャナ装置の情報取得処理手順を示したフローチャートである。
【図３０】プリンタ／スキャナ装置の情報表示処理手順を示したフローチャートである。
【図３１】プリンタ／スキャナ装置の情報表示処理手順を示したフローチャートである。
【図３２】プリンタ／スキャナ装置の情報表示処理手順を示したフローチャートである。
【図３３】プリンタ／スキャナ装置の情報表示処理手順を示したフローチャートである。
【図３４】プリンタ／スキャナ装置の情報表示処理手順を示したフローチャートである。
【図３５】ＯＳによるレジスト管理の手順を示したフローチャートである。
【図１】
0004208328.tif 000002
【図２】
0004208328.tif 000003
【図３】
0004208328.tif 000004
【図４】
0004208328.tif 000005
【図５】
0004208328.tif 000006
【図６】
0004208328.tif 000007
【図７】
0004208328.tif 000008
【図８】
0004208328.tif 000009
【図９】
0004208328.tif 000010
【図１０】
0004208328.tif 000011
【図１１】
0004208328.tif 000012
【図１２】
0004208328.tif 000013
【図１３】
0004208328.tif 000014
【図１４】
0004208328.tif 000015
【図１５】
0004208328.tif 000016
【図１６】
0004208328.tif 000017
【図１７】
0004208328.tif 000018
【図１８】
0004208328.tif 000019
【図１９】
0004208328.tif 000020
【図２０】
0004208328.tif 000021
【図２１】
0004208328.tif 000022
【図２２】
0004208328.tif 000023
【図２３】
0004208328.tif 000024
【図２４】
0004208328.tif 000025
【図２５】
0004208328.tif 000026
【図２６】
0004208328.tif 000027
【図２７】
0004208328.tif 000028
【図２８】
0004208328.tif 000029
【図２９】
0004208328.tif 000030
【図３０】
0004208328.tif 000031
【図３１】
0004208328.tif 000032
【図３２】
0004208328.tif 000033
【図３３】
0004208328.tif 000034
【図３４】
0004208328.tif 000035
【図３５】
0004208328.tif 000036