(57)【特許請求の範囲】
【請求項１】
周辺機器デバイスを当該機器のデバイスドライバ経由で制御することにより当該機器に対する入出力を行なうとともに、デバイスドライバの登録に関するレジストリ情報がレジストリ情報記憶手段に登録され、インストールに失敗した場合、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となる電子機器において、
所定の周辺機器のデバイスドライバをシステムにインストールする際、所定の周辺機器のデバイスドライバをコピーすると共に、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となっていた場合、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除することを特徴とする電子機器。
【請求項２】
所定の周辺機器のデバイスドライバをシステムにインストールする際、デバイスＩＤ情報がインストール情報定義ファイルから取り出され、取り出されたデバイスＩＤ情報に基づきレジストリパスを作成し、作成されたレジストリパス以下のレジストリ情報を列挙し、列挙されたレジストリパスを調べ、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除することを特徴とする請求項１に記載の電子機器。
【請求項３】
周辺機器デバイスを当該機器のデバイスドライバ経由で制御することにより当該機器に対する入出力を行なうとともに、デバイスドライバの登録に関するレジストリ情報がレジストリ情報記憶手段に登録され、インストールに失敗した場合、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となる電子機器の制御方法において、
所定の周辺機器のデバイスドライバをシステムにインストールする際、所定の周辺機器のデバイスドライバをコピーすると共に、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となっていた場合、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除することを特徴とする電子機器の制御方法。
【請求項４】
所定の周辺機器のデバイスドライバをシステムにインストールする際、デバイスＩＤ情報がインストール情報定義ファイルから取り出され、取り出されたデバイスＩＤ情報に基づきレジストリパスを作成し、作成されたレジストリパス以下のレジストリ情報を列挙し、列挙されたレジストリパスを調べ、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除することを特徴とする請求項３に記載の電子機器の制御方法。
【請求項５】
周辺機器デバイスを当該機器のデバイスドライバ経由で制御することにより当該機器に対する入出力を行なうとともに、デバイスドライバの登録に関するレジストリ情報がレジストリ情報記憶手段に登録され、インストールに失敗した場合、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となる電子機器の制御プログラムを格納したコンピュータ読取可能な記憶媒体において、
所定の周辺機器のデバイスドライバをシステムにインストールする際、所定の周辺機器のデバイスドライバをコピーすると共に、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となっていた場合、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除するための制御手順を電子機器に実行させるための制御プログラムを格納したコンピュータ読取可能な記憶媒体。
【請求項６】
所定の周辺機器のデバイスドライバをシステムにインストールする際、デバイスＩＤ情報がインストール情報定義ファイルから取り出され、取り出されたデバイスＩＤ情報に基づきレジストリパスを作成し、作成されたレジストリパス以下のレジストリ情報を列挙し、列挙されたレジストリパスを調べ、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除することを特徴とする請求項５に記載の電子機器の制御プログラムを格納したコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の周辺機器を同時接続可能な入出力ポートを介して周辺機器デバイスを接続する電子機器、その制御方法、およびその制御プログラムを格納したコンピュータ読取可能な記憶媒体に関するものである。
【０００２】
【従来の技術】
従来より、プリンタなどの周辺機器がコンピュータシステムとともに広く利用されている。従来では、プリンタはセントロニクスポートやＲＳ２３２Ｃのようなシリアルポートを介して、１ポートに１台のみのプリンタをコンピュータ本体に接続することが多かったが、近年になっていわゆるＵＳＢポートのような、より汎用的なインタフェースを介して１ポートに複数台のプリンタを接続する形態が増えつつある。
【０００３】
【発明が解決しようとする課題】
一方、マイクロソフト社のＷｉｎｄｏｗｓ（商品名：Ｗｉｎｄｏｗｓ９５、９８、２０００、ＮＴなどの異なるバージョンがある）ファミリーがパーソナルコンピュータのＯＳとして広く用いられているが、ＵＳＢデバイスのサポートを標傍しているものの、現在のところ標準で添付しているデバイスドライバはあまり多くない。
【０００４】
たとえば、Ｗｉｎｄｏｗｓ９８におけるＵＳＢドライバのインストール手順は、他のドライバのインストールとほぼ同様、いわゆるＳＥＴＵＰ．ＥＸＥのようなインストーラプログラムを手動で、あるいは「ウィザード」と呼ばれるプログラムにより、ＯＳの起動時や、デバイスのＰｎＰ（プラグ・アンド・プレイ）操作により自動ないし半自動的に起動することにより行なわれる。
【０００５】
たとえば、ＯＳ起動後にＵＳＢデバイスをパソコンに接続すると、ＯＳはＵＳＢデバイスを検知し、ウィザードプログラムのデバイスドライバインストールダイアログを表示させる。このダイアログで、ユーザはデバイスドライバが格納されているディレクトリを正しく指定する必要がある。
【０００６】
ユーザがダイアログを介してデバイスドライバが格納されているディレクトリ（ＣＤ−ＲＯＭやフロッピーディスク上のディレクトリ）を指定すると、ＯＳは指定されたディレクトリに検知したＵＳＢデバイス用のデバイスドライバが存在するか確認し、対応したものが存在すれば、これをインストールして終了する。
【０００７】
ところが、ユーザが間違ったディレクトリを指定したため、検知したＵＳＢデバイスに対応していないデバイスドライバがあったり、そもそも当該のディレクトリにデバイスドライバが存在しない場合、ＯＳは検知したＵＳＢデバイスを「不明なデバイス」として認識し、以後、そのデバイスは正常に機能しなくなる。この状態では、レジストリと呼ばれるＯＳの設定データに誤まったデータが登録されたままとなっており、このままでは再度ＵＳＢデバイスを繋ぎなおしても「不明なデバイス」として認識するため、ユーザはデバイスを全く使用できなくなる。
【０００８】
このような状態になってしまった場合は、ユーザはデバイスマネージャなどのプログラムを用いて手動により当該デバイスを明示的に削除して正しい操作をやり直さなければ正常なデバイスドライバのインストールを行なうことができない。また、このような措置はある程度の経験を積んだユーザでなければ行なうのは困難であり、初心者は途方に暮れてしまう。また、この種の些細なトラブルに関するユーザサポートに法外に高額な料金を要求するベンダーもあり、初心者であっても確実に失敗なくＵＳＢデバイス（ドライバ）のインストールを行なえるようにすることが望まれているのはいうまでもない。
【０００９】
また、プリンタなどの機器をＵＳＢポートに接続して用いる場合、この種のポートには複数の機器を同時に接続して用いることができるため、従来、存在しなかった新たな問題が発生しつつある。
【００１０】
すなわち、従来のプリンタはセントロニクスインタフェースなどのホストとデバイスの一対一通信しかできないインタフェースで接続されていたため、プリンタドライバ用のインストーラは例えばセントロニクスインタフェースからプリンタと直接通信を行い、プリンタ名などの情報を得て、適切なプリンタドライバをインストールしていた。
【００１１】
たとえば、Ｗｉｎｄｏｗｓの場合は通信インタフェースをポートと表現し、セントロニクスインタフェースのＷｉｎｄｏｗｓ上の名称（ポート名）はＬＰＴ１である。そこでデバイス（ドライバ）のインストーラはＬＰＴ１というポートをオープンし、このポートからプリンタに対してプリンタ名を要求し、取得したプリンタ名がインストーラの対応するプリンタ名と判断できたならインストール処理を行うようになっていた。
【００１２】
しかし近年普及しつつあるＵＳＢインタフェースやＩＥＥＥ１３９４インタフェースは一つのインタフェースに複数のデバイスが接続でき、しかもアドレスが動的に割り振られるため、あらかじめポート名を決めておくことができない。そのためあらかじめ決められたポート名を調べる従来の方法ではインストーラによる適切なプリンタドライバのインストールが行えず、ユーザに負担を強いることになっていた。
【００１３】
より具体的に問題点を挙げると次のようになる。Ｍｉｃｏｒｓｏｆｔ社のＷｉｎｄｏｗｓにおけるＵＳＢインタフェースは、ホストとデバイスを接続しない限りポートと認識されない。しかもＵＳＢインタフェースは最大１２７台のデバイスを接続可能であり、ポートと認識されたとしてもどのような名称になるか予め予測することができない。そのため従来のようにあらかじめ決められたポート名を使って接続機器、たとえばプリンタ（の機種）を検出することが困難になり、ユーザが適切なドライバを選択しなければならない、という問題があった。
【００１４】
あるいは、Ｗｉｎｄｏｗｓにおけるプラグアンドプレイ機能を用いることで、自動的にプリンタドライバをインストールすることもできるが、ベンダー独自のアプリケーションなどをインストールすることができないため独自の機能を追加することができない。そのためプリンタドライバのインストールにはインストーラが必要不可欠である。
【００１５】
以上の問題は、ＵＳＢポート接続のプリンタに特別なものではなく、あらかじめデバイス名やアドレスなどを予め予測できない、という意味ではイーサネットなどのネットワークを介して接続される機器においても同様にあてはまるものである。
【００１６】
また、外部機器がイーサネットなどのネットワークを介して接続される構成においては、同一機能の機器（たとえばプリンタ）が複数そのポートやネットワークに同時接続されることも稀ではなく、たとえば同一機種のプリンタが複数台そのポートやネットワークに接続されることもあり得る。
【００１７】
製品名とは別にニックネームのような名前を付けることでプリンタを区別する方法が一般的であった。しかしこの方法はニックネームを忘れると、どのプリンタが本当に印刷したいプリンタかわからなくなっていた。そのため試しに印刷してそれがどのプリンタから出てくるか確認しなければならなかった。そこで試し印刷をすることなく印刷したいプリンタを区別する方法が望まれている。
【００１８】
本発明の課題は、上記の問題を解決し、ＵＳＢポートなどの複数機器を接続可能なインタフェースに接続されるデバイスドライバを誰でも間違いなくシステムにインストールでき、ＵＳＢポートなどの複数機器を接続可能なインタフェースに接続されるプリンタなどの外部機器の識別を容易に行なうことができ、自分が使用したいプリンタなどの機器を容易に確認できるようにすることにある。
【００１９】
【課題を解決するための手段】
上記の課題を解決するため、本発明においては、周辺機器デバイスを当該機器のデバイスドライバ経由で制御することにより当該機器に対する入出力を行なうとともに、デバイスドライバの登録に関するレジストリ情報がレジストリ情報記憶手段に登録され、インストールに失敗した場合、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となる電子機器において、
所定の周辺機器のデバイスドライバをシステムにインストールする際、所定の周辺機器のデバイスドライバをコピーすると共に、レジストリ情報のＣｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”となっていた場合、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除することを特徴とする。
【００２０】
あるいはさらに、所定の周辺機器のデバイスドライバをシステムにインストールする際、デバイスＩＤ情報がインストール情報定義ファイルから取り出され、取り出されたデバイスＩＤ情報に基づきレジストリパスを作成し、作成されたレジストリパス以下のレジストリ情報を列挙し、列挙されたレジストリパスを調べ、Ｃｌａｓｓ情報の値が”Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を削除する構成を採用した。
【００２４】
【発明の実施の形態】
以下、図を参照して本発明の実施の形態を説明する。
【００２５】
［第１の実施形態］
本実施形態では、Ｗｉｎｄｏｗｓ（商品名）上のデバイスドライバをインストールする処理を例示する。本実施形態では、デバイスドライバのインストールの際、いわゆるＩＮＦを参照してセットアップを実行するが、システムのレジストリを検索して対応するデバイスが「不明」なデバイスとなっている場合に自動的にレジストリから該当するレジストリパスを削除することにより、明示的な削除操作などを必要とすることなくデバイスドライバを誰でも間違いなくシステムにインストールできるようにする。
【００２６】
図１に本実施形態を実現するためのハードウェア構成を説明する。図示の構成は公知のパーソナルコンピュータの構成としてごく一般的なものである。
【００２７】
図１において符号Ｈ０１は本実施形態の制御を司る制御部（以後ＣＰＵと称する）、Ｈ０２は各種データを入力するキーボード、Ｈ０３はＲＡＭＨ０４に貯えられている画像データを表示するカラー表示器で、ＣＲＴあるいはＬＣＤディスプレイなどから構成される。
【００２８】
符号Ｈ０４は装置全体を制御する制御手順およびその他の必要な情報をあらかじめ記憶するリードオンリーメモリ（以下ＲＯＭという）、Ｈ０５はワークエリアとして利用されるランダムアクセスメモリ（以下ＲＡＭという）、Ｈ０６は各種データの読み書きやプログラムが格納されているハードディスクである。後述のセットアッププログラムは、ハードディスクＨ０６や不図示のＣＤ−ＲＯＭ、あるいはフロッピーディスクなどに格納された状態で供給され、ＲＡＭＨ０５上（あるいはさらにハードディスクＨ０６上に実装された仮想記憶機構を利用して）で実行される。
【００２９】
符号Ｈ０７はＵＳＢインタフェースであり、Ｈ０８のＵＳＢデバイスが接続される。ＵＳＢデバイスＨ０８としてはプリンタ、キーボード、マウス、タブレット、サウンドデバイス、デジタルカメラなど任意のデバイスが考えられる。Ｈ０９はデータバスであり、アドレスバス、データバス、各種制御信号線などから構成され、各種データを転送するために用いられる。
【００３０】
図２に、本実施形態でインストールされるデバイスドライバのファイル構成を示す。図２のＵＳＢＤＥＶ．ＳＹＳはＵＳＢデバイス（この場合プリンタ）ドライバのファイルであり、動的にシステムに組み込むことができる一種の実行ファイルの形態で記述されたものである。
【００３１】
また、ＵＳＢＤＥＶ．ＩＮＦは上記のドライバをインストールするときに使われる設定ファイルである。その拡張子から、通称ＩＮＦファイルと呼ばれている。ＳＥＴＵＰ．ＥＸＥは本発明を実施したインストールプログラムである。図２の各ファイルはハードディスクＨ０６や不図示のＣＤ−ＲＯＭ、あるいはフロッピーディスクなどに格納された状態で供給される。たとえば、ＵＳＢ接続のプリンタを供給する場合、ＣＤ−ＲＯＭ、あるいはフロッピーディスクなどに格納してそのプリンタとともにこれらのファイルが供給されるものとする。
【００３２】
なお、ＵＳＢポートそのもののドライバは別途インストールされるものとする。
【００３３】
図３に上記のＵＳＢＤＥＶ．ＩＮＦの内容を示す。ＩＮＦファイルは図示のように［］で囲んだ名前によりセクションを定義し、その後に所定の制御パラメータのニーモニックとそのパラメータに定義すべき値を配列したテキストファイルであり、図中、左端の数字は行番号でありデータの一部をなすものではない。
【００３４】
１行目から４行目の［Ｖｅｒｓｉｏｎ］セクションは、デバイスがＵＳＢデバイスであり、デバイスのベンダー（Ｐｒｏｖｉｄｅｒ）は“Ｑａｎｏｎ”であることを示している。
【００３５】
続くセクション［ＤｅｓｔｉｎａｔｉｏｎＤｉｒ］は、（５行目から６行目）はインストール先ディレクトリがＷＩＮＤＯＷＳ￥ＳＹＳＴＥＭディレクトリであることを示している。
【００３６】
［Ｍａｎｕｆａｃｔｕｒｅｒ］セクション（７行目〜８行目）は上記のＰｒｏｖｉｄｅｒと下記のＱａｎｏｎ．Ｓｅｃｔｉｏｎの関係を定義したものである。
【００３７】
［Ｑａｎｏｎ．Ｓｅｃｔｉｏｎ］（９行目から１０行目）はＵＳＢのデバイスＩＤ“ＵＳＢ￥ＶＩＤ＿０４Ａ９＆ＰＩＤ＿１０５２”のインストール処理を定義している。すなわち、デバイスＩＤ“ＵＳＢ￥ＶＩＤ＿０４Ａ９＆ＰＩＤ＿１０５２”のインストールは、後述の［Ｑａｎｏｎ．ＵＳＢ］セクションの方法にしたがって行うことを定義している。また、ここでは名称は“Ｑａｎｏｎ  ＵＳＢ  Ｄｅｖｉｃｅ”であることが定義されている。
【００３８】
［Ｑａｎｏｎ．ＵＳＢ］セクション（１１行目から１３行目）においては、インストール時のファイルコピーは後述の［Ｑａｎｏｎ．ＣｏｐｙＬｉｓｔ］セクションの情報に従うことを定義している。また、ここではレジストリ情報の追加は後述の［Ｑａｎｏｎ．ＡｄｄＲｅｇ］セクションの情報に従うことを示している。
【００３９】
［Ｑａｎｏｎ．ＣｏｐｙＬｉｓｔ］セクション（１４行目から１５行目）は、ｕｓｂｄｅｖ．ｓｙｓファイル（図２）をインストールすることを示している。［Ｑａｎｏｎ．ＡｄｄＲｅｇ］セクション（１６行目から２３行目）は、システムのレジストリに追加すべき情報である。ここでは、ドライバの名称や、デバイスの種別、デバイスＩＤなどが定義されている。
【００４０】
次に図４を参照して、インストール時に“不明なデバイス”となった場合のレジストリの処理につき説明する。図４はレジストリエディタを用いて当該デバイスのエントリを開いた状態を示している。ＵＳＢテバイスのレジストリ情報はＨＫＥＹ＿ＬＯＣＡＬ＿ＭＡＣＨＩＮＥ￥Ｅｎｕｍ￥ＵＳＢ以下に記録される。レジストリは実際にはデータファイルの形式でハードディスクＨ０６に記録されているが、レジストリエディタを用いてアクセスすると図示のような階層構造として表示される。「￥」はファイルシステムにおけるディレクトリのデリミタと同様に階層の境界を示す。
【００４１】
本テバイスの場合、インストール操作を行なうと、図４のようにＨＫＥＹ＿ＬＯＣＡＬ＿ＭＡＣＨＩＮＥ￥Ｅｎｕｍ￥ＵＳＢ￥ＶＩＤ＿０４Ａ９＆ＰＩＤ＿１０５２以下にデバイスが持つシリアル番号キーの中にデータが記録される。
【００４２】
図４はシリアル番号００００００のデバイスを示しており、このレジストリ情報のＣｌａｓｓ情報がデバイスの種類を表す。図３のようなＩＮＦファイルを用いて正常にインストーラが実行された場合は、ＵＳＢデバイスであればこのＣｌａｓｓ情報は“ＵＳＢ”となるが、インストールの際にユーザが間違ったディレクトリを指定したため、検知したＵＳＢデバイスに対応していないデバイスドライバがあったり、そもそも当該のディレクトリにデバイスドライバが存在しない場合はこのＣｌａｓｓ情報の値は図４のように“不明なデバイス”を示す“Ｕｎｋｎｏｗｎ”となる。
【００４３】
次に、図５に本実施形態のインストールプログラムのフローチャートを示す。図示のプログラムは、図２のＳＥＴＵＰ．ＥＸＥの一部として実装され、ＣＤ−ＲＯＭ、あるいはフロッピーディスクなどに格納して供給される。
【００４４】
図５のステップＳ１０１では、ＵＳＢドライバファイルであるＵＳＢＤＥＶ．ＳＹＳをＷＩＮＤＯＷＳ￥ＳＹＳＴＥＭディレクトリにコピーする。続いてステップＳ１０２ではＩＮＦファイルであるＵＳＢＤＥＶ．ＩＮＦをＷＩＮＤＯＷＳ￥ＩＮＦディレクトリにコピーする。
【００４５】
ステップＳ１０３ではＵＳＢＤＥＶ．ＩＮＦファイルをメモリに読み込み、ステップＳ１０４ではＩＮＦファイル内の［Ｑａｎｏｎ．Ｓｅｃｔｉｏｎ］を探し、ＵＳＢのデバイスＩＤ情報を取得する。ここで、図３のＩＮＦファイルの１０行目の右辺の二つ目のパラメータがＵＳＢのデバイスＩＤとなる。
【００４６】
ステップＳ１０５では、システムのレジストリを編集できるように読み込み、ステップＳ１０４で収得したデバイスＩＤの前にＨＫＥＹ＿ＬＯＣＡＬ＿ＭＡＣＨＩＮＥ￥Ｅｎｕｍ￥を付加し、レジストリパスを作り、このパス以下のレジストリ情報を列挙する。図４のレジストリ内容であればデバイスＩＤ“ＵＳＢ￥ＶＩＤ＿０４Ａ９＆ＰＩＤ＿１０５２”に相当するシリアル番号００００００のデバイスが列挙される。
【００４７】
ステップＳ１０６〜Ｓ１０８のループにおいて、同一デバイスＩＤのレジストリパスに複数のデバイスが登録されていれば、これらは順次列挙される。
【００４８】
ステップＳ１０６では列挙したレジストリパスが残っているか判断する。残っていればステップＳ１０７へ進み、残っていなければインストール処理を終了する。ステップＳ１０７ではＣｌａｓｓキーが“Ｕｎｋｎｏｗｎ”になっているか否かを判断する。“Ｕｎｋｎｏｗｎ”ならステップＳ１０８へ進み、“Ｕｎｋｎｏｗｎ”でないなら次の列挙されたレジストリパスを調べるためステップＳ１０６へ戻る。ステップＳ１０８では、Ｃｌａｓｓキーが“Ｕｎｋｎｏｗｎ”になっているレジストリパスの情報を全て削除する。
【００４９】
このようにして、本プログラムが対象とするデバイスドライバのインストールの際にユーザが間違ったディレクトリを指定したため、検知したＵＳＢデバイスに対応していないデバイスドライバがあったり、そもそも当該のディレクトリにデバイスドライバが存在しない場合はこのＣｌａｓｓ情報の値は図４のように“不明なデバイス”を示す“Ｕｎｋｎｏｗｎ”となっているレジストリパスの情報を全て削除することができるため、以後、ＵＳＢデバイスを繋ぎ直すなどの操作を行ない、正しいディレクトリを指定するなどすればその時はプリンタなどのＵＳＢデバイスのドライバのインストールを正常に実行することができる。
【００５０】
したがって、ユーザは従来のようにレジストリエディタなどを用いて明示的ドライバを削除するような操作を必要とせず、また、高額なユーザサポートを必要とせずに容易に自分自身でＵＳＢデバイスのインストールを行なうことができる。
【００５１】
本発明を実施したＳＥＴＵＰ．ＥＸＥはフロッピーディスクやＣＤ−ＲＯＭに限定されることなく任意のインストールメディアに格納して提供することができるのはいうまでもない。
【００５２】
なお、上記実施形態ではＵＳＢデバイスのデバイスＩＤとしてＵＳＢ￥ＶＩＤ＿０４Ａ９＆ＰＩＤ＿１０５２を用いたが、それ以外のデバイスＩＤでも適用できることは言うまでもない。また、以上ではＵＳＢポートを例示したが、上記の技術は複数の外部機器を接続するインタフェース、たとえばＩＥＥＥ１３９４のようなインタフェースであっても同様に実施できるのはいうまでもない。
【００５３】
［第２の実施形態］
以上では、インストーラ実行時のレジストリの操作につき示したが、以下では、ＵＳＢなどのポートに動的に接続されるデバイスに適したインストーラの構成につき詳細に説明する。
【００５４】
本実施形態でも、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ上で動作するＵＳＢプリンタに対応したインストーラである。ＵＳＢプリンタの場合、２つのデバイスドライバを必要とする。１つはプリンタドライバ、もう１つはより低位のＵＳＢドライバである。ＵＳＢドライバはＵＳＢでデータの送受信を行うためのデバイスドライバである。そのためＵＳＢプリンタに対応したインストーラでは２つのデバイスドライバのインストールを行う必要がある。
【００５５】
本実施形態におけるインストール手順は次のようなものとなる。ユーザが本実施形態のインストーラを起動する（あるいはウィザードなどのプログラムにより自動起動される）と図７の画面が表示されるので、ユーザはＵＳＢプリンタをホストと接続する。これにより後述のインストーラプログラムを介してＵＳＢドライバがインストールされる。
【００５６】
ＵＳＢポートそのもののドライバのインストール処理は前記実施形態同様に本実施形態のインストーラではなく、Ｗｉｎｄｏｗｓに付属のインストーラにより行なわれるものとする。また、ＵＳＢドライバはインストールされると新しいポートを作成する。
【００５７】
以上の動作はＷｉｎｄｏｗｓにおけるＵＳＢドライバの一般的な仕様である。一度ＵＳＢドライバがインストールされると、本実施形態のインストーラは新しいポートを認識し、接続されたプリンタ名を得て最適なプリンタドライバを選択する。そしてファイルのコピー中は図８の画面を表示してファイルコピー処理を行いプリンタドライバを登録する。ユーザはインストーラの起動とプリンタの接続だけ行えばよい。
【００５８】
本発明を実現するためのハードウェア構成を図６に示す。図６の構成は前記実施形態の図１とほぼ同様であるので、ここでは重複した説明は省略する。
【００５９】
図６において符号Ｈ０７はプリンタインタフェースであり、Ｈ０８はプリンタである。プリンタインタフェースＨ０７としてはＵＳＢが用いられるものとする。
【００６０】
次に図１４と図１５のフローチャートを用いて本実施形態のプリンタデバイスドライバのインストーラの動作を説明する。プリンタインストーラの実行ファイルの名称は前述の第１実施形態同様にＳＥＴＵＰ．ＥＸＥであり、ハードディスクに格納された状態で、あるいは前述の実施形態同様にＣＤ−ＲＯＭやフロッピーディスクなどのメディアにより供給される。
【００６１】
これらのメディア上のインストーラのバイナリ（ＳＥＴＵＰ．ＥＸＥ）がユーザにより明示的に起動されるか、あるいはウィザード経由で起動されると、図１４のステップＳ１０１において、ＵＳＢドライバに関係するファイルをシステムにコピーする（図２参照）。ＵＳＢドライバのファイルをあらかじめコピーすることで、ユーザはファイルを指定する必要がなくなる。
【００６２】
ステップＳ１０２はシステムが持つ全てのポート名を列挙し、ポートリストＡとしてメモリに記憶するステップである。ポートリストの構造を図９に示す。図９はＬＰＴ１、ＣＯＭ１、ＦＩＬＥ、およびＵＳＢＰＲＮ０１というポートを記憶した例である。
【００６３】
ステップＳ１０３では、図７のインストーラ画面を表示するステップで、この画面でユーザにＵＳＢプリンタを繋ぐよう促す。ユーザがＵＳＢポートにプリンタを繋ぐと、ステップＳ１０４においてポートチェックのインターバル時間になるまで待つ処理を入れる。本実施形態ではこのインターバル時間を２秒としている。２秒になったらステップＳ１０５へ進む。
【００６４】
ステップＳ１０５ではシステムが持つ全てのポート名を列挙し、ポートリストＢとしてメモリに記憶する。
【００６５】
ステップＳ１０６ではポートリストＢからポートリストＡに存在するポートを削除する。この削除の結果、ポートリストＢには新たに追加されたポートが残る。もしポートが追加されていなければ何も残らない。
【００６６】
ステップＳ１０７では、ポートリストＢにポートが残っているか判断する。ポートが残っていなければステップＳ１０４へ戻り、ポートが残っていればステップＳ１０８へ進む。
【００６７】
ステップＳ１０８では、ポートリストＢに残っているポート名がＵＳＢインタフェースのポートか否かを判断する。本実施形態ではＵＳＢインタフェースのポート名は“ＵＳＢＰＲＮ数字”となる。そこでポートリストＢに残っているポート名の先頭が“ＵＳＢＰＲＮ”かどうか判断し、先頭が“ＵＳＢＰＲＮ”ならＵＳＢインタフェースのポートだと判断する。ＵＳＢインタフェースのポートだと判断したらステップＳ１０９へ進む。そうでなければステップＳ１０４へ戻る。
【００６８】
ステップＳ１０９ではＵＳＢインタフェースのポートをオープンし、ステップＳ１１０ではオープンしたポートからＵＳＢプロトコルのＧＥＴ＿ＤＥＷＣＥ＿ＩＤリクエストを要求し、接続されたＵＳＢデバイスのデバイスＩＤを取得する。このデバイスＩＤは図１０に示されるような文字列である。図１０のデバイスＩＤは、デバイスの製造者が”Ｑａｎｏｎ”で製品名は”ＡＢＣ−３０００”ということを示している。
【００６９】
図１５のステップＳ１１１では、ステップＳ１０９でオープンしたＵＳＢインタフェースのポートをクローズする。
【００７０】
ステップＳ１１２はデバイスＩＤからプラグアンドプレイＩＤ（略してＰｎＰＩＤ）を作るステップである。このＰｎＰＩＤはデバイスＩＤのＭＦＧタグの名称とＭＤＬタグの名称を足したものである。図１０のデバイスＩＤの場合、ＰｎＰＩＤは”ＱａｎcmＡＢＣ−３０００”となる。
【００７１】
ステップＳ１１３では、インストーラが持つ対応プリンタリストの中にステップＳ１１２で作成したＰｎＰＩＤが記載されているか判断する。ここで、本実施形態の対応プリンタリストの構造を図１１に示す。図１１に示すように、対応プリンタリストはＰｎＰＩＤと対応するファイル名から構成される。図１１の例では、このインストーラは、”Ｑａｎｏｎ”社製の”ＡＢＣ−３００”、”ＡＢＣ−８０ｖ”、”ＡＢＣ−８００α”の３機種に対応していることがわかる。もしステップＳ１１２で作成したＰｎＰＩＤが対応プリンタリストに記載されていれば対応プリンタと判断しステップＳ１１４へ進み、記載されていなければステップＳ１０４へ戻る。
【００７２】
ステップＳ１１４では、ステップＳ１０３で表示したインストール画面１を消去し、ファイルのコピー中、ステップＳ１１５において図８のインストール画面２を表示する。ステップＳ１１６では、対応プリンタリストに記載されているファイル名を取得する。ステップＳ１１７では、ステップＳ１１６で取得したファイルをコピーする。
【００７３】
ステップＳ１１８では対応プリンタリストのファイルを全てコピーしたか判断する。全てのコピーが終了したらステップＳ１１９へ進む。コピーが終了していなければステップＳ１１７へ戻る。
【００７４】
ステップＳ１１９では、ステップＳ１１７でコピーしたファイルをプリンタドライバとしてシステムに登録する。ステップＳ１２０ではステップＳ１１５で表示したインストール画面２を消去する。
【００７５】
以上のようにして、入出力ポートが増えたかどうか判断するポート増加判定を行ない、増加したポートを介してプリンタ名を取得し、取得したプリンタ名がインストーラの対応するプリンタか判断し、対応機種と判断された場合インストール処理を行なうようにしているので、ＵＳＢインタフェースのような、ポート名があらかじめ決まっていないインタフェースでもプリンタのような機器を接続した際に最適なドライバをインストールすることができる。
【００７６】
［第３の実施形態］
本実施形態は先の実施形態２より効率的にポートの追加を判断する例である。ハードウェア構成は上記実施形態と同様であるものとし、以下、図１６と図１７のフローチャートを用いて本実施形態におけるインストーラの動作を説明する。
【００７７】
プリンタインストーラの実行ファイルの名称は前述の第２実施形態同様にＳＥＴＵＰ．ＥＸＥであり、ハードディスクに格納された状態で、あるいは前述の実施形態同様にＣＤ−ＲＯＭやフロッピーディスクなどのメディアにより供給される。
【００７８】
これらのメディア上のインストーラのバイナリ（ＳＥＴＵＰ．ＥＸＥ）がユーザにより明示的に起動されるか、あるいはウィザード経由で起動されると、図１６のステップＳ２０１においてＵＳＢドライバに関係するファイルをシステムにコピーする。ＵＳＢドライバのファイルをあらかじめコピーすることで、ユーザはファイルを指定する必要がなくなる。
【００７９】
ステップＳ２０２では図７のインストーラ画面を表示する。この画面でユーザにＵＳＢプリンタを繋ぐよう促す。ユーザがＵＳＢプリンタを繋ぐと、ステップＳ２０３において、システムから送られるメッセージを待つ処理を行なう。ここで、メッセージとはシステムからアプリケーションに対して送られる命令である。例えば画面を書きなおすメッセージやキーが押された時にメッセージが送られる。
【００８０】
ステップＳ２０４では、システムから送られたメッセージがＷＭ＿ＤＥＶＩＣＥＣＨＡＮＧＥメッセージかどうか判断する。このＷＭ＿ＤＥＶＩＣＥＣＨＡＮＧＥメッセージは、パソコンと繋がっているデバイスの状態が変更されたときに送られる。ここでメッセージがＷＭ＿ＤＥＶＩＣＥＣＨＡＮＧＥメッセージならステップＳ２０５へ進み、そうでなければステップＳ２０３へ戻る。
【００８１】
ステップＳ２０５では、ＷＭ＿ＤＥＶＩＣＥＣＨＡＮＧＥメッセージの要因を調べ、ポートが追加されたか否かを判断する。ポートが追加されたらステップＳ２０６へ進む。そうでなければステップＳ２０３へ戻る。
【００８２】
ステップＳ２０６では、追加されたポートの名称の先頭が”ＵＳＢＰＲＮ”かどうか判断する。ステップＳ２０６が肯定された場合にはステップＳ２０７へ進み、否定された場合にはステップＳ２０３へ戻る。ステップＳ２０７はステップＳ２０６でＵＳＢと判断したポートをオープンするステップである。ステップＳ２０８はオープンしたポートからＵＳＢプロトコルのＧＥＴ＿ＤＥＶＩＣＥ＿ＩＤリクエストを要求し、デバイスＩＤを取得する。このテバイスＩＤは先の実施形態２と同じものである。ステップＳ２０９はステップＳ２０７でオープンしたＵＳＢインタフェースのポートをクローズする。
【００８３】
ステップＳ２１０では、デバイスＩＤからプラグアンドプレイＩＤ（略してＰｎＰＩＤ）を作る。前述の通り、ＰｎＰＩＤはデバイスＩＤのＭＦＧタグの名称とＭＤＬタグの名称を足したものである。
【００８４】
ステップＳ２１１では、インストーラが持つ対応プリンタリストの中にステップＳ２１０で作成したＰｎＰＩＤが記載されているか否かを判断する。この対応プリンタリストは先の実施形態２と同じものである。ステップＳ２１０で作成したＰｎＰＩＤが対応プリンタリストに記載されていれば対応プリンタと判断しステップＳ２１２へ進み、記載されていなければステップＳ２０３へ戻る。
【００８５】
ステップＳ２１２では、ステップＳ２０２で表示したインストール画面１を消去し、ステップＳ２１３では図８のインストール画面２を表示する。そして、ステップＳ２１４では対応プリンタリストに記載されているファイル名を取得する。さらに、ステップＳ２１５ではステップＳ２１４で取得したファイルをコピーするステップである。
【００８６】
ステップＳ２１６は対応プリンタリストのファイルを全てコピーしたか判断し、全てコピーしたらステップＳ２１７へ進む。ステップＳ２１７はステップＳ２１５でコピーしたファイルをプリンタドライバとしてシステムに登録する。さらに、ステップＳ２１８では、ステップＳ２１３で表示したインストール画面２を消去する。
【００８７】
以上のようにして、デバイス接続時のシステムから送られるメッセージが、ＷＭ＿ＤＥＶＩＣＥＣＨＡＮＧＥメッセージかどうか判断し、さらにその内容に応じて入出力ポートが増えたかどうか判断するポート増加判定を行ない、増加したポートを介してプリンタ名を取得し、取得したプリンタ名がインストーラの対応するプリンタか判断し、対応機種と判断された場合インストール処理を行なうようにしているので、ＵＳＢインタフェースのような、ポート名があらかじめ決まっていないインタフェースでもプリンタのような機器を接続した際に最適なドライバをインストールすることができる。本実施形態ではデバイス接続時のシステムから送られるメッセージを利用しているので、先の実施形態２より効率的にポートの追加を判断することができる。
【００８８】
［第４の実施形態］
以下に、さらに異なる情報を用いて最適なプリンタを判断する例を示す。本実施形態で用いる情報はＵＳＢデバイスが必ず持っている情報なので、プリンタ以外のデバイスのインストーラに応用することも可能である。ハードウェア構成は上記実施形態２および３と同様であるものとし、図１８と図１９のフローチャートを用いて本実施形態におけるインストーラの動作を説明する。
【００８９】
プリンタインストーラの実行ファイルの名称は前述の第３実施形態同様にＳＥＴＵＰ．ＥＸＥであり、ハードディスクに格納された状態で、あるいは前述の実施形態同様にＣＤ−ＲＯＭやフロッピーディスクなどのメディアにより供給される。
【００９０】
これらのメディア上のインストーラのバイナリ（ＳＥＴＵＰ．ＥＸＥ）がユーザにより明示的に起動されるか、あるいはウィザード経由で起動されると、図１８のステップＳ３０１に進む。
【００９１】
ステップＳ３０１ではＵＳＢドライバに関係するファイルをシステムにコピーする。ＵＳＢドライバのファイルをあらかじめコピーすることで、ユーザはファイルを指定する必要がなくなる。
【００９２】
ステップＳ３０２ではシステムが持つ全てのポート名を列挙し、ポートリストＡとしてメモリに記憶する。ポートリストの構造は図９に示した通りで、ここでは図９はＬＰＴ１とＣＯＭ１とＦＩＬＥとＵＳＢＰＲＮ０１というポートが記憶されている。
【００９３】
ステップＳ３０３は図７のインストーラ画面を表示するステップである。この画面でユーザにＵＳＢプリンタを繋ぐよう促す。そして、ステップＳ３０４でポートチェックのインターバル時間になるまで待つ処理である。本実施形態では第２実施形態同様にインターバル時間を２秒とし、２秒になったらステップＳ３０５へ進む。
【００９４】
ステップＳ３０５ではシステムが持つ全てのポート名を列挙し、ポートリストＢとしてメモリに記憶する。ステップＳ３０６では、ポートリストＢからポートリストＡに存在するポートを削除するステップである。削除した結果、ポートリストＢには新たに追加されたポートが残る。もし追加されていなければ何も残らない。
【００９５】
ステップＳ３０７はポートリストＢにポートが残っているか判断するステップである。ポートが残っていなければステップＳ３０４へ戻る。また、ポートが残っていればステップＳ３０８へ進む。
【００９６】
ステップＳ３０８はポートリストＢに残っているポート名がＵＳＢインタフェースのポートか判断するステップである。本実施形態ではＵＳＢインタフェースのポート名は“ＵＳＢＰＲＮ数字”となるので、ポートリストＢに残っているポート名の先頭が“ＵＳＢＰＲＮ”かどうか判断し、先頭が“ＵＳＢＰＲＮ”ならＵＳＢインタフェースのポートであると判断する。ＵＳＢインタフェースのポートの場合はステップＳ３０９へ進み、そうでなければステップＳ３０４へ戻る。
【００９７】
ステップＳ３０９はＵＳＢインタフェースのポートをオープンする。ステップＳ３１０では、オープンしたポートからＵＳＢプロトコルを用いてＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲリクエストを要求し、デバイスデスクリプタを取得する。このデバイスデスクリプタはデバイスの基本的な情報を格納した構造体であり、ＵＳＢデバイスに限らず全てのＷｉｎｄｏｗｓデバイスファイルに共通するデータである。デバイスデスクリプタの構造とその内容の例を図１２に示す。図１２において、デバイスデスクリプタのベンダーＩＤは製造者を意味するＩＤで、プロダクトＩＤは製品を区別するＩＤである。図１２の場合ベンダーＩＤは０４Ａ９でプロダクトＩＤは００００となっている。
【００９８】
ステップＳ３１１では、ステップＳ３０９でオープンしたＵＳＢインタフェースのポートをクローズする。そして、ステップＳ３１２では、ステップＳ３１０で取得したデバイスデスクリプタからベンダーＩＤとプロダクトＩＤを取り出す。
【００９９】
ステップＳ３１３では、インストーラが持つ対応プリンタリストの中にステップＳ３１２で取り出したベンダーＩＤとプロダクトＩＤが記載されているか判断する。本実施形態のインストーラが有する対応プリンタリストの構造を図１３に示す。対応プリンタリストはベンダーＩＤとプロダクトＩＤと対応するファイル名から構成される。もしステップＳ３１２で作成したベンダーＩＤとプロダクトＩＤが対応プリンタリストに記載されていれば対応プリンタと判断しステップＳ３１４へ進み、記載がなければステップＳ３０４へ戻る。
【０１００】
ステップＳ３１４はステップＳ３０３で表示したインストール画面１を消去する。そして、ステップＳ３１５において図８のインストール画面２を表示する。インストール画面２はファイルのコピー中表示される。さらに、ステップＳ３１６は対応プリンタリストに記載されているファイル名を取得し、ステップＳ３１７はステップＳ３１６で取得したファイルをコピーする。
【０１０１】
ステップＳ３１８は対応プリンタリストのプリンタのデバイスドライバのファイルを全てコピーしたか判断する。全てのコピーが終了したらステップＳ３１９へ進み、そうでなければステップＳ３１７に戻る。そして、ステップＳ３１９ではステップＳ３１７でコピーしたファイルをプリンタドライバとしてシステムに登録し、ステップＳ３２０ではステップＳ３１５で表示したインストール画面２を消去する。
【０１０２】
以上のようにして、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲプロトコルを用いてデバイスデスクリプタを取得し、デバイス名（プリンタ名）を取得し、入出力ポートが増えたかどうか判断するポート増加判定を行ない、増加したポートを介してプリンタ名を取得し、取得したプリンタ名がインストーラの対応するプリンタか判断し、対応機種と判断された場合インストール処理を行なうようにしているので、ＵＳＢインタフェースのような、ポート名があらかじめ決まっていないインタフェースでもプリンタのような機器を接続した際に最適なドライバをインストールすることができる。
【０１０３】
本実施形態はＵＳＢインタフェースに限定したものであるが、デバイスドライバがインストールされるとポートが追加されるインタフェースであれば、どのようなインタフェースを用いても実施できる利点がある。
【０１０４】
以上では、ＯＳとしてＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓを考えたが、任意のＯＳにおいてプリンタなどのデバイスを特定するのに類似のメカニズムを用いている場合は、上記の技術を応用できるのはいうまでもない。
【０１０５】
［第５の実施形態］
本実施形態では、ＵＳＢポート、イーサネットなどのインタフェースを介して複数のプリンタなどの外部機器を接続する場合に、自分が使用したい外部機器を容易に確認できるようにするための構成を例示する。
【０１０６】
本実施形態では、ホストで選んだプリンタに「確認コマンド」を送信し、それにプリンタを応答させることにより自分が使用したいプリンタを容易に確認できるようにする。より具体的には、「確認コマンド」を受けたプリンタは可聴音を発生し、これにより、ユーザがどのプリンタから音が鳴ったか判断する構成である。これにより、ホストで表示しているプリンタと実際のプリンタとの対応付けを確認することができる。
【０１０７】
最初に本実施形態を実現するためのハードウェア構成を図２０を用いて説明する。図２０は、図１あるいは図６と同等の図面で、同一ないし相当する部材には同一符号を付してある。プリンタインタフェースＨ０７はここでもＵＳＢポートのような複数台のプリンタＨ８１、Ｈ８２…を同時接続できるようなポートであるものとする。それ以外の構成は図１あるいは図６と同じであるので、ここでは詳細な説明を省略する。
【０１０８】
本実施形態においては、コンピュータ（ホスト）からプリンタＨ８１、Ｈ８２…に「確認コマンド」を送信するが、その際に図２１のフローチャートのような制御手順と、図２２のようなダイアログを用いる。
【０１０９】
図２１の制御手順は、ＣＰＵ  Ｈ０１が実行可能なプログラムとしてハードディスクに格納された状態で、あるいは前述の実施形態同様にＣＤ−ＲＯＭやフロッピーディスクなどのメディアにより供給される。より具体的には、このようなプログラムはプリンタドライバプログラムの一部として供給し、コントロールパネルやプリンタ制御用のメニューやアイコンから、あるいはアプリケーションのプリントダイアログ経由で起動されるものとする。メニューやアイコンのタイトルは「プリンタ確認」「プリンタ選択」などのものが考えられる。
【０１１０】
上記のようなメニューやアイコンにより起動されると、同プログラムは、図２１のステップＳ０１において、ホストと接続しているプリンタ名をリスト表示する。図２２の真ん中左側がホストと接続しているプリンタ名をリストするための表示領域で、プリンタ数が多ければこの領域はスクロール可能に制御される。プリンタ名は、図１２に示したようなＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲプロトコルを用いて取得したプロダクト名文字列を用いることができる他、同一のプリンタが存在する場合にはさらにこのプロダクト名文字列の後に自動的に番号を付与して生成した文字列を用いたり、あるいはユーザが任意に設定したニックネームを用いることも考えられる。
【０１１１】
ステップＳ０２では、ユーザからのマウスクリック待ちを行なう。ここでは、ユーザは所望のプリンタ名をマウスでクリックすることにより、選択し、「確認」ボタンを押下することにより確認コマンドの送信を行なう。また、「選択」ボタンを押下することにより印刷に用いるプリンタを選択することができる。
【０１１２】
クリックイベントが発生した場合には、ステップＳ０３において、図２２のダイアログのプリンタ名の部分がクリックされたか否かを判断する。プリンタ名がクリックされると、ステップＳ０４とステップＳ０５が実行される。すなわち、ステップＳ０４は今まで反転表示していたプリンタ名を元に戻し、ステップＳ０５では新たにクリックされたプリンタ名を反転表示する。
【０１１３】
ステップＳ０６、Ｓ０８、Ｓ１０はそれぞれ図２２のダイアログの「確認」、「キャンセル」、「選択」の各ボタンのクリックを検出するものである。
【０１１４】
まず、ステップＳ０６では、図２２の「確認」ボタンが押されたか否か判断し、「確認」ボタンが押されると、ステップＳ０７において、現在反転表示中のプリンタに対して確認コマンドを送る。この確認コマンドのフォーマットは任意であり、本実施形態ではプリンタのスピーカなどを用いて可聴音を発生させることができればどのようなものであってもよい。たとえばそのプリンタのＰＤＬ（ページ記述言語）などに対応するコマンド（警告音発生のためのコマンドなど）があればそれを用いることができる。プリンタはこのコマンドを受信するとビープ音を鳴らす。
【０１１５】
ステップＳ０８で図２２の「キャンセル」ボタンが押された場合は、ステップＳ０９において全てのプリンタ選択を無効としダイアログの処理を終了する。ステップＳ１０で「選択」ボタンが押された場合は、ステップＳ１１で現在反転表示しているプリンタを新たに選択したプリンタとしてダイアログの処理を終了する。ステップＳ１０で「選択」ボタンが押されていなければステップＳ０２へ戻り新たなマウスクリックを待つ。
【０１１６】
一方、プリンタ側では、図２３のフローチャートのような処理を行なう。すなわち、ステップＳ０１ではコマンドの受信待ちを行ない、コマンドを受信した場合はステップＳ０２で受信したコマンドが図２１のステップＳ０７で送信された確認コマンドかどうかを判断し、確認コマンドだった場合、ステップＳ０３でビープ音を鳴らす。
【０１１７】
ステップＳ０４以後は本来のプリンタの処理であり、受信コマンドが印刷コマンドであれば対応する印刷処理を行なう（ステップＳ０５）。
【０１１８】
このようにして、ユーザはダイアログ（図２２）を用いてプリンタのリストを調べ、目的のプリンタに確認コマンドを送信してビープ音を発生させることができるので、自分が使用したいプリンタを容易に確認することができる。
【０１１９】
上記の技術は、プリンタに限らず、ＵＳＢポート、イーサネットなどのインタフェースを介して複数の外部機器（たとえばスキャナなどの入力機器であってもよい）を接続する場合に、自分が使用したい外部機器を容易に確認できるようにするために用いることができるものである。
【０１２０】
なお、本実施形態では確認コマンドとして音を鳴らすコマンドを用いたが、本発明の本質は印刷と異なる動作をするコマンドをプリンタに実行させることで、ユーザが印刷先のプリンタを確認できるように報知することであるから、確認コマンドに応じてプリンタで実行させる動作は可聴音の発生だけではなく、例えばＬＥＤを点滅させるような動作であってもよい。
【０１２１】
［第６の実施形態］
上記の第５実施形態とは逆に、外部機器（プリンタ）側で操作を行なうことにより、その外部機器を出力（あるいは入力）に用いるべく「選択」状態とすることも考えられる。
【０１２２】
たとえば、図２６に示すように、外部機器としてのプリンタ（図２０のＨ８１あるいはＨ８２に相当する）に選択ボタンＢ０２を設けておき、ユーザがそのプリンタを出力に用いたい場合、この選択ボタンＢ０２を押下する。この選択ボタンＢ０２の押下は所定のプロトコルにより、ホスト側に伝達され、これを受信したホスト側ではそのプリンタを出力に用いるべく「選択」状態に制御する。なお、図２６のボタンＢ０１は電源ボタンである。
【０１２３】
本実施形態のホスト（コンピュータ）側のハードウェア構成は第５実施形態と同一でよい。本実施形態においては、図２４のフローチャートのような制御手順と図２５のようなダイアログを用いる。図２４のプログラムは、第５実施形態と同様の契機で起動すればよい。図２４の処理の全体構成は図２１とほぼ同様であるので、以下では図２１の処理と同様の細部については説明を省略する。
【０１２４】
図２４のステップＳ０１では、現在接続しているプリンタを図２５のダイアログに表示する。
【０１２５】
ステップＳ０２ではマウス入力を待ち、マウス入力があった場合はまずステップＳ０３でステップＳ０１で表示した全プリンタのステータスを得る。このステータスには図２６の選択ボタンＢ０２が押されているか否かを示す「選択ステータス」が含まれているものとする。前述のように、この選択ボタンＢ０２の押下は所定のプロトコルによりホスト側に伝達される。この選択ステータスが１なら当該のプリンタで選択ボタンＢ０２が押されたことを意味している。
【０１２６】
ステップＳ０４では「選択ステータス＝１」のステータスを返したプリンタがあるかを判断し、選択ステータス＝１のプリンタがあればステップＳ０５へ進み、今まで反転表示していたプリンタ名の表示を元に戻し、さらにステップＳ０６で選択ステータス＝１となっていたプリンタ名の表示を反転する。
【０１２７】
ステップＳ０７はステップＳ０２で得たマウス入力情報からマウスクリックが発生したか判断し、マウスクリックが発生したらステップＳ０８へ進み、マウスクリックが発生していなければステップＳ０２へ戻る。
【０１２８】
ステップＳ０８は図２５のダイアログのプリンタ名がクリックされたか判断し、クリックされていればステップＳ０９へ進み、クリックされていなければステップＳ１１へ進む。
【０１２９】
ステップＳ０９では、今まで反転表示していたプリンタ名の表示を元に戻し、ステップＳ１０ではマウスクリックされたプリンタ名の表示を反転するステップである。すなわち、ここでは図２１同様に手動操作によりプリンタの選択を行なえるようにしている。
【０１３０】
ステップＳ１１では、図２５のダイアログの「キャンセル」ボタンが押されたかを判断する。同ボタンが押されていればステップＳ１２へ進み、プリンタの選択を全て無効とし、ダイアログの処理を終了する。
【０１３１】
ステップＳ１３では、図２５の「選択」ボタンが押されたか否かを判断し、押されていなければステップＳ０２へ戻り新たなマウス入力を受け付ける。一方、確認ボタンが押された場合はステップＳ１４において現在反転表示しているプリンタを新たに選択したプリンタとしてダイアログの処理を終了する。
【０１３２】
プリンタ側では、図２７のフローチャートのような処理を行なうことにより選択ステータスを決定することができる。図２７は選択ステータスに関する処理を行うタスクを説明するものであり、プリンタ本来の処理は別のタスクとして動作させればよいので、ここではプリンタ本来の処理については説明を省略する。
【０１３３】
図２７のステップＳ０１はプリンタの操作ボタンの押下を受け付け、ステップＳ０２では選択ボタン（図２６のＢ０２）が押されたか判断する。選択ボタンが押された場合ステップＳ０３へ進み、選択ステータスを１に設定し、選択ボタンが押されていない場合にはステップＳ０４において選択ステータスを０に設定する。プリンタはこのステータスを保持し、ステータス要求があったときに所定のプロトコルを用いてホストヘ送信すればよい。
【０１３４】
このようにして、ユーザはダイアログ（図２５）を用いてプリンタのリストを調べた時、プリンタ側で選択ボタンを押下していれば既にそのプリンタが反転表示状態となっているので、単にその選択状態を「選択」ボタンにより追認するだけで自分が使用したいプリンタを容易に確認し、選択することができる。
【０１３５】
本実施形態の技術も、プリンタに限らず、ＵＳＢポート、イーサネットなどのインタフェースを介して複数の外部機器（たとえばスキャナなどの入力機器であってもよい）を接続する場合に、自分が使用したい外部機器を容易に確認できるようにするために用いることができるものである。
【０１３６】
本実施形態では、専用の「選択」ボタンをプリンタに設ける構成を例示したが、例えばオンラインボタンや他の既存の操作ボタン、あるいは複数の既存の操作ボタンの押下の組合せを「選択」操作に用いるようにしてもかまわない。
【０１３７】
［第７の実施形態］
あるいは、本実施形態はプリンタの電源を入れるとホストのプリンタドライバで自動的にそのプリンタを印刷先として「選択」させることも考えられる。本実施形態のハードウェア構成は実施形態１と同じでよい。
【０１３８】
本実施形態においては、図２８のフローチャートのような制御手順と図２５のダイアログ（第６実施形態と同じ）を用いる。図２８のプログラムは、第５、６実施形態と同様の契機で起動すればよい。図２８の処理の全体構成は図２１、２４とほぼ同様であるので、以下では図２１、２４の処理と同様の細部については説明を省略する。
【０１３９】
図２８のステップＳ０１では現在接続しているプリンタを図２５のダイアログで表示し、ステップＳ０２でマウス入力を待つ。
【０１４０】
ステップＳ０３では新たに接続されたプリンタがあるかどうか判断する。ここで、「接続」とはＵＳＢバスや、イーサネットなどのネットワーク上でプリンタが見えるようになればよい。そのためＵＳＢバスや、イーサネットなどを介して接続されたプリンタが電源オフの状態から電源オンの状態に変わったときもこのステップで検出できる。具体的には、バスあるいはネットワーク上のプリンタのアドレスを監視したり、図２６の電源ボタンＢ０１などにより電源が投入された時にプリンタ側から明示的な信号を送信するようにしても、新たに「接続」されたプリンタがあるかどうかを判断することができる。
【０１４１】
新たに接続されたプリンタがあった場合はステップＳ０４において、今までダイアログ上で反転表示していたプリンタ名の表示を元に戻し、ステップＳ０５で新たに「接続」されたプリンタのプリンタ名の表示を反転する。
【０１４２】
ステップＳ０６では、ステップＳ０２で得たマウス入力情報からマウスクリックが発生したか判断し、マウスクリックが発生したらステップＳ０７へ進み、発生していなければステップＳ０２へ戻る。
【０１４３】
ステップＳ０７では図２５のダイアログのプリンタ名がクリックされたかを判断し、クリックされていればステップＳ０８へ進み、クリックされていなければステップＳ１０へ進む。
【０１４４】
ステップＳ０８では今まで反転表示していたプリンタ名の表示を元に戻し、ステップＳ０９ではマウスクリックされたプリンタ名の表示を反転する。
【０１４５】
ステップＳ１０は図２５のダイアログの「キャンセル」ボタンが押されたかを判断し、押されていればステップＳ１１へ進む。ステップＳ１１ではプリンタの選択を全て無効とし、ダイアログの処理を終了する。
【０１４６】
ステップＳ１２では図２５のダイアログの「選択」ボタンが押されたかどうかを判断し、押されていなければステップＳ０２へ戻り新たなマウス入力を待つ。確認ボタンが押された場合にはステップＳ１３において現在反転表示しているプリンタを新たに選択したプリンタとしてダイアログの処理を終了する。
【０１４７】
このようにして、ユーザはダイアログ（図２５）を用いてプリンタのリストを調べた時、電源投入したプリンタが反転表示状態となっているので、単にその選択状態を「選択」ボタンにより追認するだけで自分が使用したいプリンタを容易に確認し、選択することができる。
【０１４８】
本実施形態の技術も、プリンタに限らず、ＵＳＢポート、イーサネットなどのインタフェースを介して複数の外部機器（たとえばスキャナなどの入力機器であってもよい）を接続する場合に、自分が使用したい外部機器を容易に確認できるようにするために用いることができるものである。
【０１４９】
【発明の効果】
以上の説明から明らかなように、本発明によれば、周辺機器デバイスを当該機器のデバイスドライバ経由で制御することにより当該機器に対する入出力を行なうとともに、デバイスドライバの登録に関するレジストリ情報がレジストリ情報記憶手段に登録される電子機器、その制御方法、およびその制御プログラムを格納したコンピュータ読取可能な記憶媒体において、所定の周辺機器のデバイスドライバをシステムにインストールする際、登録すべきデバイスドライバに対応したデバイスＩＤ情報を前記レジストリ情報記憶手段で検索し、検索されたレジストリ情報の一部が不明となっていた場合、当該レジストリ情報を削除する構成を採用しているので、明示的ドライバを削除するような操作を必要とせず、また、高額なユーザサポートを必要とせずに容易に自分自身でＵＳＢデバイスのインストールを行なうことができる、という優れた効果がある。
【０１５０】
あるいは、複数の周辺機器を同時接続可能な入出力ポートを介して周辺機器デバイスを接続し、周辺機器デバイスを当該機器のデバイスドライバ経由で制御することにより当該機器に対する入出力を行なう電子機器、その制御方法、およびその制御プログラムを格納したコンピュータ読取可能な記憶媒体において、前記入出力ポートが増加したかどうか判断し、前記入出力ポートが増加した場合に増加したポートを介してそのポートに対応する周辺機器のデバイス名を取得し、取得したデバイス名が特定の対応機種を示している場合に当該周辺機器のデバイスドライバのインストール処理を行なう構成を採用することにより、ＵＳＢインタフェースのように、ポート名があらかじめ決まっておらず、複数の周辺機器を同時接続可能な入出力ポートでも、プリンタのような機器を接続した際に最適なドライバをインストールすることができる、という優れた効果がある。
【０１５１】
あるいは、複数の周辺機器を同時接続可能な入出力ポートを介して周辺機器デバイスを接続して当該機器に対する入出力を行なう電子機器、その制御方法、およびその制御プログラムを格納したコンピュータ読取可能な記憶媒体において、ユーザが入出力先として選択すべき周辺機器を確認するための確認コマンドを前記入出力ポート経由で送信し、該確認コマンドを受信した周辺機器側において該確認コマンドの受信をユーザに報知する構成を採用することにより、ＵＳＢインタフェースのように、ポート名があらかじめ決まっておらず、複数の周辺機器を同時接続可能な入出力ポートでも、ユーザは自分の使用すべきプリンタなどの周辺機器を容易に特定することができる、という優れた効果がある。
【０１５２】
あるいは、複数の周辺機器を同時接続可能な入出力ポートを介して周辺機器デバイスを接続して当該機器に対する入出力を行なう電子機器、その制御方法、およびその制御プログラムを格納したコンピュータ読取可能な記憶媒体において、前記周辺機器の操作または動作状態に応じて定まるステータス情報を前記入出力ポートを介して前記周辺機器デバイスから受信し、受信したステータス情報に応じて入出力先として周辺機器を選択する構成を採用することにより、周辺機器の操作または動作状態、たとえば、周辺機器の操作手段の操作状態や主電源の投入状態などに応じて定まるステータスを用いて自分が使用したいプリンタなどの周辺機器を容易に確認し、選択することができる、という優れた効果が得られる。
【図面の簡単な説明】
【図１】本発明を実施可能なパーソナルコンピュータのハードウェア構成を示したブロック図である。
【図２】本発明によるデバイスドライバのインストール処理に用いられるファイルの構成を示した説明図である。
【図３】図２のＵＳＢＤＥＶ．ＩＮＦの内容を示した説明図である。
【図４】レジストリエディタによりシステムのレジストリをオープンした状態を示した説明図である。
【図５】本発明の第１実施形態における制御手順を示したフローチャート図である。
【図６】本発明を実施可能なパーソナルコンピュータのハードウェア構成を示したブロック図である。
【図７】本発明において表示されるインストーラ画面１を示した説明図である。
【図８】本発明において表示されるインストーラ画面２を示した説明図である。
【図９】本発明において用いられるポートリストを示した説明図である。
【図１０】本発明において用いられるデバイスＩＤを示した説明図である。
【図１１】本発明のインストーラプログラムが有する対応プリンタリストを示した説明図である。
【図１２】本発明において用いられるデバイスディスクリプタを示した説明図である。
【図１３】本発明のインストーラプログラムの異なる対応プリンタリストを示した説明図である。
【図１４】本発明の第２実施形態における制御手順を示したフローチャート図である。
【図１５】本発明の第２実施形態における制御手順を示したフローチャート図である。
【図１６】本発明の第３実施形態における制御手順を示したフローチャート図である。
【図１７】本発明の第３実施形態における制御手順を示したフローチャート図である。
【図１８】本発明の第４実施形態における制御手順を示したフローチャート図である。
【図１９】本発明の第４実施形態における制御手順を示したフローチャート図である。
【図２０】本発明を実施可能なパーソナルコンピュータのハードウェア構成を示したブロック図である。
【図２１】本発明の第５実施形態における制御手順を示したフローチャート図である。
【図２２】本発明において用いられるプリンタ選択ダイアログを示した説明図である。
【図２３】プリンタ側の制御を示したフローチャート図である。
【図２４】本発明の第６実施形態における制御手順を示したフローチャート図である。
【図２５】本発明において用いられるプリンタ選択ダイアログを示した説明図である。
【図２６】選択ボタンを設けたプリンタの構成を示した説明図である。
【図２７】プリンタ選択ステータスを示したフローチャート図である。
【図２８】本発明の第７実施形態における制御手順を示したフローチャート図である。
【符号の説明】
Ｈ０１  ＣＰＵ
Ｈ０２  キーボード
Ｈ０３  表示器
Ｈ０４  ＲＯＭ
Ｈ０５  ＲＡＭ
Ｈ０６  ハードディスク
Ｈ０７  ＵＳＢインタフェース
Ｈ０８  ＵＳＢデバイス
【図１】
0004612761.tif 000002
【図２】
0004612761.tif 000003
【図３】
0004612761.tif 000004
【図４】
0004612761.tif 000005
【図５】
0004612761.tif 000006
【図６】
0004612761.tif 000007
【図７】
0004612761.tif 000008
【図８】
0004612761.tif 000009
【図９】
0004612761.tif 000010
【図１０】
0004612761.tif 000011
【図１１】
0004612761.tif 000012
【図１２】
0004612761.tif 000013
【図１３】
0004612761.tif 000014
【図１４】
0004612761.tif 000015
【図１５】
0004612761.tif 000016
【図１６】
0004612761.tif 000017
【図１７】
0004612761.tif 000018
【図１８】
0004612761.tif 000019
【図１９】
0004612761.tif 000020
【図２０】
0004612761.tif 000021
【図２１】
0004612761.tif 000022
【図２２】
0004612761.tif 000023
【図２３】
0004612761.tif 000024
【図２４】
0004612761.tif 000025
【図２５】
0004612761.tif 000026
【図２６】
0004612761.tif 000027
【図２７】
0004612761.tif 000028
【図２８】
0004612761.tif 000029