(57)【要約】【課題】  ユーザの目的に応じた印刷設定が指定された際に、アプリケーション側に複雑な処理を行わなくとも、プリンタドライバにより実現可能な適切な印刷設定をユーザに提供することが困難であった。【解決手段】  上記課題を解決するために、本発明はアプリケーションから複数の印刷設定項目に対して設定値を設定した設定ファイル及びアプリケーションが保持する印刷設定情報を受信し、受信したその設定ファイルを解釈して、各設定値が有効であるか否かを判断し、有効な設定値と判断された場合、当該設定値を印刷設定情報として反映し、印刷設定情報をアプリケーションへ返却することを特徴とする。【選択図】  図３
2008310495.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションから複数の印刷設定項目に対して設定値を設定した設定ファイル及びアプリケーションが保持する印刷設定情報を受信する受信手段と、
前記受信手段で受信した設定ファイルを解釈して、各設定値が有効であるか否かを判断する判断手段と、
前記判断手段により有効な設定値と判断された場合、当該設定値を印刷設定情報として反映する反映手段と、
前記反映手段により反映した印刷設定情報をアプリケーションへ返却する返却手段とを備えることを特徴とする印刷制御装置。
【請求項２】
前記返却手段により返却される印刷設定情報は、ＤＥＶＭＯＤＥ構造体であることを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記設定ファイルにおける設定項目は、少なくとも用紙の種類の設定、フチ無し印刷の設定、両面印刷の設定、印刷プレビューの設定のいずれかを含むことを特徴とする請求項１または請求項２に記載の印刷制御装置。
【請求項４】
前記判断手段の設定値の有効か否かの判断は、プリンタドライバによりサポートされている機能により有効な設定値となるか否か、前記設定ファイルにおける複数の設定値間のコンフリクトの解決のため有効な設定値となるか否かのいずれかの一方の判断、もしくは両方の判断を含むことを特徴とする請求項１乃至請求項３に記載の印刷制御装置。
【請求項５】
前記受信手段により、アプリケーションから複数の前記設定ファイルを受信した場合
前記判断手段が、前記複数の設定ファイルに対して各設定ファイルを解釈して、各設定値が有効か否かを判断し、受信した設定ファイルの中で最も多くの有効値が設定されている設定ファイルに基づき、前記反映手段により有効値と判断された設定値を反映した印刷設定情報を、前記返却手段がアプリケーションへ返却することを特徴とする請求項１乃至請求項４に記載の印刷制御装置。
【請求項６】
前記受信手段により受信した設定ファイルにおいて、第１の設定項目に対して複数の設定値が設定してある場合、前記反映手段は、前記判断手段の判断に基づき当該複数の設定項目のうちのいずれか有効な設定値を印刷設定情報として反映することを特徴とする請求項１乃至請求項５に記載の印刷制御装置。
【請求項７】
アプリケーションから複数の印刷設定項目に対して設定値を設定した設定ファイル及びアプリケーションが保持する印刷設定情報を受信する受信工程と、
前記受信した設定ファイルを解釈して、各設定値が有効であるか否かを判断する判断工程と、
前記判断工程により有効な設定値と判断された場合、当該設定値を印刷設定情報として反映する反映工程と、
前記反映した印刷設定情報をアプリケーションへ返却する返却工程とを備えることを特徴とする印刷制御方法。
【請求項８】
前記判断工程の設定値の有効か否かの判断は、プリンタドライバによりサポートされている機能により有効な設定値となるか否か、前記設定ファイルにおける複数の設定値間のコンフリクトの解決のため有効な設定値となるか否かのいずれかの一方の判断、もしくは両方の判断を含むことを特徴とする請求項７に記載の印刷制御方法。
【請求項９】
前記受信工程により、アプリケーションから複数の前記設定ファイルを受信した場合
前記判断工程が、前記複数の設定ファイルに対して各設定ファイルを解釈して、各設定値が有効か否かを判断し、受信した設定ファイルの中で最も多くの有効値が設定されている設定ファイルに基づき、前記反映工程により有効値と判断された設定値を反映した印刷設定情報を、前記返却工程がアプリケーションへ返却することを特徴とする請求項７または請求項８に記載の印刷制御方法。
【請求項１０】
前記受信工程により受信した設定ファイルにおいて、第１の設定項目に対して複数の設定値が設定してある場合、前記反映工程は、前記判断工程の判断に基づき当該複数の設定項目のうちのいずれか有効な設定値を印刷設定情報として反映することを特徴とする請求項７乃至請求項９に記載の印刷制御方法。
【請求項１１】
アプリケーションから複数の印刷設定項目に対して設定値を設定した設定ファイル及びアプリケーションが保持する印刷設定情報を受信する受信工程と、
前記受信した設定ファイルを解釈して、各設定値が有効であるか否かを判断する判断工程と、
前記判断工程により有効な設定値と判断された場合、当該設定値を印刷設定情報として反映する反映工程と、
前記反映した印刷設定情報をアプリケーションへ返却する返却工程とをコンピュータに実行させるためのプログラム。
【請求項１２】
アプリケーションから複数の印刷設定項目に対して設定値を設定した設定ファイル及びアプリケーションが保持する印刷設定情報を受信する受信工程と、
前記受信した設定ファイルを解釈して、各設定値が有効であるか否かを判断する判断工程と、
前記判断工程により有効な設定値と判断された場合、当該設定値を印刷設定情報として反映する反映工程と、
前記反映した印刷設定情報をアプリケーションへ返却する返却工程とをコンピュータに実行させるためのプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【請求項１３】
アプリケーションと、アプリケーションからの指示に基づき印刷データを印刷装置に送信する印刷制御装置を含むホストコンピュータであって、
前記アプリケーションは、
複数の印刷設定項目に対して設定値を設定した設定ファイルをユーザにより指定可能な画面と、前記印刷制御装置よる設定ファイルに基づく処理に関する確認をユーザに提供する画面との表示を行う表示制御手段と、
ユーザにより指定された前記設定ファイル及びアプリケーションが保持する印刷設定情報を印刷制御装置に対して送信する送信手段とを備え、
前記印刷制御装置は、
アプリケーションから前記設定ファイル及びアプリケーションが保持する印刷設定情報を受信する受信手段と、
前記受信手段で受信した設定ファイルを解釈して、各設定値が有効であるか否かを判断する判断手段と、
前記判断手段により有効な設定値と判断された場合、当該設定値を印刷設定情報として反映する反映手段と、
前記反映手段により反映した印刷設定情報をアプリケーションへ返却する返却手段とを備えることを特徴とするホストコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションから印刷装置を制御する印刷処理関連プログラムに対する、印刷設定の指定処理を実行する印刷制御装置および印刷制御方法に関する。
【背景技術】
【０００２】
従来、コンピュータ上で動作するアプリケーションが印刷を実行する場合には、印刷開始命令と共に、印刷設定をパラメータとして印刷制御装置（以下、例えばプリンタドライバ）に渡すことで、アプリケーションが意図した印刷出力を得られる。
【０００３】
一方で、アプリケーションが指定可能な印刷設定の範囲は、どのプリンタでもサポートが可能と思われる用紙サイズの指定や、片面両面印刷の指定などの限られた範囲のものである。従来、プリンタまたはプリンタドライバが提供している印刷設定のうち、アプリケーションより指定ができない有用な機能については、ユーザはプリンタドライバが保有するユーザインターフェース（以下、ＵＩとする。）を、更に開いて指定する必要があった。
【０００４】
ここで、プリンタドライバのＵＩを表示することを想定していない専用用途のアプリケーション（例えばフォト印刷用アプリケーションなど）もある。そのようなアプリケーションにおいては、プリンタドライバが保有するＵＩを開くことなく対象となるプリンタドライバが保有する独自の設定を指定したいという要望が強まっている。そのため昨今では以下のような印刷設定の設定手法が出現してきている。
【０００５】
例えば、アプリケーション自体が、サポートするプリンタモデル名称ごとに市場の複数のプリンタドライババージョンに特化した印刷設定情報（以下ＤＥＶＭＯＤＥ構造体と呼ぶ）を、予めプリンタドライバのＵＩを表示しておく。そして、そのＤＥＶＭＯＤＥ構造体自体をアプリケーション内に内包した上で、印刷開始時にプリンタドライバに指定するような手法がある。
【０００６】
また、プリンタドライバメーカー独自の設定をＵＩの表示無く操作可能とするために、ＤＥＶＭＯＤＥ構造体のＰｒｉｖａｔｅ領域に保持された独自設定をアプリケーションから直接操作可能な特別なインタフェースを設けるドライバが出現しつつある。このインタフェースを利用した場合アプリケーションはプリンタドライバのＵＩ上で設定する場合と同等な設定を透過的に操作することが可能である。（特許文献１参照）
【特許文献１】特開２００６−１６４２４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、ＤＥＶＭＯＤＥ構造体の構成はプリンタドライバモデルやプリンタドライババージョンに依存するため、例えばプリンタドライバのバージョンが更新された場合、アプリケーションが指定した印刷設定が有効にならない。
【０００８】
また、アプリケーション側でプリンタドライバにおける複数の設定間のコンフリクトを意識する必要がある。このため設定項目毎にあらかじめコンフリクトが発生しないような設定情報をプリンタドライバから入手する必要がある。もしくはプリンタドライバから設定コンフリクト情報を入手しコンフリクト解決を行うような処理をアプリケーション側に実装することを強いていた。このためアプリケーション側の実装工数への負荷の懸念があった。
【０００９】
本発明は、上記の問題を解決するためになされたもので、ユーザの目的に応じた印刷設定が指定された際に、アプリケーション側に複雑な処理を行わなくとも、プリンタドライバにより実現可能な適切な印刷設定をユーザに提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明はアプリケーションから複数の印刷設定項目に対して設定値を設定した設定ファイル及びアプリケーションが保持する印刷設定情報を受信する受信手段と、前記受信手段で受信した設定ファイルを解釈して、各設定値が有効であるか否かを判断する判断手段と、前記判断手段により有効な設定値と判断された場合、当該設定値を印刷設定情報として反映する反映手段と、前記反映手段により反映した印刷設定情報をアプリケーションへ返却する返却手段とを備えることを特徴とする。
【発明の効果】
【００１１】
以上説明したように、本発明によれば、ユーザの目的に応じた印刷設定が指定された際に、アプリケーション側に複雑な処理を行わなくとも、プリンタドライバにより実現可能な適切な印刷設定をユーザに提供することができる。
【発明を実施するための最良の形態】
【００１２】
図１は本発明の実施形態のホストコンピュータおよび印刷装置の制御構成を説明するブロック図である。
【００１３】
なお特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ等のネットワークを介して接続が許される処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００１４】
図１において、ホストコンピュータ１−１は、コントローラ部１−５と入力装置であるキーボード１−２、表示装置であるＣＲＴ１−３、ハードディスクや光ディスクなどの外部メモリ１−４を有する。コントローラ部１−３は、ＲＯＭ１−１２に記憶されたプログラム等に基づいて処理を実行するＣＰＵ１−１０を備える。ＣＰＵ１−１０は、システムバス１−１３に接続される各デバイスを総括的に制御する。また、ＲＯＭ１−１２あるいは外部メモリ１−４としてのハードディスク（図示しない）には、ＣＰＵ１−１０により実行される制御プログラムなどが記憶される。またＲＯＭなどには、文書処理等の際に使用するフォントデータ、文書処理等を行う際に使用する各種データ（例えば、プリンタがサポートしている紙サイズ、紙種、各種設定などを行うためのコマンドなど）を記憶される。
【００１５】
コントローラ部１−５において、ＲＡＭ１−１１はオプションＲＡＭ等により拡張可能であり、ＣＰＵ１−１０の主メモリやワークエリア等として機能する。キーボードコントローラ（ＫＢＣ）１−６は、キーボード１−２や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）１−７は、ＣＲＴディスプレイ（ＣＲＴ）１−３の表示を制御する。ディスクコントローラ（ＤＫＣ）１−８は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶するハードディスク（ＨＤ）等の外部メモリ１−４とのアクセスを制御する。プリンタコントローラ（ＰＲＴＣ）１−９は、所定の双方向性インタフェース（インタフェース）１−１５を介してプリンタ１−１６に接続されて、プリンタ１−１６との通信制御処理を実行する。なお、ＣＰＵ１−１０は、例えばＲＡＭ１−１１の上に設定された表示情報ＲＡＭ領域へのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ１−３上でのＷＹＳＩＷＹＧを可能としている。また、ＣＰＵ１−１０は、ＣＲＴ１−３上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウィンドウを開き、種々のデータ処理を実行する。またＣＰＵ１−１０は、プログラムを実行することにより後述するフローチャートの処理を実効する。
【００１６】
本発明においては、ホストコンピュータにおいてアプリケーションから印刷を指示された場合、アプリケーションからのデータに基づきプリンタドライバにより所望の印刷データを生成する。生成された印刷データは、ＰＲＴＣや双方向インタフェースなどを介してプリンタに送信され、実際の印刷が行われる。
【００１７】
一方、プリンタ１−１６のコントローラ部において、プリンタＣＰＵ１−２３は、ＲＯＭ１−２５に記憶された制御プログラム等に基づいてシステムバス１−２６に接続される各種のデバイスとのアクセスを総括的に制御する。また、印刷部インタフェース１−２１を介して接続される印字部（プリンタエンジン）１−１７に出力情報としての画像信号を出力する。また、このＲＯＭ１−２５には、インタフェース１−２０を介してホストコンピュータから送られてくるプリンタの設定取得コマンドなどの解析プログラム等を記憶している。ＣＰＵ１−２３はインタフェース１−２０を介してホストコンピュータとの通信処理が可能となっており、プリンタ１−１６内のＮＶＲＡＭ１−２２に記憶されているプリンタの状態についての情報等をホストコンピュータに通知可能に構成されている。ＲＡＭ１−２４は、主としてＣＰＵ１−２３の主メモリ、ワークエリア等として機能している。また、操作パネル１−１８は、操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【００１８】
なお、本実施形態では、双方向Ｉ／Ｆ１−１５を介してホストコンピュータとプリンタ１−１６とが通信可能な印刷システムであるが、ＬＡＮ等のネットワークを介してホストコンピュータとプリンタ１−１６とが通信可能な印刷システムであってもよい。ただし、Ｉ／Ｆ部分がネットワークコントローラ（ＮＣ）で構成される。なお、不揮発性ＲＡＭ（ＮＶＲＡＭ）１−２２は、ホストコンピュータから通知された印刷設定情報を記憶する。ＲＡＭ１−２４は、ホストコンピュータから受信した印刷情報を保持するバッファ領域や、ＣＰＵ１−２３のワーク領域が確保可能に構成されている。印字部（プリンタエンジン）１−１７は印刷方式に応じた構成を有する。本実施形態ではインクジェット方式の構成を有し、プリンタカートリッジとキャリッジ等から構成されている。インタフェース１−２０は、ホストコンピュータとの間で、所定のプロトコルに従い印刷データの受信や、プリンタ１−１６で発生する状態情報等を通知する処理を行っている。また、ＣＰＵ１−２３は、図示しない電源部からの電源供給状態を制御可能に構成されており、ホストコンピュータからデータを一定時間受信しない場合には、各部への電力供給を節電するスリープ制御を行っている。なお、印刷データとは、プリンタに一定の動作を行わせるためのコマンドやそのパラメータを含んでおり、印刷される画像を表すデータのみを指すものではない。
【００１９】
図２は図１に示したＲＡＭ１−１１のメモリマップの一例を示す図であり、本実施形態における印刷処理関連プログラムがホストコンピュータ１−１上のＲＡＭ１−１１にロードされ実行可能となった状態のメモリマップを示している。図２において、２−００１はアプリケーションで、外部メモリ１−４からロードされたものであり、単数または複数のアプリケーションがロードされる。２−００５はＯＳで、アプリケーション２−００１などの実行を制御する。２−００６はＢＩＯＳで、各種のデバイスの入出力処理を規定する。
【００２０】
図３は、図２に示した印刷処理プログラム２−００４の内部処理の内容を説明するシステム概念図である。
【００２１】
図３において、プリンタドライバ３−００４は、プリンタドライバ拡張ＡＰＩ３−００３のインタフェースをアプリケーション３−００１に対して公開している。前記プリンタドライバ拡張ＡＰＩ３−００３はアプリケーション３−００１からの印刷設定命令において、パラメータとして設定ファイルのファイルパスおよびＤＥＶＭＯＤＥ構造体アドレス３−００２を有する。一方前記プリンタドライバ拡張ＡＰＩ３−００３はＳＤＫ管理部３−００５で管理されている。そして、インタフェースを構成するための要素として、設定コンフリクト管理部３−０１２、モデル別サポート機能ＤＢ３−００６、動作環境別不可条件ＤＢ３−００７、設定優先順位ＤＢ３−００８および機能間コンフリクトＤＢ３−００９で構成されている。これらＤＢはプリンタドライバ３−００４が機能する上で予めデータベースとして各種属性を保有するものであり、主に設定コンフリクト管理部３−０１２が印刷設定の有効値確認を行うときに参照される。
【００２２】
設定コンフリクト管理部３−０１２は、ＳＤＫ管理部とプリンタドライバ拡張ＡＰＩを経由して、設定ファイル３−０１１およびＤＥＶＭＯＤＥ構造体３−０１０をアプリケーション３−００１にパラメータとして指定または返却値として返却する。なお図３における各構成間の矢印で図示するＲｅａｄは読み取りを、ＲｅａｄＷｒｉｔｅは読み書きの処理関係を表している。
【００２３】
また、本発明では発明を実施するための最良の形態として、それぞれ下記特徴を有する。第１実施形態、第２実施形態および第３実施形態を説明する。また説明の便宜上各実施形態に対応する前記プリンタドライバ拡張ＡＰＩの名称を下記のように定義する。
【００２４】
第１実施形態：ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１
アプリケーションは単一の設定ファイルを指定する。プリンタドライバは、アプリケーションから指定された設定ファイルを受信する。印刷処理関連プログラムはアプリケーションから指定された設定ファイル内容のうち、有効値の記述のみを採用し、設定結果をＤＥＶＭＯＤＥ構造体として返却する。一方、設定ファイルのうち無効値が削除された結果がアプリケーションに返却されるため、アプリケーションはどの設定値が採用されたかを知りうる。
【００２５】
第２実施形態：ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２
アプリケーションは複数の設定ファイルを指定する。プリンタドライバは、アプリケーションから指定された設定ファイルを受信する。印刷処理関連プログラムはアプリケーションから指定された複数設定ファイルのうち何れかの設定ファイルを採用し、設定結果をＤＥＶＭＯＤＥ構造体として返却する。一方、どの設定ファイルが採用されたか結果が戻り値として返却されるため、アプリケーションはどの設定ファイルが採用されたかを知りうる。なお第２実施例は、有効値がもっとも多く記載された設定ファイルが採用される特徴を有する。
【００２６】
第３実施形態：ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３
アプリケーションは単一の設定ファイルを指定する。プリンタドライバは、アプリケーションから指定された設定ファイルを受信する。単一の設定ファイルにおいては、特定の設定項目に対し特定の設定値と、次候補を示す複数の設定値を同時に設定されている。印刷処理関連プログラムはアプリケーションから設定ファイルにより指定された複数の指定値のうちの何れかを採用し、設定結果をＤＥＶＭＯＤＥ構造体として返却する。一方、設定ファイルのうち無効値が削除された結果がアプリケーションに返却されるため、アプリケーションはどの設定値が採用されたかを知りうる。なお第２実施例は、プリンタドライバが定義する設定間の優先順位において逆転していても、複数の設定値が記述された設定項目より、単一の設定値が記述された設定項目の設定値を優先して採用する特徴を有する。
【００２７】
［第１実施形態］
図２８は、本発明を実施するための第１実施例において図２に示したアプリケーション２−００１のＵＩ画面の構成例を表す図面である。アプリケーション２−００１は本画面を表示しながら図３に示すプリンタドライバ拡張ＡＰＩ３−００３によりプリンタドライバへ印刷設定の更新及び、更新後の印刷設定情報であるＤＥＶＭＯＤＥ構造体の入手を行う。
【００２８】
図２８において、アプリケーション画面２８−００１には、任意の画像ファイルを選択するボタン２８−００６、選択後の画像を表示するファイル内容表示部２８−００９及び印刷開始命令を行う印刷ボタン２８−００８が含まれる。また、それぞれ印刷目的を選択するメニューである写真印刷メニュー２８−００３、ドキュメント印刷メニュー２８−００４及びお試し印刷メニュー２８−００５を含む。
【００２９】
このように本アプリケーション画面構成例においてはアプリケーションが印刷開始時に目的の印刷目的を事前に選択可能な画面構成を構築している。
【００３０】
加えて、アプリケーションは各印刷目的選択メニューに対応した前記設定ファイル３−０１１を印刷目的毎に事前に用意しておく構成とする。そして印刷開始時に、ユーザに選択させることで、それぞれ印刷目的に合致した印刷設定ファイル３−００１を決定する。その後、プリンタドライバ拡張ＡＰＩに指定するパラメータとして設定ファイルのファイルパス３−００２を切り替えることで、印刷目的に合致した印刷設定情報であるＤＥＶＭＯＤＥ構造体を入手する。
【００３１】
図４は本発明を実施するための第１実施形態であるプリンタドライバ拡張ＡＰＩ３−００３であるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１のインタフェースの型を表す図である。プリンタドライバ３−００４におけるＳＤＫ管理部３−００５は、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１をこのインタフェースの型でアプリケーションに対し公開している。アプリケーションは各パラメータを指定することで印刷設定をＳＤＫ管理部３−００５に対して指定することが可能である。
【００３２】
図４において、アプリケーションはＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１にパラメータとしてプリンタハンドル（入力）、設定ファイル名（入力および出力）、ＤＥＶＭＯＤＥ構造体ポインタ（入力および出力）を指定する。
【００３３】
図７は本発明を実施するため第１実施形態に係るＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１インタフェースに利用する設定ファイルフォーマット１を示す例である。本設定ファイルは、アプリケーションがプリンタドライバに対して印刷設定を行う際に、予め希望する印刷設定を、既定されたフォーマットで記述しておく。その後、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１インタフェース３−００３にて印刷設定の指定が行われる。
【００３４】
図７において、設定ファイルフォーマット１（７−００１）は、図示の通り、１設定項目に対し１設定値のみ指定可能なフォーマットを有する。
具体的には、図７に図示するところの最上行である［ＤｒｉｖｅｒＳｅｔｔｉｎｇｓ］は、以後の行が印刷設定を指定する意味を表す既定されたフォーマットである。
【００３５】
図７に図示するところの２行目である“ＭｅｄｉａＴｙｐｅ  ＝  ＦｉｎｅＰｈｏｔｏＰａｐｅｒ”は、左辺が印刷項目名、右辺が印刷値名を意味する。つまり用紙の種類を高品位写真用紙に指定することを表している。
【００３６】
以降の行は同じように既定されたフォーマットでの印刷設定を表している。図７に示す設定ファイルフォーマット例は上から順に“用紙の種類に高品位写真用紙を指定”、“フチなし印刷にフチなし設定を指定”、“両面印刷に自動両面印刷を指定”、“印刷プレビューにオンを指定”をそれぞれ指定した記述例となる。
【００３７】
図９および図１０は、本発明を実施するため第１実施形態に係る前記ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１インタフェースにパラメータとして利用するＤＥＶＭＯＤＥ構造体３−００２の構成を図示しているものである。ＤＥＶＭＯＤＥ構造体はアプリケーションから、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１インタフェースのパラメータとしてＤＥＶＭＯＤＥ構造体アドレスとして指定される。それと同時に、指定された印刷設定ファイルの設定結果の反映情報としてアプリケーションへ返却される。ここでは、ＤＥＶＭＯＤＥ構造体は内部に各種設定情報を格納して関数に渡すために用いている。
【００３８】
図１０はＤＥＶＭＯＤＥ構造体の構成を示しており、プリンタドライバベンダ間で共通の構成を保持するＰｕｂｌｉｃ領域１０−００２と、プリンタドライバベンダが独自の構成を保持することが可能なＰｒｉｖａｔｅ領域１０−００３で構成されている。ここで、プリンタドライバベンダ固有の設定値はＰｒｉｖａｔｅ領域１０−００３に内部ＩＤ１０−００４として保持される。
【００３９】
図９はＤＥＶＭＯＤＥ構造体１０−００１のＰｒｉｖａｔｅ領域１０−００３に内部ＩＤ１０−００４として保持される各印刷設定値が、Ｐｒｉｖａｔｅ領域１０−００３においてどのアドレスに保持されているかを表すテーブルの例を図示しているものである。
【００４０】
図９においては、例えば用紙の種類はＤＥＶＭＯＤＥ構造体１０−００１のアドレスＡの位置に内部ＩＤで保持されることを示している。このＤＥＶＭＯＤＥアドレステーブル９−００１は予めプリンタドライバ３−００４が保持管理している（不図示）ものである。
【００４１】
図１１は本発明を実施するため第１実施形態に係る前記ＤＥＶＭＯＤＥ構造体１０−００１に保持される設定項目の内部ＩＤ１０−００４と、前記設定ファイル３−０１０に記述される設定値を表す文字列との変換テーブルを図示している。設定コンフリクト管理部３−０１２は、設定ファイル３−０１１の解釈と、ＤＥＶＭＯＤＥ構造体３−０１０への設定値の反映結果の保存に基づき、本変換テーブルを利用し内部ＩＤ値を解釈する。
【００４２】
図１１において、設定ファイルの文字列と内部ＩＤ変換テーブル１１−００１は、それぞれ対となる設定ファイル文字列１１−００２と内部ＩＤ値１１−００３を保有する。
【００４３】
図１２は、本発明を実施するため第１実施形態に係る図３の前記プリンタドライバ３−００４の構成要素である設定優先順位ＤＢ３−００８のデータベース例の概念図である。設定優先順位ＤＢ１２−００１は、印刷設定の各設定間のコンフリクト解決に必要とする設定間の優先順位が定義されたデータベースであり、本データベースは図３の前記プリンタドライバ３−００４に示す前記設定コンフリクト管理部３−０１２から参照される。
【００４４】
図１２において、本実施例においては図示の通り優先順位順に各設定項目が定義されており、用紙の種類１２−００２が最高の優先順位であり、以降、フチなし印刷１２−００３、両面印刷１２−００４、印刷プレビュー１２−００５と続く。なおその他の印刷設定項目（不図示）もその項目の優先順位が本データベースに定義されている。
【００４５】
図１３は本発明を実施するため第１実施形態に係る図３の前記プリンタドライバ３−００４の構成要素であるモデル別サポート機能ＤＢ３−００６のデータベースの概念図である。モデル別サポート機能ＤＢ１３−００１は、当該プリンタドライバが保有するプリンタモデルにおける印刷設定がサポートする設定項目、及びそれぞれの設定項目におけるサポートする設定値を保持するデータベースである。このデータベースは図３のプリンタドライバ３−００４に示す設定コンフリクト管理部３−０１２から参照される。
【００４６】
本実施例においてモデル別サポート機能ＤＢ１３−００１はそれぞれサポートする設定項目（機能）を定義している。設定項目としては、用紙の種類サポートリスト１３−００２、フチなし印刷設定サポートリスト１３−００３、両面印刷サポートリスト１３−００４及び印刷プレビューサポートリスト１３−００５がある。なお、その他の設定項目（不図示）に関しても当該プリンタモデルがサポートする設定項目に関して定義されているものとする。
【００４７】
ここで、それぞれの設定項目は、例えば用紙の種類サポートリスト１３−００２においては、プリンタモデルがサポートする全ての用紙の種類が内部ＩＤ（図１０ＤＥＶＭＯＤＥ構造体１０−００１における内部ＩＤ１０−００４に該当）にて記述されている。このように、本データベースには当該プリンタモデルがサポートする各設定項目に対する設定値が列挙されている。
【００４８】
図１４は本発明を実施するため第１実施形態に係る図３の前記プリンタドライバ３−００４の構成要素である機能間コンフリクトＤＢ３−００９のデータベースの概念図である。機能間コンフリクトＤＢ３−００９は、当該プリンタドライバが保有する当該プリンタモデルがサポートする設定項目及び、それぞれの設定項目において、各々の設定項目間における許可された設定値の組み合わせを保持するデータベースである。そして、このデータベースは図３のプリンタドライバ３−００４に示す設定コンフリクト管理部３−０１２から参照される。
【００４９】
図１４において、機能間コンフリクトＤＢ１４−００１は、プリンタモデルがサポートする設定値間で可能な組み合わせを定義している。具体的には、各設定項目である用紙の種類１４−００２、フチなし全面印刷１４−００３、両面印刷１４−００４、印刷プレビュー１４−００５というように、図３に示す設定優先順位ＤＢが保有する優先順位順に、設定値間の可能な組み合わせを定義している。
【００５０】
例えば、用紙の種類１４−００２に着目すると、高品位写真用紙選択時に設定可能なフチなし全面印刷はフチあり及びフチなしの両方の設定が可能であることを定義している。また、用紙の種類１４−００２にて高品位写真用紙を選択し、なおかつ、フチなし全面印刷にてフチありを選択した場合は、両面印刷１４−００４においては、片面印刷および、手動両面印刷及び、自動両面印刷の設定が同時に指定可能であることを定義する。
【００５１】
一方、印刷プレビュー１４−００５など、他の設定項目に依存せずに設定の変更可能な設定項目も印刷設定の管理上存在する。このような設定項目に対しては、機能間コンフリクトＤＢ１４−００１においては、印刷プレビュー１４−００５の例のように（非依存）を定義することで、他の設定項目に非依存で設定値の変更が可能であることを定義する。
また、機能間コンフリクトＤＢ１４−００１においては、各印刷設定値のデフォルト値についても定義している。例えば、用紙の種類１４−００２においては高品位写真用紙（（＊）マークにて図示）が用紙の種類におけるデフォルト値であることを定義する。
【００５２】
図１５は本発明を実施するため第１実施形態に係る図３の前記プリンタドライバ３−００４の構成要素である動作環境別不可条件ＤＢ３−００７のデータベースの概念図である。動作環境別不可条件ＤＢ１５−００１は、プリンタドライバがサポートする印刷設定項目において、特定の動作環境上においては機能の動作を許可しない条件を保持するデータベースである。そして、このデータベースは図３のプリンタドライバ３−００４に示す設定コンフリクト管理部３−０１２から参照される。
【００５３】
図１５において、本実施例では、機能が制限されるプリンタドライバ動作環境として、メタファイルスプール設定１５−００１及び、ネットワーク設定１５−００４の２つの動作環境において機能の動作を許可しない条件があることを定義している。ここでは、メタファイルスプール設定１５−００２においては、スプールしない設定環境下では不可項目１５−００３に手動両面が存在している。つまり、メタファイルスプール設定がスプールしない設定においては手動両面の設定を禁止することが定義されている例である。
【００５４】
なお同様に、ネットワーク設定１５−００４においては、ポイントアンドプリントのクライアント設定においては、印刷プレビュー機能を禁止することが定義されている例である。このように、本データベースには当該プリンタドライバが動作する環境条件に対する設定禁止条件が列挙されている。
【００５５】
図１８は、本発明の第１実施形態に係るデータ処理手順の一例を示すフローチャートである。本処理は、図３に示す前記アプリケーション３−００１からの印刷設定変更指示に伴い、印刷処理関連プログラムが設定変更指示の結果をアプリケーション３−００１に返却する手段に対応する。以下、アプリケーション３−００１から、図４に示したプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１の関数を用いて印刷設定処理が￥を解釈し、その結果をアプリケーション３−００１へ返却する処理について詳述する。
【００５６】
まず、アプリケーションはプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１にパラメータとして指定するための設定ファイルおよび、現在アプリケーションが保持するＤＥＶＭＯＤＥ構造体１０−００１を準備する。これは、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１の関数命令を呼ぶ前に準備することになる。
【００５７】
ここで設定ファイルは、具体的には図７の設定ファイルフォーマット１に示すように予めアプリケーション３−００１が希望する印刷設定の内容が記述されているものである。また、現在アプリケーションが保持するＤＥＶＭＯＤＥ構造体は、例えば、アプリケーション起動時にプリンタドライバから入手した既定の印刷設定に対応するＤＥＶＭＯＤＥ構造体である。アプリケーションはこれらパラメータを図３に示す設定ファイルのファイルパスおよびＤＥＶＭＯＤＥ構造体アドレス３−００２としてＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１の関数命令にパラメータとして指定する。
【００５８】
図３に示すＳＤＫ管理部３−００５より解釈指示を受け付けた設定コンフリクト管理部３−０１２は、アプリケーションからの設定変更命令に伴い、アプリケーションからの入力ＤＥＶＭＯＤＥ内容を確認する（ステップ１８−００２）。
【００５９】
次にアプリケーションで指定されることで、受信した印刷設定ファイルの内容を解釈すべく、図３における設定優先順位データベースより、プリンタドライバがサポートする各設定項目に対する設定優先順位リストを入手する（ステップ１８−００３）。ここで設定優先順位リストとは具体的には図１２に示すとおり、用紙の種類、フチなし印刷、両面印刷、印刷プレビュー…のように各設定項目の優先順位順である。
【００６０】
次に設定コンフリクト管理部３−０１２は、ステップ１８−００３で入手した設定優先順位リストに記述された全項目に対し、図７に示した設定ファイルに記載されてすべての設定項目を解釈する。そのために、設定優先順位リストの記述順に、設定優先順位リストが終了するまで（ステップ１８−００５）より（ステップ１８−０１２）までの解釈および反映処理を行う。
【００６１】
まず設定優先リスト上の現在の参照項目、これは最初であれば一番優先順位が高い設定項目であるが、その設定項目に対応する記述が設定ファイルに指定されているかどうか確認するため設定ファイルから読み取り処理を行う（ステップ１８−００５）。ここで設定ファイルに対応する設定項目の記述があれば（ステップ１８−００６のＹ分岐）、記述された設定値が有効値であるかの確認処理を行う（ステップ１８−００７）。なお設定値確認処理である（ステップ１８−００７）は説明の便宜上詳細の処理フローチャートを後述に解説する。
【００６２】
設定値確認処理において設定値が有効値と判断され指定可能である場合（ステップ１８−００８のＹ分岐）、指定された設定値をＤＥＶＭＯＤＥ構造体の内容に更新する。それと同時にＤＥＶＭＯＤＥ構造体の下位優先順位項目にコンフリクトが発生していないか確認するためのＤＭ更新及び下位優先順位コンフリクト解決処理を行う（ステップ１８−００９）。なおＤＭ更新及び下位優先順位コンフリクト解決処理は説明の便宜上詳細の処理フローチャートを後述に解説する。
【００６３】
一方、現在の参照項目に対応する設定項目が設定ファイルに記述されていない場合（ステップ１８−００６のＮ分岐）、具体的には設定ファイルにおいて現在参照中の設定優先順位に対応する設定値の指定が無いため、参照処理をスキップする。
【００６４】
また一方、設定値確認処理（ステップ１８−００７）の結果設定値が無効値であると判断された場合（ステップ１８−００８のＮ分岐）、設定コンフリクト管理部３−０１２は設定ファイルの対象行を削除する（ステップ１８−０１０）。これは、最終的にアプリケーションに返却する設定ファイルの内容において、アプリケーション３−００１からの指定値は無効値であったことをアプリケーション３−００１に返却する目的をもつ。
【００６５】
図１２に示す設定優先順位ＤＢにおいて、現在参照中の設定優先順位の上記参照処理を完了した後、現在参照中の設定優先順位が最後の優先順位項目であれば設定優先順位順の処理を終了（ステップ１８−００１１のＹ分岐）する。一方次の優先順位項目が存在すれば（ステップ１８−０１２）、再度次の優先順位項目に対する設定ファイルからの読み取り処理（ステップ１８−００５からステップ１８−０１２まで）を続ける。
【００６６】
以上により、図７に示す設定ファイルフォーマット１に記載された全ての記述を、プリンタドライバが保有する設定優先順位順に解釈を行う。そして、設定ファイルの全ての解釈が終了（ステップ１８−０１１のＹ分岐）した時点で、アプリケーションに設定ファイルの内容を反映した印刷設定結果として、ＤＥＶＭＯＤＥ構造体及び更新後の設定ファイルを返却（ステップ１８−０１３）する。最後にＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１は処理を終了する（ステップ１８−０１４）。
【００６７】
図２１は、図１８における設定値確認処理（ステップ１８−００７）を詳述するものである。具体的には、設定ファイルの各設定値が、プリンタドライバにおいて有効値（つまり設定値は指定可能である）もしくは無効値（つまり設定値は指定不可能である）であるかを判断するフローチャートを示している。
【００６８】
本フローにおいて、まず設定ファイルに記述された値をプリンタドライバが解釈可能な内部ＩＤ、具体的には図１０に示すＤＥＶＭＯＤＥ構造体のＰｒｉｖａｔｅ部分１０−００３に保持する内部ＩＤ１０−００４に変換する。
【００６９】
具体的には図１１に示す設定ファイルの文字列と内部ＩＤの変換テーブル１１−００１を参照し、当該設定ファイル文字列１１−００２に該当する内部ＩＤ１１−００３へ変換を行う（ステップ２１−００２）。
【００７０】
次に設定ファイルが指定した設定値を変換した内部ＩＤが、当該プリンタドライバの当該プリンタモデルにおいてその内部ＩＤをサポートしているか否かを判断すべくモデル別サポート処理を行う（ステップ２１−００３）。なおモデル別サポート確認処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００７１】
ここで、指定値の内部ＩＤが有効値であると判断した場合（ステップ２１−００４のＹ分岐）、プリンタドライバの動作環境において、指定された機能を実行することが可能であるかを判断すべく、動作環境負荷条件の確認処理（ステップ２１−００５）を行う。なお動作環境負荷条件の確認処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００７２】
指定機能が現在の動作環境上動作可能であると判断した場合（ステップ２１−００６のＹ分岐）は、設定値を変換した内部ＩＤが他の設定項目とのコンフリクトを起こすような無効値でないかを判断すべく、コンフリクト確認処理（ステップ２１−００７）を行う。なおコンフリクト確認処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００７３】
ここで、設定値は指定可能と判断された場合、設定値は有効値であると判断できるため、最終的に設定値は指定可能と判断（ステップ２１−００９）し、処理を終了（ステップ２１−０１１）する。一方、モデル別サポート確認処理、動作環境負荷条件の確認処理または、コンフリクト確認処理のいずれかで、無効値と判断された場合、指定値は指定不可能と判断（ステップ２１−０１０）し、処理を終了（ステップ２１−０１１）する。
【００７４】
図２３は、図２１におけるモデル別サポート処理（ステップ２１−００３）を詳述するものである。具体的には、設定ファイルの設定値がプリンタドライバのプリンタモデルに基づき、プリンタドライバの機能でサポートもしくは非サポートかを判断するフローチャートを示す。
【００７５】
本フローにおいて、まずはモデル別サポート機能データベースによりサポートリストを取得する（ステップ２３−００２）。具体的には図１３に示すモデル別サポート機能ＤＢ１３−０１３において、当該設定項目サポートリストに定義された当該プリンタモデルのサポート値一覧を取得する。例えば用紙の種類においては、用紙の種類サポートリスト１３−００２が当該プリンタモデルでサポートする用紙の種類のリストとなる。
【００７６】
設定ファイルで指定された指定値が当該サポートリストに存在すると判断した場合（ステップ２３−００３のＹ分岐）、指定値は有効値つまり指定可能値であると判断し（ステップ２３−００４）処理を終了（２３−００６）する。
【００７７】
一方、設定ファイルで指定された指定値が当該サポートリストに存在しない場合（ステップ２３−００３のＮ分岐）、指定値は無効値つまり指定不可能であると判断（ステップ２３−００５）し処理を終了（２３−００６）する。
【００７８】
図２４は、図２１における動作環境不可条件の確認処理（ステップ２１−００５）を詳述するものであり、設定ファイルで指定された指定値がプリンタドライバの現在の動作環境において機能をサポートしているか判断するフローチャートを示している。
【００７９】
本フローにおいて、まずは動作環境不可条件データベースにより不可条件を取得し、前記不可条件データベースに指定された設定項目が存在するかどうかを確認する。具体的には、図１５に示す動作環境別不可条件ＤＢに定義されたそれぞれ動作不可条件において、不可項目（１５−００３）及び不可項目（１５−００４）に当該設定項目が該当するかを確認する。
【００８０】
動作環境別不可条件に設定項目が存在した場合（ステップ２４−００２のＹ条件）、実際の当該プリンタドライバの動作環境を取得する（ステップ２４−００３）。
【００８１】
そして、再度現在の動作環境が不可条件データベースにおける不可条件に合致した場合（ステップ２４−００４のＹ条件）、設定値は設定不可能と判断し（ステップ２４−００５）その後処理を終了する（ステップ２４−００７）。
【００８２】
一方、設定項目が動作環境別不可条件ＤＢに存在しない（ステップ２４−００２）、または不可条件に記載はあるが現在の動作環境が該当しない場合（ステップ２４−００４のＮ分岐）、設定値は有効値と判断される（ステップ２４−００６）。その後、処理を終了する（ステップ２４−００７）。
【００８３】
図２５は、図２１におけるコンフリクト確認処理（ステップ２１−００７）を詳述するものである。具体的には、設定ファイルで指定された指定値が当該プリンタドライバの他の設定項目値とコンフリクトを発生する条件に該当するか否かを判断するフローチャートを示している。
【００８４】
本フローにおいては、まずは、設定優先順位ＤＢから、設定ファイルで指定された当該設定項目より上位の設定項目のリストを取得する（ステップ２５−００２）。具体的に、図１２に示す設定優先順位ＤＢにおいて、設定ファイルで指定された現在の設定項目が３両面印刷（１２−００４）を例にとる。その場合、それより上位の設定項目であるリストに該当する１用紙の種類１２−００２、２フチなし印刷１２−００３の２項目を入手する。
【００８５】
ここで、上位の項目リストを取得した結果、設定ファイルで指定された設定項目が最上位の項目であったと判断した場合（ステップ２５−００３）、他の設定項目に対して優先的に採用可能な設定値であると判断し有効値と判断する（ステップ２５−００７）。
【００８６】
一方、設定項目が最上位項目で無い場合（ステップ２５−００３のＮ分岐）、図３のＤＥＶＭＯＤＥ構造体３−０１０において、ＤＥＶＭＯＤＥ構造体に保存された対応する内部ＩＤを参照する（ステップ２５−００４）。これは、入手した上位の設定項目リストそれぞれの現在値を確認するためのしょりである。なおＤＥＶＭＯＤＥ構造体の当該設定項目の参照処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００８７】
次に、図３に示す機能間コンフリクトＤＢ（３−００９）に記載されたデータベース情報、具体的には図１４に示す機能間コンフリクトＤＢ１４−００１に対し、設定ファイルの設定値が、現在選択可能なリストに存在するかを確認する（ステップ２５−００５）。この処理は、取得した上位の設定項目リストにおけるＤＥＶＭＯＤＥ構造体が保持する各設定値を照らし合わせることで行われる。例えば、図１４に示す機能間コンフリクトＤＢ１４−００１において、設定ファイルで両面印刷（１４−００４）が指定されたと想定する。現在のＤＥＶＭＯＤＥ構造体に示す上位設定項目は、図１２に示す設定優先順位ＤＢにおいて１用紙の種類（１２−００２）及び２フチなし印刷（１２−００３）が上位設定項目であると確認できる。そこで、ＤＥＶＭＯＤＥ構造体の１用紙の種類２フチなし印刷の現在値を確認した結果、用紙の種類が“高品位写真用紙”であり、フチなし印刷が“フチあり”であったとする。その結果、図１４の機能間コンフリクトＤＢから導き出される設定可能な両面印刷（１４−００４）は、片面印刷または手動両面または自動両面の何れかの設定値が有効であると判断できる。
【００８８】
設定値が利用可能であると判断した場合（ステップ２５−００６のＹ分岐）、設定ファイルの設定値は現在設定可能であると判断し（ステップ２５−００７）処理を終了する（ステップ２５−００９）。
【００８９】
一方、設定ファイルの設定値が機能コンフリクトＤＢ及び現在のＤＥＶＭＯＤＥ構造体より利用不可能と判断した場合（ステップ２５−００６のＮ分岐）、設定ファイルで設定値は現在設定不可能であると判断する（ステップ２５−００８）。その後、処理を終了する（ステップ２５−００９）。
【００９０】
図２２は、図１８におけるＤＭ更新及び下位優先順位コンフリクト解決処理（１８−００９）を詳述するものである。具体的には、一連の設定ファイルによる対応したＤＥＶＭＯＤＥ構造体内の内部ＩＤを更新後、設定値の更新により他のＤＥＶＭＯＤＥ構造体内の設定項目間のコンフリクトを解決する処理のフローチャートを示している。
【００９１】
本フローにおいて、まずは有効値と判断された設定値に該当する内部ＩＤにてＤＥＶＭＯＤＥ構造体を更新（ステップ２２−００２）する。なおＤＥＶＭＯＤＥ構造体の当該設定項目の更新処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００９２】
その後、図１２に示す設定優先順位ＤＢ（１２−００１）から、設定ファイルに指定された設定項目より下位の設定優先順位リストを入手し、下位の設定優先項目全てに対し、設定項目間のコンフリクトの解決を行うべく（ステップ２２−００５）以下の処理を行う。
【００９３】
まず入手した設定優先順位リストにおいて、設定ファイルに指定された設定項目が最下位の優先順位である場合（ステップ２２−００４のＮ分岐）、それ以上優先順位の低い設定項目が無いことから処理を終了する（ステップ２２−０１０）。
【００９４】
一方、設定ファイルに指定された設定項目が最下位の優先順位でない場合は（ステップ２２−００４のＮ分岐）、１つ優先順位が低い設定項目の現在値を前記ＤＥＶＭＯＤＥ構造体より取得する（ステップ２２−０５５）。なおＤＥＶＭＯＤＥ構造体の参照処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００９５】
次にＤＥＶＭＯＤＥ構造体より取得した、１つ優先順位が低い設定項目の設定値が、図１４に示す機能間コンフリクトＤＢにおいて、設定が許可された値ではない場合（ステップ２２−００６のＮ分岐）について説明する。この場合、その設定値は機能間コンフリクトが発生しており無効値であると判断できることから、図１４に示す機能間コンフリクトＤＢに記載されたデフォルト値（図１４の（＊）にて図示した設定値）を取得（ステップ２２−００７）する。そして、ＤＥＶＭＯＤＥ構造体の当該設定項目をそのデフォルト値にて更新する（ステップ２２−００８）。なおＤＥＶＭＯＤＥ構造体の当該設定項目の更新処理は説明の便宜上詳細のフローチャートを後述に解説する。
【００９６】
次に、ステップ２２−００３で取得した設定優先順位リストのもう１つ下位の設定項目を参照し、設定項目が存在しなければ、コンフリクト解決処理が終了したと判断し（ステップ２２−００９のＹ分岐）、処理を終了（ステップ２２−０１０）する。
【００９７】
一方、図１４に示す機能間コンフリクトＤＢにおいて、現在の設定値が許可された値である場合は（ステップ２２−００６のＹ分岐）、その設定値は機能間コンフリクトが発生していないため、設定値の更新を行うことなく、次の１つ下の優先順位の処理へ進む。
【００９８】
本処理フローにより、設定ファイルにより特定の設定値が更新された場合においては、当該設定項目より下位の全ての設定項目に対して機能間コンフリクトの解決処理がなされる。
【００９９】
図２６は、図２２、図２５に（図記号Ｆ）記述したＤＥＶＭＯＤＥ構造体の参照処理を詳述するものである。図１０に示すとおり、ＤＥＶＭＯＤＥ構造体には各々の設定項目に対応する設定値が内部ＩＤ１０−００４として保持されているが、Ｐｒｉｖａｔｅ領域１０−００３の内部構成はプリンタドライバのベンダーが自由に構成変更することができる。
【０１００】
ここで設定項目に該当するＰｒｉｖａｔｅ領域アドレスを図９に示すＤＥＶＭＯＤＥアドレステーブルから取得し（ステップ２６−００２）、当該アドレスから内部ＩＤを取得（ステップ１６−００３）する。その後、入手した内部ＩＤを問い合わせ元に返却し（ステップ２６−００４）、処理を終了する（ステップ２６−００５）。
【０１０１】
図２７は、図２２に（図記号Ｇ）記述したＤＥＶＭＯＤＥ構造体の更新処理を詳述するものである。図１０に示すとおり、ＤＥＶＭＯＤＥ構造体には各々の設定項目に対応する設定値が内部ＩＤ１０−００４として保持されているが、Ｐｒｉｖａｔｅ領域１０−００３の内部構成はプリンタドライバのベンダーが自由に構成変更することができる。
【０１０２】
本処理は、設定項目に該当するＰｒｉｖａｔｅ領域アドレスを図９に示すＤＥＶＭＯＤＥアドレステーブルから取得し（ステップ２７−００２）、当該アドレスに対して指定された内部ＩＤにて更新（ステップ２７−００３）する。その後、処理を終了する（ステップ２７−００４）。
【０１０３】
以上の処理によってアプリケーション３−００１が設定ファイルにアプリケーションが希望する印刷設定を予め設定ファイルに記述しておくことで、希望通りの設定内容に更新された設定結果（ＤＥＶＭＯＤＥ構造体）を入手することができる。またその一方、設定ファイルに記述された設定のうち無効値はその記述が消去される。
【０１０４】
ユーザは設定ファイルをアプリケーションから指定することで、最適な印刷設定を最終的に得ることができる。
【０１０５】
［第２実施形態］
図５は本発明を実施するため第２実施形態であるプリンタドライバ拡張ＡＰＩ３−００３であるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２のインタフェースの型を表す図である。ＳＤＫ管理部３−００５は、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２をこのインタフェースの型でアプリケーションに対し公開しており、アプリケーションは各パラメータを指定することで印刷設定をＳＤＫ管理部３−００５に対して指定することが可能である。
【０１０６】
アプリケーションはＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２のインタフェースにパラメータとして、プリンタハンドル（入力）、複数の設定ファイルの設定ファイル名と数（入力）、及びＤＥＶＭＯＤＥ構造体ポインタ（入力および出力）を指定する。なおＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２においては、アプリケーションが異なる内容の複数の設定ファイル指定し、最終的にどの設定ファイルが採用されたかを採用ファイルのインデックスの戻り値として入手する。
【０１０７】
なお、第２実施形態の設定ファイルフォーマットは、前記図７で図示した設定ファイルフォーマット１と同一であるため詳細な説明はここでは割愛する。
【０１０８】
図１６は本発明の第２実施形態に係る設定ファイル毎の採用項目ＤＢである。これは第２実施例におけるデータ処理手順において、それぞれアプリケーション３−００１から指定された設定ファイル毎に、その設定ファイル内に記述された設定値のうちの有効値の数（つまり採用値の数）を管理するデータベースである。図１６において、設定ファイル毎の採用項目ＤＢ（１６−００１）は、それぞれ設定ファイル（１６−００２）ごとに採用項目数（１６−００３）を保持する。また第２実施形態においては、採用項目数が最大の設定ファイルを採用する特徴を有するためつまり、採用項目数（１６−００３）において採用項目数が最大の設定ファイルを最終的に印刷処理関連プログラムが採用する設定ファイルとなる。
【０１０９】
図１９は本発明の第２実施形態に係るデータ処理手順の一例を示すフローチャートである。
【０１１０】
本処理は、図３に示した前記アプリケーションからの印刷設定変更指示に伴い、印刷処理関連プログラムが設定変更指示の結果をアプリケーション３−００１に返却する手段に対応する。以下、アプリケーション３−から、プリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２の関数を用いて印刷設定処理を印刷関連プログラムが解釈しその結果をアプリケーション３−００１へ返却する処理について詳述する。
【０１１１】
まず、アプリケーションはプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２の関数にパラメータとして指定する複数の設定ファイル７−００１および、現在アプリケーションが保持するＤＥＶＭＯＤＥ構造体を準備する。これは、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２の関数命令を呼ぶ前に行われる。
【０１１２】
ここで設定ファイルは、具体的には図７の設定ファイルフォーマット１に示すように予めアプリケーション３−００１が希望する印刷設定の内容が記述されているものである。加えて、アプリケーションは複数の印刷設定を指定できるよう複数の設定ファイルを用意する。またここで現在アプリケーションが保持するＤＥＶＭＯＤＥ構造体は、例えば、アプリケーション起動時にプリンタドライバから入手した既定の印刷設定に対応するＤＥＶＭＯＤＥ構造体である。アプリケーションはこれらパラメータを図３に示す設定ファイルのファイルパスおよびＤＥＶＭＯＤＥ構造体アドレス３−００２としてＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２の関数命令にパラメータとして指定する。
【０１１３】
図３に示すＳＤＫ管理部３−００５より解釈指示を受け付けた設定コンフリクト管理部３−０１２は、アプリケーションからの設定変更命令に伴い、アプリケーションからの入力ＤＥＶＭＯＤＥ内容を確認する（ステップ１９−００２）。
【０１１４】
次に、アプリケーションより指定されることで、受信した複数の設定ファイルを順番に解釈処理を行う（ステップ１９−００３からステップ１９−０１７に該当）。
【０１１５】
まず図３において、設定コンフリクト管理部３−０１２が管理するＤＥＶＭＯＤＥ構造体３−０１０を、アプリケーション３−００１が指定したＤＥＶＭＯＤＥ値で初期化する（１９−００４）。
【０１１６】
次にアプリケーション３−００１より指定された印刷設定ファイルの内容を解釈すべく、図３の設定優先順位データベース３−００８より、本プリンタドライバがサポートする各設定項目に対する設定優先順位リストを入手する（ステップ１９−００５）。ここで、設定優先順位リストとは具体的には図１２に示すとおり、用紙の種類、フチなし印刷、両面印刷、印刷プレビュー…のように各設定項目の優先順位順である。
【０１１７】
次に設定コンフリクト管理部３−０１２は、入手した設定優先順位リストに記述された全項目に対し、設定優先順位リストの記述順に、設定優先順位リストが終了するまで（ステップ１９−００８〜ステップ１９−０１５）までの解釈および反映処理を行う。これは、図７に示した設定ファイルに記載されてすべての設定項目を解釈するためである。
【０１１８】
まず設定優先リスト上の現在の参照項目、これは最初であれば一番優先順位が高い設定項目であるが、その設定項目に対応する記述が設定ファイルに指定されているかどうか確認するため設定ファイルから読み取り処理を行う（ステップ１９−００７）。
【０１１９】
ここで設定ファイルに対応する設定項目の記述があれば（ステップ１９−００８のＹ分岐）、記述された設定値が有効値であるかの確認処理を行う（ステップ１９−００９）。
【０１２０】
なお、設定値確認処理である（ステップ１９−００９）は前記第１実施例で解説した設定確認処理そのものと同一のためここでは解説を割愛する。
【０１２１】
ここで、設定値確認処理において設定値が有効値と判断され指定可能である場合（ステップ１９−０１０のＹ分岐）、指定された設定値をＤＥＶＭＯＤＥ構造体の内容に更新する。そして同時に、ＤＥＶＭＯＤＥ構造体の下位優先順位項目にコンフリクトが発生していないか確認するためのＤＭ更新及び下位優先順位コンフリクト解決処理を行う（ステップ１９−０１１）。なお、ＤＭ更新及び下位優先順位コンフリクト解決処理である（ステップ１９−０１１）は前記第１実施例で解説したＤＭ更新及び下位優先順位コンフリクト解決処理そのものと同一のためここでは解説を割愛する。
【０１２２】
その後、図１６に示した設定ファイル毎の採用項目ＤＢ１６−００１のうち、該当する設定ファイルに対する採用項目数をインクリメントする。
【０１２３】
一方、現在の参照項目に対応する設定項目が設定ファイルに記述されていない場合（ステップ１９−００８のＮ分岐）、具体的には設定ファイルにおいて現在参照中の設定優先順位に対応する設定値の指定が無いため、参照処理をスキップする。
【０１２４】
また一方、設定値が無効値であると判断された場合（ステップ１９−０１０のＮ分岐）、図１６に示した設定ファイル毎の採用項目ＤＢ１６−００１のうち、該当する設定ファイルに対する採用項目数に非採用を保存（ステップ１９−０１３）する。
【０１２５】
その後、該当する設定ファイルの解釈を中断して次の設定ファイルの解釈に進む。
【０１２６】
図１２に示す設定優先順位ＤＢにおいて、現在参照中の設定優先順位において上記参照処理を完了した後、現在参照中の設定優先順位が最後の優先順位項目であれば設定優先順位順の処理を終了（ステップ１９−０１４のＹ分岐）する。
【０１２７】
一方次の優先順位項目が存在すれば（ステップ１９−０１５）、再度次の優先順位項目に対する設定ファイルからの読み取り処理（ステップ１９−００３）以降を続ける。
【０１２８】
これにより設定ファイルフォーマット１に記載された全ての記述を、プリンタドライバの設定優先順位順に解釈を行い、設定ファイルに記述された全ての記述の解釈が終了（ステップ１９−０１４のＹ分岐）した時点で、次に指定された設定ファイルの解釈へ進む。
【０１２９】
以上の設定ファイル解釈処理をアプリケーションから指定された複数の設定ファイルに対しすべて完了する（ステップ１９−０１６のＹ分岐）。
【０１３０】
そして、アプリケーションから指定された全ての設定ファイルに対して解釈処理が終了後、図１６の設定ファイル毎の採用項目数ＤＢを参照する。そして、まず全ての設定ファイルの採用項目数が非採用であれば（ステップ１９−０１８のＮ分岐）、どの設定ファイルも最終的に採用できない内容であるため、アプリケーションに失敗を返却して（ステップ１９−０２１）処理を終了する。この際には、アプリケーションでは、図２９に示すような表示を行い、ユーザに失敗を通知する形態であってもよい。
【０１３１】
一方、図１６の設定ファイル毎の採用項目数ＤＢを参照し、何れかの設定ファイルに対して採用項目数が記載されていれば、設定ファイル毎の採用項目数ＤＢで採用数が一番多く保存された設定ファイルを検索（ステップ１９−０１９）する。そして更新後のＤＥＶＭＯＤＥ及び、採用した設定ファイルのインデックスをアプリケーション３−００１に対して返却（ステップ１９−０２０）後、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２は処理を終了する（ステップ１９−０２２）。
【０１３２】
以上の処理によって、複数の設定ファイルにアプリケーションが希望する印刷設定を予め設定ファイルに記述しておき、複数の設定ファイルを指定することで、希望通りの設定内容に更新された設定結果（ＤＥＶＭＯＤＥ構造体）を入手することができる。またその一方、複数の設定ファイルのうち採用された設定ファイルのインデックスが返却されるため、最終的な設定項目の反映結果をアプリケーションから確認することが可能となる。
【０１３３】
［第３実施形態］
図６は本発明を実施するため第３実施形態であるプリンタドライバ拡張ＡＰＩ３−００３であるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３のインタフェースの型を表す図である。ＳＤＫ管理部３−００５は、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３をこのインタフェースの型でアプリケーションに対し公開しており、アプリケーションは各パラメータを指定することで印刷設定をＳＤＫ管理部２−００５に対して指定することが可能である。
【０１３４】
図６において、アプリケーションはＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３のインタフェースを利用するにおいてパラメータとしてプリンタハンドル（入力）、設定ファイル名（入力および出力）、ＤＥＶＭＯＤＥ構造体ポインタ（入力および出力）を指定する。
【０１３５】
図８は本発明を実施するため第３実施形態に係るＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３インタフェースに利用する印刷設定ファイルフォーマット２を示す例である。本印刷設定ファイルは、アプリケーションがプリンタドライバに対して印刷設定を行う際に、予め希望する印刷設定を既定フォーマットで記述しておき、その後前記ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３インタフェース３−００３にて指定を行うものである。
【０１３６】
図８において、設定ファイルフォーマット２（８−００１）は、図示の通り、１つの設定項目に対し複数の設定値を指定可能なフォーマットを有する。
【０１３７】
具体的には、図８に図示するところの最上行である［ＤｒｉｖｅｒＳｅｔｔｉｎｇｓ］は、以後の行が印刷設定を指定する意味を表す既定されたフォーマットである。
【０１３８】
図８に図示するところの２行目である“ＭｅｄｉａＴｙｐｅ  ＝  ＧｒａｐｈｉｃｓＰａｐｅｒ”は、左辺が印刷項目名、右辺が印刷値名を意味する。つまり用紙の種類をグラフィックス用紙に指定することを表している。
【０１３９】
また設定ファイルフォーマット２の特徴として、図８に示すところの３行目である“ＭｅｄｉａＴｙｐｅ  ＝  ＦｉｎｅＰｈｏｔｏＰａｐｅｒ”は、用紙の種類に対し、次候補として高品位写真用紙を指定することを表している。これによりアプリケーションの「グラフィックス用紙が指定できない場合は高品位写真用紙を指定」する意図を表している。
以降の行は同じように既定されたフォーマットでの印刷設定を表しており。これにより図８に示す設定ファイルフォーマット例は「用紙の種類にグラフィックス用紙を、もし選択できなければ高品位写真用紙を指定」、「フチなし印刷にフチなし設定を指定」、「印刷プレビューにオンを指定」をそれぞれ指定した記述例となる。
【０１４０】
図１７は本発明の第３実施形態に係る設定項目毎の記述設定値数ＤＢである。これは第３実施例におけるデータ処理手順において、アプリケーション３−００１から指定された設定ファイルの各設定項目の記述において、項目毎の記述された設定数を保持する。つまり、設定数が２以上存在する場合はアプリケーションが次候補として複数の設定値を指定したことを意味する。また第３実施形態においては、記述設定数が１の設定項目は「必須条件」として判断され、記述設定数が２以上存在する設定項目より優先して採用される特徴を有する。
【０１４１】
図２０は、本発明の第３実施形態に係るデータ処理手順の一例を示すフローチャートである。本処理は、図３に示した前記アプリケーションからの印刷設定変更指示に伴い、印刷処理関連プログラムが設定変更指示の結果をアプリケーション３−００１に返却する手段に対応する。以下、アプリケーションから、図６に示したプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３の関数を用いて印刷設定処理を印刷関連プログラムが解釈しその結果をアプリケーション２０１へ返却する処理について詳述する。
【０１４２】
まず、アプリケーション３−００１はプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３の関数にパラメータとして指定する設定ファイル８−００１および、現在アプリケーションが保持するＤＥＶＭＯＤＥ構造体を準備する。これは、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２の関数命令を呼ぶ前に行われる。ここで設定ファイルは、具体的には図７の設定ファイルフォーマット２に示すように予めアプリケーション３−００１が希望する印刷設定の内容が記述されているものである。また同時の第３実施例の特徴として、設定ファイルフォーマット２においては、単一の設定項目に対し次候補を表せるよう複数の設定値を記述することも可能である。また現在アプリケーションが保持するＤＥＶＭＯＤＥ構造体は、例えば、アプリケーション起動時にプリンタドライバから入手した既定の印刷設定に対応するＤＥＶＭＯＤＥ構造体である。アプリケーションはこれらパラメータを図３に示す設定ファイルのファイルパスおよびＤＥＶＭＯＤＥ構造体アドレス３−００２としてＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３の関数命令にパラメータとして指定する。
【０１４３】
図３に示すＳＤＫ管理部３−００５より解釈指示を受け付けた設定コンフリクト管理部３−０１２は、アプリケーション３−００１からの設定変更命令に伴い、アプリケーションからの入力ＤＥＶＭＯＤＥ内容を確認する（ステップ２０−００２）。
【０１４４】
次に図３におけるプリンタドライバ３−００４の構成データベースである設定優先順位データベース３−００８より、プリンタドライバがサポートする各設定項目に対する設定優先順位リストを入手する（ステップ２０−００３）。これは、アプリケーション３−００１より指定されることで、受信した印刷設定ファイルの内容を解釈するための処理である。ここで設定優先順位リストとは具体的には図１２に示すとおり、用紙の種類、フチなし印刷、両面印刷、印刷プレビュー…のように各設定項目の優先順位順である。
【０１４５】
次に設定コンフリクト管理部３−０１２は、ステップ２０−００３で入手した設定優先順位リストに記述された全項目に対し、設定優先順位リストの記述順に、（ステップ２０−００５〜ステップ２０−０１４）までの解釈および反映処理を行う。
【０１４６】
まず設定優先リスト上の現在の参照項目、これは最初であれば一番優先順位が高い設定項目であるが、その設定項目に対応する記述が設定ファイルに指定されているかどうか確認するため設定ファイルから読み取り処理を行う（ステップ２０−００５）。
【０１４７】
ここで設定ファイルに対応する設定項目の記述があれば（ステップ２０−００６のＹ分岐）設定項目の項目名称を、内部記憶２（２０−００２）として用意した設定ファイルの全項目名に追記する（ステップ２０−００７）。この内部記憶２（２０−０２２）は、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３の最終処理において、最終的に採用した値で設定ファイルを更新するための設定ファイルの全項目名の記憶領域である。
【０１４８】
次に現在参照している設定項目の記述において複数の設定値が記述されている場合（ステップ２０−００８）、現在設定ファイルで参照している参照項目及び参照行を（内部記憶１）２０−０２１へ保存する（ステップ２０−００９）。この内部記憶１は、ＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３の処理手順において、複数指定された設定値の下位項目でコンフリクトが発生した場合、当該設定値の採用をキャンセルしり。そして、複数記述された次候補の設定値から解釈の再処理を行えるように、参照項目と参照行を保存する記憶領域である。
【０１４９】
次に記述された設定値が有効値であるかの確認処理を行う（ステップ２０−０１０）。なお設定値確認処理である（ステップ２０−０１０）は前記第１実施例で解説した設定確認処理そのものと同一のためここでは解説を割愛する。
【０１５０】
ここで、設定値確認処理において有効値と判断され指定可能である場合（ステップ２０−０１１のＹ分岐）、指定された設定値をＤＥＶＭＯＤＥ構造体の内容に更新する。そして、同時にＤＥＶＭＯＤＥ構造体の下位優先順位項目にコンフリクトが発生していないか確認するためのＤＭ更新及び下位優先順位コンフリクト解決処理を行う（ステップ２０−０１２）。なおＤＭ更新及び下位優先順位コンフリクト解決処理である（ステップ２０−０１２）は第１実施例で解説したＤＭ更新及び下位優先順位コンフリクト解決処理そのものと同一のためここでは解説を割愛する。
【０１５１】
一方、現在の参照項目に対応する設定項目が設定ファイルに記述されていない場合（ステップ２０−００６のＮ分岐）、具体的には設定ファイルにおいて現在参照中の設定優先順位に対応する設定値の指定が無いため、参照処理をスキップする。
【０１５２】
また一方、設定値確認処理（ステップ２０−０１０）の結果設定値が無効値であると判断された場合（ステップ２０−０１１のＮ分岐）は、当該設定値の解釈をキャンセルする。そして、その設定項目の次候補から設定値の解釈を再処理すべく内部記憶１に保持されている参照項目および参照行が保存されているかを確認し、保存されていれば、次候補から解釈処理を再開（ステップ２０−０１８）する。
【０１５３】
一方内部記憶１に参照項目及び参照行が保存されていない場合は、処理を中断しアプリケーションに失敗を返却（ステップ２０−０１９）する。この際には、アプリケーションでは、図２９に示すような表示を行い、ユーザに失敗を通知する形態であってもよい。
【０１５４】
図１２に示す設定優先順位ＤＢにおいて、現在参照中の設定優先順位において上記参照処理を全て完了した後、現在参照中の設定優先順位が最後の優先順位項目であれば設定優先順位順の処理を終了（ステップ２０−０１３のＹ分岐）する。
【０１５５】
一方最後の次の優先順位項目が存在すれば（ステップ２０−０１３のＮ分岐）、再度次の優先順位項目に対する設定ファイルからの読み取り処理（ステップ２０−０１４）を続ける。これにより図８に示す設定ファイルフォーマット２に記載された全ての記述を、プリンタドライバが保有する設定優先順位順に解釈を行える。そして、設定ファイルの全ての解釈が終了（ステップ２０−０１３のＹ分岐）した時点で、最終的に採用した値で設定ファイルを更新するため、内部記憶２に保存しておいた設定ファイルの全項目名を参照する。そして、別途最終結果が保存されたＤＥＶＭＯＤＥ構造体より全設定項目の値を設定ファイル側に反映する（ステップ２０−０１５）。その後、アプリケーションに最終的な印刷設定であるＤＥＶＭＯＤＥ構造体及び、更新後の設定ファイルの両方を返却（ステップ２０−０１６）、処理を終了する（ステップ２０−０２０）。
【０１５６】
以上の処理によって、アプリケーションが複数の設定ファイルにアプリケーションが希望する印刷設定を予め設定ファイルに記述しておき、さらに複数の設定値を次候補で指定することで、適切な設定結果（ＤＥＶＭＯＤＥ構造体）を入手することができる。
【０１５７】
またその一方、採用結果で更新された設定ファイルがアプリケーション３−００１に返却されるため、最終的な設定項目の反映結果をアプリケーションが判断することが可能となる。
【０１５８】
本発明においては、アプリケーションに予め設定ファイルを用意しておくことにより、プリンタドライバのバージョンを意識することなく、容易にプリンタドライバの機能も活かした印刷設定での印刷が可能となる。また、アプリケーションには写真印刷用アプリケーションなどの専用用途、目的がある場合があるので、予め設定ファイルを用意する再にもアプリケーションの目的に応じたものを用意することで、さらに適切な印刷設定が容易に施せ得る。さらに、設定ファイルの指定値とプリンタドライバやプリンタなどの環境により、コンフリクト解決処理を行い、または次候補の設定を反映させるので、多種のアプリケーション、ドライバに対しても汎用的に利用できる。
【０１５９】
［他の実施の形態］
以上、様々な実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。例えば、プリンタ、ファクシミリ、ＰＣ、サーバとクライアントとを含むコンピュータシステムなどの如くである。
【０１６０】
本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【０１６１】
従って、本発明の機能・処理をコンピュータで実現するために、情報処理装置にインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【０１６２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０１６３】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１６４】
また、プログラムは、クライアントの情報処理装置のブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【０１６５】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムを情報処理装置にインストールしてもよい。
【０１６６】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【０１６７】
さらに、記録媒体から読み出されたプログラムが、情報処理装置に挿入された機能拡張ボードや情報処理装置に接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【０１６８】
【図１】本発明の第１実施形態を示す印刷制御装置を適用可能な印刷処理システムの構成を説明するブロック図である。
【図２】図１に示したＲＡＭのメモリマップの一例を示す図である。
【図３】本発明に係る印刷処理プログラムの内部処理の内容を説明するシステム概念図である。
【図４】本発明に係る第１実施形態であるプリンタドライバ拡張ＤＤＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１のインタフェースの型を表す図である。
【図５】本発明に係る第２実施形態であるプリンタドライバ拡張ＤＤＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２のインタフェースの型を表す図である。
【図６】本発明に係る第３実施形態であるプリンタドライバ拡張ＤＤＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３のインタフェースの型を表す図である。
【図７】本発明に係る第１実施形態および第２実施形態である設定ファイルフォーマット１を表す図である。
【図８】本発明に係る第３実施形態である設定ファイルフォーマット２を表す図である。
【図９】本発明に係るＤＥＶＭＯＤＥアドレステーブルを表す概念図である。
【図１０】本発明に係るＤＥＶＭＯＤＥ構造体を表す概念図である。
【図１１】本発明に係る設定ファイルの文字列と内部ＩＤ変換テーブルの例を表す図である。
【図１２】本発明に係る設定優先順位データベースの構成例を表す図である。
【図１３】本発明に係るモデル別サポート機能データベースの構成例を表す図である。
【図１４】本発明に係る機能間コンフリクトデータベースの構成例を表す図である。
【図１５】本発明に係る動作環境別不可条件データベースの構成例を表す図である。
【図１６】本発明に係る設定ファイル毎の採用項目データベースの構成例を表す図である。
【図１７】本発明に係る設定項目毎の記述設定値数データベースの構成例を表す図である。
【図１８】本発明に係る第１実施形態であるプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ１のデータ処理の一例を示すフローチャートである。
【図１９】本発明に係る第２実施形態であるプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ２のデータ処理の一例を示すフローチャートである。
【図２０】本発明に係る第３実施形態であるプリンタドライバ拡張ＡＰＩであるＳＤＫ＿ＵｐｄａｔｅＤｅｖＭｏｄｅ３のデータ処理の一例を示すフローチャートである。
【図２１】本発明に係る設定確認処理の一例を示すフローチャートである。
【図２２】本発明に係るＤＥＶＭＯＤＥおよび下位優先順位コンフリクト解決処理の一例を示すフローチャートである。
【図２３】本発明に係るモデル別サポート確認処理の一例を示すフローチャートである。
【図２４】本発明に係る動作環境不可条件確認処理の一例を示すフローチャートである。
【図２５】本発明に係るコンフリクト確認処理の一例を示すフローチャートである。
【図２６】本発明に係るＤＥＶＭＯＤＥ参照処理の一例を示すフローチャートである。
【図２７】本発明に係るＤＥＶＭＯＤＥ更新処理の一例を示すフローチャートである。
【図２８】本発明に係るアプリケーション画面のうち、設定ファイルを指定する画面の構成例を表す図である。
【図２９】本発明に係るアプリケーション画面のうち、ユーザに提供する確認画面の構成例を表す図である。
【符号の説明】
【０１６９】
３−００１  アプリケーション
３−００４  プリンタドライバ
３−００５  ＳＤＫ管理部
３−０１０  ＤＥＶＭＯＤＥ構造体
３−０１１  設定ファイル
３−０１２  設定コンフリクト管理部
【図１】
2008310495.tif 000003
【図２】
2008310495.tif 000004
【図３】
2008310495.tif 000005
【図４】
2008310495.tif 000006
【図５】
2008310495.tif 000007
【図６】
2008310495.tif 000008
【図７】
2008310495.tif 000009
【図８】
2008310495.tif 000010
【図９】
2008310495.tif 000011
【図１０】
2008310495.tif 000012
【図１１】
2008310495.tif 000013
【図１２】
2008310495.tif 000014
【図１３】
2008310495.tif 000015
【図１４】
2008310495.tif 000016
【図１５】
2008310495.tif 000017
【図１６】
2008310495.tif 000018
【図１７】
2008310495.tif 000019
【図１８】
2008310495.tif 000020
【図１９】
2008310495.tif 000021
【図２０】
2008310495.tif 000022
【図２１】
2008310495.tif 000023
【図２２】
2008310495.tif 000024
【図２３】
2008310495.tif 000025
【図２４】
2008310495.tif 000026
【図２５】
2008310495.tif 000027
【図２６】
2008310495.tif 000028
【図２７】
2008310495.tif 000029
【図２８】
2008310495.tif 000030
【図２９】
2008310495.tif 000031