(57)【要約】【課題】ユーザがデバイスを装置に接続したままでも、ドライバ再インストール処理が開始されることなく、デバイスドライバを削除することを目的とする。【解決手段】オペレーティングシステム上で動作するデバイスドライバを削除する削除手段を有し、削除手段は、デバイスドライバを削除する前に、オペレーティングシステムに対して、デバイスドライバに係るデバイスをソフトウェア的に取り外すための命令を発行することによって課題を解決する。【選択図】図１
2008015912.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム上で動作するデバイスドライバを削除する削除手段を有し、
前記削除手段は、前記デバイスドライバを削除する前に、前記オペレーティングシステムに対して、前記デバイスドライバに係るデバイスをソフトウェア的に取り外すための命令を発行することを特徴とする情報処理装置。
【請求項２】
前記デバイスをソフトウェア的に取り外すための命令とは、
前記オペレーティングシステムが管理している情報処理装置に係るデバイスに関する情報から、前記命令に係るデバイスに関する情報を削除する命令であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
オペレーティングシステム上で動作するデバイスドライバを削除する削除手段を有し、
前記削除手段は、前記デバイスドライバを削除する前に、前記デバイスドライバに係るデバイスの電源をオフにすることを特徴とする情報処理装置。
【請求項４】
前記デバイスは、情報処理装置と接続された周辺装置であることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記削除手段は、削除対象のデバイスドライバが使用中か否かを判断し、使用中でないと判断すると、デバイスドライバの削除に係る処理を行うことを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記命令により前記デバイスがソフトウェア的に取り外された場合は、プラグアンドプレイ処理の起動が抑制されることを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
情報処理装置におけるデバイスドライバ削除方法であって、
オペレーティングシステム上で動作するデバイスドライバを削除する削除ステップを有し、
前記削除ステップは、前記デバイスドライバを削除する前に、前記オペレーティングシステムに対して、前記デバイスドライバに係るデバイスをソフトウェア的に取り外すための命令を発行することを特徴とするデバイスドライバ削除方法。
【請求項８】
前記デバイスをソフトウェア的に取り外すための命令とは、
前記オペレーティングシステムが管理している情報処理装置に係るデバイスに関する情報から、前記命令に係るデバイスに関する情報を削除する命令であることを特徴とする請求項７に記載のデバイスドライバ削除方法。
【請求項９】
情報処理装置におけるデバイスドライバ削除方法であって、
オペレーティングシステム上で動作するデバイスドライバを削除する削除ステップを有し、
前記削除ステップは、前記デバイスドライバを削除する前に、前記デバイスドライバに係るデバイスの電源をオフにすることを特徴とするデバイスドライバ削除方法。
【請求項１０】
前記命令により前記デバイスがソフトウェア的に取り外された場合は、プラグアンドプレイ処理の起動が抑制されることを特徴とする請求項７乃至９の何れか１項に記載のデバイスドライバ削除方法。
【請求項１１】
請求項７乃至１０の何れか１項に記載のデバイスドライバ削除方法をコンピュータに実行させることを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びデバイスドライバ削除方法に関する。
【背景技術】
【０００２】
スキャナ、プリンタ、ＭＦＰ等のデバイスのユーザは、それらのデバイスをコンピュータに接続すると共に、デバイスに対応するデバイスドライバをコンピュータにインストールし、各デバイスを使用する。ところで、デバイスを買い換えた場合や廃棄する場合、デバイスに対応するデバイスドライバは最早不要であるので、コンピュータのハードディスク容量を無駄にしないためにも、ユーザは、アンインストールすることが一般的である。
【０００３】
【特許文献１】特開２００５−１１５４４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ユーザがデバイスドライバをアンインストールする際、デバイスをコンピュータから切り離している状態なのか、接続したままの状態なのかはユーザ次第であるので、アンインストーラは両方の場合に問題なく機能する必要がある。
【０００５】
プリンタ、スキャナ又はＭＦＰ用ドライバのアンインストーラの多くは、オペレーティングシステム（以下、ＯＳと呼ぶ）が提供する複数のアプリケーションプログラムインタフェース（以下、ＡＰＩと呼ぶ）を用いている。当該ＡＰＩを用いて、アンインストーラは、ドライバＩＮＦファイルからＨａｒｄｗａｒｅ  ＩＤを取得する。そして、当該ＩＤに基づき削除対象のデバイスを特定し、ドライバ削除を行っている。
【０００６】
殆どのＯＳ上では、パーソナルコンピュータ（以降、ＰＣと略す場合がある）へのデバイスの接続状態に係らず、このようなドライバ削除処理は正常に行われている。しかし、一部のＯＳにおいては、一連のドライバ削除処理の最後に行われる、デバイスインフォメーションセットを削除するためのＡＰＩコールのタイミングで、デバイスツリー全体が再列挙されてしまう。そのため、ＰＣに接続したままのデバイスがＯＳのプラグアンドプレイ機能によって検出され、削除したはずのドライバを再インストールする処理が開始される問題がある。
【０００７】
従来、この問題を回避するためには、ユーザが予めプリンタの電源をオフにしておくか、プリンタとＰＣとを接続しないでおくしか方法がなかった。
【０００８】
本発明はこのような問題点に鑑みなされたもので、ユーザがデバイスを装置に接続したままでも、ドライバ再インストール処理が開始されることなく、デバイスドライバを削除することを目的とする。
【課題を解決するための手段】
【０００９】
そこで、本発明は、オペレーティングシステム上で動作するデバイスドライバを削除する削除手段を有し、前記削除手段は、前記デバイスドライバを削除する前に、前記オペレーティングシステムに対して、前記デバイスドライバに係るデバイスをソフトウェア的に取り外すための命令を発行することを特徴とする。
【００１０】
係る構成とすることにより、前記命令を受け取ったＯＳは管理している削除対象のデバイスドライバに係るデバイスの情報を削除する。したがって、デバイスツリー全体を再列挙する際にも、削除対象のデバイスドライバに係るデバイスは含まれない。つまり、再列挙の対象にされない。よって、ユーザがデバイスを装置に接続したままでも、ドライバ再インストール処理が開始されることなく、デバイスドライバを削除することができる。
【００１１】
また、本発明は、オペレーティングシステム上で動作するデバイスドライバを削除する削除手段を有し、前記削除手段は、前記デバイスドライバを削除する前に、前記デバイスドライバに係るデバイスの電源をオフにすることを特徴とする。
【００１２】
係る構成とすることにより、ユーザがデバイスを装置に接続したままでも、装置が自動的にデバイスの電源を削除するので、ドライバ再インストール処理が開始されることなく、デバイスドライバを削除することができる。
【００１３】
また、本発明は、デバイスドライバ削除方法、プログラム及び記憶媒体としてもよい。
【発明の効果】
【００１４】
本発明によれば、ユーザがデバイスを装置に接続したままでも、ドライバ再インストール処理が開始されることなく、デバイスドライバを削除することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施例について図面に基づいて説明する。なお、以下で引用される関数（情報）の内、特に詳しい説明を付加していないものに関しては、２００６年４月２７日現在、Ｍｉｃｒｏｓｏｆｔ  Ｄｅｖｅｌｏｐｅｒ  Ｎｅｔｗｏｒｋ  （ＭＳＤＮ）のサイトで公開されている情報である。よって、必要以上の説明は省略する。なお、ＭＳＤＮのサイトのＵＲＬは、ｈｔｔｐ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｌｉｂｒａｒｙ／ｄｅｆａｕｌｔ．ａｓｐである。また、以下において、ＵＳＢとはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略であり、双方向通信が可能な公知のインタフェースであるので、その詳細な説明は省略する。
【００１６】
＜第１の実施の形態＞
図１は、情報処理装置及び周辺装置からなる周辺装置制御システムの一実施形態におけるシステムの構成部分を表すブロック図である。図１において、１は、情報処理装置であり、一般的なＰＣで構成される。ＰＣ１は、後述する図２に示すようなハードウェアで構成され、ＯＳ２がインストールされている。
【００１７】
３は、ＭＦＰ（多機能複合装置）であり、カラースキャナやカラーインクジェットプリンタで構成され、本実施形態における周辺装置の一例である。なお、本実施形態における周辺装置としては、プリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ、及びこれらの複合機能を備える装置等であってもよい。ＭＦＰ３は、後述する図３に示すようなハードウェアで構成され、ＰＣ１とＵＳＢインタフェース９を介して接続されており、互いに双方向通信が可能である。
【００１８】
３０と６０とはアプリケーションであり、実行可能な形式のファイル（＊．ＥＸＥ等）で構成される。本実施形態のアプリケーションの一例として、アプリケーション３０は、プリンタドライバやスキャナドライバ等のドライバを削除する為のアンインストーラである。また、アプリケーション６０は、プリンタドライバやスキャナドライバ等のドライバをアップグレードする為のアップデータである。
【００１９】
５０は、後述する図４で詳述するプリンタドライバである。７０は、プリンタドライバ５０の情報ファイル（以下、ＩＮＦと呼ぶ）である。
【００２０】
図２は、ＰＣ１のハードウェア構成の一例を表すブロック図である。ＰＣ１は、図２に示すようなハードウェア構成を有する。つまり、ＰＣ１は、ランダムアクセスメモリ部（ＲＡＭ１２０１）、記憶部であるハードディスクドライブ部（ＨＤＤ１２０２）、入力部の一例であるキーボード部（ＫＢＤ１２０３）、を構成として有する。また、ＰＣ１は、制御部であるＣＰＵ１２０４、表示部の一例である表示用ディスプレイ（ＬＣＤ１２０５）、通信制御部の一例であるネットワークボード（ＮＢ１２０７）、以上のＰＣ１の構成要素を互いに接続するバス１２０６、を構成として有する。
【００２１】
なお、記憶部は、可搬性ＣＤ−ＲＯＭ又は内部据付のＲＯＭ等であってもよい。図１に示すＰＣ１の各モジュール（アプリケーション３０、６０及びプリンタドライバ５０）は、ＨＤＤ１２０２に記憶され、必要に応じてＲＡＭ１２０１に読み出されてＣＰＵ１２０４により実行される。これにより、ＣＰＵ１２０４が、図１に示す各モジュールの機能を実現する。
【００２２】
図３は、ＭＦＰ３のハードウェア構成を表すブロック図である。ＭＦＰ３は図３に示すようなハードウェア構成を有する。図３において、１５は、マイクロプロセッサ等から構成されるＣＰＵであり、ＭＦＰ３の中央処理装置として、ＲＯＭ１６に記憶されているプログラムに従って、ＲＡＭ１７、通信部１８、記録部１９、読取り部２０を制御する。なお、図３において、双方向矢印は、アドレス・データバスを表している。
【００２３】
ＲＯＭ１６にはプリンタドライバ５０の制御に従ってＭＦＰ３が記録（印刷）処理や、状態をＰＣ１へ伝える処理を行うプログラムが記憶されている。ＲＡＭ１７は、主にＰＣ１から送られて、それを基に記録部１９によって印刷される印字データが一時的に記憶される。
【００２４】
通信部１８にはＵＳＢインタフェース９用の接続ポートが含まれており、ＵＳＢの通信を制御する。記録部１９は、インクジェット方式の記録ヘッド、各カラーインク、キャリッジ、記録紙搬送機構等から構成される記録ユニットと、前記印字データを基に前記記録ヘッドにて印字用パルスを発生させる為のＡＳＩＣ等から構成される電気回路と、から構成される。
【００２５】
印刷可能なアプリケーション上での印刷操作によって、アプリケーションで開かれているファイルの表示内容（画像データ）が、ＥＭＦ形式のスプールファイルとしてＰＣ１のＨＤＤ１２０２に一時的に格納される。そして、プリンタドライバ５０を介してＭＦＰ３制御用コマンドを含む印字データに変換された後、ＵＳＢインタフェース９を介してＭＦＰ３に送られる。ＭＦＰ３にて受信された印字データは、記録部１９によって印字用パルスに変換されて、記録紙上に印刷される。
【００２６】
読取り部２０は、ＣＣＤ、読取り用光源等から構成される読取りユニットと、ＣＣＤで読取られた画像データを処理するＡＳＩＣ等から構成される電気回路と、から構成される。ＰＣ１からの制御コマンドにより制御され、読取り部２０で読取られた画像データは、ＵＳＢインタフェース９を介してＰＣ１に送られる。
【００２７】
図４は、ＰＣ１におけるプリンタドライバの構成を表す図である。図４において、５０は、ＰＣ１にインストールされているプリンタドライバであり、３３〜３８の複数のモジュールから構成される。３０は、印刷可能なアプリケーション、読取り可能なアプリケーション、ドライバをインストールするインストーラ、ドライバを削除するアンインストーラ、ドライバをアップグレードするアップデータ等である。
【００２８】
３１は、Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ（ＧＤＩ）であり、ＯＳの一部である。３２は、プリンタキューであり、スプーラ４０の一部として構成され、印刷ジョブがキューイングされる。キューイングされた印刷ジョブは、プリンタキューフォルダ（ここでは説明を省略する）に表示される。
【００２９】
３３は、プリントプロセッサであり、印刷レイアウトの変更や印刷画像の特殊処理が行われる。３４は、グラフィックスドライバであり、プリンタドライバの画像処理のコアとして、ＧＤＩ３１から送られて来る描画命令を基に印刷用の画像処理を行い、印刷制御コマンドを作成する。
【００３０】
３５は、ＵＩモジュールであり、プリンタドライバのユーザインタフェースの提供及び制御を行う。３６は、ランゲージモニタであり、データの通信Ｉ／Ｆとしてデータの送受信を制御する。３７は、ポートモニタであり、ランゲージモニタ３６から送られて来るデータを適切なポートに対して送信したり、ＭＦＰ３から送られて来るデータを、クラスドライバ３８を介して受信したりする処理を行う。
【００３１】
３８は、クラスドライバであり、最もポートに近いローレベルのモジュールであり、本実施形態ではＵＳＢのプリンタクラスのドライバに相当し、ポート（本実施形態ではＵＳＢポート）を制御する。
【００３２】
ＭＦＰ３用のスキャナドライバは、プリンタドライバ５０とアーキテクチャが異なるものの、ＯＳ側モジュールと、ＩＨＶ側モジュールであるスキャナドライバとから構成される基本的な概念は同様であるので、ここではその詳細な説明を省略する。
【００３３】
図５は、第１の実施の形態におけるドライバアンインストールの一例を示すフローチャートである。ステップＳ５１においてユーザがＭＦＰ３用のアンインストーラ３０を起動すると、アンインストーラ３０は、以下の処理を開始する。つまり、ステップＳ５２において、アンインストーラ３０は、ＯＳ２が提供する複数のＡＰＩを用いてＯＳにインストールされている全ドライバ情報ファイル（ＩＮＦ）の中から、ＭＦＰ３のＨａｒｄｗａｒｅ  ＩＤが記述されているＩＮＦ７０を検索する。
【００３４】
続いて、ステップＳ５３において、アンインストーラ３０は、削除対象がプリンタドライバ５０であることを特定する。続いて、ステップＳ５４において、アンインストーラ３０は、プリンタドライバ５０が使用中か否かを判定する。プリンタドライバ５０が使用中であると判定すると、アンインストーラ３０は、ステップＳ５５において、ユーザに使用中である旨を知らせるエラーメッセージを表示する。そして、アンインストーラ３０は、図５に示す処理を終了する。
【００３５】
一方、プリンタドライバ５０が使用中でないと判定すると、ステップＳ５６において、アンインストーラ３０は、ＯＳ２に対してデバイスイジェクトのＡＰＩをコールし、ＭＦＰ３をデバイスマネージャからソフトウェア的に取り外す。つまり、デバイスイジェクトのAPIをコールして、デバイスマネージャが、MFP３のインスタンスを非活性化する。これにより、オペレーティングシステムは、ＭＦＰ３からの信号があってもプラグアンドプレイを走らすことをやめる。これにより、デバイスが取り外されるのを待つ状態となる。インスタンスを活性化するためのＡＰＩが再度呼ばれるまで、ＭＦＰ３からのプラグアンドプレイ処理を検知することは無い。つまり、当該ＡＰＩによりＭＦＰ３がソフトウェア的に取り外された場合は、プラグアンドプレイ処理の起動が抑制される。
【００３６】
続いて、ステップＳ５７において、アンインストーラ３０は、プリンタドライバ５０を削除する。続いて、ステップＳ５８において、アンインストーラ３０は、ステップＳ５２の処理で作成されたデバイスインフォメーションセットを削除するためのＡＰＩコールを行う。このＡＰＩがコールされると、ＯＳ２は、デバイスツリー全体を再列挙するが、ステップＳ５６におけるデバイスのソフトウェア的なイジェクト処理により、既にＭＦＰ３はＯＳ２のデバイスマネージャからソフトウェア的に取り外されている。そのため、例え、ＭＦＰ３がＰＣ１に接続されたままであっても、ＭＦＰ３がＯＳ２のプラグアンドプレイ機能によって検出される事はない。
【００３７】
＜第２の実施の形態＞
図６は、第２の実施の形態におけるドライバのアップグレードの一例を示すフローチャートである。ステップＳ６１においてユーザがＭＦＰ３用のプリンタドライバ５０のアップデータ６０を起動すると、アップデータ６０は、以下の処理を開始する。つまり、ステップＳ６２において、アップデータ６０は、インストール済みのドライバの検出処理を行い、検出したか否かを判定する。
【００３８】
検出しないと判定すると、アップデータ６０は、図６に示す処理を終了する。一方、検出したと判定すると、アップデータ６０は、ステップＳ６３において、アップデータパッケージ内のプリンタドライバのバージョンと、インストール済みのプリンタドライバ５０のバージョンを比較する。
【００３９】
インストール済みのプリンタドライバ５０のバージョンの方が新しいと判定すると、アップデータ６０は、図６に示す処理を終了する。一方、インストール済みのプリンタドライバ５０の方が古いと判定すると、アップデータ６０は、ステップＳ６４においてドライバをアップデートするか否かを問うダイアログを表示する。
【００４０】
そして、ステップＳ６５において、アップデータ６０は、ユーザがアップデートをすることを選択したか否かを判定する。ユーザがアップデートをすることを選択しなかったと判定すると、アップデータ６０は、図６に示す処理を終了する。一方、ユーザがアップデートをすることを選択したと判定すると、アップデータ６０は、ステップＳ６６に進む。ステップＳ６６において、アップデータ６０は、ＯＳ２が提供する複数のＡＰＩを用いてＯＳ２にインストールされている全ドライバ情報ファイル（ＩＮＦ）の中から、ＭＦＰ３のＨａｒｄｗａｒｅ  ＩＤが記述されているＩＮＦ７０を検索する。
【００４１】
ステップＳ６７において、アップデータ６０は、削除対象がプリンタドライバ５０であることを特定する。続いて、ステップＳ６８において、アップデータ６０は、プリンタドライバ５０が使用中か否かを判定する。プリンタドライバ５０が使用中であると判定すると、アップデータ６０は、ステップＳ６９において、ユーザに使用中である旨を知らせるエラーメッセージを表示する。そして、アップデータ６０は、図６に示す処理を終了する。
【００４２】
一方、プリンタドライバ５０が使用中でないと判定すると、ステップＳ７０において、アップデータ６０は、ＯＳ２に対してデバイスイジェクトのＡＰＩをコールし、ＭＦＰ３をデバイスマネージャからソフトウェア的に取り外す。
【００４３】
続いて、ステップＳ７１において、アップデータ６０は、プリンタドライバ５０を削除する。続いて、ステップＳ７２において、アップデータ６０は、ステップＳ６６の処理で作成されたデバイスインフォメーションセットを削除するためのＡＰＩコールを行う。
【００４４】
このＡＰＩがコールされると、ＯＳ２は、デバイスツリー全体を再列挙するが、ステップＳ７０におけるデバイスのソフトウェア的なイジェクト処理により、既にＭＦＰ３はＯＳ２のデバイスマネージャからソフトウェア的に取り外されている。そのため、例え、ＭＦＰ３がＰＣ１に接続されたままであっても、ＭＦＰ３がＯＳ２のプラグアンドプレイ機能によって検出される事はない。
【００４５】
続いて、ステップＳ７３において、アップデータ６０は、新しいプリンタドライバをセットアップする。続いて、ステップＳ７４において、アップデータ６０は、ＭＦＰ３をＰＣ１と接続することを要求する、若しくは、アップデータ６０は、既に接続されていた場合には、一旦ＵＳＢケーブルを外してから再接続する事を要求するダイアログメッセージを表示する。図７は、ダイアログメッセージの一例を示す図である。なお、図７では、メッセージを英語で示しているが、日本語や、他の言語であってもよい。
【００４６】
続いて、ユーザがインタフェースケーブルを再接続すると、ＯＳ２は、ソフトウェア的に取り外されていたＭＦＰ３をデバイスマネージャ上に復帰させ、プラグアンドプレイ機能によりプリンタドライバをインストールする。
【００４７】
＜第３の実施の形態＞
図８は、第３の実施の形態におけるドライバアンインストールの一例を示すフローチャートである。図８において、ステップＳ５１、Ｓ５２、Ｓ５３、Ｓ５４、Ｓ５５に関しては、図５の処理と同一なので、ここではその説明を省略する。
【００４８】
プリンタドライバ５０が使用中でないと判定すると、ステップＳ８０において、アンインストーラ３０は、後述する図９に示すデバイスのパワーオフによるドライバの削除処理を行い。続いて、ステップＳ５８において、アンインストーラ３０は、ステップＳ５２の処理で作成されたデバイスインフォメーションセットを削除するためのＡＰＩコールを行う。このＡＰＩがコールされると、ＯＳ２は、デバイスツリー全体を再列挙するが、ステップＳ８０におけるデバイスの電源をオフ処理により、既にＰＣ１はＭＦＰ３とＵＳＢインタフェース９を介して通信できない状態になっている。そのため、例え、ＭＦＰ３がＰＣ１に接続されたままであっても、ＭＦＰ３がＯＳ２のプラグアンドプレイ機能によって検出される事はない。
【００４９】
図９は、デバイスのパワーオフによるドライバの削除の処理を表すフローチャートである。なお、以下に示す処理は、アンインストーラ３０又はアップデータ６０のどちらも行うことができるが、本実施形態では、説明の簡略化のため、アンインストーラ３０が行うものとして説明を行う。
【００５０】
ステップＳ１００１において、デバイスのパワーオフによるドライバの削除の処理が実行されると、アンインストーラ３０は、以下の処理を実行する。
【００５１】
ステップＳ１００２において、アンインストーラ３０は、プリンタキュー３２に問い合わせて、印刷ジョブの有無を確認する。そして、ステップＳ１００３において、アンインストーラ３０は、印刷ジョブが有るか否かを判定する。
【００５２】
印刷ジョブが有ると判定すると、アンインストーラ３０は、ステップＳ１０１３において、例えば印刷ジョブが有る旨を知らせるメッセージを表示する。なお、ステップＳ１０１３において表示するメッセージに一例は、後述する図１０に示す。一方、印刷ジョブがないと判定すると、アンインストーラ３０は、ステップＳ１００４において、後述する図１１に示すステータス要求コマンド９０を使ってＭＦＰ３から返された後述する図１２に示すステータス応答コマンドからＭＦＰ３の状態を確認する。
【００５３】
ステップＳ１００５において、アンインストーラ３０は、ステップＳ１００４で確認した状態に基づいて、ＭＦＰ３が印刷中か否かを判定する。印刷中であると判定すると、アンインストーラ３０は、ステップＳ１０１３において、例えば印刷中である旨を知らせるメッセージを表示する。一方、印刷中でないと判定すると、アンインストーラ３０は、ステップＳ１００６において、ステップＳ１００４で確認した状態に基づいて、ＭＦＰ３でエラーが発生していないか否かを判定する。
【００５４】
ＭＦＰ３でエラーが発生している判定すると、アンインストーラ３０は、ステップＳ１０１３において、例えばエラーが発生したことを知らせるメッセージを表示する。一方、ＭＦＰ３でエラーが発生していないと判定すると、アンインストーラ３０は、ステップＳ１００７において、ステップＳ１００４で確認した状態に基づいて、ＭＦＰ３がオンラインで待機状態か否かを判定する。
【００５５】
ＭＦＰ３がオンラインで待機状態でないと判定すると、アンインストーラ３０は、ステップＳ１０１３において、例えばＭＦＰ３がオンラインで待機状態でないことを知らせるメッセージを表示する。一方、ＭＦＰ３がオンラインで待機状態であると判定すると、アンインストーラ３０は、ステップＳ１００８において、ＭＦＰ３に後述する図１３に示すような電源オフコマンドを送信する。
【００５６】
そして、ステップＳ１００９において、アンインストーラ３０は、ＵＳＢインタフェース９が接続されているＰＣ１のＵＳＢポートの状態を確認する。続いて、ステップＳ１０１０において、アンインストーラ３０は、ＭＦＰ３が電源オフ（パワーオフ）の状態である（になった）か、否かを判定する。
【００５７】
ＭＦＰ３が電源オフ（パワーオフ）の状態である（になった）と判定すると、アンインストーラ３０は、ステップＳ１０１４において、プリンタドライバ５０を削除する。そして、アンインストーラ３０は、デバイスのパワーオフによるドライバの削除の処理を終了する。一方、ＭＦＰ３が電源オフ（パワーオフ）の状態でないと判定すると、アンインストーラ３０は、ステップＳ１０１１において、一定時間（例えば１秒）ウエイトする。その後、ステップＳ１０１２において、アンインストーラ３０は、タイムアウト（例えば１分経過）したか否かを判定する。
【００５８】
タイムアウトしたと判定すると、アンインストーラ３０は、ステップＳ１０１３において、例えば電源がオフされない旨のメッセージを表示する。一方、タイムアウトしていないと判定すると、アンインストーラ３０は、ステップＳ１００９の処理に戻る。
【００５９】
ここで、ステップＳ１０１３において、メッセージを表示した場合、後述する図１０に示されるＯＫボタン８９がユーザによって押下されると、アンインストーラ３０は、デバイスのパワーオフによるドライバの削除の処理を終了する。
【００６０】
なお、ステップＳ１００６におけるＭＦＰ３でのエラー判定処理では、アンインストーラ３０は、例えば、後述する図１２に示されるような処理を行なう。即ち、記録紙無し警告ステータス９２やインク残量少警告ステータス９４等のプリンタドライバ５０の削除に支障のない警告ステータスがステップＳ１００４において確認された場合、プリンタドライバ５０の削除処理を実行する方向に処理を進めていく。しかしながら、紙詰まりエラーステータス９３やインク残量無しエラーステータス９５等の、プリンタドライバ５０の削除に支障のあるエラーステータスがステップＳ１００４において確認された場合、プリンタドライバ５０の削除処理を実行しない。このように制御することで、プリンタドライバ５０の削除時の操作性の向上と安全性の確保との両立を図っている。このケースは、後述する図１２に示されている。
【００６１】
図１０は、プリンタドライバ５０を削除できない場合に表示されるメッセージ（警告ダイアログメッセージ）の例を表す図である。図１０において、８８は、警告ダイアログメッセージであり、ユーザに状況及び対応方法を通知する。８９は、ＯＫボタンである。ＯＫボタン８９が押下されると、例えば、アンインストーラ３０は、警告ダイアログメッセージ８８を閉じる。
【００６２】
図１１は、ＭＦＰ３の状態を確認する為にＰＣ１からＭＦＰ３に送信するステータス要求コマンドを表す図である。実際にＵＳＢインタフェース９を介してＰＣ１からＭＦＰ３に送信されるデータはバイナリデータであるが、説明をわかりやすくする為に、図１１ではバイナリデータをテキストデータに変換した形で記している。
【００６３】
図１１において、９０は、ステータス要求コマンドである。ＰＣ１からＭＦＰ３にステータス要求コマンド９０を送信した後、ＭＦＰ３がこのコマンドを受信すると、ＭＦＰ３は、図１２に示すような状態を表すスタータス応答コマンドをＰＣ１に送信する準備を行う。なお、この準備の処理は、後述する図１４に示す。そして、ＭＦＰ３は、ＰＣ１からのデータ取得要求に従って、その時に準備されている状態を表すステータス応答コマンドをＰＣ１に送信する。これにより、ＰＣ１はＭＦＰ３の状態を確認することができる。
【００６４】
図１２は、ＭＦＰ３の状態を表すステータス応答コマンドを表す図である。図１２において、９１は、ＭＦＰ３が印刷中であることを表す印刷中ステータスである。９２は、ＭＦＰ３に印刷用の記録紙がセットされていないことを表す記録紙無し警告ステータスである。
【００６５】
９３は、印刷用の記録紙がＭＦＰ３に詰まっていることを表す紙詰まりエラーステータスである。９４は、ＭＦＰ３にセットされているインクの残量が少なくなっていることを表すインク残量少警告ステータスである。９５は、ＭＦＰ３にセットされているインクの残量が無いことを表すインク残量無しエラーステータスである。９６は、ＭＦＰ３が読取り中であることを表す読取り中ステータスである。９７は、ＭＦＰ３がオンラインで待機状態であることを表すオンラインステータスである。
【００６６】
９８は、ＭＦＰ３における複数の状態を表すステータス応答コマンドの例であり、この例は、ＭＦＰ３が印刷中で、印刷用の記録紙がセットされておらず、インク残量が少なくなっている状態を表すステータス応答コマンドの例である。
【００６７】
図１３は、ＰＣ１からＭＦＰ３の電源をオフにする為の電源オフコマンドを表す図である。図１３において、９９は、電源オフコマンドであり、ＰＣ１からＵＳＢインタフェース９を介してＭＦＰ３に電源オフコマンド９９が送信される。ＭＦＰ３が電源オフコマンド９９を受信すると、図１４に示すようにＭＦＰ３がシャットダウン処理を実行し、ＭＦＰ３の電源がオフになる。
【００６８】
図１４は、ＭＦＰ３におけるＰＣ１から送信されたデータの受信の処理を表すフローチャートである。ステップＳ１５０１において、ＭＦＰ３がＰＣ１から送信されたデータを受信すると、以下に示す処理を開始する。
【００６９】
ステップＳ１５０２において、ＭＦＰ３は、データの内容を確認する処理を実行する。続いて、ステップＳ１５０３において、ＭＦＰ３は、データの内容がステータス要求コマンド９０か否かを判定する。データの内容がステータス要求コマンド９０であると判定すると、ＭＦＰ３は、ステップＳ１５０４において、ＭＦＰ３の状態を確認する。
【００７０】
続いて、ステップＳ１５０５において、ＭＦＰ３は、状態を表すステータス応答コマンドを生成して保存する。そして、ＭＦＰ３は、データの受信処理を終了する。
【００７１】
一方、ステップＳ１５０３の判定において、データの内容がステータス要求コマンド９０でないと判定すると、ＭＦＰ３は、ステップＳ１５０６において、データの内容が電源オフコマンド９９か否かを判定する。
【００７２】
データの内容が電源オフコマンド９９であると判定すると、ＭＦＰ３は、ステップＳ１５０７において、シャットダウン処理を実行する。そして、ＭＦＰ３は、データの受信処理を終了し、電源オフ（パワーオフ）の状態となる。ステップＳ１５０６において、データの内容が電源オフコマンド９９でないと判定すると、ＭＦＰ３は、ステップＳ１５０８において、受信したデータの内容に応じた処理を実行する。そして、ＭＦＰ３は、データの受信処理を終了する。
【００７３】
図１５は、ＭＦＰ３におけるＰＣ１からのデータ取得要求の受信の処理を表すフローチャートである。ステップＳ１６０１において、ＭＦＰ３がＰＣ１から送信されたデータの取得要求を受信すると以下に示す処理を開始する。
【００７４】
ステップＳ１６０２において、ＭＦＰ３は、図１４のステップＳ１５０５に保存したステータス応答コマンドをデータ送信用のバッファにセットする。続いて、ステップＳ１６０３において、ＭＦＰ３は、ＰＣ１へ、このバッファにセットしたデータ（ステータス応答コマンド）を送信する。そして、ＭＦＰ３は、データ取得要求の受信の処理を終了する。ここで、データ取得要求は、ＵＳＢインタフェースの標準仕様として規格化されているプロトコルの一部を用いて成される。
【００７５】
＜第４の実施の形態＞
図１６は、第４の実施の形態であるドライバのアップグレードの一例を示すフローチャートである。図１６において、ステップＳ６１、Ｓ６２、Ｓ６３、Ｓ６４、Ｓ６５、Ｓ６６、Ｓ６７、Ｓ６８、Ｓ６９に関しては、図６の処理と同一なので、ここではその説明を省略する。
【００７６】
ステップＳ８１において、アップデータ６０は、図９に示したデバイスのパワーオフによるドライバの削除処理を行う。続いて、ステップＳ７２において、アップデータ６０は、ステップＳ６６の処理で作成されたデバイスインフォメーションセットを削除するためのＡＰＩコールを行う。
【００７７】
このＡＰＩがコールされると、ＯＳ２は、デバイスツリー全体を再列挙するが、ステップＳ７０におけるデバイスのソフトウェア的なイジェクト処理により、既にＭＦＰ３はＯＳ２のデバイスマネージャからソフトウェア的に取り外されている。そのため、例え、ＭＦＰ３がＰＣ１に接続されたままであっても、ＭＦＰ３がＯＳ２のプラグアンドプレイ機能によって検出される事はない。
【００７８】
続いて、ステップＳ７３において、アップデータ６０は、新しいプリンタドライバをセットアップする。続いて、ステップＳ７４において、アップデータ６０は、ＭＦＰ３をＰＣ１と接続することを要求する、若しくは、アップデータ６０は、既に接続されていた場合には、一旦ＵＳＢケーブルを外してから再接続する事を要求するダイアログメッセージを表示する。
【００７９】
＜その他の実施の形態＞
以下、図１７に示すメモリマップを参照して、上述した実施形態に係る情報処理装置及び周辺装置からなる周辺装置制御システムで読み出し可能なデータ処理プログラムの構成について説明する。
【００８０】
図１７は、周辺装置制御システムで読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを示す図である。なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報、作成者等もこの記憶媒体に記憶されているものとする。また、特に図示しないが、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶媒体に記憶されていてもよい。
【００８１】
図１７において、６４は、記憶媒体であり、ここではハードディスクで構成されているものとする。６５は、ディレクトリ情報管理部であり、各種プログラムに従属するデータが管理されている。６６は、プログラム格納部であり、各種プログラムを情報処理装置にインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に解凍するためのプログラム等も記憶されている。
【００８２】
また、上述した実施形態における図５、図６、図８、図９、図１４、図１５、図１６にそれぞれ示す各フローチャートの実行によって実現できる各機能が、外部からインストールされるプログラムによって、情報処理装置によって実現されるようにしてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやフレキシブルディスク等の記憶媒体により、或いはネットワークを介して外部の記憶媒体から、プログラムを含む情報群が情報処理装置や周辺装置に供給される場合でも、上述した実施形態は適用される。
【００８３】
以上のように、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、上述した実施形態の目的が達成される。
【００８４】
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の新規な機能を実現することになる。よって、そのプログラムコードを記憶した記憶媒体は、上述した実施形態を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ等を用いることができる。
【００８５】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施形態の機能が実現されるだけでない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００８６】
また、上述した実施形態では、アプリケーション３０の一例としてアンインストーラやアップデータ（ドライバアップデータ）を挙げたが、これらの例に限られることはない。例えば周辺装置用のドライバをアップデートインストールする為のインストーラ等のドライバの削除を伴う任意のアプリケーションで上述した実施形態は実現可能であり、有効である。
【００８７】
また、上述した実施形態では情報処理装置としてＰＣを想定したが、これらに限られることなく、例えばＤＶＤビデオプレーヤー、ゲーム、セットトップボックス、インターネット家電等であってもよい。
【００８８】
また、上述した実施形態では、周辺装置としてＭＦＰを例示しているが、これらに限られることなく、周辺装置として他に、プリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ及びこれらの複合機能を備える装置等であってもよい。
【００８９】
また、上述した実施形態では、ＰＣ１とＭＦＰ３との間のインタフェースとして、ＵＳＢインタフェースを用いた。しかしながら、このインタフェースに限られることなく、例えば、Ｅｔｈｅｒｎｅｔ(登録商標)、無線ＬＡＮ、ＩＥＥＥ１３９４、Ｂｌｕｅｔｏｏｔｈ、ＩｒＤＡ、パラレル、シリアル等の任意のインタフェースを用いるようにしてもよい。
【００９０】
以上、上述した各実施形態によれば、ユーザがデバイスを装置に接続したままでも、ドライバ再インストール処理が開始されることなく、デバイスドライバを削除することができる。
【００９１】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００９２】
【図１】情報処理装置及び周辺装置からなる周辺装置制御システムの一実施形態におけるシステムの構成部分を表すブロック図である。
【図２】ＰＣ１のハードウェア構成の一例を表すブロック図である。
【図３】ＭＦＰ３のハードウェア構成を表すブロック図である。
【図４】ＰＣ１におけるプリンタドライバの構成を表す図である。
【図５】第１の実施の形態におけるドライバアンインストールの一例を示すフローチャートである。
【図６】第２の実施の形態におけるドライバのアップグレードの一例を示すフローチャートである。
【図７】ダイアログメッセージの一例を示す図である。
【図８】第３の実施の形態におけるドライバアンインストールの一例を示すフローチャートである。
【図９】デバイスのパワーオフによるドライバの削除の処理を表すフローチャートである。
【図１０】プリンタドライバ５０を削除できない場合に表示されるメッセージ（警告ダイアログメッセージ）の例を表す図である。
【図１１】ＭＦＰ３の状態を確認する為にＰＣ１からＭＦＰ３に送信するステータス要求コマンドを表す図である。
【図１２】ＭＦＰ３の状態を表すステータス応答コマンドを表す図である。
【図１３】ＰＣ１からＭＦＰ３の電源をオフにする為の電源オフコマンドを表す図である。
【図１４】ＭＦＰ３におけるＰＣ１から送信されたデータの受信の処理を表すフローチャートである。
【図１５】ＭＦＰ３におけるＰＣ１からのデータ取得要求の受信の処理を表すフローチャートである。
【図１６】第４の実施の形態であるドライバのアップグレードの一例を示すフローチャートである。
【図１７】周辺装置制御システムで読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを示す図である。
【符号の説明】
【００９３】
１    ＰＣ
３    ＭＦＰ
【図１】
2008015912.tif 000003
【図２】
2008015912.tif 000004
【図３】
2008015912.tif 000005
【図４】
2008015912.tif 000006
【図５】
2008015912.tif 000007
【図６】
2008015912.tif 000008
【図７】
2008015912.tif 000009
【図８】
2008015912.tif 000010
【図９】
2008015912.tif 000011
【図１０】
2008015912.tif 000012
【図１１】
2008015912.tif 000013
【図１２】
2008015912.tif 000014
【図１３】
2008015912.tif 000015
【図１４】
2008015912.tif 000016
【図１５】
2008015912.tif 000017
【図１６】
2008015912.tif 000018
【図１７】
2008015912.tif 000019