(57)【要約】【課題】  デバイスドライバが使用する共通モジュールが更新されてしまった場合に、容易に更新前の共通モジュールを取得できるようにする。【解決手段】  デバイスドライバ手段の機能を実現するためのプログラムモジュールのうち他のプログラムと共用する共通モジュールを、共通モジュール保存領域に保存し、上記デバイスドライバ手段に固有の固有モジュールと上記共通モジュールとを固有モジュール保存領域に保存し、上記固有モジュール保存領域に保存されている共通モジュールの方が上記共通モジュール保存領域に保存されている共通モジュールよりもバージョンが新しい場合に（Ｓ４１，Ｓ４２）、ＯＳから管理者権限を取得して（Ｓ４４）、上記共通モジュール保存領域に保存されている共通モジュールを上記固有モジュール保存領域に保存されている共通モジュールで上書きする（Ｓ４５）ようにした。【選択図】        図１０
2015060320.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、デバイスを制御するデバイス制御手段として機能させるためのプログラムであって、
他のプログラムと共用する共通モジュールと、当該プログラム固有の固有モジュールとを備え、
前記コンピュータを、
前記共通モジュールを第１保存領域に保存し、前記固有モジュールと前記共通モジュールとを第２保存領域に保存する保存制御手段と、
前記第１保存領域に保存されている共通モジュールの更新に係る情報と、前記第２保存領域に保存されている共通モジュールの更新に係る情報とを比較する比較手段と、
前記比較手段によって、前記第２保存領域に保存されている共通モジュールの更新に係る情報が新しいと判定された場合に、前記コンピュータを制御するソフトウェアから前記共通モジュールの更新の許可を取得して、前記第２保存領域に保存されている共通モジュールを前記第１保存領域に保存し、前記第１保存領域に保存されている共通モジュールを削除する更新手段として機能させるためのプログラム。
【請求項２】
請求項１に記載のプログラムであって、
前記更新手段がランゲージモニタに設けられていることを特徴とするプログラム。
【請求項３】
請求項１又は２に記載のプログラムであって、
前記コンピュータを、
前記比較手段が前記比較を行うか否かを設定する比較可否設定手段として機能させるためのプログラムをさらに含むことを特徴とするプログラム。
【請求項４】
請求項１又は２に記載のプログラムであって、
前記コンピュータを、
前記共通モジュールのうちどのモジュールについて前記比較手段が前記比較を行うかを設定する比較対象設定手段として機能させるためのプログラムをさらに含むことを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれか一項に記載のプログラムであって、
前記コンピュータを、
前記更新手段が前記共通モジュールの保存及び削除を行った場合にその旨をユーザに通知する手段として機能させるためのプログラムをさらに含むことを特徴とするプログラム。
【請求項６】
請求項１乃至５のいずれか一項に記載のプログラムであって、
前記コンピュータを、
前記更新手段が前記共通モジュールの保存及び削除を行う場合に該保存及び削除を行うか否かをユーザに選択させる手段として機能させるためのプログラムをさらに含むことを特徴とするプログラム。
【請求項７】
デバイスを制御するデバイス制御手段を備える情報処理装置であって、
前記デバイス制御手段の機能を実現するためのプログラムモジュールのうち他のプログラムと共用する共通モジュールを第１保存領域に保存し、前記デバイス制御手段の機能を実現するためのプログラムモジュールのうち前記デバイス制御手段に固有の固有モジュールと、前記共通モジュールとを第２保存領域に保存する保存制御手段と、
前記第１保存領域に保存されている共通モジュールの更新に係る情報と、前記第２保存領域に保存されている共通モジュールの更新に係る情報とを比較する比較手段と、
前記比較手段によって、前記第２保存領域に保存されている共通モジュールの更新に係る情報が新しいと判定された場合に、当該情報処理装置を制御するソフトウェアから前記共通モジュールの更新の許可を取得して、前記第２保存領域に保存されている共通モジュールを前記第１保存領域に保存し、前記第１保存領域に保存されている共通モジュールを削除する更新手段とを備えることを特徴とする情報処理装置。
【請求項８】
請求項１乃至６のいずれか一項に記載のプログラムと、
前記デバイス制御手段により制御されるデバイスとを備えた情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム、情報処理装置及び情報処理システムに関する。
【背景技術】
【０００２】
プリンタドライバ等のデバイスドライバにおいて、ドライバを構成するプログラムファイル（モジュール）の中に、他のドライバを構成するプログラムファイルと同じ名前の共通ファイルが存在する場合がある。この共通ファイルは、バージョン違いの同じドライバならば、インストール時に共通ファイルのバージョンを比較し、最新のものがインストールされるよう、ＯＳ（オペレーティングシステム）に制御させることができる。
【０００３】
しかし、異なるドライバの場合、インストール時に既に共通ファイルが他のドライバによってインストールされていても、バージョンチェックを行わず、無条件で上書きしてしまう。例えばドライバＡが共通ファイルのバージョン１．３をインストールしていたにも関わらず、ドライバＢが同じ共通ファイルのバージョン１．１を上書きしてしまう等である。
そうなると、先にインストールしたドライバとしては、モジュールのバージョンダウンが行われる可能性があり、その場合動作に不具合が発生することがある。
【０００４】
この際、上書きされる可能性があることを知っているユーザならば、上書きされてしまったモジュールについて、手動で上書きすることで上書きされてしまったモジュールを元に戻すことは可能である。ただし、ログインしているユーザの権限が、ファイルに対して制限なく操作できる管理者権限であることが条件となる。ログインしているユーザの権限が、システム動作に関わるファイルについては操作できない一般権限の場合、ユーザが手動で上書きしようとしても、権限の制約により上書きすることはできない。
【０００５】
このような状況に対処するための技術として、例えば特許文献１に記載のものが知られている。特許文献１には、ドライバのインストール時に既により新しいバージョンの共通モジュールがインストールされている場合に、インストールしようとする共通モジュールのファイル名を変更してインストールすることが記載されている。また、登録ＩＤを用いてバージョンの管理を行うことも記載されている。
このようにすれば、後にインストールしたドライバの共通ファイルにより、前にインストールしたドライバの、より新しいバージョンの共通ファイルが上書きされてしまうことは防止できる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ユーザが使用するドライバが、全て上記のような上書き防止の措置が執られたドライバであるとは限らない。過去に防止措置を採らないドライバをリリースしてしまっていたり、メーカー自身で管理できないところでドライバを出されてしまったりする可能性もあるためである。
【０００７】
そのため、上書きされてしまう可能性を考慮し、仮に上書きされてしまっても、上書き前の状態に復帰できるようにしておくことが望ましい。管理者権限があれば上述のように手動で再度上書きすることは可能であるが、このような対応も、知識が少ないユーザには難しく、より簡単に復元できるようにすることが望まれる。
特許文献１には、上書きされてしまった状態からの復帰に関する技術は、記載されていない。
【０００８】
この発明は、このような事情に鑑みてなされたものであり、デバイスドライバが使用する共通モジュールが更新されてしまった場合に、容易に更新前の共通モジュールを取得できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
以上の目的を達成するため、この発明は、コンピュータを、デバイスを制御するデバイス制御手段として機能させるためのプログラムであって、他のプログラムと共用する共通モジュールと、そのプログラム固有の固有モジュールとを備え、上記コンピュータを、上記共通モジュールを第１保存領域に保存し、上記固有モジュールと上記共通モジュールとを第２保存領域に保存する保存制御手段と、上記第１保存領域に保存されている共通モジュールの更新に係る情報と、上記第２保存領域に保存されている共通モジュールの更新に係る情報とを比較する比較手段と、上記比較手段によって、上記第２保存領域に保存されている共通モジュールの更新に係る情報が新しいと判定された場合に、上記コンピュータを制御するソフトウェアから上記共通モジュールの更新の許可を取得して、上記第２保存領域に保存されている共通モジュールを上記第１保存領域に保存し、上記第１保存領域に保存されている共通モジュールを削除する更新手段として機能させるためのプログラムを提供する。
【発明の効果】
【００１０】
上記構成によれば、デバイスドライバが使用する共通モジュールが更新されてしまった場合に、容易に更新前の共通モジュールを取得できるようにすることができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施形態におけるＰＣとプリンタとの関係を示す図である。
【図２】図１に示したＰＣのハードウェア構成を示す図である。
【図３】図１に示したＰＣの機能構成を示す図である。
【図４】プリンタドライバ及びランゲージモニタの機能を実現するためのプログラムの構成を示す図である。
【図５】２つのドライバを続けてインストールした場合の共通モジュール保存領域の状態の例を示す図である。
【図６】ランゲージモニタの機能構成を示す図である。
【図７】図１に示したＰＣにおける印刷実行時の各部の動作シーケンスを示す図である。
【図８】図１に示したＰＣにおいてアプリケーションがバージョン確認指示を受けた場合の各部の動作シーケンスを示す図である。
【図９】モジュール選択画面の例を示す図である。
【図１０】図７のステップＳ１５及び図８のステップＳ３４におけるバージョン確認及び更新処理のフローチャートである。
【図１１】受付画面の例を示す図である。
【図１２】図１０の処理の変形例を示す図である。
【発明を実施するための形態】
【００１２】
以下、この発明を実施するための形態について、具体的に説明する。
なおここでは、この発明を、情報処理装置であるＰＣ（パーソナルコンピュータ）及び、そのＰＣにプリンタを制御させるためのプリンタドライバプログラムに適用した実施形態について説明するが、この発明がこれに限られないことは、後述の通りである。
【００１３】
図１に、この実施形態におけるＰＣとプリンタとの関係を示す。
この実施形態において、ＰＣ１０は、通信路３０を介してプリンタ２０と接続される。通信路３０は、ローカルエリアネットワーク、シリアルケーブル、パラレルケーブル、ＵＳＢ（Universal  Serial  Bus）、ＩＥＥＥ（Institute  of  Electrical  and  Electronic  Engineers）１３９４など、有線無線を問わず、任意の規格のものを使用可能である。
【００１４】
ＰＣ１０は、後述するプリンタドライバ１２０の機能により、ユーザから印刷に用いる印刷設定を受け付け、プリンタ２０に対してその印刷設定に従った印刷の実行を指示する。プリンタ２０は、その指示に従って印刷を実行する。
なお、プリンタ２０は、印刷以外の機能を兼ね備えた画像処理装置であってもよい。例えば、プリンタ２０を、スキャン、コピー、ファクシミリ通信、文書蓄積等の機能を備えたＭＦＰ（デジタル複合機）として構成することが考えられる。
【００１５】
次に、図２に、ＰＣ１０のハードウェア構成を示す。
ＰＣ１０は、ハードウェアとしては一般的なコンピュータでよい。すなわち、ＰＣ１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＨＤＤ（ハードディスクドライブ）１４、通信Ｉ／Ｆ（インタフェース）１５、表示部１６、及び操作部１７を備え、それらをシステムバス１８により接続した構成としている。
【００１６】
そして、ＣＰＵ１１が、ＲＡＭ１３をワークエリアとしてＲＯＭ１２又はＨＤＤ１４に記憶されたプログラムを実行することにより、ＰＣ１０全体を制御し、プリンタ２０の制御をはじめとする各種機能を実現する。
ＨＤＤ１４は、不揮発性記憶媒体（記憶手段）であり、ＣＰＵ１１が実行する各種プログラムや後述する各種データを格納している。
通信Ｉ／Ｆ１５は、プリンタ２０及びドライバ配布サーバ４０をはじめとする外部装置と通信するためのインタフェースである。使用する通信規格は、有線、無線を問わず、任意でよい。
【００１７】
表示部１６は、ディスプレイ等の、オペレータに情報を提示するための表示手段である。
操作部１７は、キーボード、マウス、タッチパネル等の、オペレータから操作を受け付けるための操作手段である。
なお、表示部１６や操作部１７が外付けであったり、ＰＣ１０がネットワークを介して外部の端末装置から操作を受け付けることができるようにしたりしてもよい。
【００１８】
次に、図３に、ＰＣ１０の機能構成を示す。図３には、この実施形態の特徴に関連する部分の構成を中心に示した。
図３に示すように、ＰＣ１０は、アプリケーション１１０、プリンタドライバ１２０、ランゲージモニタ１３０、通信部１４０を備える。
これらのうちアプリケーション１１０は、アプリケーションソフトウェアにより実現される機能であり、ユーザの操作に従って文書を編集又は操作する機能を備える。このアプリケーション１１０が実現する機能としては、ワードプロセッサ、画像作成・編集・加工、表計算等が考えられる。
【００１９】
プリンタドライバ１２０は、プリンタドライバプログラムにより実現される機能であり、プリンタ２０を制御するデバイス制御手段である。また、プリンタドライバ１２０は、印刷設定部１２１と描画部１２３を備える。
印刷設定部１２１は、印刷設定画面を表示してユーザから印刷に用いる設定である印刷設定を受け付ける機能を備える。表示部１２２が、その画面の表示を制御する機能を備える。この画面で受け付ける印刷設定には、部数、両面、集約、製本、変倍等の機能に関する設定が挙げられる。
【００２０】
描画部１２３は、アプリケーション１１０から不図示のＯＳ（オペレーティングシステム）が提供するＧＤＩ（Graphic  Device  Interface）を介して受け取った、印刷すべき画像のデータと、同じくアプリケーション１１０から受け取った印刷設定と従い、描画処理を行って、プリンタ２０が解釈できる形式の印刷データを生成する機能を備える。
【００２１】
ランゲージモニタ（Language  Monitor）１３０は、プリンタドライバ１２０が通信部１４０と送受信する際に、間に入り送受信制御をする機能を備える。また、プリンタドライバ１２０が使用するプログラムモジュールのバージョンを確認し、必要な場合にモジュールを更新する機能も備える。この点については後に詳述する。
通信部１４０は、通信路３０を介してプリンタ２０等の外部装置と通信する機能を備える。
【００２２】
ＰＣ１０においてプリンタドライバ１２０及びランゲージモニタ１３０の機能を実現するためのプログラムの構成について説明する。
図４は、そのプログラムの構成を示す図である。
図４に示すように、ＰＣ１０は、プリンタドライバ１２０の機能を実現するためのプリンタドライバプログラム２１０と、ランゲージモニタ１３０の機能を実現するためのランゲージモニタプログラム２４０とを、１つのドライバパッケージ２００として記憶している。
【００２３】
そして、ＰＣ１０においてプリンタドライバプログラム２１０を保存する保存領域には、共通モジュール保存領域２２０と、固有モジュール保存領域２３０とがある。
共通モジュール保存領域２２０には、他のドライバのプログラムと共用するプログラムモジュールである共通モジュールを保存する第１保存領域である。図４において、モジュールＡ及びモジュールＢが共通モジュールに該当する。
固有モジュール保存領域２３０には、プリンタドライバプログラム２１０に固有のプログラムモジュールである固有モジュールを保存する第２保存領域である。図４において、モジュールＸ及びモジュールＹが固有モジュールに該当する。
【００２４】
また、固有モジュール保存領域２３０にはさらに、プリンタドライバプログラム２１０がインストール時に持っていた共通モジュールも保存する。このとき、共通モジュールのファイル名をプリンタドライバプログラム２１０に固有のものとするか、必要な共通モジュールを１つのファイルにアーカイブする等して、固有モジュールであるかのように保存する。前者の場合、共通モジュールのファイル名が「Common.dll」であればこれを「Common_DriverA.dll」とする等である。後者の場合、「CommonA.dll」と「CommonB.dll」のファイルを、「Common_archive」のファイル名のアーカイブファイルとして持つ等である。
以上のようなモジュールの保存に際し、ＣＰＵ１１が保存制御手段として機能する。
【００２５】
ところで、共通モジュール保存領域２２０は、プリンタドライバプログラム２１０だけでなく、他のプリンタドライバプログラムと共用する保存領域である。従って、共通モジュール保存領域２２０に保存したプログラムモジュールは、他のプリンタドライバプログラムがインストールされた場合に、そのプリンタドライバプログラムが持つプログラムモジュールにより上書きされてしまう可能性がある。
【００２６】
図５に、２つのドライバを続けてインストールした場合の共通モジュール保存領域の状態の例を示す。
まず、図５に示すモジュールＡ〜Ｃを持つドライバＡをインストールし、次に、モジュールＡ，Ｄ，Ｅを持つドライバＢをインストールする例を考える。これらのモジュールは全て共通モジュールであるとする。各モジュールのバージョンは、モジュール名の右側に括弧書きで示した通りである。
【００２７】
この場合、ドライバＡをインストールした時点では、共通モジュール保存領域には、モジュールＡ〜Ｃのみが保存される。
次に、ドライバＢをインストールすると、モジュールＤ及びモジュールＥはそのままイントールされるが、モジュールＡは、インストール済みのモジュールとファイル名が共通するため、上書きすることになる。そして、上書き前のモジュールＡはバージョン４．０である一方、上書き後のモジュールＡはバージョン２．０であり、バージョンダウンが起こる。なお、ここでいうバージョンは、モジュールの更新に係る情報であり、数字が大きいほど、後に更新されたモジュールであることを示す。ここでは数字で記述しているが、他の手法で記述しても構わない。
ドライバＡは、バージョン４．０のモジュールＡの機能を前提に設定されているはずであるので、より低いバージョンのモジュールＡを使用すると、不具合が発生することが考えられる。
【００２８】
図４に示したドライバパッケージ２００においては、このような状況に対処するため、固有モジュール保存領域２３０に、プリンタドライバプログラム２１０がインストール時に持っていた共通モジュールも保存している。
すなわち、共通モジュール保存領域２２０に保存してある共通モジュールのバージョンと、固有モジュール保存領域２３０に保存してある共通モジュールのバージョンとを比較することにより、共通モジュール保存領域２２０に保存してある共通モジュールがドライバにより上書きされバージョンが変化したか否か判定できる。
【００２９】
そして、バージョンの低い共通モジュールで上書きされた場合に、これを固有モジュール保存領域２３０に保存してある共通モジュールで再度上書きして更新すれば、上書きされた共通モジュールを、プリンタドライバプログラム２１０のインストール時の状態に戻すことができる。
ＰＣ１０においては、ランゲージモニタ１３０がこのバージョン確認及び更新の機能を担う。このため、ランゲージモニタプログラム２４０もドライバパッケージ２００に含めている。
【００３０】
図６に、ランゲージモニタ１３０の機能構成を示す。
図６に示すようにランゲージモニタ１３０は、通信部１３１と、モジュール管理部１３２を備える。
【００３１】
これらのうち通信部１３１は、通信部はＰＣ１０の通信部１４０と通信し、Ｗｉｎｄｏｗｓ（登録商標）プリントアーキテクチャとしてのランゲージモニタが行うデータの送受信制御の機能を備える。すなわち、通信部１３１は、スプーラのPrintProcessorから送信されたデータを受け取り、PortMonitorにデータを送信する。
なお、通信部１３１の機能を備えるランゲージモニタは、ベンダが開発しなくとも、ＯＳ標準のものがシステムには存在している。しかしここでは、標準のものではなく、モジュール管理部１３２の機能を備えるランゲージモニタ１３０を用いる。
【００３２】
モジュール管理部１３２は、モジュールバージョン比較部１３３と、モジュール更新部１３４を備える。
このうちモジュールバージョン比較部１３３は、比較手段であり、現在ＰＣ１０にインストールされ、共通モジュール保存領域２２０に保存されている共通モジュールのバージョンと、プリンタドライバ１２０が固有モジュール保存領域２３０に保存しているインストール時の共通モジュールのバージョンとを比較する。そして、この比較結果に基づき、インストール時からのバージョンダウンが発生しているかどうかを判定する機能を備える。
【００３３】
モジュール更新部１３４は、更新手段であり、モジュールバージョン比較部１３３の判定結果に基づき、共通モジュールがバージョンダウンしていた際に、ＰＣ１０のＯＳより管理者権限を取得し、バージョンダウンしている共通モジュールを、固有モジュール保存領域２３０に保存されている共通モジュールで上書き更新する機能を備える。
なお、説明を簡単にするために「上書き」の語を用いたが、実際の動作として上書きである必要はない、固有モジュール保存領域２３０に保存されている共通モジュールを共通モジュール保存領域２２０に保存し、共通モジュール保存領域２２０にそれまで保存されていた共通モジュールを削除できれば、手順は問わない。以下の「上書き」についても同様である。
【００３４】
ここで、管理者権限の取得について説明する。
Ｗｉｎｄｏｗｓにおいて、プリンタドライバはＯＳより、現在実行中のユーザの権限にかかわらず、一時的に管理者権限を取得し、動作することができるＡＰＩ（Application Programming Interface）を提供されている。例えばRevertToPrinterSelf()である。
【００３５】
このＡＰＩは、プリンタドライバが印刷設定の変更や印刷実行をする時に、編集に管理者権限が必要なレジストリへの書き込みが必要な場合等に利用するために提供されている。プリンタドライバは、印刷処理等を正常に行うため、必要な場合にこのＡＰＩを利用して一時的に管理者権限を取得し、印刷設定などの書き込みを行っている。
また、プリンタドライバのモジュールは、インストール時には一般ユーザでは書き込みのできないフォルダ(System32等)にインストールされる。
【００３６】
通常、ユーザ権限で動作している場合、一般ユーザの権限では書き込みのできないについては操作することができない。そのため、自動モジュール更新ツールのようなものを用意しても、一般ユーザが動作させると、管理者権限がないため、モジュールを復帰させることができない。
しかし、プリンタドライバは、ＯＳよりＡＰＩを提供されているため、一般ユーザ権限で印刷等を行った際でも、管理者権限で動作することができる。このＡＰＩを利用することで、通常ファイルの上書きができない一般ユーザ権限の場合でも、モジュールの上書きを行うことができる。
【００３７】
ランゲージモニタ１３０も、ドライバパッケージ２００に含まれるランゲージモニタプログラム２４０により実現される機能であり、この点でプリンタドライバの一部であると言える。このため、ランゲージモニタ１３０も、上述のＡＰＩを用いて管理者権限を取得することができる。
なお、管理者権限の取得は、ここでは共通モジュールの更新のために行うものである。したがって、必ずしも「管理者」の権限でなくても、共通モジュールの更新が許可される権限を取得できれば足りる。
【００３８】
次に、ランゲージモニタ１３０に上述したモジュールのバージョン確認及び更新を指示するためのインタフェースについて説明する。
プリンタドライバと同じように、ランゲージモニタにもＯＳによって決められたインタフェースが存在する。詳細な説明はＭＳＤＮドキュメントに記載されており、「http://msdn.microsoft.com/en-us/library/ms123401」にて参照できる。
ベンダは、この決められたインタフェースに合わせてランゲージモニタを開発すれば、独自の機能を備えたランゲージモニタを提供することができる。
【００３９】
ランゲージモニタ１３０おいては、SendRecvBidiDataFromPort()というインタフェースを利用することにより、ランゲージモニタ１３０を呼び出したモジュールが、ランゲージモニタ１３０に対してバージョン確認及び更新の指示を行えるようにしている。
ランゲージモニタ１３０は、呼び出し元から受け取ったキーに対応して動作することができ、ここでは、確認対象のモジュール及び処理方法をキーとして渡すことで共通モジュールのバージョン確認及び更新を行うことができるようにしている。
【００４０】
次に、バージョン確認及び更新の実行タイミングについて説明する。
図７は、ＰＣ１０における印刷実行時の各部の動作シーケンスを示す図である。
共通モジュールのバージョンがダウンしたまま印刷を行うと、プリンタドライバ１２０の動作に不具合が生じることから、まず、印刷実行時に共通モジュールのバージョン確認及び更新を行うことが考えられる。
【００４１】
アプリケーション１１０は、印刷を行う場合、まずＯＳが提供するＧＤＩ１５０に対し、CreateDCをコールする（Ｓ１１）。そして、ＧＤＩ１５０はこのコールを受けると描画部１２３に対してDrvEnablePDEVをコールする（Ｓ１２）。
このコールにより、描画部１２３は印刷を開始すべきことを認識する。そして、印刷前にバージョン確認及び更新を行うべく、ランゲージモニタ１３０に対してSendRecvBidiDataFormPortをコールして、バージョン確認及び更新を指示する（Ｓ１３）。
【００４２】
ランゲージモニタ１３０は、このコールを受けると、モジュール管理部１３２に対してバージョン確認を指示する（Ｓ１４）。この指示を受けたモジュール管理部１３２は、バージョン管理及び確認の処理を実行し（Ｓ１５）、結果を返す（Ｓ１６）。ステップＳ１５の処理の詳細は、図１０を用いて後述する。共通モジュールのバージョンダウンが起こっていても、基本的にはステップＳ１５の処理により解消される。すなわち、他のプリンタドライバと共用するモジュールとしてバージョンダウンが発生する前の共通モジュールを取得できるようになる。
モジュール管理部１３２から結果を受け取ったランゲージモニタ１３０は、その結果に基づき、描画部１２３に対してSendRecvBidiDataFormPortの実行結果を返す（Ｓ１７）。
【００４３】
描画部１２３は、ステップＳ１７での実行結果を受け取ると、ＧＤＩ１５０に対してDrvEnablePDEVの実行結果を返す（Ｓ１８）。ＧＤＩ１５０及びアプリケーション１１０は、バージョン管理及び確認の処理について把握する必要はないため、ステップＳ１８の応答には、バージョン管理及び確認の実行結果が含まれている必要はない。通常の印刷準備処理の結果のみ返せばよい。
ＧＤＩ１５０は、ステップＳ１８の実行結果を受け取ると、描画部１２３に対してDrvCompletePDEVをコールし（Ｓ１９）、描画部１２３はその実行結果を返す（Ｓ２０）。この部分の処理は従来通りでよい。
【００４４】
以上の後、ＧＤＩ１５０はアプリケーション１１０に対してCerateDCの実行結果を返す（Ｓ２１）。これを受けたアプリケーション１１０は、印刷を開始するため、ＧＤＩ１５０に対してDerStartDocをコールする（Ｓ２２）。以後のステップＳ２６までの処理は、通常の印刷実行に係る処理であり、特徴的な点はないため、説明を省略する。
ＰＣ１０は、以上の手順により、印刷を行う前にバージョン確認及び更新を行い、プリンタドライバ１２０の動作に不具合が出ることを防止できる。図７の動作においては、描画部１２３がバージョン確認及び更新の実行タイミングを指示する役割を担うと言える。
【００４５】
なお、印刷設定画面を開く場合にも、同様にバージョン確認及び更新を行うとよい。この場合、印刷設定部１２１が、これから印刷設定画面を開くべきことを示すコールを受けた場合に、それに応じてランゲージモニタ１３０に対してSendRecvBidiDataFormPortをコールし、バージョン確認及び更新を指示すればよい。
また、これらの他、アプリケーション１１０にバージョン確認及び更新を指示する機能を設けてもよい。
【００４６】
図８は、ＰＣ１０においてアプリケーション１１０がバージョン確認指示を受けた場合の各部の動作シーケンスを示す図である。
この場合、アプリケーション１１０は、ユーザからのバージョン確認指示を受けると（Ｓ３１）、ランゲージモニタ１３０に対してSendRecvBidiDataFormPortをコールして、バージョン確認及び更新を指示する（Ｓ３２）。このコールを受けたランゲージモニタ１３０及びバージョン管理モジュール１３２の動作は、図７のステップＳ１４乃至Ｓ１７と同様である（Ｓ３３〜Ｓ３５）。
そして、バージョン管理モジュール１３２から結果を受け取ったランゲージモニタ１３０は、その結果に基づき、アプリケーション１１０に対してSendRecvBidiDataFormPortの実行結果を返す（Ｓ３６）。
【００４７】
以上の動作によれば、ユーザが指示した任意のタイミングでバージョン確認及び更新を行うことができる。なお、アプリケーション１１０が何らかのイベントの検出に応じて自動的にランゲージモニタ１３０に対してSendRecvBidiDataFormPortをコールするようにすることも考えられる。
ところで、ＰＣ１０においては、バージョン確認及び更新処理について、どのモジュールをバージョン確認（比較）の対象とするかを選択可能である。
【００４８】
図９に、この選択を受け付けるためのモジュール選択画面の例を示す。
図９に示すモジュール選択画面３００においては、モジュール選択部３０１にモジュール毎に設けたチェックボックスにより、どのモジュールを確認の対象とするか選択することができる。ＯＫボタン３０２はその選択を決定するためのボタン、キャンセルボタン３０３は選択状態を変更せずにモジュール選択画面３００から抜けるためのボタンである。
【００４９】
モジュール選択画面３００における選択の結果は、レジストリやファイルに保存しておき、SendRecvBidiDataFormPortをコールする時に、確認対象のモジュールの情報をキーとしてランゲージモニタ１３０に渡せばよい。ランゲージモニタ１３０も、モジュール管理部１３２にバージョン確認を指示する際にその情報を渡す。
【００５０】
なお、モジュール選択画面３００における選択肢は、共通モジュール保存領域２２０に保存されている共通モジュールとすればよい。また、モジュール選択画面３００においていずれのモジュールも選択されなかった場合には、バージョン確認及び更新処理を行わないようにしてもよい。すなわち、いずれのモジュールも選択しないという選択を、バージョン確認及び更新処理を行わない旨の選択と扱ってもよい。もちろん、実行有無の選択肢を別途用意してもよい。
【００５１】
次に、図１０に、図７のステップＳ１５及び図８のステップＳ３４におけるバージョン確認及び更新処理のフローチャートを示す。この処理は、モジュール管理部１３２の機能と対応する処理であり、ランゲージモニタ１３０からバージョン確認を指示された場合にＣＰＵ１１が実行するものである。
【００５２】
図１０の処理において、ＣＰＵ１１はまず、バージョン確認の指示と共に受け取った確認対象モジュールの情報に基づき、共通モジュール保存領域２２０及び固有モジュール保存領域２３０におけるそれらの共通モジュールのバージョンを確認する（Ｓ４１）。
そして、固有モジュール保存領域２３０の共通モジュールよりも共通モジュール保存領域２２０の共通モジュールの方がバージョンが古いか否か判断する（Ｓ４２）。これが全てのモジュールについてＮｏであれば、上書きによるバージョンダウンは起こっていないと判断して処理を終了する。この場合、モジュール管理部１３２はランゲージモニタ１３０に対し、バージョンダウンはない旨の実行結果を返す。
【００５３】
一方、少なくとも１つモジュールについてステップＳ４２がＹｅｓであれば、ＣＰＵ１１は、上書きによるバージョンダウンが起こっており共通モジュールの更新が必要と判断する。そして、ユーザに更新が必要なモジュールを提示して更新可否の指示を受け付ける。
【００５４】
図１１に、この指示受付のための画面の例を示す。
この受付画面４００においては、メッセージによりユーザに更新が必要なモジュールを通知し、はいボタン４０１といいえボタン４０２により更新可否の指示を受け付ける。
そして、ステップＳ４３で更新不可であれば、バージョンダウンの起こった共通モジュールの更新ができないため、そのまま処理を終了する。このようにすれば、ユーザが上書きを望まない場合には上書きを行わないようにすることができる。
【００５５】
また、この場合、モジュール管理部１３２はランゲージモニタ１３０に対し、バージョンダウンがあったが更新は行わなかった旨の実行結果を返す。この場合、印刷の実行に支障がある可能性があるため、ランゲージモニタ１３０は、ステップＳ１７で描画部１２３に送信する実行結果において、共通モジュールにバージョンの合わないものがある旨を通知してもよい。
【００５６】
一方、ステップＳ４３で更新可であれば、ＣＰＵ１１は、ＰＣ１０のＯＳから管理者権限を取得し（Ｓ４４）、バージョンダウンを検出したモジュールについて、固有モジュール保存領域２３０に保存されている共有モジュールを、共通モジュール保存領域２２０に保存されている同名の共有モジュールに上書きする（Ｓ４５）。このことにより、バージョンダウンが起こっていた共有モジュールを更新し、プリンタドライバ１２０のインストール時のバージョンに戻すことができる。
【００５７】
ＣＰＵ１１は、以上により処理を終了する。この場合、モジュール管理部１３２はランゲージモニタ１３０に対し、バージョンダウンがあり更新を行った旨の実行結果を返す。この場合、印刷の実行に支障はないため、ランゲージモニタ１３０は描画部１２３へ更新を行った旨を通知する必要はない。
【００５８】
以上の処理において、ステップＳ４１及びＳ４２ではＣＰＵ１１が比較手段として機能する。ステップＳ４４及びＳ４５ではＣＰＵ１１が更新手段として機能する。
なお、図１０の処理において、ステップＳ４３でＮＧの場合、印刷を中止するようにしてもよい。この場合のフローは図１２に示すようになる。
この場合、モジュール管理部１３２からバージョンダウンがあったが更新は行わなかった旨の実行結果を受け取ったランゲージモニタ１３０が、ステップＳ１７で描画部１２３に送信する実行結果に、不具合があって印刷が実行できない旨の情報を記載すればよい。
このようにすれば、適当な共通モジュールが共通モジュール保存領域２２０にない状態で印刷を行って不具合が発生することを防止できる。
【００５９】
以上で実施形態の説明を終了するが、この発明において、各部の具体的な構成や処理の手順、取り扱うデータの構成及び形式等は、実施形態で説明したものに限るものではない。
例えば、図１０のステップＳ４５で共通モジュールの更新を行った場合に、その旨をユーザに通知するようにしてもよい。このようにすれば、モジュールの更新があったことをユーザが確実に認識することができる。
【００６０】
また、上述したモジュール管理部１３２の機能は、プリンタ以外のデバイスを制御するデバイスドライバが用いる共通モジュールに対しても適用可能である。制御対象のデバイスとしては、例えば、スキャナ、ファクシミリ装置、ＭＦＰ、プロジェクタ、電子ホワイトボード、遠隔会議システム等が考えられる。
【００６１】
また、デバイスドライバプログラムを実行する装置も、ＰＣには限られず、プログラムを実行可能なプロセッサを備えた装置であれば、任意の情報処理装置でよい。上で挙げた、スキャナ、ファクシミリ装置、ＭＦＰ、プロジェクタ、電子ホワイトボード、遠隔会議システム等であっても構わない。携帯情報端末やスマートフォンであっても構わない。
また、上述の実施形態でＰＣ１０が備えるとした機能を複数の情報処理装置に分散して設け、それらの装置が協働してＰＣ１０と同様な機能を実現するようにしてもよい。
【００６２】
この発明の実施形態であるプログラムは、１のコンピュータを、または複数のコンピュータを協働させて、上述した共通モジュール保存領域２２０及び固有モジュール保存領域２３０へのプログラムモジュールの保存並びに、モジュール管理部１３２による共通モジュールのバージョン管理機能を実現させるためのプログラムである。そして、このようなプログラムをコンピュータに実行させることにより、上述したような効果を得ることができる。
【００６３】
このようなプログラムは、はじめからコンピュータに備えるＲＯＭや他の不揮発性記憶媒体（フラッシュメモリ，ＥＥＰＲＯＭ等）などに格納しておいてもよい。しかし、メモリカード、ＣＤ、ＤＶＤ、ブルーレイディスク等の任意の不揮発性記録媒体に記録して提供することもできる。それらの記録媒体に記録されたプログラムをコンピュータにインストールして実行させることにより、上述した各手順を実行させることができる。
【００６４】
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部装置あるいはプログラムを記憶手段に記憶した外部装置からダウンロードし、コンピュータにインストールして実行させることも可能である。
【００６５】
また、この発明の情報処理システムは、上述のプログラムと、そのプログラムが提供するデバイス制御機能により制御されるデバイスとを備えたシステムである。このプログラムとデバイスとの組み合わせにより、実施形態及び変形例において述べた効果を得ることができる。
また、以上説明してきた実施形態及び変形例の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。
【符号の説明】
【００６６】
１０：ＰＣ、１１：ＣＰＵ、１２：ＲＯＭ、１３：ＲＡＭ、１４：ＨＤＤ、１５：通信Ｉ／Ｆ、１６：表示部、１７：操作部、１８：システムバス、２０：プリンタ、３０：通信路、１１０：アプリケーション、１２０：プリンタドライバ、１２１：印刷設定部、１２２：表示部、１２３：描画部、１３０：ランゲージモニタ、１３１：通信部、１３２：モジュール管理部、１３３：モジュールバージョン比較部、１３４：モジュール更新部、１４０：通信部、１５０：ＧＤＩ、２００：ドライバパッケージ、２１０：プリンタドライバプログラム、２２０：共通モジュール保存領域、２３０：固有モジュール保存領域、２４０：ランゲージモニタプログラム、３００：モジュール選択画面、３０１：モジュール選択部、３０２：ＯＫボタン、３０３：キャンセルボタン、４００：受付画面、４０１：はいボタン、４０２：いいえボタン
【先行技術文献】
【特許文献】
【００６７】
【特許文献１】特開２００３−５８３７８号公報
【図１】
2015060320.tif 000003
【図２】
2015060320.tif 000004
【図３】
2015060320.tif 000005
【図４】
2015060320.tif 000006
【図５】
2015060320.tif 000007
【図６】
2015060320.tif 000008
【図７】
2015060320.tif 000009
【図８】
2015060320.tif 000010
【図９】
2015060320.tif 000011
【図１０】
2015060320.tif 000012
【図１１】
2015060320.tif 000013
【図１２】
2015060320.tif 000014