(57)【要約】【課題】アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかを理解して、拡張されている機能とアプリケーション側との設定とが矛盾しない印刷設定に自動変更できる利便性に優れた印刷設定処理環境を容易に構築することである。【解決手段】アプリケーション８０１からのプリンタドライバに対する印刷設定変更指示時に、推論エンジン９０２がドライバ管理部９０６からのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかをコンフリクト処理ルールファイル９０８を取得することで判定して所定の応答情報を生成し、該生成される所定の応答情報をドライバ管理部９０６を介してアプリケーション８０１に通知する構成を特徴とする。【選択図】図４
2006139675.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションからの印刷要求をプリンタドライバを介して処理するデータ処理装置であって、
前記プリンタドライバの機能をアドイン形式で拡張するプラグインモジュールおよび該プラグインモジュールの同時設定が不可となる機能を評価するためのコンフリクト処理ルールを備えるプラグイン手段と、
前記アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかを前記コンフリクト処理ルールを取得することにより判定して所定の応答情報を生成する判定手段と、
前記判定手段により生成される前記所定の応答情報を前記プリンタドライバから前記アプリケーションに通知する通知手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記判定手段は、印刷設定を変更できないと判定した場合に、設定できない理由および設定不可状態を回避するための設定を示す情報とから前記所定の応答情報を生成可能とすることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記通知手段は、設定できなかった理由として、以前に設定したために設定できなくなった別の設定値と、設定を可能にするために設定変更が必要な設定値とを含む所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知することを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記アプリケーションは、前記プリンタドライバを介して通知される前記所定の応答情報に基づいて、機能コンフリクトを回避するに有効な印刷設定値を前記プリンタドライバに再設定することを特徴とする請求項１〜３のいずれかに記載のデータ処理装置。
【請求項５】
前記通知手段は、前記応答情報を、プリンタドライバの一部として又は、オペレーティングシステムの一部として実装されるプリンタドライバ拡張ＡＰＩを介してアプリケーションへ通知することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
プリンタドライバの機能をアドイン形式で拡張するプラグインモジュールおよび該プラグインモジュールの同時設定が不可となる機能を評価するためのコンフリクト処理ルールを備えるプラグイン手段を備え、前記アプリケーションからの印刷要求を前記プリンタドライバを介して処理するデータ処理装置における印刷設定処理方法であって、
前記アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかを前記コンフリクト処理ルールを取得することにより判定して所定の応答情報を生成する判定ステップと、
前記判定ステップにより生成される前記所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知する通知ステップと、
を有することを特徴とする印刷設定処理方法。
【請求項７】
前記判定ステップは、印刷設定を変更できないと判定した場合に、設定できない理由および設定不可状態を回避するための設定を示す情報とから前記所定の応答情報を生成可能とすることを特徴とする請求項６記載の印刷設定処理方法。
【請求項８】
前記通知ステップは、設定できなかった理由として、以前に設定したために設定できなくなった別の設定値と、設定を可能にするために設定変更が必要な設定値とを含む所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知することを特徴とする請求項６記載の印刷設定処理方法。
【請求項９】
前記アプリケーションは、前記プリンタドライバを介して通知される前記所定の応答情報に基づいて、機能コンフリクトを回避するに有効な印刷設定値を前記プリンタドライバに再設定することを特徴とする請求項６〜８のいずれかに記載の印刷設定処理方法。
【請求項１０】
前記通知ステップは、前記応答情報を、プリンタドライバの一部として又は、オペレーティングシステムの一部として実装されるプリンタドライバ拡張ＡＰＩを介してアプリケーションへ通知することを特徴とする請求項６に記載の印刷設定処理方法。
【請求項１１】
請求項６〜１０のいずれかに記載の印刷設定処理方法を実行させるためのプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【請求項１２】
請求項６〜１０のいずれかに記載の印刷設定処理方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションからプリンタドライバを介して印刷データをプリンタに転送処理するデータ処理装置および印刷設定処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラムに関するものである。
【背景技術】
【０００２】
従来、コンピュータ上で動作するアプリケーションプログラムが、印刷を実行する場合には、印刷開始命令と共に、印刷に必要な各種設定をパラメータとして、プリンタドライバ等の印刷関連処理プログラムに引き渡すのが一般的な方法である。
【０００３】
このように印刷に必要な各種設定をパラメータとしてプログラムよりプリンタドライバに渡すことで、プログラムが意図した印刷出力を得られるようになっている（例えば下記特許文献１参照）。
【０００４】
なお、下記特許文献には、機能設定で競合するような設定かどうかを判別して、ＵＩ画面上に、選択できないように設定項目のグレイ表示を制御し、かつ、選択できない理由をメッセージで表示制御することが記載されている。
【特許文献１】特開２００２−３２８７５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、意図した印刷出力を得るために指定可能な設定値の種類の範囲はいわゆるどのプリンタでもサポートが可能と思われる用紙の給紙口の指定や両面／片面印刷の指定等、非常に限られた範囲のものであり、プリンタまたはプリンタドライバが提供していても、アプリケーションプログラムより直接指定のできないその他の有用な機能については、プリンタドライバのユーザインタフェースを開いて、そこで指定をする必要があった。
【０００６】
このため、企業の各種システムソフトウェアからの印刷出力に際して、プリンタドライバのユーザインタフェースを表示したがらないケースでは、プリンタまたはプリンタドライバの持つ機能が十分に利用できないという問題点があった。
【０００７】
そのため、昨今ではプリンタまたはプリンタドライバをフルに生かせるように、プリンタやプリンタドライバへの機種依存する設定についても、アプリケーションから利用可能な特別なインタフェースを設けて、このインタフェースを利用した場合には、プリンタドライバユーザインタフェースで設定する場合と同等な機能の設定が可能となるようなプリンタドライバが出現してきている。
【０００８】
このような特別なインタフェースを、プラグイン形式の拡張機能を持ったプリンタドライバにおいて利用するケースがある。
【０００９】
このプラグイン形式のプリンタドライバの機能拡張とは、プリンタベンダから配布されているプリンタドライバのインストールセットとは別に、差分モジュール、つまりプラグインを提供して機能追加を実現する方法である。
【００１０】
このような状況において、アプリケーションから特別なインタフェースを用いてプラグインで拡張された機能の設定を変更する際に、他の印刷設定との矛盾が生じている状況であると、プリンタドライバが設定変更処理の実行できない旨の通知をアプリケーションに返す場合がある。
【００１１】
例えば、拡張機能である製本印刷機能と両面印刷機能を同時に使用することが、矛盾している設定の組み合わせであるとする。
【００１２】
このとき、両面印刷機能が有効である場合に、アプリケーションからインタフェースを用いて製本印刷機能を有効にするような設定変更処理を実行すると、プリンタドライバから、設定変更ができない旨の通知をアプリケーションに返すといった具合である。
【００１３】
このような状況において、アプリケーション側ではどの印刷設定と矛盾が生じているのか分からないので、所望の印刷設定が実行できない状況に陥ってしまう。
【００１４】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかをコンフリクト処理ルールを取得することで判定して所定の応答情報を生成し、該生成される所定の応答情報をプリンタドライバを介してアプリケーションに通知することにより、アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかを理解して、拡張されている機能とアプリケーション側との設定とが矛盾しない印刷設定に自動変更できる利便性に優れた印刷設定処理環境を容易に構築できるデータ処理装置および印刷設定処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラムを提供することである。
【課題を解決するための手段】
【００１５】
上記目的を達成する本発明のデータ処理装置は以下に示す構成を備える。
【００１６】
アプリケーションからの印刷要求をプリンタドライバを介して処理するデータ処理装置であって、前記プリンタドライバの機能をアドイン形式で拡張するプラグインモジュールおよび該プラグインモジュールの同時設定が不可となる機能を評価するためのコンフリクト処理ルールを備えるプラグイン手段と、前記アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかを前記コンフリクト処理ルールを取得することで判定して所定の応答情報を生成する判定手段と、前記判定手段により生成される前記所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知する通知手段とを有することを特徴とする。
【００１７】
上記目的を達成する本発明の印刷設定処理方法は以下に示す構成を備える。
【００１８】
プリンタドライバの機能をアドイン形式で拡張するプラグインモジュールおよび該プラグインモジュールの同時設定が不可となる機能を評価するためのコンフリクト処理ルールを備えるプラグイン手段を備え、前記アプリケーションからの印刷要求を前記プリンタドライバを介して処理するデータ処理装置における印刷設定処理方法であって、前記アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかを前記コンフリクト処理ルールを取得することで判定して所定の応答情報を生成する判定ステップと、前記判定ステップにより生成される前記所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知する通知ステップとを有することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかを理解して、拡張されている機能とアプリケーション側との設定とが矛盾しない印刷設定に自動変更できる利便性に優れた印刷設定処理環境を容易に構築できる。
【００２０】
また、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、プラグインによって拡張された機能をアプリケーションから特別なインタフェースを用いて制御する場合に、他の印刷設定の影響で設定変更処理が実現できないという状況を回避することができ、アプリケーションから所望の印刷設定を実現できる。
【発明を実施するための最良の形態】
【００２１】
次に本発明を実施するための最良の形態について図面を参照して説明する。
【００２２】
＜システム構成の説明＞
以下、本発明を適用するのに好適である実施形態について説明を行う。
【００２３】
〔第１実施形態〕
図１は、本発明の第１実施形態を示すデータ処理装置を適用可能な印刷処理システムの構成を説明するブロック図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００２４】
図１において、３０００はホストコンピュータで、ＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１に記憶された文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ１を備え、システムバス４に接続される各デバイスをＣＰＵ１が総括的に制御する。
【００２５】
また、このＲＯＭ３のプログラム用ＲＯＭあるいは外部メモリ１１には、ＣＰＵ１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶し、ＲＯＭ３のフォント用ＲＯＭあるいは外部メモリ１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ３のデータ用ＲＯＭあるいは外部メモリ１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００２６】
２はＲＡＭで、ＣＰＵ１の主メモリ、ワークエリア等として機能する。５はキーボードコントローラ（ＫＢＣ）で、キーボード（ＫＢ）９や不図示のポインティングデバイスからのキー入力を制御する。６はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）１０の表示を制御する。７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等を記憶するハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。
【００２７】
８はプリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インタフェース２１を介してプリンタ１５００に接続されて、プリンタ１５００との通信制御処理を実行する。なお、ＣＰＵ１は、例えばＲＡＭ２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１０上でのＷＹＳＩＷＹＧを可能としている。
【００２８】
また、ＣＰＵ１は、ＣＲＴ１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。
【００２９】
プリンタ１５００において、１２はプリンタＣＰＵで、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等あるいは外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【００３０】
また、このＲＯＭ１３のプログラムＲＯＭには、ＣＰＵ１２の制御プログラム等を記憶する。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
【００３１】
ＣＰＵ１２は入力部１８を介してホストコンピュータ３０００との通信処理が可能となっており、プリンタ１５００内の情報等をホストコンピュータ３０００に通知可能に構成されている。１９は前記ＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。
【００３２】
なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、ディスクコントローラ（ＤＫＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、１８は前述した操作パネルで操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【００３３】
また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないＮＶＲＡＭを有し、操作パネル２２からのプリンタモード設定情報を記憶するようにしてもよい。
【００３４】
図２は、図１に示したＲＡＭ２のメモリマップの一例を示す図であり、所定のアプリケーションおよび印刷処理関連プログラムを起動して、ホストコンピュータ３０００上のＲＡＭ２にロードされた状態のＲＡＭ２のメモリマップを示している。
【００３５】
図２において、ＲＡＭ２には、図示の如く、ＢＩＯＳ２０６、ＯＳ２０５をはじめ、アプリケーション２０１、印刷処理関連プログラム２０４、および関連データ２０３がロードされており、さらに空きメモリ領域（空きメモリ）２０２も確保されている。これにより、アプリケーション２０１および印刷処理関連プログラム２０４は実行可能状態にある。
【００３６】
本実施形態では、後述する図８に示すようなプリンタドライバ拡張システムにおける、プリンタドライバにプラグインモジュールを追加する構成になっている。プラグインモジュールは、後述する図３に示すとおり、ＵＩドライバ８０３の拡張機能を有するＵＩプラグイン８０４と、グラフィックスドライバ８０５の拡張機能を有するグラフィックプラグイン８０６からなる。図３を用いてそれぞれのプラグインモジュールについて説明する。
【００３７】
図３は、図１に示したホストコンピュータ３０００の各種のモジュールのプリント処理例を示す概念ブロック図である。
【００３８】
図３において、８０１はアプリケーションである。８０４はＵＩプラグインで、ＵＩドライバ８０３に新たなシートを加える場合や、ＵＩドライバ８０３で処理している、インストール時の処理などのＵＩドライバ８０３に実装されている様々なイベント処理をカスタマイズする場合に用いる。
【００３９】
８０３はＵＩドライバで、システムに対してエクスポートしているＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）がコールされた際に、ＵＩプラグイン８０４が公開しているインタフェースを取得する。ＵＩドライバ８０３が取得したＵＩプラグイン８０４のインタフェースを用いて、ＵＩプラグイン８０４と通信することで、ＵＩドライバ８０３に実装されたカスタマイズ処理が実行される。
【００４０】
一方、グラフィックスプラグイン８０６は、ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）８０２とグラフィックスドライバ８０５とのインタフェースであるＤＤＩの処理を横取りまたは特定のタイミングで処理を追加する場合や、印刷データのスプール処理を横取りする場合に用いる。
【００４１】
グラフィックスドライバ８０５がエクスポートしているＤＤＩは、ジョブを生成するためにＧＤＩ８０２から適宜コールされるが、その初期化のタイミングで、グラフィックスドライバ８０５は、グラフィックスプラグイン８０６が公開しているインタフェースを取得し、ＲＡＭ２に保持する。
【００４２】
そして、ここでグラフィックスドライバ８０５が取得したインタフェースを用いて、ＤＤＩがコールされるタイミングにそのＤＤＩに対応したグラフィックスプラグイン８０６の処理を呼び出し、該呼び出されたグラフィックスプラグイン８０６は、プラグイン内に実装された処理を実行し、処理を再びグラフィックスドライバ８０５に返す。
【００４３】
ここで、グラフィックスプラグイン８０６が処理を横取りしている場合、ＤＤＩはそこで処理を終了し、追加処理を実装している場合には、そのまま後続する処理を続ける。
【００４４】
一方、グラフィックスプラグイン８０６がグラフィックスドライバ８０５の印刷データのスプール処理を横取りする場合は、グラフィックスドライバ８０５内の印刷データをスプールする直前にグラフィックスプラグイン８０６のインタフェースをコールする。そして、コールされたグラフィックスプラグイン８０６は、スプールされるデータを取得し、特定の処理を実行した後、再度グラフィックスドライバ８０５のスプール処理関数をコールすることで、グラフィックスドライバ８０５に特定の処理を施したデータを渡す。
【００４５】
そして、データを受け取ったグラフィックスドライバ８０５は、実際にシステムスプーラ（スプーラ）８０７にスプールする処理を実行する。
【００４６】
このようにプラグインモジュールに拡張機能を実装することで、プリンタドライバの拡張システムを実現している。
【００４７】
図４は、図３に示したアプリケーション８０１と図２に示した印刷処理関連プログラム２０４の概略構成を概念的に説明する図である。
【００４８】
図４において、９０６はドライバ管理部で、アプリケーション８０１からの印刷時における一連の処理を制御する。９０３はコンフリクトマネージャで、各モジュール間のデータの受け渡しやデータの更新等を管理してコンフリクト処理を統括する。
【００４９】
９０１はコンフリクト処理ルール記述ファイルで、後述する記述形式で記述される不整合回避戦略を示すコンフリクト処理ルールを列記してある。
【００５０】
９１０はプリンタドライバ拡張システムを実現するプラグインモジュールセットで、拡張機能が実装されたプラグインモジュール９０９と、プラグインモジュール９０９に依存したプラグインのコンフリクト処理ルールファイル９０８からなる。
【００５１】
このプラグインのコンフリクト処理ルール９０８は、前記コンフリクト処理ルール記述ファイル９０１と同様のフォーマットで記述されている。
【００５２】
９０２は推論エンジンで、コンフリクト処理ルール記述ファイル９０１およびプラグインのコンフリクト処理ルールファイル９０８をロードして、入力された設定値に対してコンフリクト処理ルールを適用し、各機能の状態を推論する。
【００５３】
９０４は各プリンタ機能の状態をリスト形式で表示する状態変数リストであり、ユーザからの入力およびコンフリクト処理ルール記述ファイル９０１およびプラグインのコンフリクト処理ルールファイル９０８の内容に基づき更新され得る。
【００５４】
９０５は前記ドライバ管理部９０６が印刷を実行する際の設定を反映した帳票としての内部構造体であり、状態変数リスト９０４と連動して各プリンタ機能の状態を保持している。
【００５５】
９０６はドライバ管理部で、後述する図６に示すような印刷設定変更処理関連の関数をアプリケーション８０１に対して公開しており、アプリケーション８０１は、それらの関数をロードして、印刷設定変更処理を実行する。印刷設定変更処理関連の関数は、図に示すように、プリンタドライバ拡張API２０００と通常API２００１が存在する。原則としてアプリケーション８０１は、プリンタドライバ拡張API２０００を用いて、プラグインドライバを情報の授受および、プラグインモジュールの制御を行う。
【００５６】
このように構成されたデータ処理装置において、プラグインモジュールが製本アドインとし、該製本アドインＯＮ状態と、アプリケーション８０１からの２ＵＰ印刷が同時に設定不可の場合（２ＵＰの方が優先度が高いと仮定する）、２ＵＰ印刷が設定されている状態で、ドライバ管理部９０６により製本アドインのためのプラグインモジュールセット９０９をＯＮに設定すると、現在の状態では設定ができないという"NOT_AVAILABLE"という値が返る。
【００５７】
アプリケーション８０１がドライバ管理部９０６を介して製本アドインのコンフリクト情報をQueryする。ドライバ管理部９０６は、製本アドインに対してコンフリクト情報を問い合わせる。コンフリクトマネージャ９０３は、プラグインモジュールセット９０９から取得するコンフリクト処理ルールファイル９０８等を取得して、製本機能の設定とコンフリクトが発生している機能を示す設定値（ページレイアウト）と、回避可能な設定値、例えば（CDM_ITEM_LAYOUT-現在の設定：「２UP」，回避可能な設定：「１UP」）を示す所定の応答情報を生成して、ドライバ管理部９０６よりアプリケーション８０１に対して通知する。
【００５８】
アプリケーション８０１は、取得したコンフリクト情報を元に、コンフリクトがかかっている設定を変更し、（2UP→1UP）アドインの機能を有効にするような状況した後、改めて製本アドイン機能を有効にする設定処理を実行する。これにより、アプリケーション８０１がプリンタドライバ拡張API２０００を介して、アドイン機能のコンフリクト情報を取得することにより、アドイン機能が使えなくなる状況を回避する。
【００５９】
図５、図６は、本発明に係るデータ処理装置におけるデータ処理手順の一例を示すフローチャートであり、図４に示したアプリケーション８０１からの設定変更指示に伴う、拡張機能と現在の印刷設定との矛盾を強化して、その内容を所定の応答情報としてアプリケーション８０１に通知し、該通知に基づき印刷設定を自動的に変更処理する手順に対応する。なお、（８０１−１）〜（８０１−１２）はアプリケーション８０１が実行するステップに対応し、（８０８−１）〜（８０８−１４）は図４に示すドライバ管理部９０６が実行するステップに対応し、（９０９−１）〜（９０９−７）はプラグインモジュール９０９が実行するステップに対応する。
【００６０】
図７は、図４に示したドライバ管理部９０６が公開している設定変更処理に必要な関数情報を説明する図であり、例えば図１に示した外部メモリ１１またはＲＯＭ３のデータ内に記憶される。
【００６１】
図７において、Ｆ１は設定変更処理初期化関数を示し、Ｆ２は設定変更処理関数を示し、Ｆ３は設定変更処理終了関数を示す。
【００６２】
まず、アプリケーション８０１は、ドライバ管理部９０６が公開している図７に示すような設定変更初期化関数Ｆ１をコールする（８０１−１）。その際、設定変更処理初期化関数Ｆ１の引数にアプリケーション８０１より印刷設定情報が渡される。設定変更処理初期化関数Ｆ１がコールされたことを受け付けると（８０８−１）、ドライバ管理部９０６は、プラグインモジュール９０９に対して、プラグインのコンフリクト処理ルールファイル９０８の格納場所を問い合わせる（８０８−２）。この問い合わせを受けると（９０９−１）、プラグインモジュール９０９は、プラグインのコンフリクト処理ルール９０８の格納場所をドライバ管理部９０６に返す（９０９−２）。
【００６３】
次に、ドライバ管理部９０６は、アプリケーション８０１からプリンタドライバ拡張API２０００を介して受け取った印刷設定情報をコンフリクトマネージャ９０３に渡し、コンフリクトマネージャ９０３は、コンフリクト処理ルール記述ファイル９０１と、ステップ（９０９−２）で返された格納場所を元に、プラグインのコンフリクト処理ルール９０８をロードする（８０８−３）。コンフリクトマネージャ９０３は、受け取った印刷設定情報を元に、状態変数リスト９０４を生成する状態変数の初期化を行う（８０８−４）。
【００６４】
この際、プラグインモジュールの初期化処理の呼び出しを受け付けると（９０９−３）、プラグインモジュール独自の状態変数を初期化し、ドライバ管理部９０６にプラグイン独自の状態変数を返す（９０９−４）。
【００６５】
図４において、コンフリクト処理ルール記述ファイル９０１とプラグインのコンフリクト処理ルール記述ファイル９０８は、推論エンジン９０２にインクルード（ロード）された形で参照される。このコンフリクト処理ルール記述ファイル９０１とコンフリクト処理ルール記述ファイル９０８は、コンフリクトマネージャ９０３にも参照され、それを受けて状態変数リスト９０４が変更されることになる。また、内部構造体９０５と状態変数リスト９０４とは先に述べたとおり連動するものであるから、互いにマッピングされる関係にある。
【００６６】
次に、プリンタドライバ管理部９０６は、ステップ（８０８−４）において、状態リストを生成後、その他の初期化処理を実行した後、アプリケーション８０１にハンドルを返す（８０８−５）。
【００６７】
アプリケーション８０１は、ステップ（８０８−６）でプリンタドライバ拡張API２０００を介してドライバ管理部９０６から返されたハンドルを取得するのを待ち（８０１−２）、ハンドルを取得したら（８０１−３）、アプリケーション８０１は、取得したハンドルを用いて、印刷設定処理を実行することになる。
【００６８】
次に、アプリケーション８０１が、印刷設定変更を実行するために、図７に示すドライバ管理部９０６が公開している設定変更処理関数Ｆ２（プリンタドライバ拡張API２０００の一部として実装されると好適である）を実行する（８０１−３）。この設定変更処理関数Ｆ２の引数には、ステップ（８０１−３）で取得したハンドルの他に、図７に示すように設定を変更したい設定項目の識別子、印刷設定情報、情報の受け渡しデータが含まれる。
【００６９】
アプリケーション８０１より、ドライバ管理部９０６の設定変更処理関数Ｆ２を呼び出し（８０１−４）、ドライバ管理部９０６の設定変更処理関数Ｆ２がコールされると（８０８−７）、ドライバ管理部９０６は、印刷設定変更処理関数Ｆ２の引数に含まれる設定項目を識別して設定変更処理関数を呼び出し（８０８−８）、プラグインの設定項目であるかどうかを判定する（８０８−９）。
【００７０】
ここで、プラグインの設定項目であるとドライバ管理部９０６が判断した場合は、プラグインの設定変更関数を呼び出し（８０８−１１）、プラグインの設定変更関数がコールされると（９０９−５）、プラグラインモジュール９０９は、プラグインの設定変更処理を実行する（９０９−６）。そして、プラグインモジュール９０９は、変更されたコンフリクト設定値を戻り値としてプリンタドライバ８０８のコンフリクトマネージャ９０３へ返して（９０９−７）、処理を終了する。
【００７１】
なお、戻り値をプラグインモジュール９０９が返し、プリンタドライバ８０８本体部が、戻り値を返却を待って９、図５に示すステップ（８０８−１０），（８０８−１１）の後、処理を続行するようにしてもよいという。
【００７２】
一方、ステップ（８０８−９）でプラグインの設定項目でないとドライバ管理部９０６が判断した場合には、設定変更処理関数Ｆ２の引数に渡された情報を元に、ドライバ管理部９０６内部で設定項目の変更処理を行う（８０８−１０）。
【００７３】
なお、図６に示すステップ（９０９−６）、図５に示す（８０８−１０）における設定項目の変更処理は以下に従って行われる。
【００７４】
コンフリクト処理ルールとして以下のようなコンフリクト処理ルールを記述するとする。
【００７５】
Ａ（ＯＮ）：−Ｂ（ＯＮ），Ｃ（ＯＦＦ）．
ここで、Ａ、Ｂ，Ｃはそれぞれプリンタの機能の名称を一意に表している。
【００７６】
図８は、図４に示したコンフリクトマネージャ９０３と推論エンジン９０２との関係を示す図である。
【００７７】
図８に示す状態変数リスト５０２に示すように、コンフリクト処理ルール５０３の中に記述された例えば図１に示したプリンタ１５００の機能名称であるＡ，Ｂ，Ｃのそれぞれについて同名の状態変数が存在する。
【００７８】
プリンタ１５００の機能名称Ａ，Ｂ，Ｃに対応するプリンタドライバの内部構造体５０１のデータメンバ変数をそれぞれｃＡ，ｃＢ，ｃＣとし、Ａ，Ｂ，Ｃの状態変数の持つ値は２値（ＯＮ，ＯＦＦ）とする。内部構造体５０１はドライバ内部もしくは外部ファイルとして初期値を持っており、初期の状態変数の値は対応する内部構造体５０１のメンバの初期値に依存する。
【００７９】
ｃＡの初期値は「０」なので、対応する状態変数Ａの初期値は「０」に値する２値の値ＯＦＦとなっている。内部構造体５０１と状態変数のマッピングの値および方法については、ドライバ内部もしくは外部ファイルとしてプログラムされている。
【００８０】
アプリケーション８０１もしくはＵＩドライバ８０３によって、変更される印刷設定情報がコンフリクトマネージャ９０３に渡されると、コンフリクトマネージャ９０３は渡された印刷設定情報から関連する状態変数を検索し、渡された値に従って状態変数の値を変更する。このとき状態変数の値の変更が可能かどうかについては、状態変数がフラグを持っており、フラグによって可能かどうかを判定する。
【００８１】
このフラグはｅｎａｂｌｅとｄｉｓａｂｌｅの２つの状態をもち、変更が可能な場合は「ｅｎａｂｌｅ」になる。変更が可能かどうかについては、コンフリクト処理ルール５０３によって記述され、推論エンジン９０２の推論を通して状態変数に反映される。設定変更が出来ない場合つまり、フラグが「ｄｉｓａｂｌｅ」の状態変数に対して印刷設定情報を適用した場合は、印刷設定情報を反映させることなく、「ＮＯＴＡＶＡＬＡＢＬＥ」を返り値として返す。
【００８２】
推論エンジン９０２は、コンフリクトマネージャ９０３から渡されたコンフリクト処理ルールによって、状態変数の推論を行ってコンフリクトの評価を行う。状態変数の値が変更されたら、推論エンジン９０２によって変更された状態変数の値をキーとして、関連するルールの評価を行う。
【００８３】
本実施形態においては、図５に示すステップ（８０８−３）で読み込まれた、図３のプリンタドライバ本体のコンフリクト処理ルール９０１とプラグインのコンフリクト処理ルール９０８の内容が評価されることになる。
【００８４】
ルールの評価によって他の状態変数の値を変更しなければならない場合は、推論エンジンから変更する状態変数と変更される値の一覧を受け取り、コンフリクトマネージャ９０３がそれぞれ状態変数を更新する。ここで状態変数の値の更新があった場合は、変更された状態変数をキーとして再度コンフリクト処理ルールの評価を行う。無限ループに陥る可能性があるので、印刷設定情報が渡されてから状態変数の値を変更するのは１回に限定する。
【００８５】
例を使って前記の推論による設定変更処理について説明する。以下のようなコンフリクト処理ルール５０３が推論エンジン９０２にあるとする。
【００８６】
Ａ（ＯＮ）：−Ｂ（ＯＮ），Ｃ（ＯＦＦ），｛ｅｎａｂｌｅ｝．
コンフリクト処理ルール５０３の：−記号の左側を左辺、右側を右辺とする。記号「，」は論理のＡＮＤを表す。記号「：」は論理のＯＲを表す。「．」はルールの終端を表す。｛｝で囲まれた内部は、状態変数の設定可能フラグを変更するために使用する。
【００８７】
状態変数の初期値としてＡ，Ｂ，Ｃの値はすべて「ＯＦＦ」であったとする。そして、アプリケーション８０１もしくはＵＩドライバ８０３によって変更された印刷設定情報が状態変数に反映され、Ｂの値が「ＯＮ」になったとする。コンフリクトマネージャ９０３は推論エンジン９０２に、コンフリクト処理ルールの評価を問い合わせる。推論エンジン９０２は状態変数Ｂの値が変更されたことにより、状態変数Ｂに関連するコンフリクト処理ルールを推論する。
【００８８】
コンフリクトルールにおいてコンフリクト処理ルールが評価され、状態変数Ｂの値が「ＯＮ」であり、状態変数Ｃの値が「ＯＦＦ」であったときは、前記のコンフリクト処理ルールの右辺の評価が成立し、左辺の状態変数Ａの値を「ＯＮ」に変更する。
【００８９】
また、同時に状態変数の設定可能フラグを「ｅｎａｂｌｅ」にする。コンフリクト処理ルールの推論が終了すると、コンフリクトマネージャ９０３は変更された状態変数の値を、内部構造体９０５のメンバにすべて反映させる。つまり状態変数Ａの値が「ＯＦＦ」から「ＯＮ」になったことで、内部構造体９０５のメンバｃＡは「０」から「１」に変更される。
【００９０】
また、状態変数は自身の値が変更された理由をデータとして持つことができる。これを「ＲＥＡＳＯＮ」と呼ぶ。ＲＥＡＳＯＮはコンフリクト処理ルールに以下のように記述することで設定することができる。
【００９１】
Ａ（ＯＮ）：−Ｂ（ＯＮ），Ｃ（ＯＦＦ），ｓｒｅａｓｏｎ（ＢＯＮＡＮＤＣＯＦＦ）．
「ｓｒｅａｓｏｎ」はコンフリクト処理ルールにおいてＲＥＡＳＯＮを設定するという意味を持つ特殊な記述である。このコンフリクト処理ルールの評価が成立し、状態変数Ａが「ＯＮ」になるときに、状態変数ＡのＲＥＡＳＯＮに「ＢＯＮＡＮＤＣＯＦＦ」という値を設定する。
【００９２】
他の状態変数のＲＥＡＳＯＮから、ＲＥＡＳＯＮを引き継ぐことも可能である。これは、以下のようにコンフリクト処理ルールに記述する。
【００９３】
Ａ（ＯＮ）：−Ｂ（ＯＮ），Ｃ（ＯＦＦ），ｒｒｅａｓｏｎ（Ｂ）．
「ｒｒｅａｓｏｎ」はコンフリクト処理ルールにおいてＲＥＡＳＯＮを取得して引き継ぐという意味を持つ特殊な記述である。このコンフリクト処理ルールの評価が成立し、状態変数ＡがＯＮになるときに、状態変数ＡのＲＥＡＳＯＮには状態変数ＢのＲＥＡＳＯＮが設定される。
【００９４】
具体的な例としては以下のようなコンフリクトルールがある。
【００９５】
ＤＵＰＬＥＸ（ＯＦＦ）：−ＢＯＯＫＬＥＴ（ＯＮ），ｓｒｅａｓｏｎ（ＢＯＯＫＬＥＴＯＮ），｛ｄｉｓａｂｌｅ｝．
具体的には、製本印刷が「ＯＮ」になっているときには、状態変数「ＤＵＰＬＥＸ」に対してＲＥＡＳＯＮとして、ＢＯＯＫＬＥＴＯＮによって「ＯＦＦ」になっていることを示すことができる。また、状態変数ＤＵＰＬＥＸの設定可能フラグにｄｉｓａｂｌｅを指定し、今後状態変数ＤＵＰＬＥＸに対して印刷設定変更処理が来ても、ＮＯＴＡＶＡＬＡＢＬＥを返すようになる。ここで、図５のフローチャートに戻る。
【００９６】
ステップ（８０８−６）の処理で返されるハンドルの値には、ＯＫであれば、設定変更処理が成功したこと、ＮＯＴＡＶＡＬＡＢＬＥであれば、他の設定の影響で現在は設定変更不可であることが含まれる。
【００９７】
そして、ステップ（８０８−１２）で、ステップ（９０９−６）および（８０８−１０）における設定変更処理の戻り値が"ＮＯＴＡＶＡＩＬＡＢＬＥ"か否かを判断し、"ＮＯＴＡＶＡＩＬＡＢＬＥ"であるとドライバ管理部９０６が判断した場合には、ステップ（８０８−１３）に進み、コンフリクトマネージャ９０３よりコンフリクト情報を取得する。このコンフリクト情報には、図９に示すような情報が入っている。
【００９８】
図９は、図４に示したドライバ管理部９０６がコンフリクトマネージャ９０３から取得するコンフリクト情報の一例を示す図である。
【００９９】
図９に示すＲｅａｓｏｎには、ステップステップ（９０９−６）および（８０８−１０）の設定変更処理で、コンフリクトが発生して、設定が不可の要因となった設定項目が格納されている。
【０１００】
また、図９に示すＶａｌｕｅには、設定変更が不可の状態を回避可能な設定値が格納されている。
【０１０１】
図９におけるコンフリクト情報の例（１）のＲｅａｓｏｎには、ＢＯＯＫＬＥＴが格納されており、ＢＯＯＫＬＥＴの設定の影響を受けて、設定変更処理が不可の状態であるということがわかる。また、Ｖａｌｕｅには、ＯＦＦが入っていることから、ＢＯＯＫＬＥＴの設定値をＯＦＦにすることで、コンフリクト状態が回避されるということを示している。
【０１０２】
一方、図９に示すコンフリクト情報の例（２）のＲｅａｓｏｎには、"ＮＯ＿ＲＥＡＳＯＮ"が格納されており、現在の設定変更不可の状態の要因となる設定項目が存在しないことを示している。このような状況になるのは、他の設定項目の影響ではなく、デバイスのオプションが装着されていないため、指定した設定変更ができない状態になっている場合などが想定される。このような場合、コンフリクト情報のＶａｌｕｅには、コンフリクト状態を回避する設定がないので、"ＮＯＮＥ"が格納される。
【０１０３】
次に、ステップ（８０１−４）で、アプリケーション８０１から渡された最後引数の情報の受け渡しデータに、ステップ（８０８−１３）で取得したコンフリクト情報を格納したのち、アプリケーションに失敗した旨の結果をプリンタドライバ拡張API２０００または通常API２００１を介して返す（８０８−１４）。
【０１０４】
一方、ステップ（８０８−１２）で"ＯＫ"または"ＦＡＩＬＥＤ"とドライバ管理部９０６が判断した場合には、アプリケーション８０１に対してプリンタドライバ拡張API２０００または通常API２００１を介してその旨の結果を返し（８０８−１４）、ドライバ管理部９０６の処理が終了する。
【０１０５】
そして、アプリケーション８０１は、ステップ（８０１−５）で、プリンタドライバ拡張API２０００又は通常API２００１を介して、ドライバ管理部９０６より設定変更の判断結果を受信すると、ドライバ管理部９０６から返された設定変更処理の結果を取得する（８０１−６）。
【０１０６】
次に、ステップ（８０１−６）で取得した結果を判定し（８０１−７）、"ＯＫ"または"ＦＡＩＬＥＤ"であると判定した場合、ステップ（８０１−１１）に進む。
【０１０７】
一方、ステップ（８０１−７）で"ＮＯＴＡＶＡＩＬＡＢＬＥ"であると判定した場合には、ドライバ管理部９０６で取得され、設定変更処理関数Ｆ２の引数に渡されたコンフリクト情報を参照する（８０１−８）。
【０１０８】
そして、ステップ（８０１−８）で参照したコンフリクト情報を判定し（８０１−９）、コンフリクト情報内のＲｅａｓｏｎに"ＮＯ＿ＲＥＡＳＯＮ"が格納されていると判断した場合（解決不可の場合）には、ステップ（８０１−１１）に進む。
【０１０９】
一方、ステップ（８０１−９）で、コンフリクト情報内のＲｅａｓｏｎに何らかの設定項目が格納されているとアプリケーション８０１が判断した場合、コンフリクト情報内のＶａｌｕｅを参照し、図７に示す設定変更処理関数Ｆ２を用いてＶａｌｕｅに格納された設定値をＲｅａｓｏｎ内の設定項目にセットすることで、ステップ（８０８−６）で設定変更処理ができない状態を回避する（８０１−１０）。
【０１１０】
次に、すべての設定変更処理が終了したか否かを判定し（８０１−１１）、終了していないと判断されれば、再びステップ（８０１−４）に戻り、設定変更処理関数Ｆ２をコールして、必要な設定処理が終了するまで、ステップ（８０１−４）からステップ（８０１−１０）までの一連の処理を繰り返す。
【０１１１】
一方、ステップ（８０１−１１）において、すべての設定変更処理が終了したと判定された場合には、図６に示す設定変更終了処理関数Ｆ３を実行し（８０１−１２）、本処理を終了する。
【０１１２】
以上の処理によって、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、プラグインによって拡張された機能をアプリケーション８０１から特別なインタフェースを用いて制御する場合に、他の印刷設定の影響で設定変更処理が実現できないという状況を回避する手段を提供することができる。
【０１１３】
なお、本実施形態においては、本印刷処理関連プログラムを記録する媒体を外部メモリとしているが、外部メモリとしては、ＦＤ、ＨＤドライブ、ＣＤ−ＲＯＭやＩＣメモリカード等であってもよい。更に、本印刷プログラム単独、もしくはＯＳその他のホストコンピュータ上で動作するプログラムと共にＲＯＭ３に記録しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ１で実行することも可能である。
【０１１４】
〔第２実施形態〕
以下、図１０に示すメモリマップを参照して本発明に係るデータ処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
【０１１５】
図１０は、本発明に係るデータ処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【０１１６】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０１１７】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０１１８】
本実施形態における図５，図６に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０１１９】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１２０】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２１】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１２２】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０１２３】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２４】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０１２５】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１２６】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２７】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１２８】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から排除するものではない。
【０１２９】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではなく、以下の実施態様も含まれることはいうまでもない。以下、その実施態様１〜１２について説明する。
【０１３０】
〔第３実施形態〕
上記第１実施形態では、プリンタドライバとアプリケーションとプラグインモジュールとを含むデータ処理装置として、それぞれの機能処理について説明したが、プリンタドライバの機能を独立した印刷制御装置として構成することも可能である。
【０１３１】
〔実施態様１〕
アプリケーション（図４に示すアプリケーション８０１）からの印刷要求をプリンタドライバ（図３に示すプリンタドライバ８０８）を介して処理するデータ処理装置であって、前記プリンタドライバの機能をアドイン形式で拡張するプラグインモジュールおよび該プラグインモジュールの同時設定が不可となる機能を評価するためのコンフリクト処理ルールを備えるプラグイン手段（図４に示すプラグインモジュールセット９１０）と、前記アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかを前記コンフリクト処理ルールを取得することにより判定して所定の応答情報を生成する判定手段（図４に示す推論エンジン９０２）と、前記判定手段により生成される前記所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知する通知手段（図４に示すドライバ管理部９０６）とを有することを特徴とするデータ処理装置。
【０１３２】
これにより、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかを理解して、拡張されている機能とアプリケーション側との設定とが矛盾しない印刷設定に自動変更できる利便性に優れた印刷設定処理環境を容易に構築できる。
【０１３３】
また、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、プラグインによって拡張された機能をアプリケーションから特別なインタフェースを用いて制御する場合に、他の印刷設定の影響で設定変更処理が実現できないという状況を回避することができ、アプリケーションから所望の印刷設定を実現できる。
【０１３４】
〔実施態様２〕
前記判定手段は、印刷設定を変更できないと判定した場合に、設定できない理由および設定不可状態を回避するための設定を示す情報とから前記所定の応答情報を生成可能とすることを特徴とする実施態様１記載のデータ処理装置。
【０１３５】
これにより、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかをアプリケーションが理解可能な応答情報を生成できる。
【０１３６】
〔実施態様３〕
前記通知手段は、設定できなかった理由として、以前に設定したために設定できなくなった別の設定値と、設定を可能にするために設定変更が必要な設定値とを含む所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知することを特徴とする実施態様１記載のデータ処理装置。
【０１３７】
これにより、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかを理解した上で、ユーザによる設定変更を伴うことなく、自動的に矛盾のない印刷設定可能となり、利便性が向上する。
【０１３８】
〔実施態様４〕
前記アプリケーションは、前記プリンタドライバを介して通知される前記所定の応答情報に基づいて、機能コンフリクトを回避するに有効な印刷設定値を前記プリンタドライバに再設定することを特徴とする実施態様１〜３のいずれかに記載のデータ処理装置。
【０１３９】
これにより、プリンタドライバの機能拡張をプラグイン形式によって実現した環境において、アプリケーション側の印刷設定と設定されている拡張機能との間でどのような矛盾が生じているのかを理解した上で、ユーザによる設定変更を伴うことなく、自動的に矛盾のない印刷設定値をプリンタドライバに設定可能となる。
【０１４０】
〔実施態様５〕
前記通知手段は、前記応答情報を、プリンタドライバの一部として又は、オペレーティングシステムの一部として実装されるプリンタドライバ拡張ＡＰＩ（図４に示すプリンタドライバ拡張ＡＰＩ２０００）を介してアプリケーションへ通知することを特徴とする実施態様１に記載のデータ処理装置。
【０１４１】
これにより、変更された整合する設定値をアプリケーションに対して確実に通知することができる。
【０１４２】
〔実施態様６〕
プリンタドライバの機能をアドイン形式で拡張するプラグインモジュールおよび該プラグインモジュールの同時設定が不可となる機能を評価するためのコンフリクト処理ルールを備えるプラグイン手段を備え、前記アプリケーションからの印刷要求を前記プリンタドライバを介して処理するデータ処理装置における印刷設定処理方法であって、前記アプリケーションからのプリンタドライバに対する印刷設定変更指示時に、前記プリンタドライバからのコンフリクトの問い合わせに従って印刷設定を変更可能かどうかを前記コンフリクト処理ルールを取得することにより判定して所定の応答情報を生成する判定ステップ（図５に示すステップ（８０８−１）〜（８０８−１３）、図６に示すステップ（９０９−１）〜（９０９−７））と、前記判定ステップにより生成される前記所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知する通知ステップ（図５に示すステップ（８０８−１４））とを有することを特徴とする印刷設定処理方法。
【０１４３】
これにより、実施態様１と同等の効果が期待できる。
【０１４４】
〔実施態様７〕
前記判定ステップは、印刷設定を変更できないと判定した場合に、設定できない理由および設定不可状態を回避するための設定を示す情報とから前記所定の応答情報を生成可能とすることを特徴とする実施態様６記載の印刷設定処理方法。
【０１４５】
これにより、実施態様２と同等の効果が期待できる。
【０１４６】
〔実施態様８〕
前記通知ステップは、設定できなかった理由として、以前に設定したために設定できなくなった別の設定値と、設定を可能にするために設定変更が必要な設定値とを含む所定の応答情報を前記プリンタドライバを介して前記アプリケーションに通知することを特徴とする実施態様６記載の印刷設定処理方法。
【０１４７】
これにより、実施態様３と同等の効果が期待できる。
【０１４８】
〔実施態様９〕
前記アプリケーションは、前記プリンタドライバを介して通知される前記所定の応答情報に基づいて、機能コンフリクトを回避するに有効な印刷設定値を前記プリンタドライバに再設定することを特徴とする実施態様６〜９のいずれかに記載の印刷設定処理方法。
【０１４９】
これにより、実施態様４と同等の効果が期待できる。
【０１５０】
〔実施態様１０〕
前記通知ステップは、前記応答情報を、プリンタドライバの一部として又は、オペレーティングシステムの一部として実装されるプリンタドライバ拡張ＡＰＩを介してアプリケーションへ通知することを特徴とする実施態様６に記載の印刷設定処理方法。
【０１５１】
これにより、実施形態５と同様の効果を奏する。
【０１５２】
〔実施態様１１〕
実施態様６〜１０のいずれかに記載の印刷設定処理方法を実行させるためのプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【０１５３】
これにより、実施態様６〜１０と同等の効果が期待できる。
【０１５４】
〔実施態様１２〕
実施態様６〜１０のいずれかに記載の印刷設定処理方法を実行させることを特徴とするプログラム。
【０１５５】
これにより、実施態様６〜１０と同等の効果が期待できる。
【図面の簡単な説明】
【０１５６】
【図１】本発明の第１実施形態を示すデータ処理装置を適用可能な印刷処理システムの構成を説明するブロック図である。
【図２】図１に示したＲＡＭのメモリマップの一例を示す図である。
【図３】図１に示したホストコンピュータの各種のモジュールのプリント処理例を示す概念ブロック図である。
【図４】図３に示したアプリケーションと図２に示した印刷処理関連プログラムの概略構成を概念的に説明する図である。
【図５】本発明に係るデータ処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図６】本発明に係るデータ処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図７】図４に示したドライバ管理部が公開している設定変更処理に必要な関数情報を説明する図である。
【図８】図４に示したコンフリクトマネージャと推論エンジンとの関係を示す図である。
【図９】図４に示したドライバ管理部がコンフリクトマネージャから取得するコンフリクト情報の一例を示す図である。
【図１０】本発明に係るデータ処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【符号の説明】
【０１５７】
８０１  アプリケーション
９０１  コンフリクト処理ルール記述ファイル
９０２  推論エンジン
９０３  コンフリクトマネージャ
９０６  ドライバ管理部
９０８  コンフリクト処理ルールファイル
９０９  プラグインモジュール
【図１】
2006139675.tif 000003
【図２】
2006139675.tif 000004
【図３】
2006139675.tif 000005
【図４】
2006139675.tif 000006
【図５】
2006139675.tif 000007
【図６】
2006139675.tif 000008
【図７】
2006139675.tif 000009
【図８】
2006139675.tif 000010
【図９】
2006139675.tif 000011
【図１０】
2006139675.tif 000012