(57)【要約】【課題】アプリケーションプログラムとＶ４プリンタードライバーとの間での印刷設定に関する独自のデータの受け渡しを可能とすること。【解決手段】プログラムは、アプリケーションから、アプリケーションで保持している第一の印刷設定情報と、印刷設定に関する所定の処理の要求と、を含む依頼指示を受信し、受信した第一の印刷設定情報からプリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、オペレーティングシステムによって提供されている情報生成手段に送信する。生成された第二の印刷設定情報に基づいて所定の処理を実行する。【選択図】図６
2019074884.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信するためのプログラムであって、コンピュータによって実行されると、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行するステップと、
前記所定の処理の結果を前記アプリケーションに返信するステップと
を実行することを特徴とするプログラム。
【請求項２】
前記情報生成手段は、
生成した第二の印刷設定情報を、前記情報生成手段で提供されない独自の印刷設定の編集を行う編集手段に送信し、
前記編集手段によって編集された第二の印刷設定情報を、前記生成させる指示に応じて返信することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記所定の処理は、情報を参照する処理を含むことを特徴とする請求項１または２に記載のプログラム。
【請求項４】
受信した前記第二の印刷設定情報から前記プリンタードライバーの印刷能力情報を生成させる指示を、前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記印刷能力情報を受信するステップと、
をさらに実行し、
前記所定の処理を実行するステップは、前記印刷能力情報にさらに基づいて、前記所定の処理を実行することを特徴とする請求項１から３のいずれか一項に記載のプログラム。
【請求項５】
前記情報生成手段は、
生成した印刷能力情報を、前記情報生成手段で提供されない独自の編集を行う編集手段に送信し、
前記編集手段によって編集された印刷能力情報を、前記生成させる指示に応じて返信することを特徴とする請求項４に記載のプログラム。
【請求項６】
前記所定の処理は、情報を設定する処理を含むことを特徴とする請求項４または５に記載のプログラム。
【請求項７】
前記所定の処理によって情報が設定された第二の印刷設定情報の有効化の指示を前記情報生成手段に送信するステップと、
前記指示に応じて有効化された第二の印刷設定情報を受信するステップと、
前記有効化された第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記第一の印刷設定情報を受信するステップと、
前記受信した第一の印刷設定情報を、前記所定の処理の結果とともに前記アプリケーションに送信するステップと、
をさらに実行することを特徴とする請求項６に記載のプログラム。
【請求項８】
前に使用された前記第一の印刷設定情報、前記第二の印刷設定情報、および前記印刷能力情報が保持手段に保持されている場合、前記アプリケーションから受信した前記第一の印刷設定情報と、前記保持されている前記第一の印刷設定情報とが同じかを比較するステップをさらに実行し、
同じである場合、前記所定の処理を実行するステップは、前記保持されている前記第二の印刷設定情報または前記保持されている印刷能力情報のうちの少なくとも一方を用いて前記所定の処理を実行することを特徴とする請求項４から７のいずれか一項に記載のプログラム。
【請求項９】
前記アプリケーションから受信した前記第一の印刷設定情報と、生成された前記第二の印刷設定情報と、生成された前記印刷能力情報とを、前記所定の処理が行われた後に、保持手段に保持させるステップをさらに実行することを特徴とする請求項８に記載のプログラム。
【請求項１０】
オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信するためのプログラムであって、コンピュータによって実行されると、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報からＶ３アーキテクチャのプリンタードライバー内で処理可能なデータ構造体で構成される第三の印刷設定情報を生成するステップと、
前記第三の印刷設定情報を用いて前記所定の処理を実行するステップと、
前記第三の印刷設定情報から第二の印刷設定情報を生成するステップと、
生成した前記第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記第一の印刷設定情報と、前記所定の処理の結果と、を前記アプリケーションに返信するステップと
を実行することを特徴とするプログラム。
【請求項１１】
前に使用された前記第一の印刷設定情報、前記第二の印刷設定情報、および前記第三の印刷設定情報が保持手段に保持されている場合、前記アプリケーションから受信した前記第一の印刷設定情報と、前記保持されている前記第一の印刷設定情報とが同じかを比較するステップをさらに実行し、
同じである場合、前記所定の処理を実行するステップは、前記保持されている前記第三の印刷設定情報を用いて前記所定の処理を実行することを特徴とする請求項１０に記載のプログラム。
【請求項１２】
前記第三の印刷設定情報は、Ｖ３アーキテクチャで用いられるＤＥＶＭＯＤＥ構造のデータであることを特徴とする請求項１０または１１に記載のプログラム。
【請求項１３】
前記第一の印刷設定情報は、Ｖ４アーキテクチャで用いられるＤＥＶＭＯＤＥ構造のデータであることを特徴とする請求項１から１２のいずれか一項に記載のプログラム。
【請求項１４】
前記第二の印刷設定情報は、ＰｒｉｎｔＴｉｃｋｅｔのデータであることを特徴とする請求項１から１３のいずれか一項に記載のプログラム。
【請求項１５】
前記Ｖ４アーキテクチャのプリンタードライバーは、ＥｘｔＥｓｃａｐｅ関数を使用する機能を有していないことを特徴とする請求項１から１４のいずれか一項に記載のプログラム。
【請求項１６】
オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する方法であって、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行するステップと、
前記所定の処理の結果を前記アプリケーションに返信するステップと
を含むことを特徴とする方法。
【請求項１７】
オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する方法であって、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、
前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、
受信した前記第二の印刷設定情報からＶ３アーキテクチャのプリンタードライバー内で処理可能なデータ構造体で構成される第三の印刷設定情報を生成するステップと、
前記第三の印刷設定情報を用いて前記所定の処理を実行するステップと、
前記第三の印刷設定情報から第二の印刷設定情報を生成するステップと、
生成した前記第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信するステップと、
前記指示に応じて生成された前記第一の印刷設定情報と、前記所定の処理の結果と、を前記アプリケーションに返信するステップと
を実行することを特徴とするプログラム。
【請求項１８】
オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する情報処理装置であって、
前記アプリケーションからの印刷設定に関する要求に応じて処理を行う、前記Ｖ４アーキテクチャのプリンタードライバーに含まれる処理手段を備え、
前記処理手段は、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信し、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信し、
前記指示に応じて生成された前記第二の印刷設定情報を受信し、
受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行し、
前記所定の処理の結果を前記アプリケーションに返信する
ことを特徴とする情報処理装置。
【請求項１９】
オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信する情報処理装置であって、
前記アプリケーションからの印刷設定に関する要求に応じて処理を行う、前記Ｖ４アーキテクチャのプリンタードライバーに含まれる処理手段を備え、
前記処理手段は、
前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信し、
受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信し、
前記指示に応じて生成された前記第二の印刷設定情報を受信し、
受信した前記第二の印刷設定情報からＶ３アーキテクチャのプリンタードライバー内で処理可能なデータ構造体で構成される第三の印刷設定情報を生成し、
前記第三の印刷設定情報を用いて前記所定の処理を実行し、
前記第三の印刷設定情報から第二の印刷設定情報を生成し、
生成した前記第二の印刷設定情報から第一の印刷設定情報を生成させる指示を前記情報生成手段に送信し、
前記指示に応じて生成された前記第一の印刷設定情報と、前記所定の処理の結果と、を前記アプリケーションに返信する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムとプリンタードライバーとの間で印刷設定に関するデータの通信を行う技術に関する。
【背景技術】
【０００２】
一般的に、アプリケーションプログラムにおいて印刷を実行する場合、プリンタードライバーによって提供されている印刷設定画面を通じて各種の印刷設定の参照や変更が行われる。一方、アプリケーションプログラムの中には、プリンタードライバーによって提供されている印刷設定画面を用いずに、アプリケーションプログラム独自で印刷設定を参照したり変更したりするものがある。例えば、はがきを印刷するアプリケーションプログラムを想定する。仮に、プリンタードライバーによって提供される印刷設定画面を用いると、ユーザが、用紙サイズとして例えば「はがき」ではなく、「Ａ４サイズ」を選択することが可能となってしまう。この結果、ユーザが混乱してしまったり、意図しない印刷が行われたりしてしまうことがある。そこで、はがきを印刷するアプリケーションプログラムでは、使用する用紙サイズおよび用紙種別は、「はがき」に関するものに限定することが好ましい。
【０００３】
このような独自の印刷設定を行うためには、アプリケーションプログラムは、一般的にオペレーティングシステム（以下ＯＳと略す）が提供するＡＰＩ（Application Programming Interface）を利用する。アプリケーションプログラムは、ＡＰＩを介して、プリンターの印刷に関する様々な情報を取得（参照）したり、変更したりする。Ｗｉｎｄｏｗｓ（登録商標）においては、アプリケーションプログラムは、ＥｘｔＥｓｃａｐｅ関数という、ＯＳが提供するＡＰＩを利用して、プリンターの印刷に関する情報を取得したり変更したりする。ＥｘｔＥｓｃａｐｅ関数は、アプリケーションプログラムとプリンタードライバーとの間で、独自の印刷設定を行うためなどの独自のデータを受け渡すために使用される。
【０００４】
また、Ｗｉｎｄｏｗｓ（登録商標）で動作するプリンタードライバーには、Ｖ３ＧＤＩプリンタードライバーおよびＶ３ＸＰＳプリンタードライバーといったＶ３アーキテクチャの二種のプリンタードライバーがある。
【０００５】
特許文献１には、様々なＯＳ環境やプリンタードライバーに対して、ＥｘｔＥｓｃａｐｅ関数を使用してアプリケーションプログラムとプリンタードライバーとの間で印刷設定に関するデータを受け渡す技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１４０２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、近年ではＷｉｎｄｏｗｓ（登録商標）において、Ｖ４プリンタードライバーと呼ばれる新しいアーキテクチャで動作するプリンタードライバーが導入されている。このＶ４プリンタードライバーでは、従来のＶ３ＧＤＩプリンタードライバーおよびＶ３ＸＰＳプリンタードライバーで使用していたＥｘｔＥｓｃａｐｅ関数が使用できない。このため、Ｖ４プリンタードライバーのように、ＥｘｔＥｓｃａｐｅ関数が使用できないプリンタードライバーの場合、アプリケーションプログラムとプリンタードライバーとの間で独自の印刷設定に関するデータを受け渡すことができないという課題がある。
【０００８】
本発明は、かかる課題に鑑みてなされたものであり、アプリケーションプログラムとプリンタードライバーとの間での独自の印刷設定に関するデータの受け渡しを可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様にかかるプログラムは、オペレーティングシステム上で動作するアプリケーションと、Ｖ４アーキテクチャのプリンタードライバーとの間の印刷設定に関するデータを通信するためのプログラムであって、コンピュータによって実行されると、前記アプリケーションから、前記アプリケーションで保持している第一の印刷設定情報と、前記印刷設定に関する所定の処理の要求と、を含む依頼指示を受信するステップと、受信した前記第一の印刷設定情報から前記プリンタードライバー内で処理可能なデータ構造体で構成される第二の印刷設定情報を生成させる指示を、前記オペレーティングシステムによって提供されている情報生成手段に送信するステップと、前記指示に応じて生成された前記第二の印刷設定情報を受信するステップと、受信した前記第二の印刷設定情報に基づいて前記所定の処理を実行するステップと、前記所定の処理の結果を前記アプリケーションに返信するステップとを実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、アプリケーションプログラムとプリンタードライバーとの間での独自の印刷設定に関するデータの受け渡しが可能となる。
【図面の簡単な説明】
【００１１】
【図１】システム構成例を示すブロック図。
【図２】Ｖ３ＧＤＩプリンタードライバーの構成を示すブロック図。
【図３】Ｖ３ＸＰＳプリンタードライバーの構成を示すブロック図。
【図４】Ｖ３プリンタードライバーとの間で独自のデータを受け渡すシステム構成図。
【図５】Ｖ４プリンタードライバーの印刷システムのブロック構成図。
【図６】Ｖ４プリンタードライバーとの間で独自のデータを受け渡すシステム構成図。
【図７】情報の参照処理のシーケンス図の一例。
【図８】情報の設定処理のシーケンス図の一例。
【図９】高速化を施したシステム処理の一例。
【図１０】情報の参照処理のシーケンス図の一例。
【図１１】情報の設定処理のシーケンス図の一例。
【図１２】高速化を施したシステム処理の一例。
【図１３】Ｖ４プリンタードライバーとの間で独自のデータを受け渡すシステム構成図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
【００１３】
＜＜実施形態１＞＞
＜システム構成例＞
図１は、本実施形態におけるシステム構成例を示す図である。情報処理装置であるホストコンピュータ１００には、インクジェットプリンターなどのプリンター１０４が接続されている。
【００１４】
ホストコンピュータ１００は、ワードプロセッサ、表計算、インターネットブラウザ、はがき印刷アプリなどのアプリケーションプログラム１０１を有する。アプリケーションプログラム１０１は、オペレーティングシステム上で動作するソフトウェアである。印刷を行う場合、アプリケーションプログラム１０１によって発行される出力画像を示す各種描画処理命令群は、オペレーティングシステム(ＯＳ)１０２を介して、プリンタードライバー１０３へ入力される。描画命令群は、例えばイメージ描画命令、テキスト描画命令およびグラフィクス描画命令で構成される。プリンタードライバー１０３は、それら描画命令群を処理して印刷データを生成し、プリンター１０４に印刷させるソフトウェアである。
【００１５】
ホストコンピュータ１００上で、上記のソフトウェアは、ＨＤＤ１０５、またはＲＯＭ１０８に記憶されており、ＲＡＭ１０７に読み出されて、ＣＰＵ１０６によって実行される。なお、本実施形態では、図１に示すホストコンピュータ１００として、一般に普及しているパーソナルコンピュータを使用し、ＯＳ１０２としてＷｉｎｄｏｗｓ（登録商標）を使用することを想定する。そして、そのようなパーソナルコンピュータに、印刷機能を有する任意のアプリケーションプログラム１０１をインストールし、プリンター１０４を接続した形態を想定する。
【００１６】
ホストコンピュータ１００では、アプリケーションプログラム１０１により、出力画像データが生成される。出力画像データは、文字などのテキストに分類されるテキストデータ、図形などのグラフィクスに分類されるグラフィクスデータ、および写真画像などに分類されるイメージ画像データなどを含む。出力画像データに基づく画像を印刷する場合、アプリケーションプログラム１０１は、ＯＳ１０２に印刷出力要求を行い、描画命令群をＯＳ１０２に発行する。描画命令群において、テキストデータ部分はテキスト描画命令、グラフィクスデータ部分はグラフィクス描画命令、イメージ画像データ部分はイメージ描画命令で構成される。
【００１７】
ＯＳ１０２は、アプリケーションプログラム１０１から印刷出力要求を受けると、その印刷出力要求をアプリケーションプログラム１０１から受け取った描画命令群とともにプリンタードライバー１０３に渡す。プリンタードライバー１０３は、ＯＳ１０２から渡される印刷出力要求および描画命令群を処理して、プリンター１０４が印刷処理可能な印刷データを生成し、その印刷データをプリンター１０４に送る。すなわち、ホストコンピュータ１００からプリンター１０４に印刷データが送信される。ホストコンピュータ１００とプリンター１０４とは、例えばＵＳＢ（Universal Serial Bus）のような双方向通信が可能なインターフェースにより接続される。
【００１８】
＜Ｖ３プリンタードライバーの構成＞
図２および図３は、Ｖ３プリンタードライバーを用いる場合の印刷システムのソフトウェア（主にプリンタードライバー）の構成を示すブロック図である。理解を容易にするために、まず、Ｖ３プリンタードライバーについての説明を行い、その後、Ｖ４プリンタードライバーについての説明を行う。
【００１９】
図２は、Ｖ３のＧＤＩプリンタードライバー（以下、「Ｖ３ＧＤＩプリンタードライバー」という）の構成を含む図である。図３は、Ｖ３のＸＰＳプリンタードライバー（以下、「Ｖ３ＸＰＳプリンタードライバー」という）の構成を含む図である。
【００２０】
まず、図２に示すＶ３ＧＤＩプリンタードライバーの構成について説明する。プリンタードライバー１０３は、ユーザーインターフェースモジュール２０３、プリントプロセッサ２０５、レンダリングモジュール２０６、ランゲージモニタ２０７、およびステータスモニタ２０８を備えている。
【００２１】
アプリケーションプログラム１０１は、ＯＳの印刷サービス２０２を介してユーザーインターフェースモジュール２０３を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。
【００２２】
アプリケーションプログラム１０１は、文書を作成し、その文書を印刷するためにユーザーインターフェースモジュール２０３にプリンタシステムの機能を問い合わせる。その後、アプリケーションプログラム１０１は、ＯＳの印刷サービス２０２を含む印刷システムに印刷開始を通知する。ＯＳの印刷サービス２０２は、アプリケーションプログラム１０１から印刷開始の通知を受けると、プリンタードライバー１０３のユーザーインターフェースモジュール２０３に、アプリケーションプログラム１０１による印刷開始の印刷イベントを通知する。アプリケーションプログラム１０１は、印刷対象の文書の印刷データをＯＳの印刷サービス２０２に供給し印刷処理を続行する。ＯＳの印刷サービス２０２を経由した印刷データは、スプールファイル２０４に格納される。
【００２３】
プリンタードライバー１０３のプリントプロセッサ２０５は、ＯＳ１０２のスプールファイル２０４から印刷データを読み出す。読み出された印刷データは、レンダリングモジュール２０６を介した後、ランゲージモニタ２０７に送られる。ランゲージモニタ２０７は、プリンター１０４と双方向通信を行いながら、印刷データをプリンター１０４へと送信する。ランゲージモニタ２０７は、随時、プリンター１０４が保持しているステータスの情報を受信する。また、ランゲージモニタ２０７は、印刷データおよびプリンター１０４から受信した情報を元に、現在のプリンターや印刷の状況をステータスモニタ２０８に伝える。ステータスモニタ２０８は、プリンターや印刷の状況を表示するのみでなく、何らかの理由により印刷が中断されている場合は、対処選択肢をユーザに提示し、それに対するユーザからのレスポンス入力を受け取り、ランゲージモニタ２０７に伝達する。
【００２４】
次に、図３に示すＶ３ＸＰＳプリンタードライバーの構成について説明する。プリンタードライバー１０３は、ユーザーインターフェースモジュール２０３、フィルターパイプライン２１４、ランゲージモニタ２０７、およびステータスモニタ２０８を備える。フィルターパイプライン２１４は、レイアウトフィルター２１５およびレンダーフィルター２１６を含む。
【００２５】
Ｖ３ＸＰＳプリンタードライバーにおいても、アプリケーションプログラム１０１は、ＯＳの印刷サービス２０２を介してユーザーインターフェースモジュール２０３を呼び出すことで、印刷に関する各種設定をユーザに行わせることができる。アプリケーションプログラム１０１においてユーザ操作により印刷指示が入力されると、その指示内容はアプリケーションプログラム１０１からＯＳの印刷サービス２０２に送られる。具体的には、ＯＳの印刷サービス２０２において、仮想化された印刷領域であるＤＣ（Device Context）が作成され、アプリケーションプログラム１０１へ供給される。アプリケーションプログラム１０１は、文書データの描画処理をＤＣに対して行う。描画内容はＭＸＤＣ（Microsoft XPS Document Converter）２１１によりＸＰＳ形式に変換され、その結果、ＸＰＳ形式の印刷データが生成される。ＸＰＳ形式の印刷データは、ＯＳの印刷サービス２０２によって、印刷ジョブ毎にスプールファイル２１２として一時的に記憶装置にスプールされる。なお、ＸＰＳ形式の電子文書を作成することができるアプリケーションプログラムの場合は、ＭＸＤＣ２１１による変換処理を行わずに、ＸＰＳ形式の印刷データをスプールすることも可能である。
【００２６】
スプールファイル２１２に格納されたデータは、ＯＳの印刷パイプラインサービス２１３により呼び出されたフィルターパイプライン２１４に供給される。フィルターパイプライン２１４は、Ｖ３ＸＰＳプリンタードライバーのパイプライン構成ファイル（不図示）に記述されている任意の数のフィルターによって構成される。プリンター１０４が解釈可能な印刷コマンドがＸＰＳ形式では無い場合、少なくとも、スプールされたＸＰＳ形式のデータを印刷コマンドに変換する為のフィルターが必要となる。図３では、フィルターパイプライン２１４は、レイアウトフィルター２１５とレンダーフィルター２１６とを含む構成である。レイアウトフィルター２１５は、スプールファイルからＸＰＳ形式の印刷データを取得し、印刷設定に基づき必要に応じ印刷データを編集し出力する。すなわち、レイアウトフィルター２１５は、スプールファイル２１２に格納されたＸＰＳドキュメントを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのＸＰＳデータを出力する機能を有する。レイアウト処理とは、例えば複数のページを一つの用紙面に印刷する割り付け印刷や、一つのページを複数の用紙面に印刷するポスター印刷を含む。レイアウトフィルター２１５は、印刷データを加工する必要が無い場合は、取得した印刷データをそのまま出力する。
【００２７】
レイアウトフィルター２１５の出力は、レンダーフィルター２１６に供給される。レンダーフィルター２１６は、供給されたＸＰＳ形式の印刷データの各ページのレンダリング処理を行い、必要な画像処理を行ったうえで、印刷コマンドに変換して出力する。レンダーフィルター２１６が出力した印刷コマンドは、ランゲージモニタ２０７に送られる。ランゲージモニタ２０７は、プリンター１０４と双方向通信を行いながら、印刷データをプリンター１０４へと送信する。そして、プリンター１０４が印刷動作を実行する。
【００２８】
＜ＥｘｔＥｓｃａｐｅ関数の説明＞
次に、ＥｘｔＥｓｃａｐｅ関数を使用して、アプリケーションプログラム１０１と、Ｖ３ＧＤＩプリンタードライバーまたはＶ３ＸＰＳプリンタードライバーとの間で印刷設定に関する独自のデータを受け渡す方法（データ通信方法）を説明する。利用場面としては、例えば、アプリケーションプログラム１０１が、はがきアプリの場合が挙げられる。このアプリケーションプログラム１０１は、プリンター１０４のメディア情報をプリンタードライバー１０３から取得し、取得したメディア情報を用いてアプリケーションプログラム１０１の独自の印刷設定画面を表示する。アプリケーションプログラム１０１が、このような独自のデータを取得する理由は、前述したように、アプリケーションプログラム１０１の固有の印刷設定などを行うためである。つまり、プリンタードライバーで提供される印刷設定画面を表示させずに、アプリケーションプログラム１０１の独自の印刷設定画面を表示するためである。なお、アプリケーションプログラム１０１は、独自のデータとして、メディア情報を取得し、取得したメディア情報の中から所望のメディア（例えば、「はがき」）のみを有効とした印刷設定画面を提供してもよい。あるいは、アプリケーションプログラム１０１は、プリンタードライバー１０３に独自のデータを要求する際に、「はがき」のみのメディア情報を要求してもよい。このような印刷設定に関する独自のデータの受け渡しは、Ｖ３プリンタードライバーでは、ＥｘｔＥｓｃａｐｅ関数を使用して行われている。
【００２９】
図４は、アプリケーションプログラム１０１とＶ３ＧＤＩプリンタードライバーまたはＶ３ＸＰＳプリンタードライバーとの間で独自のデータを受け渡すことを可能にするシステム構成を示す図である。プリンターベンダーは、プリンタードライバー１０３の一部としてサポートモジュール４０１を用意している。サポートモジュール４０１は、アプリケーションベンダーが独自のデータの受け渡しをプリンタードライバー１０３との間で可能とするためのモジュールである。
【００３０】
図４を用いてデータの受け渡しを説明する。まず、アプリケーションプログラム１０１は、プリンターベンダーが用意したサポートモジュール４０１を呼び出す(Ｓ４０１)。サポートモジュール４０１は、アプリケーションプログラム１０１の代わりにＥｘｔＥｓｃａｐｅ関数を呼び出す処理を行う。またサポートモジュール４０１は、ＥｘｔＥｓｃａｐｅ関数で呼び出されたユーザーインターフェースモジュール２０３の処理の終了を監視する。サポートモジュール４０１は、直接ユーザーインターフェースモジュール２０３とデータの受け渡しをするのではなく、ＯＳを介して（ＯＳの仕組みを利用して）、ユーザーインターフェースモジュール２０３とデータの受け渡しを行うことになる。
【００３１】
アプリケーションプログラム１０１は、サポートモジュール４０１を呼び出す際には、プリンターベンダー独自のＥｓｃａｐｅコードを引数として渡す。Ｅｓｃａｐｅコードは、予めアプリケーションベンダーに提供され、アプリケーションプログラム１０１に組み込まれている。Ｅｓｃａｐｅコードは、サポートモジュール４０１が、例えばプリンタードライバーのサポート機能に関する情報を得る為や印刷を実行する機能を呼ぶ出す為に用いられる。また、アプリケーションプログラム１０１は、ベンダー独自のＥｓｃａｐｅコードに応じた処理(Ｅｓｃａｐｅ処理)を行うのに必要な情報をサポートモジュール４０１に渡す。必要な情報とは、例えば、プリンタードライバーのサポートメディア情報が欲しいと言った具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報である。印刷設定情報は、ＤＥＶＭＯＤＥと呼ばれるデータ構造体に従って記述されている。以下、Ｖ３のプリンタードライバーを用いる場合の印刷設定情報を、Ｖ３ＤＥＶＭＯＤＥという。このように、アプリケーションプログラム１０１は、サポートモジュール４０１を呼び出し、Ｅｓｃａｐｅコード、具体的な指示情報、およびＶ３ＤＥＶＭＯＤＥを引数として渡す。
【００３２】
次に、呼び出されたサポートモジュール４０１は、ＥｘｔＥｓｃａｐｅ関数呼び出しを行う(Ｓ４０２)。その際、サポートモジュール４０１は、アプリケーションプログラム１０１から渡されている、Ｅｓｃａｐｅコード、具体的な指示情報、およびＶ３ＤＥＶＭＯＤＥを渡す。サポートモジュール４０１がＥｘｔＥｓｃａｐｅ関数を呼び出すと、プリンタードライバーのユーザーインターフェースモジュール２０３のＤｒｖＤｏｃｕｍｅｎｔＥｖｅｎｔ関数が、ＯＳを介して呼び出される。ＤｒｖＤｏｃｕｍｅｎｔＥｖｅｎｔ関数は、サポートモジュール４０１がＥｘｔＥｓｃａｐｅ関数を呼び出した時の引数を参照することができる。
【００３３】
ユーザーインターフェースモジュール２０３は、ベンダー独自のＥｓｃａｐｅコードおよび引数で渡された情報に応じて処理を行う（Ｓ４０３）。今回のケースでは、ユーザーインターフェースモジュール２０３は、引数として渡された具体的な指示情報に基づいた処理を行う。具体的な指示情報は、例えば現在印刷設定で設定されているメディアの情報を取得する指示や、プリンタードライバーがサポートしているサイズ一覧を取得する指示などのように、情報を参照する指示がある。あるいは、印刷設定を変更する指示もある。
【００３４】
具体的な例を説明する。具体的な指示情報が、「現在印刷設定で設定されているメディアの情報を取得する」指示だった場合は、ユーザーインターフェースモジュール２０３は、引数として渡されたＶ３ＤＥＶＭＯＤＥから、現在設定されているメディア情報を取得する。なお、ユーザーインターフェースモジュール２０３が、アプリケーションプログラム１０１から渡された印刷設定情報（Ｖ３ＤＥＶＭＯＤＥ）から、現在の印刷設定の情報を取得する理由として、次の２点が挙げられる。
【００３５】
１点目は、アプリケーションプログラム１０１とプリンタードライバー１０３とで、保持しているＶ３ＤＥＶＭＯＤＥが異なる場合があるからである。例えば、アプリケーションプログラム１０１上で、用紙サイズをＡ４からＬ判に変更したが、アプリケーションプログラム１０１からプリンタードライバー１０３にその変更を伝えていない場合がある。この状態で、仮にプリンタードライバーで保持しているＶ３ＤＥＶＭＯＤＥを用いてしまうと、用紙サイズが「Ａ４」であるＶ３ＤＥＶＭＯＤＥが返信されてしまうことになる。このため、ユーザーインターフェースモジュール２０３は、引数として渡されたＶ３ＤＥＶＭＯＤＥから、現在設定されているメディア情報を取得する。
【００３６】
２点目は、アプリケーションプログラム１０１は、Ｖ３ＤＥＶＭＯＤＥのうちの一部の内容を知ることができないからである。Ｖ３ＤＥＶＭＯＤＥには、ＯＳ標準の印刷設定情報部分と、プリンターベンダー独自で定義する印刷情報設定部分とがある。このうち、プリンターベンダー独自で定義する印刷情報設定部分については、アプリケーションプログラム１０１単体では、その情報の内部を知ることができない。このため、Ｖ３ＤＥＶＭＯＤをプリンタードライバー１０３に送り、プリンタードライバー１０３のユーザーインターフェースモジュール２０３に情報を取得させる処理が行われている。
【００３７】
具体的な指示が、プリンタードライバーがサポートしているサイズの一覧を取得する指示だった場合は、ユーザーインターフェースモジュール２０３は、プリンタードライバーのサポート情報を保持しているデータベースからサポートサイズ一覧を取得する。
【００３８】
また、具体的な指示が、印刷設定のメディア情報を写真紙に設定する指示だった場合は、ユーザーインターフェースモジュール２０３は、Ｖ３ＤＥＶＭＯＤＥのメディア情報に写真紙を設定する。そして、ユーザーインターフェースモジュール２０３は、設定に不整合がないかをチェックし不整合がある場合は適切な設定に変更するＶａｌｉｄａｔｅ処理（有効化処理）を行う。
【００３９】
ユーザーインターフェースモジュール２０３は、以上のようなＥｓｃａｐｅ処理を行った後、必要に応じて返信データを生成し、ＯＳを介して処理結果や返信データをサポートモジュール４０１に返信する(Ｓ４０４)。そして、サポートモジュール４０１は、アプリケーションプログラム１０１に処理結果や返信データを返信する（Ｓ４０５）。以上が、ＥｘｔＥｓｃａｐｅ関数を使用して、アプリケーションプログラムとＶ３ＧＤＩプリンタードライバーまたはＶ３ＸＰＳプリンタードライバーとの間で独自のデータを受け渡す処理の基本である。
【００４０】
しかし、Ｖ４プリンタードライバーでは、仕様が変更されたことにより、ＥｘｔＥｓｃａｐｅ関数が使用できなくなっている。つまり、Ｖ４プリンタードライバーは、ＥｘｔＥｓｃａｐｅ関数を使用する機能を備えていない。このため、上記で説明した処理を使用することができない。以下では、Ｖ４プリンタードライバーのアーキテクチャにおいて、アプリケーションプログラム１０１とＶ４プリンタードライバーとの間で独自のデータの受け渡しを行う形態を説明する。
【００４１】
＜Ｖ４プリンタードライバーの構成＞
まず、Ｖ４プリンタードライバーの印刷システムの構成について説明する。図５は、Ｖ４プリンタードライバーの印刷システムのブロック構成図である。より具体的には、Ｖ４プリンタードライバーをホストコンピュータ１００がインストールした後の、Ｖ４プリンタードライバーの印刷システムのブロック構成図である。
【００４２】
Ｖ４プリンタードライバーを用いた印刷システムは、ＸＰＳファイルフォーマットをスプールデータとして使用し、印刷を行う。プリンタードライバー５０３は、コンフィグレーションモジュール５１９、印刷設定定義ファイル５１３、フィルタパイプラインマネージャー５２１、およびフィルタコンフィグレーションファイル５２７を備える。
【００４３】
なお、図５においてコンフィグレーションモジュール５１９およびフィルタパイプラインマネージャー５２１は、プリンタードライバー５０３の構成に含まれている図を示している。しかし、これらは、ホストコンピュータ１００のＯＳから提供されているプリンタードライバー５０３のモジュールであり、ベンダー独自のモジュールではない。従って、プリンタードライバーをインストールする際のパッケージには、これらのモジュールは含まれていない。プリンタードライバー５０３をインストールすると、これらのモジュールがＯＳから提供され、プリンタードライバー５０３の構成に含まれることになる。つまり、Ｖ４プリンタードライバーにおいては、ドライバー自体がコンフィグレーションモジュールを備えていないため、ＯＳの構成物であるコンフィグレーションモジュール５１９をドライバーのコンフィグレーションモジュールとして利用する。
【００４４】
コンフィグレーションモジュール５１９は、印刷設定定義ファイル５１３に基づき、ＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成を行う。ＰｒｉｎｔＴｉｃｋｅｔは、ＤＥＶＭＯＤＥとは異なるデータ構造体で定義されているデータであり、ＤＥＶＭＯＤＥと同様に印刷設定を保持している。例えば、現在のメディアの設定が、写真紙であり、現在の用紙サイズの設定がＬ判である、といった設定情報を保持している。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、プリンタードライバー５０３（プリンター１０４）の印刷能力情報を保持しているデータ構造体である。例えば、プリンタードライバー５０３で使用できるメディアは、普通紙、写真用紙、およびはがきであり、用紙サイズは、Ａ４、Ｌｅｔｔｅｒ、Ｌ判、およびはがきである、といった設定情報（利用可能一覧情報）を保持している。
【００４５】
印刷設定定義ファイル５１３は、ＧＰＤ（Generic Printer Description）と呼ばれるテキストベースで記載されているファイルである。さらに、印刷設定定義ファイル５１３には「禁則」の定義を記載することができる。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）が定義した記述法に基づき、ＩｎｖａｌｉｄＣｏｍｂｉｎａｔｉｏｎの項目に、同時に設定できない印刷設定の設定値を記載することで、ユーザに対して禁則機能を提供することができる。
【００４６】
また、コンフィグレーションモジュール５１９は、プリンタードライバー５０３（つまり、プリンターベンダー）が提供する印刷設定編集モジュール５１１を用いて印刷設定情報を編集することができる。印刷設定編集モジュール５１１は、ＣｏｎｓｔｒａｉｎｔＳｃｒｉｐｔと呼ばれる、ＪａｖａＳｃｒｉｐｔ（登録商標）言語で記載されたモジュールである。コンフィグレーションモジュール５１９では、ＯＳ標準の印刷設定情報部分のみが生成され、例えばスタンプ機能や色補正機能といったＯＳ標準で定義されていない機能に関する印刷設定情報は生成することができない。このようなＯＳ標準で定義されていない機能に関する印刷設定情報については、ベンダー独自で提供できる印刷設定編集モジュール５１１を用意することで、生成が可能である。印刷設定編集モジュール５１１は、プロパティバッグ５１７から、ＯＳ標準で定義されていない機能に関する印刷設定情報を生成するために必要な情報を取得し、印刷設定情報を生成する。
【００４７】
プロパティバッグ５１７に格納されるデータは、プリンタードライバー５０３によって提供される。プロパティバッグ５１７とは、プリンターの機種依存情報として用いるためのＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群と、プリントキューに関連づけられたＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇと呼ばれるデータ群が保持された領域を指す。ＤｒｉｖｅｒＰｒｏｐｅｒｔｙＢａｇは、以降、ＤＰＢといい、ＱｕｅｕｅＰｒｏｐｅｒｔｙＢａｇは、以降、ＱＰＢという。ＤＰＢとＱＰＢは、ともにＯＳによって提供されている保存領域である。ＤＰＢは、ドライバパッケージ内に存在するプリンターの機種依存データであり、プリンタードライバー５０３のインストール後にＯＳ内の特定の領域に読取専用としてデータ群が保持される。ＱＰＢは、Ｋｅｙ−ＶａｌｕｅペアのＸＭＬ定義ファイルをＯＳに登録することで使用することが可能であり、Ｖａｌｕｅに関して一定の権限上で編集が可能である。また、印刷設定定義ファイル５１３であるＧＰＤにもＱＰＢの定義を記載することができる。プロパティバッグ５１７は、プリンターエクステンション５１５や印刷コマンドフィルター５２５においても参照可能である。
【００４８】
プリンターエクステンション５１５は、Ｖ４プリンタードライバーにおいて、ユーザが印刷設定を行うためのベンダー独自のユーザインタフェースを提供するアプリケーションである。図５では、説明の便宜上、分けて記載しているが、プリンターエクステンション５１５は、アプリケーションプログラム１０１と同様に、アプリケーションの一種である。つまり、プリンターエクステンション５１５は、プリンタードライバー５０３の構成ではない。このため、後述するように、アプリケーションプログラム１０１とプリンタードライバー５０３との間で独自のデータの受け渡しを行う場合に、プリンターエクステンション５１５を利用することができない。プリンターエクステンション５１５は、印刷に用いる用紙サイズや印刷方向、その他の属性を設定する機能を提供する。
【００４９】
図５における印刷システムにおいて、アプリケーションプログラム１０１が印刷を行う場合、まず印刷設定情報の生成を行う。一般的に、アプリケーションプログラム１０１は、プリンタードライバー５０３のコンフィグレーションモジュール５１９を呼び出す。コンフィグレーションモジュール５１９は、印刷設定情報を生成し、アプリケーションプログラム１０１に印刷設定情報を送る。アプリケーションプログラム１０１は、生成された印刷設定情報を格納する。また、アプリケーションプログラム１０１は、印刷設定情報の生成にプリンターエクステンション５１５を用いることができる。なお、プリンターエクステンション５１５は、アプリケーションプログラム１０１の独自の印刷設定を提供するものではなく、一般的にプリンター１０４の利用可能な印刷設定を提供する。このため、例えば、用紙サイズを特定の用紙サイズ（例えば、はがき）に制限した印刷設定を提供するといったような用途に用いることはできない。つまり、プリンターエクステンション５１５は、アプリケーションプログラム１０１との間で独自のデータの受け渡しを行う用途に用いることはできない。
【００５０】
アプリケーションプログラム１０１は、一般的に、ＤＥＶＭＯＤＥ構造体の形式で印刷設定情報を保持している。従って、プリンタードライバー５０３との印刷設定情報の伝達は、ＤＥＶＭＯＤＥ構造体を用いて行われる。一方、一般的に、Ｖ４のプリンタードライバー５０３内での印刷設定情報の伝達は、ＰｒｉｎｔＴｉｃｋｅｔ構造体を用いて行われる。
【００５１】
印刷設定情報が生成されると、次に、アプリケーションプログラム１０１は、印刷データの生成を行う。作成した文書の各ページの印刷データは、ＯＳの印刷サポート機能を通じてＸＰＳスプールファイル２１２に一時的に蓄えられる。ＸＰＳスプールファイル２１２が生成されると、フィルタパイプラインマネージャー５２１に処理が渡される。フィルタパイプラインマネージャー５２１は、複数のフィルターを通すことで印刷が行われる仕組みで、フィルタコンフィグレーションファイル５２７でフィルターの数や順番が制御される。本実施形態におけるフィルター群は、レイアウト処理部であるレイアウトフィルター５２３と、印刷コマンド変換部である印刷コマンドフィルター５２５とを含んで構成される。
【００５２】
レイアウトフィルター５２３は、ＸＰＳスプールファイル２１２に格納されたＸＰＳドキュメントを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのＸＰＳデータを出力する機能を有する。レイアウトフィルター５２３は、ＯＳを介して印刷設定情報を受信する。
【００５３】
印刷コマンドフィルター５２５は、レイアウトフィルター５２３の出力を入力とし、印刷設定情報に従い、ＸＰＳドキュメントをプリンター１０４が解釈可能な印刷コマンドに変換し出力する機能を有する。印刷コマンドフィルター５２５が、入力のＸＰＳドキュメントを一度イメージデータに変換する場合、印刷コマンドフィルター５２５は一般的にレンダーフィルターと呼ばれる。レンダーフィルターは、インクジェットプリンターに代表される廉価なラスタプリンター用のプリンタードライバーにおいて多く見られる。印刷コマンドフィルター５２５がレンダーフィルターとして動作する場合は、入力のＸＰＳドキュメントを一度イメージデータに変換する。その後、色空間の変換や二値化等の画像処理の過程を経て、ラスタプリンターが解釈可能な印刷コマンドに変換される。ページプリンターに代表される高機能なプリンターにおいて、プリンターが解釈できる印刷コマンドの種類にＸＰＳが含まれる場合、印刷コマンドフィルター５２５は、入力のＸＰＳドキュメントを編集してＸＰＳドキュメントを出力する。印刷コマンドフィルター５２５にて処理する必要がなければ、入力のＸＰＳドキュメントをそのまま出力してもよいし、印刷コマンドフィルター５２５はプリンタードライバー５０３に含められなくてもよい。
【００５４】
以上が、Ｖ４プリンタードライバーの印刷システムの構成である。以上説明したように、Ｖ３ＧＤＩプリンタードライバーおよびＶ３ＸＰＳプリンタードライバーでＥｓｃａｐｅ処理の役割を担っていたユーザーインターフェースモジュール２０３が、Ｖ４プリンタードライバーの印刷システムの構成では存在しない。ユーザーインターフェースモジュール２０３の代わりを担うモジュールは、Ｖ４プリンタードライバーのアーキテクチャでは、プリンターエクステンション５１５およびコンフィグレーションモジュール５１９が相当する。しかしながら、プリンターエクステンション５１５は、上述したようにプリンタードライバー５０３の構成ではない。また、コンフィグレーションモジュール５１９はＥｘｔＥｓｃａｐｅ関数をサポートしていない。そのため、Ｖ３ＧＤＩプリンタードライバーおよびＶ３ＸＰＳプリンタードライバーとアプリケーションプログラムとの間で独自のデータを受け渡す場合、前述したようなＥｘｔＥｓｃａｐｅ関数を使用する処理では実現できない。以下では、Ｖ４プリンタードライバーでもアプリケーションプログラムとの間で独自のデータを受け渡すことが可能な形態を説明する。
【００５５】
＜Ｖ４アーキテクチャでの独自のデータの受け渡し＞
図６は、Ｖ４プリンタードライバーでアプリケーションプログラムとの間で独自のデータを受け渡すこと可能としたシステム構成と一連のシステムの処理の流れである。Ｖ３ＧＤＩプリンタードライバーもしくはＶ３ＸＰＳプリンタードライバーでのシステム構成におけるサポートモジュール４０１の代わりに、Ｖ４プリンタードライバーでのシステム構成では、処理モジュール６１１を用意する。この処理モジュール６１１は、アプリケーションプログラム１０１から、プリンタードライバーのサポートメディア情報が欲しい、といった具体的な指示情報を受け取る。あるいは、使用する用紙サイズを「はがき」に設定したい、といった具体的な指示情報を受け取る。処理モジュール６１１は、この具体的な指示情報に基づいた処理を、ＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを用いて行う。そして、処理結果をアプリケーションプログラム１０１に返信する役割を担う。すなわち、処理モジュール６１１は、アプリケーションプログラム１０１から、印刷設定に関する要求（具体的な指示）を受け取り、その要求に応じた処理を行う。
【００５６】
具体的には、まずアプリケーションプログラム１０１は、処理モジュール６１１を呼び出す(Ｓ６０１)。このとき、アプリケーションプログラム１０１は、プリンタードライバーのサポートメディア情報が欲しいと言った具体的な指示情報（所定の処理の要求）、および、現在のプリンタードライバーの印刷設定情報を渡す。印刷設定情報は、Ｖ３ＧＤＩプリンタードライバーまたはＶ３ＸＰＳプリンタードライバーの場合はＶ３ＤＥＶＭＯＤＥの構造体で渡すが、Ｖ４プリンタードライバーの場合はＶ３プリンタードライバーとは異なるＶ４ＤＥＶＭＯＤＥを渡すことなる。Ｖ３ＤＥＶＭＯＤＥとＶ４ＤＥＶＭＯＤＥとは、データ構造体としては同じＤＥＶＭＯＤＥ構造体である。ただし、Ｖ３ＤＥＶＭＯＤＥとＶ４ＤＥＶＭＯＤＥとは、パラメータの一つである”private driver-specific data”の扱いが異なる。Ｖ３ＤＥＶＭＯＤＥでは、この”private driver-specific data”は、プリンターベンダーが独自で作成することが可能である。一方、Ｖ４ＤＥＶＭＯＤＥでは、この”private driver-specific data”は、ＯＳが作成し、プリンターベンダーが独自で作成することができない。つまり、Ｖ４ＤＥＶＭＯＤＥでは、プリンターベンダー（すなわち、プリンタードライバー５０３）が、”private driver-specific data”の中身を参照できなくなっている。これが、Ｖ３ＤＥＶＭＯＤＥとＶ４ＤＥＶＭＯＤＥとの違いである。
【００５７】
このように、アプリケーションプログラム１０１は、依頼指示として、所定の処理の要求と、Ｖ４ＤＥＶＭＯＤＥ（第一の印刷設定情報）とを処理モジュールに送信する。ステップＳ６０１で呼び出された処理モジュール６１１は、アプリケーションプログラム１０１から受け取ったＶ４ＤＥＶＭＯＤＥをコンフィグレーションモジュール５１９に渡す。そして、ＰｒｉｎｔＴｉｃｋｅｔ（第二の印刷設定情報）およびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ（印刷能力情報）を生成させる（Ｓ６０２）。すなわち、Ｖ４のプリンタードライバー５０３内で処理可能なデータ構造体で構成されるＰｒｉｎｔＴｉｃｋｅｔ（プリントチケット）を、Ｖ４ＤＥＶＭＯＤＥから生成させる。また、Ｖ４アーキテクチャにおいて用いられている印刷能力情報（プリントケイパビリティ）を、このＰｒｉｎｔＴｉｃｋｅｔから生成させる。詳細は後述する。なお、一般的に、Ｖ４プリンタードライバー内においては、印刷設定情報として扱うデータ形式は、ＤＥＶＭＯＤＥではなくＰｒｉｎｔＴｉｃｋｅｔである。一方、一般的にアプリケーションプログラム１０１が取り扱うデータは、ＤＥＶＭＯＤＥのデータ構造体となる。このため、処理モジュール６１１は、Ｖ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成させる処理を行っている。
【００５８】
次に、処理モジュール６１１は、生成したＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを用いて、アプリケーションプログラム１０１から送られている具体的な指示情報に基づいた処理を行う(Ｓ６０３)。具体的な指示情報は、例えば、プリンタードライバーのサポートメディア情報が欲しいなどの情報である。そして、処理モジュール６１１は、処理結果をアプリケーションプログラム１０１に返信する(Ｓ６０４)。以上が、システム構成と一連のシステムの処理の流れとなる。
【００５９】
＜情報の参照処理（取得処理）のシーケンス＞
より詳細なシステムの処理の流れを説明する。図７は、印刷設定されている情報の参照（取得）処理のシーケンスを示す図である。まずアプリケーションプログラム１０１は、ステップＳ７０１において処理モジュール６１１を呼び出す。このとき、アプリケーションプログラム１０１は、処理モジュール６１１に、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるＶ４ＤＥＶＭＯＤＥを渡す。
【００６０】
次に、ステップＳ７０２において処理モジュール６１１は、受け取ったＶ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔを生成させるために、Ｖ４ＤＥＶＭＯＤＥをコンフィグレーションモジュール５１９（情報生成手段）に渡す。具体的には、処理モジュール６１１は、ＯＳが提供するＡＰＩであるＰＴＣｏｎｖｅｒｔＤｅｖＭｏｄｅＴｏＰｒｉｎｔＴｉｃｋｅｔを呼ぶ。その引数に受け取ったＶ４ＤＥＶＭＯＤＥを指定する。
【００６１】
ステップＳ７０３においてコンフィグレーションモジュール５１９は、ＡＰＩのコールを受け、処理モジュール６１１から引数として受け取ったＶ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔを生成する。なお、このステップＳ７０３で生成されたＰｒｉｎｔＴｉｃｋｅｔはＯＳ標準の印刷設定情報部分のみが生成されたものである。すなわち、ベンダー独自で定義する印刷設定情報部分は生成されていないＰｒｉｎｔＴｉｃｋｅｔとなっている。
【００６２】
ステップＳ７０４においてコンフィグレーションモジュール５１９は、ベンダー独自で定義する印刷設定部分を生成させるために、印刷設定編集モジュール５１１（編集手段）を、ＯＳを介して呼び出す。そして、Ｖ４ＤＥＶＭＯＤＥとＰｒｉｎｔＴｉｃｋｅｔとを印刷設定編集モジュール５１１に渡す。なお、コンフィグレーションモジュール５１９は、印刷設定編集モジュール５１１が存在し、かつ、印刷設定編集モジュール５１１がＰｒｉｎｔＴｉｃｋｅｔ生成ＡＰＩをサポートしている場合、印刷設定編集モジュール５１１を自動的に呼ぶ仕様になっている。
【００６３】
ステップＳ７０５において印刷設定編集モジュール５１１は、ＰｒｉｎｔＴｉｃｋｅｔを編集する。すなわち、コンフィグレーションモジュール５１９から呼び出された印刷設定編集モジュール５１１は、Ｖ４ＤＥＶＭＯＤＥとＰｒｉｎｔＴｉｃｋｅｔとを受け取る（受信する）。そこで、受け取った情報を元にＰｒｉｎｔＴｉｃｋｅｔを編集し、ベンダー独自で定義する印刷設定情報部分を生成する。印刷設定編集モジュール５１１は、ベンダーによって提供されているモジュールであり、印刷設定情報部分のうち、どの部分が不完全となっているかを把握している。そこで、対応する印刷設定情報部分をＶ４ＤＥＶＭＯＤＥから生成する。
【００６４】
このようにして、ＯＳ標準の印刷設定情報部分と、ベンダー独自で定義する印刷設定部分とが含まれる印刷設定情報（ＰｒｉｎｔＴｉｃｋｅｔ）が生成される。生成されたＰｒｉｎｔＴｉｃｋｅｔは、コンフィグレーションモジュール５１９経由(Ｓ７０６)で、ステップＳ７０７において処理モジュール６１１に返信される。
【００６５】
次に、処理モジュール６１１は、ＰｒｉｎｔＴｉｃｋｅｔからＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成させる処理を行う。ステップＳ７０８において処理モジュール６１１は、ステップＳ７０７で受け取ったＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール５１９に渡す（送信する）。具体的には、処理モジュール６１１は、ＯＳが提供するＡＰＩであるＰＴＧｅｔＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを呼ぶ。その引数にＰｒｉｎｔＴｉｃｋｅｔを指定する。すると、ステップＳ７０９においてコンフィグレーションモジュール５１９は、引数として受け取ったＰｒｉｎｔＴｉｃｋｅｔからＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する。コンフィグレーションモジュール５１９が生成するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、ＯＳ標準の印刷能力情報部分のみである。すなわち、ベンダー独自で定義する印刷能力情報部分は生成されていないＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとなっている。
【００６６】
そこでステップＳ７１０において、コンフィグレーションモジュール５１９は、印刷設定編集モジュール５１１を呼び出し、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを編集させる。このとき、コンフィグレーションモジュール５１９は、ＰｒｉｎｔＴｉｃｋｅｔと、生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとを印刷設定編集モジュール５１１に送る。
【００６７】
ステップＳ７１１において印刷設定編集モジュール５１１は、受け取ったＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとに基づいてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを編集し、ベンダー独自で定義する印刷能力情報部分を生成する。編集されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、コンフィグレーションモジュール５１９経由(Ｓ７１２)で、ステップＳ７１３において処理モジュール６１１に返信される。
【００６８】
ステップＳ７１４において処理モジュール６１１は、生成されたＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとから、アプリケーションプログラム１０１から受け取った指示情報に基づいた情報を取得する。例えば、現在印刷設定で設定されているメディアの情報を取得する指示だった場合は、ＰｒｉｎｔＴｉｃｋｅｔから設定されているメディア情報を取得する。プリンタードライバーがサポートしているサイズの一覧を取得する指示だった場合は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓからサポートサイズ一覧を取得する。ステップＳ７１５において処理モジュール６１１は、取得した情報を、処理結果としてアプリケーションプログラム１０１に返信する。
【００６９】
なお、図７の処理では、Ｖ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとが生成される形態を説明した。ここで、上述したように、現在印刷設定で設定されているメディアの情報を取得する指示だった場合は、ＰｒｉｎｔＴｉｃｋｅｔから設定されているメディア情報を取得すればよい。この場合、処理モジュール６１１は、ステップＳ７０８からＳ７１３で示すＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ処理を行わなくてよい。このように、処理モジュール６１１は、具体的な指示情報に基づいてＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとの両方を生成するか、ＰｒｉｎｔＴｉｃｋｅｔのみを生成するかの処理を切り替えてもよい。
【００７０】
＜情報の設定処理のシーケンス＞
図８は、情報の設定処理のシーケンスの例を示す図である。例えば、アプリケーションプログラム１０１からの指示情報が、印刷設定のメディア情報を写真紙に設定する、といったケースの例である。ステップＳ７０１からＳ７１３までは図７と同様のため、説明を省略する。
【００７１】
ステップＳ８１４において処理モジュール６１１は、ステップＳ７０１で受け取った指示情報に基づいた情報を、ステップＳ７０７で返信された（生成された）ＰｒｉｎｔＴｉｃｋｅｔに設定する。例えば、具体的な指示情報が、上記のように、印刷設定のメディア情報を写真紙に設定する指示だった場合は、生成されているＰｒｉｎｔＴｉｃｋｅｔのメディア情報に写真紙を設定する。
【００７２】
次に、ステップＳ８１５において処理モジュール６１１は、情報を設定したＰｒｉｎｔＴｉｃｋｅｔのＶａｌｉｄａｔｅ処理をコンフィグレーションモジュール５１９に行わせるために、ＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール５１９に渡す。Ｖａｌｉｄａｔｅ処理とは、設定に不整合がないかをチェックし不整合がある場合は適切な設定に変更する有効化処理である。処理モジュール６１１は、具体的には、ＯＳが提供するＡＰＩであるＰＴＭｅｒｇｅＡｎｄＶａｌｉｄａｔｅＰｒｉｎｔＴｉｃｋｅｔを呼ぶ。その引数にＰｒｉｎｔＴｉｃｋｅｔを指定する。
【００７３】
すると、ステップＳ８１６においてコンフィグレーションモジュール５１９は、受け取ったＰｒｉｎｔＴｉｃｋｅｔに対してＶａｌｉｄａｔｅ処理を行う。ステップＳ８１６でＶａｌｉｄａｔｅ処理されたＰｒｉｎｔＴｉｃｋｅｔは、ＯＳ標準の印刷設定情報部分のみがＶａｌｉｄａｔｅされたものである。すなわち、ベンダー独自で定義する印刷設定情報部分はＶａｌｉｄａｔｅされていないＰｒｉｎｔＴｉｃｋｅｔとなっている。そこで、ステップＳ８１７においてコンフィグレーションモジュール５１９は、印刷設定編集モジュール５１１を呼び出し、ＰｒｉｎｔＴｉｃｋｅｔのベンダー独自で定義する印刷設定情報部分のＶａｌｉｄａｔｅ処理をさせる。印刷設定編集モジュール５１１でＶａｌｉｄａｔｅ処理（Ｓ８１８）されたＰｒｉｎｔＴｉｃｋｅｔは、コンフィグレーションモジュール５１９経由(Ｓ８１９)で、処理モジュール６１１に返信される(Ｓ８２０)。
【００７４】
先に説明したように、一般的にアプリケーションプログラム１０１は、印刷設定情報をＤＥＶＭＯＤＥ構造で扱う。よって、次に、Ｖａｌｉｄａｔｅ処理されたＰｒｉｎｔＴｉｃｋｅｔからＶ４ＤＥＶＭＯＤＥを生成する処理が行われる。ステップＳ８２１において処理モジュール６１１は、Ｖａｌｉｄａｔｅ処理されたＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール５１９に渡す。具体的には、ＯＳが提供するＡＰＩであるＰＴＣｏｎｖｅｒｔＰｒｉｎｔＴｉｃｋｅｔＴｏＤｅｖＭｏｄｅを呼ぶ。その引数にＰｒｉｎｔＴｉｃｋｅｔを指定する。
【００７５】
すると、ステップＳ８２２においてコンフィグレーションモジュール５１９は、受け取ったＰｒｉｎｔＴｉｃｋｅｔからＶ４ＤＥＶＭＯＤＥを生成する。ステップＳ８２２で生成されたＶ４ＤＥＶＭＯＤＥは、ＯＳ標準の印刷設定情報部分のみが生成されているＶ４ＤＥＶＭＯＤＥである。ベンダー独自で定義する印刷設定情報部分は生成されていない。このため、ステップＳ８２３においてコンフィグレーションモジュール５１９は、印刷設定編集モジュール５１１を呼び出し、Ｖ４ＤＥＶＭＯＤＥを編集させる。呼び出された印刷設定編集モジュール５１１は、Ｖ４ＤＥＶＭＯＤＥと、Ｖａｌｉｄａｔｅ処理されているＰｒｉｎｔＴｉｃｋｅｔとを受け取る。ステップＳ８２４において印刷設定編集モジュール５１１は、これら情報を元にＶ４ＤＥＶＭＯＤＥを編集し、ベンダー独自で定義する印刷設定情報部分を生成する。このように編集されたＶ４ＤＥＶＭＯＤＥは、コンフィグレーションモジュール５１９経由(Ｓ８２５)で、処理モジュール６１１に返信される(Ｓ８２６)。ステップＳ８２７において処理モジュール６１１は、アプリケーションプログラム１０１に、処理結果とステップＳ８２６で渡されたＶ４ＤＥＶＭＯＤＥとを返信する。
【００７６】
なお、図８の処理では、Ｖａｌｉｄａｔｅ処理は、ＰｒｉｎｔＴｉｃｋｅｔに対して行われ、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに対しては行われていない。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、プリンタードライバーの能力情報であり、例えばサポートメディア一覧や、サポートサイズ一覧などの情報である。これらの情報は、印刷設定の設定内容に応じて変わることはないので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに対してＶａｌｉｄａｔｅ処理は行われていない。
【００７７】
以上が、Ｖ４プリンタードライバーにおいてアプリケーションプログラムとの間で独自のデータを受け渡すことが可能なシステムの詳細である。このように、本実施形態では、処理モジュール６１１をプリンタードライバー５０３に備え、処理モジュール６１１が、アプリケーションプログラム１０１とプリンタードライバー５０３との間の独自のデータの受け渡しを司る。また、処理モジュール６１１は、ＤＥＶＭＯＤＥ構造体で渡された印刷設定情報から、ＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する処理を行わせる。これにより、Ｖ４のプリンタードライバー５０３内での処理に適合した処理が行われる。すなわち、ＯＳによって提供されているコンフィグレーションモジュール５１９およびベンダーによって提供されている印刷設定編集モジュール５１１を利用して、独自のデータの受け渡しを行うことができる。
【００７８】
＜変形例＞
図７および図８で示した処理では、アプリケーションプログラム１０１から複数回処理モジュール６１１が呼ばれた場合、処理モジュール６１１は、呼び出される度に図７および図８で示した処理を行う。つまり、処理モジュール６１１が呼び出される度に、Ｖ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとを生成する処理が行われる。例えば、アプリケーションプログラム１０１が、メディアの設定をさせたい場合には、次の処理が行われることになる。
（１）プリンタードライバー５０３の処理モジュール６１１に、サポートしているメディア一覧を取得させる。
（２）取得したサポートメディア一覧をアプリケーションのユーザインタフェース画面に表示し、ユーザに選択させる。
（３）ユーザが選択したメディアの設定を、プリンタードライバー５０３の処理モジュール６１１を通じて行わせる。
このうち、（１）と（３）との処理において、処理モジュール６１１がそれぞれ呼び出され、Ｖ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する処理が行われることになる。なお、上記は一例に過ぎず、他の形態においてもアプリケーションプログラム１０１から処理モジュール６１１が複数回呼ばれることがあり得る。
【００７９】
ここで、アプリケーションプログラム１０１から渡されるＶ４ＤＥＶＭＯＤＥが全く同じＶ４ＤＥＶＭＯＤＥである場合を想定する。この場合、生成されるＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、複数回の処理を通じて同じＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとになる。そこで、変形例では、ＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとを生成した際に、これらをキャッシュとして処理モジュール６１１が保持する。そして、次回アプリケーションプログラム１０１から処理モジュール６１１が呼び出された際、アプリケーションプログラム１０１から渡されたＶ４ＤＥＶＭＯＤＥが、前回渡されたＶ４ＤＥＶＭＯＤＥと同じかを判定する。そして同じ場合は、保持しておいたキャッシュのＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとを使用する。このような処理によれば、ＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとの生成処理を省くことができる。これにより、処理の高速化を図ることができる。
【００８０】
図９は、図８の処理に対して高速化を施したシーケンスを示す図である。ステップＳ９０１においてアプリケーションプログラム１０１は、処理モジュール６１１を呼び出す(Ｓ８０１)。このとき、アプリケーションプログラム１０１は、前述のように、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるＶ４ＤＥＶＭＯＤＥを処理モジュール６１１に渡す。
【００８１】
本変形例では、ステップＳ９０２において処理モジュール６１１は、Ｖ４ＤＥＶＭＯＤＥ、ＰｒｉｎｔＴｉｃｋｅｔ、およびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのキャッシュを保持しているかを確認する。保持していない場合は、図８のステップＳ７０２からＳ７１３に示すＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理を行う。キャッシュを保持している場合は、ステップＳ９０２において処理モジュール６１１は、キャッシュされているＶ４ＤＥＶＭＯＤＥと受け取ったＶ４ＤＥＶＭＯＤＥとが同じデータであるかを判定（比較）する。異なる場合は、キャッシュされているデータを用いることができないので、図８のステップＳ７０２からＳ７１３に示すＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理を行う。
【００８２】
キャッシュされているＶ４ＤＥＶＭＯＤＥと受け取ったＶ４ＤＥＶＭＯＤＥとが同じデータである場合は、処理モジュール６１１は、ＰｒｉｎｔＴｉｃｋｅｔ、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成を行わない。代わりに、キャッシュされているＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを使用する。
【００８３】
使用するＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ (キャッシュで保持したものか、生成されたものか)が決定したら、ステップＳ８１４からの処理を行う。ステップＳ８１４からＳ８２６までの処理は、図８で説明した処理と同様のため説明を省略する。
【００８４】
なお、ステップＳ８１４の処理で印刷設定を反映した場合、Ｖ４ＤＥＶＭＯＤＥとＰｒｉｎｔＴｉｃｋｅｔとが、キャッシュされているＶ４ＤＥＶＭＯＤＥとＰｒｉｎｔＴｉｃｋｅｔとから変わっている。従って、ステップＳ９２７において処理モジュール６１１は、保持しているＶ４ＤＥＶＭＯＤＥとＰｒｉｎｔＴｉｃｋｅｔとのキャッシュを更新する。もしくは、キャッシュを保持していない場合は、新規に保持する。最後に、ステップＳ９２８において処理モジュール６１１は、アプリケーションプログラム１０１に、処理結果とステップＳ８２６で渡されたＶ４ＤＥＶＭＯＤＥとを返信する。以上のように、保持しておいたＶ４ＤＥＶＭＯＤＥ、ＰｒｉｎｔＴｉｃｋｅｔ、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを活用すれば、ＰｒｉｎｔＴｉｃｋｅｔ、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成処理を省くことができ、処理が高速化できる。
【００８５】
なお、図９の処理は、図８の処理（情報の設定処理）の変形例を示したが、図７の処理（情報の参照・取得処理）の場合においても同様に、キャッシュされているＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを使用することができる。
【００８６】
本実施形態においては、ＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成は、ＯＳが提供するＡＰＩを用いてコンフィグレーションモジュール５１９を呼び出して生成する形態を説明した。しかしながら、ＯＳが提供するＡＰＩを用いず、処理モジュール６１１がＶ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する構成に代えることも可能であり、その場合も前記構成と同等の効果を有する。ただし、前述したとおりＶ４プリンタードライバーの印刷システムの構成上、ＯＳが提供するＡＰＩを用いる方法が一般的と言える。
【００８７】
＜＜実施形態２＞＞
実施形態１では、処理モジュール６１１が、アプリケーションプログラム１０１から渡されるＶ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成させる処理を司る形態を説明した。また、処理モジュール６１１が、生成されたＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを使用して具体的な指示情報に基づく処理を行うすることで、独自のデータの受け渡しを可能としたシステム構成と処理の流れを説明した。しかしながら、実施形態１の構成では、ＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成に処理時間がかかるという課題がある。特に、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの生成に処理時間がかかる。
【００８８】
前述したＶ３ＧＤＩプリンタードライバーとＶ３ＸＰＳプリンタードライバーとの間のデータの受け渡しでは、Ｖ３ＤＥＶＭＯＤＥとデータベースとを使用する構成で実現している。多くのプリンタードライバーがＶ３のプリンタードライバーである現状において、実施形態１の構成のＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを用いる構成を実現するには新規にシステムを構築する必要があり、対応負荷が高い。そこで、実施形態２では、Ｖ３アーキテクチャにおいて用いられていた方法を部分的に流用することで、Ｖ４アーキテクチャにおける対応負荷を軽減する。具体的には、処理モジュール６１１は、アプリケーションプログラム１０１から渡されるＶ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔを生成させる処理を行う。そして、生成されたＰｒｉｎｔＴｉｃｋｅｔから、処理モジュール６１１は、Ｖ３ＤＥＶＭＯＤＥ（第三の印刷設定情報）を生成する。その後は、Ｖ３ＧＤＩプリンタードライバーとＶ３ＸＰＳプリンタードライバーでの構成と同様に、Ｖ３ＤＥＶＭＯＤＥとデータベースとを使用する構成で、独自のデータの受け渡しを実現する。データベースは、データベース単体モジュールでＶ４プリンタードライバーに含めてもよいし、あるいは、処理モジュール６１１に含めてもよい。システム構成については、実施形態１で説明したものと同様の構成を用いることができるので、ここでの説明は省略する。
【００８９】
＜情報の参照処理（取得処理）のシーケンス＞
図１０は、本実施形態におけるシステムの処理シーケンスを示す図である。より詳細には、情報の参照処理（取得処理）のシーケンスを示す図である。ステップＳ１００１においてアプリケーションプログラム１０１は、処理モジュール６１１を呼び出す。このとき、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるＶ４ＤＥＶＭＯＤＥを渡す。次に、処理モジュール６１１は、受け取ったＶ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔを生成させるために、Ｖ４ＤＥＶＭＯＤＥをコンフィグレーションモジュール５１９に渡す(Ｓ１００２)。その後、コンフィグレーションモジュール５１９でＰｒｉｎｔＴｉｃｋｅｔが生成される（Ｓ１００３）。そして、印刷設定編集モジュール５１１によってＰｒｉｎｔＴｉｃｋｅｔが編集され（Ｓ１００４〜Ｓ１００６）、生成されたＰｒｉｎｔＴｉｃｋｅｔが処理モジュール６１１に返信される（Ｓ１００７）。ここまでは実施形態１と同様の処理である。
【００９０】
次に、ステップＳ１００８においてコンフィグレーションモジュール５１９は、返信されたＰｒｉｎｔＴｉｃｋｅｔからＶ３ＤＥＶＭＯＤＥを生成する。ステップＳ１００８の処理は、Ｖ３ＧＤＩプリンタードライバーやＶ３ＸＰＳプリンタードライバーのユーザーインターフェースモジュール２０３にて一般的に行われる処理である。本実施形態では、その処理を処理モジュール６１１に移植することで流用する。なお、Ｖ３のアーキテクチャにおいても、プリンタードライバーにおいてＰｒｉｎｔＴｉｃｋｅｔを用いて処理が行われており、ＰｒｉｎｔＴｉｃｋｅｔからＶ３ＤＥＶＭＯＤＥを生成する処理は、Ｖ３のアーキテクチャにおいて既に行われている処理である。
【００９１】
次に、ステップＳ１００９において処理モジュール６１１は、生成したＶ３ＤＥＶＭＯＤＥ、および、データベースから、指示情報に基づいた情報を取得する。ステップＳ１００９は、図４のＳ４０３で示した処理と同様の処理であり、その処理を処理モジュール６１１に移植することで流用する。最後に、ステップＳ１０１０において処理モジュール６１１は、アプリケーションプログラム１０１に処理結果を返信する。
【００９２】
なお、図１０の処理では、Ｖ４ＤＥＶＭＯＤＥから一旦ＰｒｉｎｔＴｉｃｋｅｔを生成し、そのＰｒｉｎｔＴｉｃｋｅｔからＶ３ＤＥＶＭＯＤＥを生成する処理が行われている。ＰｒｉｎｔＴｉｃｋｅｔを生成する処理においては、前述したように、ＯＳが標準で提供する機能と、印刷設定編集モジュール５１１によってＯＳ標準で定義されていない機能とを含むＰｒｉｎｔＴｉｃｋｅｔが生成される。仮に、Ｖ４ＤＥＶＭＯＤＥから直接Ｖ３ＤＥＶＭＯＤＥを生成したとすると、ＯＳ標準で定義されていない機能については、Ｖ３ＤＥＶＭＯＤＥに反映されないことになってしまう。そこで、Ｖ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔを一旦生成し、そのＰｒｉｎｔＴｉｃｋｅｔからＶ３ＤＥＶＭＯＤＥを生成することで、ＯＳ標準で定義されていない機能を含む印刷設定情報を得ることができる。
【００９３】
＜情報の設定処理のシーケンス＞
図１１は、本実施形態における情報の設定処理のシーケンスを示す図である。例えば、アプリケーションプログラム１０１からの指示情報が、印刷設定のメディア情報を写真紙に設定する、といったケースの例である。ステップＳ１００１からＳ１００８までは図１０と同様のため、説明を省略する。
【００９４】
ステップＳ１１０９において処理モジュール６１１は、指示情報に基づいた情報を、ステップＳ１００８にて生成したＶ３ＤＥＶＭＯＤＥに設定する。ステップＳ１１０９は、図４のステップＳ４０３で示した処理と同様の処理であり、その処理を処理モジュール６１１に移植することで流用する。
【００９５】
そして、ステップＳ１１１０において処理モジュール６１１は、指示情報に基づいた情報を設定したＶ３ＤＥＶＭＯＤＥに関して設定に不整合がないかをチェックし不整合がある場合は適切な設定に変更するＶａｌｉｄａｔｅ処理を行う。その後、ステップＳ１１１１において処理モジュール６１１は、Ｖａｌｉｄａｔｅ処理されたＶ３ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔを生成する。なお、ステップＳ１１１１においてＰｒｉｎｔＴｉｃｋｅｔを生成する際、指示情報に基づいた情報部分のみ、Ｖ３ＤＥＶＭＯＤＥの設定値をステップＳ１００７にて生成したＰｒｉｎｔＴｉｃｋｅｔに対して反映することができる。このような処理を行うと、一からＰｒｉｎｔＴｉｃｋｅｔを生成するよりも処理が速くなる。ステップＳ１１１０およびＳ１１１１の処理は、Ｖ３ＧＤＩプリンタードライバーおよびＶ３ＸＰＳプリンタードライバーのユーザーインターフェースモジュール２０３にて一般的に行われる処理で、その処理を処理モジュール６１１に移植することで流用する。
【００９６】
次に、ステップＳ１１１２において処理モジュール６１１は、生成したＰｒｉｎｔＴｉｃｋｅｔからＶ４ＤＥＶＭＯＤＥを生成させる処理を行う。すなわち、処理モジュール６１１は、ＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール５１９に渡す。その後、ステップＳ１１１３からＳ１１１７において、コンフィグレーションモジュール５１９および印刷設定編集モジュール５１１を通じてＶ４ＤＥＶＭＯＤＥが生成され、処理モジュール６１１に返信される。ステップＳ１１１３からＳ１１１７の処理は、図８および図９のステップＳ８２２からＳ８２６の処理と同様である。
【００９７】
以上説明したように、本実施形態では、実施形態１と異なり、ＰｒｉｎｔＴｉｃｋｅｔからＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを生成する処理が不要となる。処理に時間を要するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓが不要となるので、処理速度の向上が期待できる。また、本実施形態は、Ｖ３アーキテクチャにおいて使用されているＶ３ＤＥＶＭＯＤＥとデータベースとを用いて独自のデータの受け渡しを実現している。すなわち、実施形態１で説明したように、ＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを用いた処理を行わないので、Ｖ３アーキテクチャを流用し、少ない負荷で対応可能となる。
【００９８】
＜変形例＞
本実施形態においても、実施形態１で説明したものと同様に、アプリケーションプログラム１０１から処理モジュール６１１が複数回呼ばれる場合が想定される。この場合、処理モジュール６１１が呼び出される度に、Ｖ４ＤＥＶＭＯＤＥからＰｒｉｎｔＴｉｃｋｅｔ生成を経てＶ３ＤＥＶＭＯＤＥを生成する必要があり、処理速度が遅くなる。本変形例は、実施形態１の変形例と同様に、キャッシュを保持する形態である。すなわち、処理モジュール６１１は、アプリケーションプログラム１０１から渡されたＶ４ＤＥＶＭＯＤＥと生成されたＶ３ＤＥＶＭＯＤＥとをキャッシュとして保持しておく。これにより、Ｖ３ＤＥＶＭＯＤＥの生成処理を省くことができ、処理の高速化を図ることができる。
【００９９】
図１２は、図１１の処理に対して高速化を施したシーケンスを示す図である。ステップＳ１２０１においてアプリケーションプログラム１０１は、処理モジュール６１１を呼び出す。このとき、具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報であるＶ４ＤＥＶＭＯＤＥを渡す。
【０１００】
ステップＳ１２０２において処理モジュール６１１は、Ｖ４ＤＥＶＭＯＤＥ、ＰｒｉｎｔＴｉｃｋｅｔ、および、Ｖ３ＤＥＶＭＯＤＥのキャッシュを保持しているかを確認する。保持していない場合は、図１１のステップＳ１００２からＳ１００８に示すＶ３ＤＥＶＭＯＤＥの生成処理を行う。
【０１０１】
キャッシュを保持している場合は、ステップＳ１２０３において処理モジュール６１１は、キャッシュのＶ４ＤＥＶＭＯＤＥと、受け取ったＶ４ＤＥＶＭＯＤＥとが同じかを比較する。異なる場合は図１１のステップＳ１００２からＳ１００８で示すＶ３ＤＥＶＭＯＤＥの生成処理を行う。キャッシュのＶ４ＤＥＶＭＯＤＥと、受け取ったＶ４ＤＥＶＭＯＤＥとが同じ場合は、処理モジュール６１１は、Ｖ３ＤＥＶＭＯＤＥの生成を行わずに、キャッシュのＶ３ＤＥＶＭＯＤＥを使用する。
【０１０２】
使用するＶ３ＤＥＶＭＯＤＥ(キャッシュで保持したＶ３ＤＥＶＭＯＤＥか、生成したＶ３ＤＥＶＭＯＤＥか)が決定したら、図１２のステップＳ１１０９からの処理を行う。ステップＳ１１０９からＳ１１１７までの処理は図１１と同様のため説明を省略する。
【０１０３】
ステップＳ１２１８において処理モジュール６１１は、キャッシュを更新する。Ｖ４ＤＥＶＭＯＤＥとＶ３ＤＥＶＭＯＤＥとが、キャッシュのＶ４ＤＥＶＭＯＤＥとＶ３ＤＥＶＭＯＤＥから変わっている可能性がある。そこで、処理モジュール６１１は、ステップＳ１２１８にて、保持しているＶ４ＤＥＶＭＯＤＥ、ＰｒｉｎｔＴｉｃｋｅｔ、Ｖ３ＤＥＶＭＯＤＥのキャッシュを更新する。もしくは、キャッシュを保持していない場合は、新規に保持する。最後に、ステップＳ１２１９において処理モジュール６１１は、アプリケーションプログラム１０１に、処理結果とステップＳ１１１７で渡されたＶ４ＤＥＶＭＯＤＥとを返信する。以上のように、保持しておいたＶ４ＤＥＶＭＯＤＥ、Ｖ３ＤＥＶＭＯＤＥを活用すれば、Ｖ３ＤＥＶＭＯＤＥの生成処理を省くことができ、処理が高速化できる。
【０１０４】
＜＜実施形態３＞＞
実施形態１および実施形態２にて、アプリケーションプログラムとＶ４プリンタードライバーとの間での独自のデータの受け渡しを可能としたシステム構成と一連のシステムの処理の流れを説明した。しかし、実施形態１および実施形態２の構成では、アプリケーションプログラムは、使用するプリンタードライバーが、Ｖ３プリンタードライバーかＶ４プリンタードライバーかで呼び出すモジュールを切り分ける必要がある。具体的には、使用するプリンタードライバーがＶ３プリンタードライバーの場合はサポートモジュール４０１を呼び出す必要がある。一方、Ｖ４プリンタードライバーの場合は処理モジュール６１１を呼び出す必要がある。この場合、すでに市場にリリースされているアプリケーションプログラムでは、Ｖ４プリンタードライバーの処理モジュール６１１を呼び出す処理が実装されていない。このため、上述した実施形態で説明したようなＶ４プリンタードライバーの動作が実行されない（処理モジュール６１１が呼ばれない）。
【０１０５】
そこで、本実施形態では、処理モジュールを呼び出す呼び出しモジュールをプリンタードライバーに含める。図１３は、Ｖ４プリンタードライバーとの間で独自のデータを受け渡すシステム構成図である。図１３で示すように、サポートモジュール４０１と同じモジュール名称、かつ同じ保存場所に処理モジュール６１１を呼び出すモジュール(処理モジュール呼び出しモジュール１３０１)を用意し、保存しておく。これにより、アプリケーションプログラム１０１は、Ｖ４プリンタードライバーの場合でも、Ｖ３プリンタードライバーと同様にサポートモジュール４０１と同じ場所にある同じ名称の処理モジュール呼び出しモジュール１３０１を呼び出す（Ｓ１３０１）。その際に、アプリケーションプログラム１０１は、プリンタードライバーのサポートメディア情報が欲しいといった具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報を渡す。印刷設定情報は、Ｖ３プリンタードライバーでもＶ４プリンタードライバーでも同じＤＥＶＭＯＤＥ構造体で渡される。呼び出された処理モジュール呼び出しモジュール１３０１は、処理モジュール６１１を呼び出す（Ｓ１３０２）。その際、アプリケーションプログラム１０１から受け取ったプリンタードライバーのサポートメディア情報が欲しいといった具体的な指示情報、および、現在のプリンタードライバーの印刷設定情報を渡す。呼び出された処理モジュール６１１は、Ｓ６０２、およびＳ６０３の処理を行う。詳細な説明は省略する。処理モジュール６１１は、処理モジュール呼び出しモジュール１３０１に処理結果を返信し（Ｓ１３０４）、処理モジュール呼び出しモジュール１３０１は、アプリケーションプログラム１０１に処理結果を返信する（Ｓ１３０５）。
【０１０６】
以上により、アプリケーションプログラム１０１はＶ４プリンタードライバーにおいてもＶ３プリンタードライバーと同様の処理で動作することが可能となる。このため、すでに市場にリリースされているアプリケーションであってもＶ４プリンタードライバーで動作可能となる。
【０１０７】
つまり、アプリケーションプログラム１０１は、プリンタードライバーが、Ｖ３アーキテクチャのものかＶ４アーキテクチャのものであるかを意識しないでよい。なお、アプリケーションプログラム１０１からＶ４のプリンタードライバー５０３に渡される独自のデータも、Ｖ３のときと同様のものが渡される。すなわち、アプリケーションプログラム１０１からは、Ｅｓｃａｐｅコード、ＤＥＶＭＯＤＥ、および具体的な指示情報がプリンタードライバー５０３の処理モジュール６１１に渡される。ここで、Ｅｓｃａｐｅコードは、Ｖ４アーキテクチャでは使用されないので、処理モジュール６１１に渡されたとしても、処理モジュール６１１では無視される。
【０１０８】
＜＜その他の実施形態＞＞
上述の実施形態においては、アプリケーションプログラム１０１は、印刷設定情報をＤＥＶＭＯＤＥ構造体として保持している形態を例に挙げて説明した。しかしながら、アプリケーションプログラムの中には、ＰｒｉｎｔＴｉｃｋｅｔとして印刷設定情報を保持するものがある。このようなＰｒｉｎｔＴｉｃｋｅｔを扱うアプリケーションプログラムを用いる場合においても、本発明は適用可能である。具体的には、処理モジュール６１１は、アプリケーションプログラムから渡されたＰｒｉｎｔＴｉｃｋｅｔを用いて上述の実施形態で説明した処理を行えばよい。このとき、ＰｒｉｎｔＴｉｃｋｅｔは既に用意されているので、処理モジュール６１１は、ＰｒｉｎｔＴｉｃｋｅｔの生成処理をスキップすればよい。また、情報の設定がなされた場合にも、Ｖ４ＤＥＶＭＯＤＥの構造体でアプリケーションプログラムに返信せず、ＶａｌｉｄａｔｅされたＰｒｉｎｔＴｉｃｋｅｔを返信すればよい。
【０１０９】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１０】
１０１  アプリケーションプログラム
１０２  ＯＳ
５０３  プリンタードライバー
６１１  処理モジュール
【図１】
2019074884.tif 000003
【図２】
2019074884.tif 000004
【図３】
2019074884.tif 000005
【図４】
2019074884.tif 000006
【図５】
2019074884.tif 000007
【図６】
2019074884.tif 000008
【図７】
2019074884.tif 000009
【図８】
2019074884.tif 000010
【図９】
2019074884.tif 000011
【図１０】
2019074884.tif 000012
【図１１】
2019074884.tif 000013
【図１２】
2019074884.tif 000014
【図１３】
2019074884.tif 000015