以下、本発明に関する好ましい実施形態について図面を参照しつつ詳細に説明する。尚、以下に説明する実施形態において互いに共通する部材には同一符号を付しており、それらについての重複する説明は省略する。
図1は、本発明の一実施形態に関する情報処理装置1のハードウェア構成の一例を示す図である。この情報処理装置1は、CPU2と、メモリ3と、表示部4と、操作入力部5と、通信インタフェース6と、記憶装置7とを備えており、例えば一般的なパーソナルコンピュータ(PC)によって構成される。
CPU2は、記憶装置7に予めインストールされている各種プログラムを実行するものである。メモリ3は、CPU2が各種プログラムを実行する際に一時的なデータなどを記憶するものである。表示部4は、例えばカラー液晶ディスプレイなどによって構成され、ユーザーに対して各種の情報を表示する。操作入力部5は、キーボードやマウスによって構成され、ユーザーによる各種の入力操作を受け付けて操作情報をCPU2へ出力する。通信インタフェース6は、情報処理装置1をLAN(Local Area Network)などのネットワークに接続して外部デバイスと通信を行うものである。記憶装置7は、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)によって構成される不揮発性の記憶手段であり、CPU2よって実行されるプログラムや各種データなどを記憶する。
例えば記憶装置7に予めインストールされるプログラムには、情報処理装置1の基本ソフトウェアであるオペレーティングシステム8と、外部デバイスであるプリンタに対して印刷ジョブを出力するためのドライバプログラムであるデバイスドライバ9aと、そのデバイスドライバ9aをカスタマイズするためのカスタマイズプログラム9bとがある。またこの他にも、記憶装置7には、ユーザーがドキュメント編集などを行うための様々なアプリケーションプログラムが記憶される。さらに記憶装置7には、図1に示すように、管理情報10と、レジストリ11と、DEVMODE構造体12とが記憶される。管理情報10は、CPU2がデバイスドライバ9aを起動することによって生成される情報である。またレジストリ11は、CPU2において起動するオペレーティングシステム8によって管理され、オペレーティングシステム8やデバイスドライバ9a、その他各種アプリケーションの設定値などを格納する情報である。DEVMODE構造体12は、印刷設定に関する設定値を記憶しておくためのデータベースである。
上記のような情報処理装置1は、電源投入に伴い、CPU2がオペレーティングシステム8を自動的に起動する。その後、ユーザーによるアプリケーションの起動指示に基づき、ドキュメント編集などを行うための様々なアプリケーションプログラムを起動する。例えば、情報処理装置1においてアプリケーションプログラムが起動されている状態で、ユーザーによる印刷指示が行われると、CPU2は、記憶装置7からデバイスドライバ9aを読み出して実行する。これにより、情報処理装置1は、ユーザーが印刷設定操作を行うための表示画面を表示部4に表示する。そのため、ユーザーはその表示画面を見ながら印刷設定操作を行うことができるようになる。またオペレーティングシステム8が起動している状態でユーザーがカスタマイズプログラム9bの起動を指示すると、CPU2が記憶装置7からカスタマイズプログラム9bを読み出して起動する。これにより、ユーザーはデバイスドライバ9aのカスタマイズ操作を行うことができるようになる。
図2は、CPU2がデバイスドライバ9aを実行することによりデバイスドライバ20として機能する場合の詳細な機能構成の一例を示す図である。このデバイスドライバ20は、ドライバ共通部21と、複数の機能オブジェクト27a,27b,27cとを有し、ドライバ共通部21に対して複数の機能オブジェクト27a,27b,27cが組み込まれた構成である。ドライバ共通部21は、例えば複数機種のプリンタに共通して利用することが可能な共通機能に関する処理を実行する処理部である。つまり、ドライバ共通部21は、プリンタの機種に依存しない処理を行うものである。このドライバ共通部21は、設定値管理部22と、ユーザーインタフェース処理部23(以下、単に「UI処理部23」という。)と、描画処理部24と、共通インタフェース部25とを備えている。
また複数の機能オブジェクト27a,27b,27cのそれぞれは、例えばネットワークに接続されている特定機種のプリンタに搭載された個々の機能に関する情報を管理するものであり、例えば個々の機能に対応する設定項目などを管理する。つまり、各機能オブジェクト27a,27b,27cは、プリンタの機種に依存する機能ごとの設定に関する情報を管理するものである。このような機能オブジェクト27a,27b,27cは、例えばドライバ共通部21に組み込まれるプログラムモジュールとして構築される。それ故、各機能オブジェクト27a,27b,27cは、それ単独で機能するものではなく、ドライバ共通部21に組み込まれることによって機能し、ドライバ共通部21からの要求に応じて必要な情報をドライバ共通部21へ出力するように構成される。
これら機能オブジェクト27a,27b,27cにおいて管理される機能には様々な機能がある。例えば、プリンタがドキュメントの向きを縦置きと横置きとに切り替えて印刷出力可能な場合には印刷出力時のドキュメントの向きを設定する機能や、プリンタが様々なドキュメントサイズを印刷出力時の用紙サイズに拡大又は縮小して印刷出力可能な場合にはドキュメントサイズや用紙サイズなどを設定する機能、プリンタがカラー印刷可能な場合にはカラー印刷とモノクロ印刷とを切り替えて設定する機能、プリンタが様々な用紙種類に対応している場合には印刷出力時の用紙種類を設定する機能、プリンタがセキュリティ印刷(親展印刷)を行う機能を有している場合にはセキュリティ印刷の設定やセキュリティ印刷が設定されたときのIDやパスワードなどの識別情報を設定する機能などがある。またこの他にも、各機能オブジェクト27a,27b,27cには、印刷出力時の設定に関する様々な機能が割り当てられる。尚、本実施形態では、ドライバ共通部21に3つの機能オブジェクト27a,27b,27cが組み込まれる場合を例示するが、機能オブジェクトの数は3つに限られるものではなく、4つ以上であっても構わない。これら機能オブジェクト27a,27b,27cのそれぞれは、機能情報28a,28b,28c及び保存先情報29a,29b,29cを保持している。
機能情報28a,28b,28cは、各機能オブジェクト27a,27b,27cの機能に関する表示態様などを定義する情報である。例えば、各機能情報28a,28b,28cには、各機能オブジェクト27a,27b,27cに割り当てられた機能に対応する少なくとも1つの設定項目を定義する情報が含まれると共に、その設定項目の表示又は非表示の設定、その設定項目の表示位置、その設定項目についてユーザーが選択操作可能な選択肢などを定義する情報が含まれる。また保存先情報29a,29b,29cは、各機能情報28a,28b,28cにおいて定義されている各設定項目についてのデフォルトの設定値やユーザーが設定した設定値の保存先を指定する情報であり、レジストリ11とDEVMODE構造体12とのいずれか一方を保存先として指定すると共に、レジストリ11又はDEVMODE構造体12において設定値を保存するアドレスを指定する情報である。各機能オブジェクト27a,27b,27cは、ドライバ共通部21からの要求に応じて機能情報28a,28b,28cや保存先情報29a,29b,29cをドライバ共通部21に出力する。
図3は、レジストリ11及びDEVMODE構造体12のデータ構造の一例を示す図である。レジストリ11は、図3(a)に示すように、アドレス部11aとデータ部11bとを有している。アドレス部11aは、データ部11bに格納されるデータ(設定値)の格納アドレスを示すものである。そのため、各機能オブジェクト27a,27b,27cが設定値の保存先としてレジストリ11を指定している場合、それらの保存先情報29a,29b,29cにはその設定値が格納されているレジストリ11のアドレス情報が含まれる。尚、図3(a)では、3つの機能オブジェクト27a,27b,27cのうち、1つの機能オブジェクト27aの機能に関する設定値がレジストリ11に格納されている場合を例示している。レジストリ11は、上述したようにオペレーティングシステム8によって管理される情報であるため、図3(a)に示すようにレジストリ11に格納される設定値は、情報処理装置1においてのみ使用される情報となる。
一方、図3(b)に示すように、DEVMODE構造体12もまた、アドレス部12aとデータ部12bとを有している。アドレス部12aは、データ部12bに格納されるデータ(設定値)の格納アドレスを示すものである。そのため、各機能オブジェクト27a,27b,27cが設定値の保存先としてDEVMODE構造体12を指定している場合、それらの保存先情報29a,29b,29cにはその設定値が格納されているDEVMODE構造体12のアドレス情報が含まれる。尚、図3(b)では、3つの機能オブジェクト27a,27b,27cのうち、2つの機能オブジェクト27b,27cの機能に関する設定値がDEVMODE構造体12に格納されている場合を例示している。
このようなDEVMODE構造体12は、例えばドキュメント編集を行うアプリケーションやそのアプリケーションによって生成されるドキュメントファイルに関連付けておくことも可能である。アプリケーションやドキュメントファイルにDEVMODE構造体12を関連付けておけば、一度印刷設定操作を行って印刷出力を行った後に再度印刷出力を行う際に前回の印刷設定を引き継いで印刷することができるようになり、2回目以降の印刷設定操作を簡略化することができるという利点がある。その一方、DEVMODE構造体12がドキュメントファイルに関連付けられると、そのドキュメントファイルが他のユーザーによって閲覧された場合には、そのドキュメントファイルに関連付けられているDEVMODE構造体12に含まれる設定値も他のユーザーによって閲覧されることになる。そのため、例えばセキュリティ印刷のためのIDやパスワードなどの識別情報については、DEVMODE構造体12に保存するのではなく、レジストリ11に保存しておくことが好ましい。
図2に戻り、ドライバ共通部21のUI処理部23は、デバイスドライバ20が機能することに伴い、表示部4に対して印刷設定画面を表示し、操作入力部5に対して行われるユーザーの設定操作を受け付ける。UI処理部23は、表示部4に印刷設定画面を表示するとき、その印刷設定画面の画面枠を生成する。そしてUI処理部23は、各機能オブジェクト27a,27b,27cの機能情報28a,28b,28cを参照することにより、それら機能情報28a,28b,28cで定義されている表示態様で各種の設定項目を画面枠の内側に配置すると共に、保存先情報29a,29b,29cに基づいてレジストリ11やDEVMODE構造体12から各設定項目の設定値を読み出して現在の設定値を各設定項目に反映させることにより印刷設定画面を生成する。UI処理部23は、このようにして生成した印刷設定画面を表示部4に出力することにより、表示部4には、ユーザーが様々な印刷設定を行うことが可能な印刷設定画面が表示されるようになる。
図4は、UI処理部23によって表示される印刷設定画面G1の一例を示す図である。UI処理部23は、印刷設定画面G1の画面枠を生成し、その画面枠中央の設定領域R1に対し、ユーザーが印刷設定操作を行うことが可能な設定項目や現在の設定値などを表示する。すなわち、UI処理部23は、各機能オブジェクト27a,27b,27cの機能情報28a,28b,28cに基づいて各設定項目を設定領域R1内に配置すると共に、各機能オブジェクト27a,27b,27cの保存先情報29a,29b,29cに基づいて各設定項目における現在の設定値をレジストリ11又はDEVMODE構造体12から取得し、各設定項目の現在の設定値として表示する。その結果、設定領域R1において表示される設定項目は、各機能オブジェクト27a,27b,27cによって定義された表示態様で表示されるようになる。そしてユーザーは、設定領域R1に含まれる各設定項目に対して所望の設定操作を行うことにより、現在の設定値を所望の設定値に設定変更することができるようになる。
また図4に示す印刷設定画面G1には、ユーザーがセキュリティ印刷に関する設定を行うための領域R2が含まれる。セキュリティ印刷とは、印刷ジョブにIDとパスワードとを含む識別情報を予め設定しておき、ユーザーがプリンタの設置場所まで移動してプリンタに対してそのIDとパスワードに一致する識別情報を入力することにより、当該プリンタにおいて印刷出力が開始される印刷方法である。そのため、領域R2には、セキュリティ印刷を行うためにユーザーが入力すべきIDとパスワードとを含む識別情報を予め設定する設定項目が含まれる。
上記のような印刷設定画面G1が表示されている状態でユーザーの印刷設定操作により各設定項目の設定値が変更された場合、UI処理部23は、その設定項目の設定値の保存場所を保存先情報29a,29b,29cに基づいて特定し、その特定した保存場所に保存されている設定値をユーザーによって指定された設定値に書き換える。これにより、各設定項目の設定値が変更される。つまり、UI処理部23は、ユーザーによる設定操作に基づいてレジストリ11やDEVMODE構造体12に保存されている設定値を更新するように構成される。またUI処理部23は、レジストリ11やDEVMODE構造体12に保存されている設定値を更新したときには、表示部4に表示している印刷設定画面G1も更新する。これにより、表示部4において表示されている印刷設定画面G1上における設定値がユーザーによって指定された設定値に更新される。
またUI処理部23は、表示部4に対して印刷設定画面G1を表示している状態でユーザーによる印刷指示を検知すると、描画処理部24を機能させる。描画処理部24は、ユーザーによって指定されたドキュメント(画像データ)を取得し、そのドキュメントに対応する描画処理を行うことにより、ネットワークに接続されている特定機種のプリンタにおいて印刷出力を行うことが可能な印刷データを生成する。そして描画処理部24は、描画処理によって生成した印刷データと各種印刷コマンドとを含む印刷ジョブを生成し、通信インタフェース6を介して特定機種のプリンタに当該印刷ジョブを送信する。このとき描画処理部24は、各機能オブジェクト27a,27b,27cの保存先情報29a,29b,29cに基づいてレジストリ11又はDEVMODE構造体12から機能ごとの設定項目の設定値を読み出し、それら設定値に対応する描画処理を行うと共に、それら設定値に対応する印刷コマンドを生成する。したがって、特定機種のプリンタに出力される印刷ジョブは、印刷設定画面G1においてユーザーが設定した印刷設定が反映された印刷ジョブとなる。尚、描画処理部24は、レジストリ11やDEVMODE構造体12から設定値を読み出すのではなく、UI処理部23からそれらの設定値を取得するものであっても構わない。
設定値管理部22は、レジストリ11及びDEVMODE構造体12に保存されている設定値を読み出し、それらの設定値をレジストリ11やDEVMODE構造体12とは異なる管理情報10に保存して管理する処理部である。つまり、設定値管理部22は、レジストリ11及びDEVMODE構造体12に保存されている設定値を管理情報10にミラーリングして管理する。例えば、UI処理部23によってレジストリ11やDEVMODE構造体12に保存されている設定値が変更されると、設定値管理部22は、レジストリ11又はDEVMODE構造体12に保存されている設定値を管理情報10にミラーリングしてUI処理部23による設定値の変更を管理情報10にも反映させる。これにより、管理情報10には、レジストリ11及びDEVMODE構造体12のそれぞれに保存されている印刷設定に関する設定値と同じ設定値が保存されることになる。
図5は、設定値管理部22によって管理される管理情報10の一例を示す図である。図5に示すように、管理情報10は、各機能オブジェクト27a,27b,27cに関する情報を記録した機能オブジェクト情報16と、各機能オブジェクト27a,27b,27cにおいて定義されている各設定項目の設定値を管理する設定値管理情報17とを有する情報である。また設定値管理情報17は、レジストリ11に格納されている設定値と同じ情報を保持するレジストリ管理情報18と、DEVMODE構造体12に格納されている設定値と同じ情報を保持するDEVMODE構造体管理情報19とを有する情報である。
図6は、管理情報10に含まれる機能オブジェクト情報16、レジストリ管理情報18及びDEVMODE構造体管理情報19の一例を示す図である。図6(a)に示すように機能オブジェクト情報16は、各機能オブジェクト27a,27b,27cを識別するための機能オブジェクト識別情報16aと、各機能オブジェクト27a,27b,27cのバージョン情報16bとを有し、各機能オブジェクト27a,27b,27cの識別情報とバージョンとが記録された情報となっている。つまり、この機能オブジェクト情報16を参照すれば、ドライバ共通部21に組み込まれている各機能オブジェクト27a,27b,27cのバージョンが更新されたか否かを判別することができる。そのため、設定値管理部22は、例えばCPU2においてデバイスドライバ20が起動したタイミングで各機能オブジェクト27a,27b,27cからバージョン情報を取得し、そのバージョン情報と、機能オブジェクト情報16に記録されているバージョン情報16bとを比較することにより、デバイスドライバ20の起動前に各機能オブジェクト27a,27b,27cが更新されたか否かを判断することができる。そして各機能オブジェクト27a,27b,27cから取得したバージョン情報と、機能オブジェクト情報16に記録されているバージョン情報16bとが異なる場合、設定値管理部22は、各機能オブジェクト27a,27b,27cから取得した最新のバージョン情報を機能オブジェクト情報16のバージョン情報16bの欄に書き込んで管理情報10を更新する。
またレジストリ管理情報18は、各機能オブジェクト27a,27b,27cの機能ごとに、設定項目18aと、アドレス情報18bと、サイズ情報18cと、設定値18dとが記録された情報である。設定項目18aは、各機能オブジェクト27a,27b,27cの機能情報28a,28b,28cに定義されている設定項目であり、アドレス情報18bは、その設定項目の設定値が格納されているレジストリ11のアドレスを示す情報である。またサイズ情報18cは、レジストリ11に格納されている設定値のデータサイズを示す情報であり、さらに設定値18dは、レジストリ11に格納されている設定値をミラーリングして格納される値である。したがって、このレジストリ管理情報18を参照すれば、各機能オブジェクト27a,27b,27cにおいて保存先がレジストリ11として指定されている設定項目と、その設定項目の設定値とを特定することができる。
さらにDEVMODE構造体管理情報19は、レジストリ管理情報18と同様、各機能オブジェクト27a,27b,27cの機能ごとに、設定項目19aと、アドレス情報19bと、サイズ情報19cと、設定値19dとが記録された情報である。設定項目19aは、各機能オブジェクト27a,27b,27cの機能情報28a,28b,28cに定義されている設定項目であり、アドレス情報19bは、その設定項目の設定値が格納されているDEVMODE構造体12のアドレスを示す情報である。またサイズ情報19cは、DEVMODE構造体12に格納されている設定値のデータサイズを示す情報であり、さらに設定値18dは、DEVMODE構造体12に格納されている設定値をミラーリングして格納される値である。したがって、このDEVMODE構造体管理情報19を参照すれば、各機能オブジェクト27a,27b,27cにおいて保存先がDEVMODE構造体12として指定されている設定項目と、その設定項目の設定値とを特定することができる。
そして設定値管理部22は、UI処理部23によってレジストリ11やDEVMODE構造体12に格納されている設定値が書き換えられると、その都度、レジストリ管理情報18の設定値18dの欄やDEVMODE構造体管理情報19の設定値19dの欄を書き換えて管理情報10を更新する。
共通インタフェース部25は、複数の機能オブジェクト27a,27b,27cのそれぞれをドライバ共通部21に組み込むためのインタフェースである。この共通インタフェース部25は、例えば設定値管理部22、UI処理部23及び描画処理部24のそれぞれが各機能オブジェクト27a,27b,27cから機能情報28a,28b,28cや保存先情報29a,29b,29cを読み出す際に、共通のコマンドで読み出しを行えるようにするものである。そのため、設定値管理部22、UI処理部23及び描画処理部24は、機能オブジェクトごとにコマンドを切り替える必要がなくなるため、処理効率が向上する。
次に上記のように構成されたデバイスドライバ20の動作について説明する。図7は、デバイスドライバ20によって行われる処理手順の一例を示すフローチャートである。この処理は、デバイスドライバ20のドライバ共通部21によって行われる処理であり、上述した設定値管理部22、UI処理部23及び描画処理部24が連携動作することによって進行していく処理手順となっている。CPU2においてデバイスドライバ20が機能すると、ドライバ共通部21は、ドライバ共通部21に組み込まれている各機能オブジェクト27a,27b,27cから機能情報28a,28b,28cを読み出す(ステップS10)。そして設定値管理部22が機能し、機能オブジェクト情報16に記録されているバージョン情報16bとのバージョン比較を行い(ステップS11)、機能オブジェクト27a,27b,27cが変更されているか否かを判断する(ステップS12)。その結果、複数の機能オブジェクト27a,27b,27cの少なくとも1つが変更されている場合(ステップS12でYES)、設定値管理部22は、管理情報10に含まれる機能オブジェクト情報16のバージョン情報16bを最新の状態に書き換えて更新する(ステップS13)。尚、複数の機能オブジェクト27a,27b,27cに変更が生じていない場合(ステップS12でNO)、ステップS13の処理はスキップする。
続いてドライバ共通部21においてUI処理部23が機能する。そしてUI処理部23は、各機能オブジェクト27a,27b,27cから保存先情報29a,29b,29cを取得し、それらの保存先情報29a,29b,29cに基づいて各設定項目の設定値を、レジストリ11又はDEVMODE構造体12から読み出す(ステップS14)。UI処理部23は、その読み出した設定値に基づき、表示部4に表示するための印刷設定画面G1を生成すると共に、その印刷設定画面G1を表示部4に出力して表示する(ステップS15)。
そしてUI処理部23は、ユーザーによる印刷指示が行われたか否かを判断し(ステップS16)、印刷指示が行われていない場合(ステップS16でNO)、ユーザーによる印刷設定の設定変更操作が行われたか否かを判断する(ステップS17)。設定変更操作が行われていない場合(ステップS17でNO)、UI処理部23による処理はステップS16へ戻り、ユーザーによる操作が行われるまで上記判断が繰り返される。そしてユーザーによる印刷設定の設定変更操作が行われた場合(ステップS17でYES)、UI処理部23は、各機能オブジェクト27a,27b,27cの保存先情報29a,29b,29cに基づき、その設定変更が行われた設定値の保存先を参照し(ステップS18)、その保存先の設定値をユーザーによって指定された設定値に更新する(ステップS19)。そしてUI処理部23は、表示部4に表示している印刷設定画面G1をユーザーによる操作を反映させた表示画面に更新する(ステップS20)。これに伴い、設定値管理部22が機能する。そして設定値管理部22は、UI処理部23によって更新されたレジストリ11又はDEVMODE構造体12の設定値を読み出し、その設定値に基づいて管理情報10のレジストリ管理情報18又はDEVMODE構造体管理情報19に格納されている設定値を書き換えることにより、管理情報10を最新の状態に更新する(ステップS21)。そしてステップS16に戻り、ユーザーによる次の操作を待機する状態となる。
ユーザーによって印刷指示が行われた場合(ステップS16でYES)、UI処理部23は、描画処理部24を機能させる。そして描画処理部24は、ユーザーによって指定された印刷設定に基づく描画処理を行うことにより、印刷ジョブを生成し(ステップS22)、通信インタフェース6を介してその印刷ジョブをプリンタへ出力する(ステップS23)。以上で、デバイスドライバ20による一連の処理が終了する。
次にCPU2においてカスタマイズプログラム9bが起動する場合について説明する。図8は、CPU2がカスタマイズプログラム9bを実行することによりカスタマイズツール30として機能する場合の詳細な機能構成の一例を示す図である。CPU2は、ユーザーによる起動指示に基づいてカスタマイズプログラム9bを実行すると、図8に示すようにカスタマイズツール30を機能させる。このカスタマイズツール30は、ユーザーによるカスタマイズ操作に基づいてデバイスドライバ20に対する機能オブジェクトの追加、削除又は変更を行うことにより、デバイスドライバ20を更新するツールである。つまり、カスタマイズツール30は、デバイスドライバ20のドライバ共通部21を変更することなく、そのドライバ共通部21に対する機能オブジェクトの組み替えを行うことによりデバイスドライバ20を更新する。したがって、ユーザーは、情報処理装置1においてカスタマイズツール30を起動させることにより、例えば上述した印刷設定画面G1の設定領域R1に表示される設定項目の表示又は非表示の切り替えや設定項目の表示態様をカスタマイズすることができる。またカスタマイズツール30は、印刷設定画面G1の表示態様を変更するだけでなく、ユーザーによる指示操作に基づいて、各設定項目の設定値の保存場所を、レジストリ11からDEVMODE構造体12へ、或いは、DEVMODE構造体12からレジストリ11へ変更することもできる。以下、カスタマイズツール30について詳しく説明する。
図8に示すように、カスタマイズツール30は、機能オブジェクト変更部31と、引継処理部32とを備えている。機能オブジェクト変更部31は、ユーザーのカスタマイズ操作に基づいてデバイスドライバ20の機能オブジェクトを組み替えることにより、デバイスドライバ20を更新する処理部である。また引継処理部32は、ユーザーによるカスタマイズ操作によって各設定項目の設定値の保存場所がレジストリ11からDEVMODE構造体12へ、或いは、DEVMODE構造体12からレジストリ11へ変更された場合にカスタマイズ前の設定値をカスタマイズ後の保存場所へ書き込むことにより、カスタマイズ前のデータ(設定値)をカスタマイズ後においても正常に参照できるようにする処理部である。
機能オブジェクト変更部31は、機能定義データ取得部33と、機能定義データ編集部34と、機能オブジェクト生成部35と、組替処理部36とを備えており、これらを順に機能させることによりデバイスドライバ20を更新する。図9は、機能定義データ取得部33、機能定義データ編集部34、機能オブジェクト生成部35及び組替処理部36のそれぞれにおける処理の概念を説明する図である。尚、図9は、図2に示した3つの機能オブジェクト27a,27b,27cのそれぞれを新たな機能オブジェクト27d,27e,27fに組み替える場合の処理概念を例示するものである。
図9に示すように、まず機能定義データ取得部33は、組み替え対象となる3つの機能オブジェクト27a,27b,27cのそれぞれに対応する機能定義データ51a,51b,51cを取得する。機能定義データは、機能オブジェクトの生成元となるオリジナルデータであり、例えば特定機種のプリンタに搭載された個々の機能に対応する設定項目や設定項目の表示態様、各設定項目に関する設定値の保存先などをスクリプト形式で記述したデータである。例えば図9においては、機能定義データ51aが機能オブジェクト27aのオリジナルデータであり、機能定義データ51bが機能オブジェクト27bのオリジナルデータであり、機能定義データ51cが機能オブジェクト27cのオリジナルデータである。そして機能定義データ取得部33は、ユーザーによってデバイスドライバ20に組み込まれている3つの機能オブジェクト27a,27b,27cのそれぞれが組み替え対象であることが指定されると、それら3つの機能オブジェクト27a,27b,27cに対応する機能定義データ51a,51b,51cを取得する。尚、このような機能定義データ51a,51b,51cは、記憶装置7に予め記憶されている。
機能定義データ編集部34は、機能定義データ取得部33によって取得された機能定義データ51a,51b,51cに基づき、表示部4に対して機能定義データの編集画面を表示する。そしてユーザーによる編集操作に基づき、特定機種のプリンタに搭載された個々の機能に対応する設定項目や設定項目の表示態様、各設定項目に関する設定値の保存先などを変更し、新たな機能定義データ51d,51e,51fを生成する。つまり、機能定義データ編集部34は、ユーザーによるカスタマイズ操作に基づき、各機能定義データ51a,51b,51cにおけるスクリプト形式の記述を書き換えて新たな機能定義データ51d,51e,51fを生成する。このようにして生成される新たな機能定義データ51d,51e,51fは記憶装置7に保存される。
次に機能オブジェクト生成部35が機能する。機能オブジェクト生成部35は、ユーザーによるカスタマイズ操作によって生成された新たな機能定義データ51d,51e,51fに基づき新たな機能オブジェクト27d,27e,27fを生成する。すなわち、機能オブジェクト生成部35は、スクリプト形式で記述された機能定義データ51d,51e,51fを、ドライバ共通部21の共通インタフェース部25に組み込み可能なバイナリ形式のデータに変換することにより、新たな機能オブジェクト27d,27e,27fを生成する。これら機能オブジェクト27d,27e,27fには、ユーザーによるカスタマイズ操作が反映された機能情報28d,28e,28f及び保存先情報29d,29e,29fが含まれる。このようにして新たに生成される機能オブジェクト27d,27e,27fは、既存の機能オブジェクト27a,27b,27cとはバージョンの異なる機能オブジェクトとなる。ただし、新たに生成される各機能オブジェクト27d,27e,27fは既存の機能オブジェクト27a,27b,27cのそれぞれと同じ機能であるため、新たに生成される機能オブジェクト27d,27e,27fの識別情報は既存の機能オブジェクト27a,27b,27cの識別情報と同じである。
そして組替処理部36が機能する。組替処理部36は、ユーザーによって指定されたデバイスドライバ20を変更対象として選択し、ユーザーによる組み替え設定操作に基づいてその選択したデバイスドライバ20の機能オブジェクトを組み替える処理を行う。例えば、図9に示すように機能オブジェクト生成部35によって3つの新たな機能オブジェクト27d,27e,27fが生成され、ユーザーによってそれら3つの機能オブジェクト27d,27e,27fをデバイスドライバ20に既に組み込まれている3つの機能オブジェクト27a,27b,27cと組み替えることが指定された場合、組替処理部36は、デバイスドライバ20に既に組み込まれている3つの機能オブジェクト27a,27b,27cのそれぞれを共通インタフェース部25から切り離し、新たに生成された3つの機能オブジェクト27d,27e,27fのそれぞれを共通インタフェース部25に組み込むことにより、デバイスドライバ20を更新する。その結果、図2に示したデバイスドライバ20の構成は、図10に示すようにドライバ共通部21に対して新たな機能オブジェクト27d,27e,27fが組み込まれた状態に更新される。
このように機能オブジェクト変更部31は、機能定義データ取得部33、機能定義データ編集部34、機能オブジェクト生成部35及び組替処理部36を順次機能させることにより、ユーザーのカスタマイズ操作に基づいてデバイスドライバ20を更新する。尚、上記においては、既存の機能オブジェクトを新たな機能オブジェクトに変更する場合を例示したが、これに限られるものではなく、機能オブジェクト変更部31は、デバイスドライバ20に対して新たな機能オブジェクトを追加するカスタマイズやデバイスドライバ20に組み込まれている既存の機能オブジェクトを削除するカスタマイズなどを行うことも可能である。そして機能オブジェクト変更部31によってデバイスドライバ20が更新されると、次に引継処理部32が機能する。
引継処理部32は、バージョン比較部37と、データ構造更新部38とを備えている。バージョン比較部37は、機能オブジェクト変更部31によって更新されたデバイスドライバ20に組み込まれている各機能オブジェクト27d,27e,27fのバージョン情報を取得すると共に、管理情報10の機能オブジェクト情報16に記録されているバージョン情報16bを読み出し、デバイスドライバ20の更新前後においてバージョン情報が変更された機能オブジェクトが存在するか否かを判断する。その結果、バージョン情報が変更された機能オブジェクトが存在する場合、バージョン比較部37は、データ構造更新部38を機能させる。
データ構造更新部38は、デバイスドライバ20の更新前においてデバイスドライバ20に組み込まれていた各機能オブジェクト27a,27b,27cの保存先情報29a,29b,29cと、デバイスドライバ20の更新後においてデバイスドライバ20に組み込まれている各機能オブジェクト27d,27e,27fの保存先情報29d,29e,29fとを対比し、デバイスドライバ20の更新前後において設定値の保存先に変更がある場合に、レジストリ11及びDEVMODE構造体12における設定値の保存状態を更新する。すなわち、データ構造更新部38は、管理情報10に含まれるレジストリ管理情報18及びDEVMODE構造体管理情報19を読み出し、それらレジストリ管理情報18及びDEVMODE構造体管理情報19から、デバイスドライバ20が更新される前の機能オブジェクト27a,27b,27cのそれぞれにおいて指定されていた保存先の設定値を取得する。そしてデータ構造更新部38は、管理情報10から読み出した設定値を、デバイスドライバ20が更新された後の機能オブジェクト27d,27e,27fのそれぞれにおいて指定されている保存先に保存する。
例えば図3に示したようにデバイスドライバ20の更新前の機能オブジェクト27aがレジストリ11を保存先として指定しており、デバイスドライバ20の更新によってその機能オブジェクト27aと組み替えられた新たな機能オブジェクト27dがDEVMODE構造体12を保存先として指定している場合、データ構造更新部38は、機能オブジェクト27aによって指定されていたレジストリ11の設定値を管理情報10のレジストリ管理情報18から読み出し、その設定値を、新たな機能オブジェクト27dによって指定されているDEVMODE構造体12の指定アドレスに格納する。
また例えば図3に示したようにデバイスドライバ20の更新前の機能オブジェクト27cがDEVMODE構造体12を保存先として指定しており、デバイスドライバ20の更新によってその機能オブジェクト27cと組み替えられた新たな機能オブジェクト27fがレジストリ11を保存先として指定している場合、データ構造更新部38は、機能オブジェクト27cによって指定されていたDEVMODE構造体12の設定値を管理情報10のDEVMODE構造体管理情報19から読み出し、その設定値を、新たな機能オブジェクト27fによって指定されているレジストリ11の指定アドレスに格納する。
このようにデータ構造更新部38は、デバイスドライバ20の更新によって設定値の保存場所がレジストリ11からDEVMODE構造体12に変更された場合、又は、DEVMODE構造体12からレジストリ11に変更された場合に、管理情報10のレジストリ管理情報18又はDEVMODE構造体管理情報19に基づいてDEVMODE構造体12又はレジストリ11の設定値の保存状態を更新する。尚、デバイスドライバ20の更新によって設定値の保存場所が変更されていない場合には、データ構造更新部38による更新処理は行わなくても良い。ただし、保存先として指定されるレジストリ11又はDEVMODE構造体12がデバイスドライバ20の更新前後において変わらない場合であっても、設定値を保存するアドレスが変わることもある。そのため、デバイスドライバ20の更新前後において設定値を保存するアドレスが変わっている場合、データ構造更新部38は、管理情報10のレジストリ管理情報18又はDEVMODE構造体管理情報19に基づいてDEVMODE構造体12又はレジストリ11の設定値の保存状態を更新する。
図11は、データ構造更新部38によって書き換えられるレジストリ11及びDEVMODE構造体12のデータ構造の一例を示す図である。この図11は、図3に示したデータ構造が書き換えられた状態を例示している。上述したようにデバイスドライバ20の更新前の機能オブジェクト27cがDEVMODE構造体12を保存先として指定しており、デバイスドライバ20の更新によってその機能オブジェクト27cと組み替えられた新たな機能オブジェクト27fがレジストリ11を保存先として指定している場合、データ構造更新部38は、管理情報10からレジストリ11に保存されている設定値を読み出し、その設定値をDEVMODE構造体12に書き込んでDEVMODE構造体12の設定値の保存状態を更新する。またデバイスドライバ20の更新前の機能オブジェクト27cがDEVMODE構造体12を保存先として指定しており、デバイスドライバ20の更新によってその機能オブジェクト27cと組み替えられた新たな機能オブジェクト27fがレジストリ11を保存先として指定している場合、データ構造更新部38は、管理情報10からDEVMODE構造体12に保存されている設定値を読み出し、その設定値をレジストリ11に書き込んでレジストリ11の設定値の保存状態を更新する。これにより、レジストリ11に格納される設定値は、図3(a)に示す状態から図11(a)に示す状態に書き換えられる。またDEVMODE構造体12に格納される設定値は、図3(b)に示す状態から図11(b)に示す状態に書き換えられる。その結果、デバイスドライバ20が更新された後の複数の機能オブジェクト27d,27e,27fのそれぞれが指定する設定値の保存先には、デバイスドライバ20の更新前の設定値が格納されることとなる。それ故、デバイスドライバ20が更新された後にデバイスドライバ20が起動するときには、それら複数の機能オブジェクト27d,27e,27fのそれぞれが指定する保存先から各設定項目の設定値を正常に読み出すことができるようになり、ユーザーによるカスタマイズ操作後の印刷設定画面G1を正常に表示することができるようになる。
次に上記のように構成されたカスタマイズツール30の動作について説明する。図12及び図13は、カスタマイズツール30によって行われる処理手順の一例を示すフローチャートである。この処理は、カスタマイズツール30の機能オブジェクト変更部31及び引継処理部32が順に機能することによって行われる処理手順となっている。CPU2においてカスタマイズツール30が機能すると、まず機能オブジェクト変更部31が動作する。機能オブジェクト変更部31は、ユーザーによる指示操作に基づいて例えば記憶装置7に保存されている既存の機能定義データ51a,51b,51cを読み出して取得する(ステップS30)。尚、機能オブジェクト変更部31は、通信インタフェース6を介して外部のサーバーから機能定義データ51a,51b,51cを取得するものであっても良い。機能オブジェクト変更部31は、ユーザーによって指定された機能定義データ51a,51b,51cを取得すると、表示部4に対してそれら機能定義データ51a,51b,51cの編集画面を表示し、ユーザーによる編集操作に基づいて機能定義データの編集処理を実行する(ステップS31)。これにより、ステップS30で取得された機能定義データ51a,51b,51cがユーザーによる編集操作に基づいて改変される。このような編集処理は、ユーザーによる編集操作が終了するまで継続する(ステップS32)。そしてユーザーによる編集操作が終了すると(ステップS32でYES)、機能オブジェクト変更部31は、編集操作に基づく改変によって新たに生成された機能定義データ51d,51e,51fを記憶装置7に保存し(ステップS33)、それら機能定義データ51d,51e,51fに基づいて新たな機能オブジェクト27d,27e,27fを生成する(ステップS34)。このとき、機能オブジェクト変更部31は、新たに生成した機能オブジェクト27d,27e,27fのバージョンを最新バージョンに更新し、例えば各機能オブジェクト27d,27e,27fの機能情報28d,28e,28fにそのバージョン情報を書き込む(ステップS35)。以上のような処理で、デバイスドライバ20に対して新たに組み込む機能オブジェクト27d,27e,27fが生成される。
続いて機能オブジェクト変更部31は、ユーザーによる指示操作に基づいて変更対象となるデバイスドライバ20を選択する(ステップS36)。例えば情報処理装置1に複数のデバイスドライバ20がインストールされている場合、このステップS36においてカスタマイズ対象となる一のデバイスドライバ20が選択されることになる。そして機能オブジェクト変更部31は、カスタマイズ対象となる一のデバイスドライバ20を選択すると、そのデバイスドライバ20における現在の機能オブジェクトの構成を表示部4に表示し、ユーザーによる機能オブジェクトの組み替え設定を受け付ける(ステップS37)。すなわち、既存の機能オブジェクト27a,27b,27cのそれぞれを新たな機能オブジェクト27d,27e,27fと組み替える設定操作を受け付ける。このときユーザーは、既存の機能オブジェクトの削除や、新たな機能オブジェクトの追加を設定することもできる。そしてユーザーによる設定操作が行われると、機能オブジェクト変更部31は、機能オブジェクトの組み替え処理を実行し(ステップS38)、デバイスドライバ20を更新する(ステップS39)。これにより、デバイスドライバ20に組み込まれていた既存の機能オブジェクト27a,27b,27cが新たな機能オブジェクト27d,27e,27fに組み替えられ、デバイスドライバ20における機能オブジェクトの構成が更新される。
次にカスタマイズツール30において引継処理部32が動作し、データ引継処理を実行する(ステップS40)。図13は、このデータ引継処理(ステップS40)の詳細な処理手順の一例を示すフローチャートである。引継処理部32は、管理情報10から機能オブジェクト情報16を読み出し(ステップS50)、デバイスドライバ20の更新前後における各機能オブジェクトのバージョン比較処理を行う(ステップS51)。このバージョン比較処理により、デバイスドライバ20の更新によって組み替えられた機能オブジェクトが存在するか否かを特定することができる。そして機能オブジェクトの組み替えが行われた場合には、設定値の保存先が変更されている可能性がある。そのため、引継処理部32は、組み替え後の機能オブジェクト27d,27e,27fに関するバージョン情報が管理情報10に記録されている組み替え前の機能オブジェクト27a,27b,27cに関するバージョン情報16bと異なる場合に、組み替え後の機能オブジェクト27d,27e,27fにおいて指定されている保存先が変更された可能性があることを検知する。そして引継処理部32は、デバイスドライバ20の更新によってデバイスドライバ20から切り離された機能オブジェクト27a,27b,27cを特定し(ステップS52)、デバイスドライバ20に対して新たに組み込まれた機能オブジェクト27d,27e,27fにおいて指定されている設定値の保存先が変更されているか否かを判断する(ステップS53)。その結果、設定値の保存先が変更されていない場合(ステップS53でNO)、引継処理部32は、レジストリ11及びDEVMODE構造体12の設定値の保存状態を特に変更することなく、処理を終了する。
一方、デバイスドライバ20の更新に伴い、設定値の保存先が変更されている場合(ステップS53でYES)、引継処理部32は、管理情報10から組み替え前の機能オブジェクト27a,27b,27cに関する設定値を取得する(ステップS54)。そして引継処理部32は、管理情報10から取得した設定値を、デバイスドライバ20の更新後の機能オブジェクト27d,27e,27fが指定している保存先に保存する(ステップS55)。
以上でカスタマイズツール30による一連の処理が終了する。そしてカスタマイズツール30によって上述した一連の処理が行われることにより、ユーザーのカスタマイズ操作に基づいてデバイスドライバ20を更新することができると共に、更新後のデバイスドライバ20がレジストリ11及びDEVMODE構造体12に保存されている設定値を正常に参照できるようになる。そのため、デバイスドライバ20が更新された場合であっても、デバイスドライバ20を再インストールすることなく、デバイスドライバ20を正常に起動することができるようになる。
一方、デバイスドライバ20は、カスタマイズ操作に基づいて更新された後に起動するとき、設定値管理部22を機能させ、管理情報10の機能オブジェクト情報16に含まれるバージョン情報16bを書き換えると共に、レジストリ11及びDEVMODE構造体12のそれぞれに保存されている設定値を、レジストリ管理情報18及びDEVMODE構造体管理情報19のそれぞれにミラーリングして書き換えることにより、管理情報10を更新後のデバイスドライバ20に対応して更新する。
したがって、ユーザーは、例えばセキュリティ印刷のために設定するIDやパスワードなどの識別情報の保存先をDEVMODE構造体12からレジストリ11に変更するカスタマイズ操作を行った場合でも、デバイスドライバ20を再インストールすることなく、速やかに更新後のデバイスドライバ20を起動させることができるため、デバイスドライバ20をカスタマイズする際の操作性が向上する。
以上のように本実施形態の情報処理装置1は、デバイスドライバ20と、そのデバイスドライバ20をカスタマイズするカスタマイズツール30とを備えた構成である。そしてデバイスドライバ20は、ドライバ共通部21に対し、ユーザーが設定可能な機能ごとに設けられる複数の機能オブジェクト27a,27b,27cが組み込まれた構成であり、各機能オブジェクト27a,27b,27cにおいて機能ごとの設定値の保存先が指定されている。カスタマイズツール30は、そのようなデバイスドライバ20に組み込まれている機能オブジェクト27a,27b,27cをユーザーのカスタマイズ操作に基づいて組み替えることにより、デバイスドライバ20を更新する。
そしてデバイスドライバ20は、複数の機能オブジェクト27a,27b,27cのそれぞれにおいて指定された保存先から各機能の設定値を読み出して表示すると共に、ユーザーによる各機能に対する設定操作に基づき、当該設定操作が行われた機能に対応する機能オブジェクト27a,27b,27cにおいて指定されている保存先の設定値を変更するUI処理部23と、複数の機能オブジェクト27a,27b,27cのそれぞれによって指定されている保存先の設定値をミラーリングして管理情報10として管理する設定値管理部22とを有している。またカスタマイズツール30は、ユーザーの指示操作に基づいてデバイスドライバ20に組み込まれている機能オブジェクト27a,27b,27cのうちの少なくとも1つを新規な機能オブジェクト27d,27e,27fに組み替える機能オブジェクト変更部31と、機能オブジェクト変更部31によって機能オブジェクトの組み替えが行われることに伴い、組み替え後の機能オブジェクト27d,27e,27fにおいて指定されている設定値の保存先が変更された場合、管理情報10から組み替え前の機能オブジェクト27a,27b,27cにおいて指定されていた保存先の設定値を読み出し、その設定値を組み替え後の機能オブジェクト27d,27e,27fにおいて指定されている保存先に保存する引継処理部32とを有している。
上記構成を有する情報処理装置1によれば、カスタマイズツール30がユーザーの指示操作に基づいてデバイスドライバ20を更新することに伴い、デバイスドライバ20に新たに組み込まれた機能オブジェクト27d,27e,27fのそれぞれにおいて指定されている保存先に更新前の設定値を保存する。そのため、デバイスドライバ20が更新された場合であっても、デバイスドライバ20は更新前の設定値を正常に引き継いで参照できるようになり、印刷設定画面G1などの表示画面を正常に表示することができる。
また情報処理装置1がデバイスごとに設けられる複数のデバイスドライバ20を備えている場合、機能オブジェクト変更部31は、複数のデバイスドライバ20のそれぞれに組み込まれている機能オブジェクトを組み替え可能であり、引継処理部32は、複数のデバイスドライバ20のうち、機能オブジェクト変更部31によって機能オブジェクトの組み替えが行われたデバイスドライバ20の設定値管理部22が管理している管理情報10から組み替え前の機能オブジェクトにおいて指定されていた保存先の設定値を読み出し、その設定値を組み替え後の機能オブジェクトにおいて指定されている保存先に保存する。このような構成によれば、複数のデバイスドライバ20のいずれが更新された場合であっても、更新されたデバイスドライバ20は更新前の設定値を正常に引き継いで参照できるようになる。
以上、本発明に関する一実施形態について説明したが、本発明は上記実施形態において説明した内容のものに限られるものではなく、種々の変形例が適用可能である。
例えば上記実施形態では、デバイスドライバ20がプリンタに対して印刷ジョブを出力する際にユーザーが各種印刷設定を行うためのプリンタドライバとして構成される場合を例示した。しかし、デバイスドライバ20は、プリンタドライバに限られるものではない。例えば、情報処理装置1の外部デバイスとしてファクシミリ装置が設けられている場合、デバイスドライバ20は、そのファクシミリ装置に対してジョブを出力するファクシミリドライバであっても構わない。
また上記実施形態では、情報処理装置1に予めデバイスドライバ9aとカスタマイズプログラム9bとがインストールされている場合について説明した。これらのプログラム、すなわちデバイスドライバ9a及びカスタマイズプログラム9bのそれぞれは、CD−ROMなどのコンピュータ読み取り可能な記録媒体に記録された状態で提供されるものであっても良いし、またネットワークを介してダウンロードすることにより提供されるものであっても良い。そのため、情報処理装置1へのインストールは、記録媒体を読み取ることによって行われるものであっても良いし、またネットワークを介してダウンロードすることによって行われるものであっても良い。
また上記実施形態では、設定値の保存先としてレジストリ11及びDEVMODE構造体12のいずれかが指定される場合を例示した。しかし、設定値の保存先は、必ずしもレジストリ11やDEVMODE構造体12に限られるものではなく、任意の記憶手段が保存先として指定されるものであっても構わない。