"アプリケーションからの印刷要求時に、印刷設定から設定情報を生成する印刷設定受け付け手段と、アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理手段と、前記画像処理手段を呼び出したアプリケーションが、特定アプリケーションか否かを、前記設定情報に前記特定アプリケーションにより記述された特定アプリ情報があるか否か、又は、前記画像処理手段を呼び出す関数の引数に特定アプリ情報が含まれるか否か、の少なくともいずれかにより判別するアプリケーション判別手段と、を有し、前記アプリケーション判別手段が、前記特定アプリケーションにより呼び出されたと判別した場合、前記画像処理手段は、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成する、を有する情報処理装置。前記特定アプリケーションは、前記印刷設定受け付け手段から呼び出されて起動し、文書データを生成しないアプリケーションである、ことを特徴とする請求項1記載の情報処理装置。前記アプリケーションは、前記画像処理手段が前記印刷データを生成した段階で印刷終了を前記印刷設定受け付け手段に通知し、前記印刷設定受け付け手段は前記特定アプリケーションを起動させる、ことを特徴とする請求項2記載の情報処理装置。前記特定アプリケーションは、前記画像処理手段が生成した前記印刷データを表示装置に表示するプレビュー用のアプリケーションである、ことを特徴とする請求項1~3いずれか1項記載の情報処理装置。前記設定情報の前記特定アプリ情報は、所定のOSOperatingSystem上で動作する複数のプリンタドライバに対して共通の印刷条件を提供するDEVMODEのメンバ変数として記述されている、ことを特徴とする請求項1~4いずれか1項記載の情報処理装置。前記設定情報の前記特定アプリ情報は、前記DEVMODEの前記メンバ変数のうちdmReserved1又はdmReserved2に記述されている、ことを特徴とする請求項5項記載の情報処理装置。前記設定情報の前記特定アプリ情報は、前記DEVMODEの前記メンバ変数のうち、印刷時に使用されないDisplay専用変数に記述されている、ことを特徴とする請求項5項記載の情報処理装置。前記画像処理手段を呼び出す関数の引数に書き込まれる前記特定アプリ情報は、前記特定アプリケーションがOSを呼び出す第1関数、及び、OSが前記画像処理手段を呼び出す第2関数に記述されている、ことを特徴とする請求項1項記載の情報処理装置。前記特定アプリ情報は、文書データの文書名の先頭又は末尾に記述されている、ことを特徴とする請求項8項記載の情報処理装置。前記画像処理手段は、前記特定アプリケーションにより呼び出されたと判別しない場合、前記設定情報及び文書データから印刷データを生成し、前記特定アプリケーションにより呼び出されたと判別した場合、前記特定アプリケーションにより呼び出される前に生成した印刷データの一部を転用して印刷データを生成する、ことを特徴とする請求項1~9いずれか1項記載の情報処理装置。コンピュータに、アプリケーションからの印刷要求時に、受け付けた印刷設定から設定情報を生成する印刷設定受け付けステップと、画像処理手段を呼び出して、アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理ステップと、前記画像処理手段を呼び出したアプリケーションが、特定アプリケーションか否かを、前記設定情報に前記特定アプリケーションにより記述された特定アプリ情報があるか否か、又は前記画像処理手段を呼び出す関数の引数に特定アプリ情報が含まれるか否か、の少なくともいずれかにより判別するアプリケーション判別ステップと、前記アプリケーション判別ステップにより、前記画像処理手段が前記特定アプリケーションにより呼び出されたと判別された場合、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成するステップと、を実行させるプログラム。請求項11記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。特許文献1に記載されたプリンタドライバは、Private領域を柔軟に構成できるが、一般的にプリンタドライバはプリンタが同じであれば、これを呼び出すアプリケーションが異なっても同じである。しかしながら、プリンタドライバが、特定のアプリケーションに呼び出された場合にだけ、特定の処理を行うことが好ましい場合がある。例えば、グラフィック部はDEVMODEから制御データを作成するが、アプリケーションが保持する文書データの情報やDEVEMODEに含まれない情報からも制御データを作成している。ところが、特定のアプリケーションは、一般のアプリケーションが保持する文書データの情報などを保持していない場合があり、この場合、プリンタドライバは誤った制御データを作成するおそれがある。仮に、プリンタドライバが、特定のアプリケーションから読み出されたことを検出できれば、通常のアプリケーションから呼び出されたグラフィック部が作成した制御データを利用したり、制御データを作成しないことが可能になる。しかし、プリンタドライバには特定のアプリケーションにより呼び出されたことを検知する仕組みが搭載されていないことが一般的である。本発明は、上記課題に鑑み、呼び出したアプリケーションによって異なる処理を行うことができる情報処理装置を提供することを目的とする。本発明は、アプリケーションからの印刷要求時に、受け付けた印刷設定から設定情報を生成する印刷設定受け付け手段と、アプリケーションから取得した文書データを前記設定情報に基づきプリンタの印刷データに変換する画像処理手段と、前記画像処理手段を呼び出したアプリケーションが、特定アプリケーションか否かを、前記設定情報に前記特定アプリケーションにより記述された特定アプリ情報があるか否か、前記画像処理手段を呼び出す関数の引数に特定アプリ情報が含まれるか否か、の少なくともいずれかにより判別するアプリケーション判別手段と、を有し、前記アプリケーション判別手段が、前記特定アプリケーションにより呼び出されたと判別した場合、前記画像処理手段は、前記特定アプリケーション以外のアプリケーションにより呼び出された場合と異なる方法で前記印刷データを生成する、を有する情報処理装置を提供する。呼び出したアプリケーションによって異なる処理を行うことができる情報処理装置を提供することができる。以下、本発明を実施するための形態について実施例を挙げて説明する。図3は、比較のための従来のプリンタドライバが印刷データ等を生成する手順を模式的に説明する図の一例である。なお、本実施形態の印刷手順は、RAWスプール及びEMFスプールのいずれに対しても適用できるため、以下では区別しない。上記のように、UI部はユーザから印刷設定を受け付けてDEVMODE構造体以下、単にDEVMODEというに格納し、アプリケーションに送出する。このアプリケーションは、文書作成ソフトやブラウザソフトのように印刷対象となる文書データを作成するソフトウェアの総称である。アプリケーションはグラフィック部にDEVMODE及び文書データを送出する。ここで、文書データには、文書の内容だけでなく、原稿サイズ、原稿の向きなどの書誌的事項が含まれている。プリンタドライバのグラフィック部は、DEVMODE及び文書データから、描画データRAWデータ、Job用制御データ及びPage用制御データを作成し、プリンタに送出する。Job用制御データとPage用制御データについては後述する。プリンタはJob用制御データ及びPage用制御データを解釈して描画データRAWデータを印刷することができる。図4は、本実施例のプリンタドライバが印刷データ等を生成する手順を模式的に説明する図の一例である。図4において、グラフィック部が描画データ、Job用制御データ及びPage用制御データを作成するまでの手順は図3と同様である。ただし、これらには後にintという識別用の接頭語が付与される。ユーザはアプリケーションに対し印刷指示の操作を行う場合、印刷開始前にPCが印刷プレビュー画面を表示するように設定しておく。このプレビュー表示のためのアプリケーションが上記の特定のアプリケーションに相当し、以下、Previewexeという。グラフィック部が描画データ、Job用制御データ及びPage用制御データを作成するとアプリケーションに通知する。アプリケーションは印刷を終了する。グラフィック部は印刷プレビュー画面を表示の設定に基づき、いったん印刷を終了させる。また、UI部は、アプリケーションから印刷終了の通知により、印刷プレビュー画面を表示の設定に基づき、Previewexeを起動させるkickする。Previewexeはすでに作成されている描画データ、Job用制御データ及びPage用制御データを利用してプレビュー表示する。ユーザは、プレビュー表示を目視して印刷の仕上がりを確認すると共に、設定を忘れていた集約、ステープル、パンチ、製本などの印刷設定を新たに設定したり修正したりすることができる。ユーザが印刷を指示すると、Previewexeは、Previewexeがプリンタドライバを呼び出すことを記録するため、DEVMODEにプレビュー設定を書き込む。プレビュー設定については後述する。Previewexeはユーザによる新たな印刷設定を反映したDEVMODE ́をUI部に送出する。次にPreviewexeはグラフィック部に印刷指示する。このため、Previewexeはグラフィック部に、描画データ、Job用制御データ及びPage用制御データを送出する。グラフィック部はUI部を介してDEVMODE ́を参照するので、DEVMODE ́のプレビュー設定によりPreviewexeから呼び出されたことを検出できる。グラフィック部は、まず、DEVMODE ́を参照して、特定のアプリケーションこの場合はPreviewexeから呼び出されたか否かを判定する。そして、特定のアプリケーションから読み出されたと判定すると、以下のように動作する。a.DEVMODE ́から新たにJob用印刷設定を作成する。これにより、プレビュー表示でユーザが設定した印刷設定を反映できる。b.Previewexeから取得したPage用制御データをそのまま転用する新たに作成しない。Page用制御データに必要な全ての情報がDEVMODE ́に含まれていないので、Previewexeから呼び出された場合はPage用制御データを生成しない。c.描画データについてPreviewexeから取得した描画データをそのまま転用する。グラフィック部がすでに作成した描画データは、Previewexeが表示しても変更がないので、グラフィック部が再度、描画データを作成する必要はない。したがって、この段階ではグラフィック部は描画データに何もしない。グラフィック部は、描画データ、Job用制御データ及びPage用制御データをプリンタに送出する。以上のように、本実施形態のプリンタドライバは、DEVMODEのプレビュー設定により特定のアプリケーションから呼び出されたことを検出して、特殊な処理を行うことが可能になる。構成例図5aは印刷システム400の概略構成図の一例を、図5bはPC100のハードウェア構成図の一例をそれぞれ示す。PCPersonalComputer100とプリンタ200がネットワーク300を介して接続されている。PC100がユーザの操作を受け付け、文書作成ソフトなどのアプリケーションが、GDI、DDI及びプリンタドライバ等を利用して印刷を要求する。プリンタドライバは、後述する手順で印刷データを作成してプリンタ200に送信する。プリンタ200は画像形成機能を有していれば、コピー機、複写機、FAX装置などその呼称は問われない。また、プリンタ200は電子写真方式の画像形成機能又はインクジェット方式の画像形成機能のどちらの機能を有していてもよい。また、PCPersonalComputer100とプリンタ200はUSBケーブルなどで直接接続されていてもよい。PC100は、それぞれバスで相互に接続されているCPU11、ROM12、RAM13、外部I/F14、通信装置15、入力装置16、表示制御部17及び記憶装置18を有する。CPU11は、OSOperatingSystem10、アプリケーション31、プリンタドライバ30、及び、Previewexe32を記憶装置18から読み出して、RAM103を作業メモリにして実行する。アプリケーション31は、プリンタ200に印刷要求するものであればよく、例えば、文書作成ソフト、ブラウザソフト、プレゼン資料作成ソフト等、種々のものがある。印刷対象となる文書データを、作成、編集、表示、管理などして、印刷可能なアプリケーションであればどのようなものでもよい。なお、文書データは、文字や記号、数値だけを含むものではなく、画像、写真など種々の印刷対象物を含む。RAM13は必要なデータを一時保管する作業メモリ主記憶メモリになり、ROM12にはBIOSや初期設定されたデータ、スタートプログラム等が記憶されている。外部I/F14はUSBケーブル等のケーブルや、可搬型の記憶媒体20を装着するインタフェースである。通信装置15は、LANカードやイーサネット登録商標カードであり、CPU11からの指示によりプリンタ200にパケットデータ本実施形態では主に印刷データを送信する。入力装置16は、キーボード、マウスなど、ユーザの様々な操作指示を受け付けるユーザインターフェイスである。タッチパネルや音声入力装置を入力装置とすることもできる。表示制御部17は、アプリケーション31が指示する画面情報に基づき所定の解像度や色数等でディスプレイ19の描画を制御する。ディスプレイ19は、液晶や有機ELなどのFPDFlatPanelDisplayである。記憶装置18は、HDDHardDiskDriveやフラッシュメモリなどの不揮発メモリを実体とし、OS10、プリンタドライバ30、アプリケーション31、及び、Previewexe32を記憶している。記憶媒体20は、例えば、SDカードやUSBメモリなど不揮発性のメモリである。OS10、アプリケーション31、Previewexe32、及び、プリンタドライバ30は、記憶媒体20に記録された状態又は不図示のサーバからダウンロードされる態様で配布される。図6aはプリンタドライバ30の機能ブロック図の一例を示す。プリンタドライバ30は、UI部34、描画部301、及び、連携部35を有する。また、グラフィック部33は描画部301及び印刷確認部302を有する。なお、本実施形態の説明に必要でない機能は省略している。UI部34は、DEVMODEとすでに格納されている印刷設定に基づき印刷設定画面印刷ダイアログをディスプレイに表示し、ユーザが設定した印刷設定を受け付ける。UI部34は印刷設定をDEVMODEに格納し、アプリケーションに送出する。印刷確認部302は、DEVMODEを参照して、呼び出し元のアプリケーションが特定のアプリケーションか否かを判定する。連携部35は、Previewexe32との通信を行う。例えば、描画部301が生成した印刷データをPreviewexe32に送出し、Previewexe32からDEVMODE ́を取得してUI部34に送出する。図6bはPreviewexe32の機能ブロック図の一例を示す。Previewexe32はUI部36を有する。このUI部36はプリンタドライバ30のUI部34と同じクラスから生成された別のインスタンスである。Previewexe32のUI部36はプリンタドライバ30が生成した印刷を用いてプレビュー表示を行うことができる。図7は、PC100の機能ブロック図の一例を示す。PC100は、アプリケーション31、GDIGraphicsDeviceInterface38、プリンタドライバ30、Previewexe32、及び、スプーラ37を有する。GDI38はWindows登録商標系のOS10のプログラムとして提供される。GDI38は、GDIコールをDDIコールに変換してグラフィック部33に送出する。スプーラ37は、印刷データをスプールしてプリンタ200に送出する。<プレビュー表示>本実施例ではユーザが印刷設定画面で印刷プレビュー画面を表示を選択することで、Previewexe32が動作する。図8aは、印刷設定画面に表示されるプレビュー表示のための設定例を示す図の一例である。例えば、いくつかのタブのうちの1つのユーティリティタブに印刷プレビュー画面を表示というチェックボックス501が設けられている。ユーザがチェックボックス501をチェックすると、UI部34はDEVMODEに印刷プレビュー画面を表示が選択されたことを登録しておく。図8bは、印刷開始後に表示されるプレビュー表示画面500の一例を示す図である。プレビュー欄502にアプリケーション31が表示する文書データがプレビュー表示されている。また、プレビュー表示画面500でユーザは、印刷用紙サイズ503印刷部数504カラー/白黒505両面/製本506集約507ソート508ステープル509の各設定を編集することができる。また、プレビュー表示画面500でユーザは、ジョブの編集を行うことができる。ジョブの編集では、複数のジョブの印刷順を変えたり、複数のジョブを同じ設定で印刷したり、複数のジョブを1つのジョブとして印刷することができる。ジョブの編集により、いくつかのジョブの印刷直前の状態にしておき、まとめて印刷したり同じ設定で印刷することができる。印刷設定画面で一度、ユーザが設定した印刷プレビュー画面を表示はDEVMODEに登録されているので、ユーザが印刷設定を確認せずに印刷開始の操作を行っても、プレビュー表示画面500が表示される。このため、ユーザは印刷設定を確認でき、誤った印刷設定で印刷してしまい用紙を無駄にする状況を回避できる。<1~4>以下、図7の各ブロックの動作について順に説明する。まず、図7の1~4までの処理は、ほぼ従来の印刷手順となる。1:アプリケーション31はDEVMODEをUI部34に送出することで印刷設定する。2:アプリケーション31はGDIコールにより、GDI38に印刷命令を送出する。3:GDI38はGDIコールをDDIコールへ変換し、グラフィック部33へ印刷データの生成を要求する。4印刷確認部302は、DEVMODEを参照して、呼び出し元のアプリケーション31が特定のアプリケーションか否かを判定する。図9aは、DEVMODEの一例を説明するための図の一例である。DEVMODEは、Public領域とPrivate領域の2つの領域を有する。Public領域はプリンタ200やプリンタドライバ30に関係なく共通の領域であり、OS上で動作する各プリンタドライバ30に対して共通のメンバ変数が定義されている。Private領域は、そのメンバ変数をプリンタドライバ30ごとに定義可能ないわゆる拡張領域である。図ではPublic領域にメンバ変数の一部として、dmDuplex、dmReserved1及びdmReserved2が、Private領域にmysetting01が図示されている。Private領域のメンバ変数はそれぞれに設定される値により意味が規定されている。dmDuplexにDMDUPSIMPLEXと設定されると両面印刷しないを意味し、DMDUPHORIZONTALが設定されると水平方向に裏返して両面印刷するを意味し、DMDUPVERTICALが設定されると垂直方向に裏返して両面印刷するを意味する。また、Private領域のメンバ変数にはプリンタドライバ30が独自の意味を持たせることができるので、例えばmysetting01にYesと設定されると白紙節約するを意味し、Noと設定されると白紙節約しないを意味する。一方、dmReserved1、2はPublic領域においてプリンタドライバ30が参照しないメンバ変数現在は使用されない予約領域であり、通常は0x00000000が設定される。後述するように、本実施形態では、Previewexe32がdmReserved1、2の少なくともどちらかに0x00000000以外の値を設定する。よって、印刷確認部302はdmReserved1,2を参照して、0x00000000が設定されていると一般のアプリケーション31がグラフィック部33を呼び出したと判定し、0x00000000以外が設定されていると特定のアプリケーションがグラフィック部33を呼び出したと判定する。描画部301は、一般のアプリケーション31がグラフィック部33を呼び出したと判定すると、次の描画処理を行う。図10は、描画部301が行う描画処理の処理手順を示すフローチャート図の一例である。上述したように、描画部301は印刷データとして描画データ及び制御データを生成する。しかし、プリンタ200が解釈する描画データ及び制御データと、Previewexe32が解釈する描画データ及び制御データは若干、フォーマットが異なっている。Previewexe32が解釈する描画データ及び制御データは、プリンタドライバ30が内部的に使用するフォーマットであり中間データとなる。PC100がプレビュー表示するか否かにより描画部301の内部処理を切り換えるよりも、処理を2段階に分ける方が実装が容易である。このため、描画部301は、ユーザが印刷プレビュー画面を表示をしたか否かに関係なくPreviewexe32に対応するため、前処理と後処理の2段階で印刷データを生成する。前処理と後処理で得られる印刷データを区別するため、前処理で得られる印刷データにintInternalを付加した。そして、ユーザが印刷プレビュー画面を表示を設定したか否かに応じて以下のタイミングで、描画部301は前処理と後処理をそれぞれ実行する。ユーザが印刷プレビュー画面を表示をした場合:描画部301は前処理を行った段階で処理を停止する。Previewexe32は、1度目の前処理により作成された描画データ及び制御データを用いてプレビュー表示する。プレビュー表示後、描画部301はPreviewexe32からint印刷データを取得して、2度目の前処理を行い、次いで後処理を行う。ユーザが印刷プレビュー画面を表示をしない場合:描画部301は前処理を行い、次いで後処理を実行する。すなわちいずれの場合も前処理が行われるが、後述するように、ユーザが印刷プレビュー画面を表示を設定した場合の1度目の前処理と2度目の前処理は処理内容が異なっている。ユーザが印刷プレビュー画面を表示を設定した場合の1度目の前処理と、ユーザが印刷プレビュー画面を表示を設定しない場合の前処理は同じである。また、後処理の内容はユーザが印刷プレビュー画面を表示を設定してもしなくても同様である。図11は、前処理と後処理により得られる印刷データを説明する図の一例である。制御データはプリンタ200にジョブ全体及びページ単位の制御を通知するPJLなどで記述された印刷コマンドであるので、それぞれJob制御データ、Page制御データと称することとする。描画データはアプリケーション31が生成した文書データがプリンタ200のPDLによるRAWデータに変換されたものである。図11の印刷データは文書データが2ページのものである。Jobint制御データは、1つのジョブに1つあればよいため、1つの印刷データに1つしか存在しない。これに対し、Pageint制御データとint描画データはページ毎に生成されるので、1つの印刷データにページ数分だけ含まれる。図11に示すように、描画部301は、一般のアプリケーション31から呼び出された場合、前処理において以下のデータを生成する。一般:DEVMODEからJobint制御データを作成する。一般:DEVMODEからPageint制御データを作成する。一般:文書データをint描画データに変換する。また、描画部301は、後処理において以下のデータを生成する。:Jobint制御データからJob制御データを作成する。:Pageint制御データからPage制御データを作成する。:int描画データから描画データを作成する。図12aはJobint制御データの一例を、図12bはPageint制御データの一例をそれぞれ示す。Jobint制御データには、印刷解像度、用紙サイズ、余白、部数、用紙トレイ、用紙種別、集約など、ジョブ全体の印刷の制御データが登録されている。これに対し、Pageint制御データには、原稿サイズ、原稿向き、原稿解像度、カラーモード、イメージ印刷の有無、などのページ単位の印刷の制御データが登録されている。原稿サイズ等の情報はDEVMODEやPreviewexe32に保持されていない情報である。<5~8>図7に戻り、5~8について説明する。5~8はプレビュー表示するまでの処理である。描画部301は前処理を完了すると、アプリケーション31に通知する。DEVMODEに印刷プレビュー画面を表示が登録されているので、グラフィック部33はジョブを終了する。また、アプリケーション31はUI部に印刷終了を通知する。5:プリンタドライバ30のUI部34は、DEVMODEを参照してPreviewexe32を立ち上げる。6:Previewexe32のUI部36は、プレビュー画面に表示するため、int印刷データ及びDEVMODEを連携部35へ要求する。7:連携部35はプリンタドライバ30のグラフィック部33からint印刷データ及びDEVMODEを取得して、Previewexe32のUI部36に送出する。8:Previewexe32のUI部36はint印刷データにより図8bのようなプレビュー表示を行う。図13は、5~8の処理を模式的に説明する図の一例である。図13では2つのプリンタドライバ30の処理の間に、Previewexe32が介在している。プリンタドライバ30は上記の前処理と後処理を行うが、前処理の内容だけがPreviewexe32の前後で異なっている。図7の1~4により左側のプリンタドライバ30の前処理が終了している。アプリケーション31はこの段階で、印刷処理から解放されているJoBEndでファイルを保存する。Previewexe32のUI部36は、int印刷データ及びDEVMODEを取得するので、以下の処理を行う。プリンタドライバAPIにint印刷データを渡し、プレビュー表示を依頼する。DEVMODE編集部にDEVMODEを渡し、ユーザが設定した印刷設定の受け付けとDEVMODEの編集を依頼する。なお、プリンタドライバAPIやDEVMODE編集部は、ソフトウェア実装上の表現に過ぎず、Previewexe32がプレビュー表示し、印刷設定を受け付けDEVMODEを編集してもよい。ここで、DEVMODE編集部は、ユーザの印刷設定を変更したか否かに関わりなく、DEVMODEのメンバ変数のdmReserved1及びdmReserved2に所定の値を設定する。所定の値は、0x00000000以外であればよいが、ここではSA0x53、0x41とする。図9bはPreviewexe32が編集したDEVMODEを説明する図の一例である。dmReserved1及びdmReserved2にSAを意味する16進数の文字コードが設定されている。2つのメンバ変数に分ける必要はなく、dmReserved1又はdmReserved2のいずれかに0x00000000以外の所定の値を設定すればよい。これが上記のプレビュー設定である。dmReserved1:0x53dmReserved2:0x41Public領域のメンバ変数はアプリケーションが設定することも可能な値であるため、アプリケーションPreviewexe32からdmReserved1、2に値を設定することができる。Private領域のメンバ変数に値を設定することは不可能ではないが、通常、アプリケーションはPrivate領域の中身を知ることはできない。このため、UI部やDEVMODEにアクセスするためのAPI等を使用せずに、プリンタのメーカ独自機能を使うことは困難であるが、本実施形態の手法では、アプリケーションが簡単にメーカ独自機能プレビュー設定のことを設定することができる。ユーザがプレビュー表示画面500から印刷設定やジョブ編集を行い、図8bの印刷ボタン510を押下すると、右側のプリンタドライバ30の処理が始まる。すなわち、Previewexe32は、Escape関数でint印刷データをGDI38に送信する。Escape関数はGDI38で処理しきれない印刷指示をそのまま、プリンタドライバ30に送信するためのAPIである。図14は、Previewexe32がプリンタドライバ30に送信するint印刷データを模式的に説明する図の一例である。図14aは変更前のint印刷データを示し、図14bは変更後のint印刷データをそれぞれ示す。ここで、変更には、ユーザによる変更もdmReserved1及びdmReserved2による変更も含まれる。ユーザ又はPreviewexe32による変更を現すため、図14bではDEVMODEがDEVMODE ́になっている。図13の右側のプリンタドライバ30は、図14bのint印刷データに対し前処理及び後処理を行う。<9~14>図7に戻り、9~14について説明する。9~14はPreviewexe32から受け取ったint印刷データをプリンタドライバ30がプリンタ200に送出するまでの処理である。9:Previewexe32のUI部36は、プリンタドライバ30のUI部34にDEVMODE ́を送出する。例えば、CreateDCの引数にDEVMODE ́を指定する。10:Previewexe32のUI部36は、プリンタドライバ30のグラフィック部33にint印刷データを送出する。例えば、EscapeでDEVMODE ́が含まれないint印刷データを送信する。11:GDI38は2回目のGDIコールをDDIコールへ変換し、グラフィック部33に印刷データの生成を要求する。12:グラフィック部33の印刷確認部302は、UI部34が取得したDEVMODE ́を参照して、呼び出し元のアプリケーションが特定のアプリケーションか否かを判定する。今回は、DEVMODE ́に図9bのプレビュー設定が登録されているので、印刷確認部302は特定のアプリケーションPreviewexe32から呼び出されたと判定する。13:描画部301は、印刷確認部302の判定結果に応じて前処理を行い、次いで後処理を行う。描画部301は、印刷データをスプーラ37に送出する。14:スプーラ37はプリンタ200へ印刷データを渡し、印刷指示を行う。図15は、9~14までの処理を模式的に説明する図の一例である。上記のように、Previewexe32はDEVMODE ́をUI部34に、int印刷データをグラフィック部33にそれぞれ送出している。描画部301はDEVMODE ́が必要なので、UI部36はDEVMODE ́を描画部301に送出する。なお、描画部301はOS10のシステム権限で動作し、UI部36はユーザ権限で動作するので、描画部301とUI部36は直接の通信はできないが、DEVMODE又はDEVMODE ́には共通にアクセスできる。この後、図13の右側のプリンタドライバ30の処理が開始される。上記のように、描画部301は、印刷確認部302が特定のアプリケーションから呼び出されたという判定結果に基づき、前処理において以下のデータを生成する。特定:DEVMODE ́からJobint制御データを作成する。特定:Previewexe32から取得したPageint制御データを転用するDEVMODE ́からPageint制御データを作成しない。特定:int描画データを後処理に渡す。すなわち、描画部301は特定のアプリケーションPreviewexe32から呼び出された場合、すでに作成されているint印刷データを取得し、処理が不要なデータに対しては処理をスキップする。描画部301は、後処理において以下のデータを生成する。:Jobint制御データ新たに作成されたものからJob制御データを作成する。:Pageint制御データ元のままからPage制御データを作成する。:int描画データ元のままから描画データを作成する。後処理により得られた印刷データにより、プリンタ200は従来どおり印刷することができる。動作手順図16は、PC100の動作手順を説明するシーケンス図の一例を示す。なお、図ではGDI38などを省略した。S1:ユーザが操作することでアプリケーション31がUI部34を起動させ、ユーザは印刷設定を行う。アプリケーション31はUI部34に印刷設定するDEVMODEを作成。S2:アプリケーション31はGDI38を介してグラフィック部33を呼び出し、印刷を開始する。S21:グラフィック部33の描画部301は、DEVMODEを参照して、一般のアプリケーション31から呼び出された際の前処理一般~一般を行う。DEVMODEと作成したint印刷データをファイルとして保存する。S3:アプリケーション31はint印刷データが生成されるとUI部34に印刷終了を指示する。S31:UI部34は、DEVMODEに印刷プレビュー画面を表示が設定されているので、Previewexe32を起動する。S311:Previewexe32はint印刷データ及びDEVMODEを取得する。S312:Previewexe32は、取得したint印刷データ及びDEVMODEを削除しておく。これは、すでにPreviewexe32がint印刷データ及びDEVMODEを確保したので、2つのint印刷データ及びDEVMODEが存在することを回避するためである。なお、削除はこのタイミングでなくプレビュー表示後でもよい。S313:Previewexe32はプレビュー表示する。S314:Previewexe32はDEVMODEのdmReserved1及びdmReserved2にプレビュー設定を行う。S4Previewexe32は、UI部34に印刷開始を要求する。S5:Previewexe32は、Escape関数でGDI38をコールして印刷を開始する。これにより、描画部301はDEVMODE ́を参照して、特定~特定及び後処理を行う。以上のように、本実施形態のプリンタドライバ30は、特定のアプリケーションがDEVMODEにプレビュー設定することで、グラフィック部33は特定のアプリケーションから呼び出されたことを検出して、特殊な処理を行うことができる。変形例本実施例では、Previewexe32がDEVMODEのdmReserved1及びdmReserved2にプレビュー設定したが、Public領域の他のメンバ変数にプレビュー設定することも可能である。図17は、Public領域の他のメンバ変数に登録されるプレビュー設定の一例を示す図である。dmDisplayFrequencyは、ディスプレイの周波数をHz単位で指定するメンバ変数である。プリンタ200の印刷時にはこのメンバ変数は作用しない印刷データの作成のためには参照されないので、Previewexe32がプレビュー設定に利用することができる。dmDisplayFrequencyにはどのような値を設定してもよいが、通常は数値が設定されるので、Previewexe32は数値以外の文字コード例えば、Prevなどを設定すればよい。このように、本実施例のプリンタドライバ30は、デバイスによっては使用しないDEVMODEのメンバ変数を使用して、グラフィック部33の処理内容を制御できる。本実施例では、DEVMODEを使用しないで、グラフィック部33が呼び出したアプリケーションを判別するプリンタドライバ30について説明する。アプケーションは文書データの印刷時、GDI38をStartDoc関数でコールする。StartDoc関数の書式は例えば、以下のようになる。intStartDocなお、hdcは、すでにアプリケーション31がコールしたCreateDC関数の戻り値に含まれている。DOCINFOはDOCINFO構造体と呼ばれ、文書データの文書名と出力ファイルの文書名が指定される。lpdiは、DOCINFO構造体へのポインタである。図18aは、DOCINFO構造体の書式の一例を示す図である。cbSizeにはDOCINFO構造体のサイズが指定される。lpszDocNameには、文書データの名前が指定される。lpszOutputには、出力ファイルの名前を表す文字列へのポインタが指定されるが、NULLとしておくこともできる。lpszDataTypeには、印刷ジョブを記録するためのデータ型を表す文字列が指定される。fwTypeは、印刷ジョブの追加情報が指定される。アプリケーション31は、文書データの文書名を管理しているので、文書名は既知である。したがって、StartDoc関数でGDIコールする際に、DOCINFO構造体のlpszDocNameに文書名を設定しておくことで、GDI38に文書データの文書名を通知できる。そして、GDI38はDDIコールでグラフィック部33を呼び出す際、DrvStartDoc関数を使用する。図18bは、DrvStartDoc関数の書式の一例を示す図である。psoにはSURFOBJ構造体へのポインタが格納される。pwszDocNameには、印刷される文書データの文書名へのポインタが格納される。dwJobIdには、ジョブを一意に識別するためのJOBIDが格納される。したがって、グラフィック部33は、DrvStartDoc関数の引数pwszDocNameにより文書データの文書名を取得することができる。そこで、特定のアプリケーションPreviewexe32がStartDoc関数を呼び出す際、lpszDocNameに設定する文書データの文書名に特定の名前を付与することで、グラフィック部33は特定のアプリケーションPreviewexe32から呼び出されたと判定できる。図19は、Previewexe32が付与する文書名の一例を示す。Previewexe32は、例えばメモ帳-無題-という文書データの文書名に対し、PREVIEWのような接尾語を付加して、lpszDocNameに設定する。なお、文書作成ソフトなどのアプリケーション31が管理する文書名は、Jobint制御データに含まれている。なお、図19では、文書名に接尾語を付与したが、接頭語を付与してもよい。この場合、Previewexe32は、例えばメモ帳-無題という文書データの文書名に対し、PREVIEW-のような接頭語を付与する。よって、lpszDocNameにはPREVIEW-メモ帳-無題という文書名が付与される。また、PREVIEWは一例であって、およそ、文書名の先頭や末尾にユーザが付けることない単語や用語であればよい。例えば、SpecialApplicationなどである。また、このような意味のある単語や用語である必要はなく、所定文字数以上の不作為の文字、記号、アルファベット、及び、数字の組み合わせなどでもよい。図20は、PC100の動作手順を説明するシーケンス図の一例を示す。図20の処理はS314までは図16と同様である。S1:ユーザが操作することでアプリケーション31がUI部34を起動させ、ユーザは印刷設定を行う。アプリケーション31はUI部34に印刷設定するDEVMODEを作成。S2:アプリケーション31はGDI38を介してグラフィック部33を呼び出し、印刷を開始する。S21:グラフィック部33の描画部301は、DEVMODEを参照して、一般のアプリケーション31から呼び出された際の前処理一般~一般を行う。DEVMODEと作成したint印刷データをファイルとして保存する。S3:アプリケーション31はint印刷データが生成されるとUI部34に印刷終了を指示する。S31:UI部34は、DEVMODEに印刷プレビュー画面を表示が設定されているので、Previewexe32を起動する。S311:Previewexe32はint印刷データ及びDEVMODEを取得する。S312:Previewexe32は、取得したint印刷データ及びDEVMODEを削除しておく。これは、すでにPreviewexe32がint印刷データ及びDEVMODEを確保したので、2つのint印刷データ及びDEVMODEが存在することを回避するためである。なお、削除はこのタイミングでなくプレビュー表示後でもよい。S313:Previewexe32はプレビュー表示する。S32:Previewexe32は、GDI38をコールするまでに、lpszDocNameにPREVIEW-を付加した文書名を設定する。S4:Previewexe32はUI部34を起動させ、印刷設定する。本実施例ではユーザが印刷設定を変更しなければUI部34にはDEVMODEが送出される。S5:Previewexe32は、GDI38に対しStartDoc関数をコールすることで印刷開始する。S51:GDI38は、DrvStartDoc関数によりグラフィック部33をDDIコールする。これにより、描画部301はpwszDocNameを参照して、特定~特定の処理及び後処理を行う。以上のように、本実施形態のプリンタドライバ30では、特定のアプリケーションが文書データに特定の文書名を設定することで、グラフィック部33が特定のアプリケーションから呼び出されたことを検出して、特殊な処理を行うことができる。"