(57)【要約】【課題】  デバイスドライバ固有の設定情報を格納するための拡張領域を定義したのであるが、一方で、アプリケーションとデバイスドライバとが、固有領域を介して情報を授受することが困難という課題があった。【解決手段】  デバイスドライバは、前記オペレーティングシステムのインタフェースを用いて前記拡張領域の管理情報を取得する取得手段と、前記取得手段が取得した管理情報を用いて、前記拡張領域に記憶されたデバイスドライバ固有の設定情報を認識する認識手段と、前記認識手段が認識したデバイスドライバ固有の設定情報を、アプリケーションに対して通知する処理を制御する通知制御手段と、を有する。【選択図】  図６
2005148928.tif 000002
【特許請求の範囲】
【請求項１】
拡張モジュールとコアモジュールを有するデバイスドライバを搭載した情報処理装置において、
前記デバイスドライバは、アプリケーション及びデバイスドライバが読み書き可能なメモリ領域を公開領域として、前記拡張モジュールからは読み書き可能であるがアプリケーションからは直接読み書きできないメモリ領域を拡張領域として管理するオペレーティングシステムと協働可能なデバイスドライバであって、
前記デバイスドライバは、前記オペレーティングシステムのインタフェースを用いて前記拡張領域の管理情報を取得する取得手段と、
前記取得手段が取得した管理情報を用いて、前記拡張領域に記憶されたデバイスドライバ固有の設定情報を認識する認識手段と、
前記認識手段が認識したデバイスドライバ固有の設定情報を、アプリケーションに対して通知する処理を制御する通知制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記オペレーティングシステムのインタフェースは、前記デバイスドライバとアプリケーションとの間でデバイスドライバに固有の設定情報をやり取りするための拡張インタフェースであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記管理情報は、前記拡張領域のアドレス情報を算出するための管理情報であって、
前記認識手段は、前記アドレス情報を用いて拡張領域を参照し、参照した拡張領域から前記デバイスドライバ固有の設定情報を読み出すことにより前記デバイスドライバ固有の設定情報を認識し、
前記通知手段は、前記アプリケーションの機能が表示制御する表示画面に表示させるべく、前記設定情報を前記アプリケーションに通知することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
アプリケーションから、前記オペレーティングシステムのインタフェースを用いてデバイスドライバに対してデバイスドライバ固有の設定情報を通知し、前記デバイスドライバは、前記取得手段が取得した管理情報を用いて、前記拡張領域に対して前記アプリケーションから通知されたデバイスドライバ固有の設定情報を書き込む処理を制御する書き込み制御手段をさらに備えることを特徴とする請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
前記取得手段が取得する管理情報は、前記コアモジュール用拡張領域のサイズを含むものであることを特徴とする請求項１乃至４のいずれかに記載の情報処理装置。
【請求項６】
拡張モジュールとコアモジュールを有するデバイスドライバを搭載した情報処理方法において、
前記デバイスドライバは、アプリケーション及びデバイスドライバが読み書き可能なメモリ領域を公開領域として、前記拡張モジュールからは読み書き可能であるがアプリケーションからは直接読み書きできないメモリ領域を拡張領域として管理するオペレーティングシステムと協働可能なデバイスドライバであって、
前記デバイスドライバは、前記オペレーティングシステムのインタフェースを用いて前記拡張領域の管理情報を取得する取得工程と、
前記取得手段が取得した管理情報を用いて、前記拡張領域に記憶されたデバイスドライバ固有の設定情報を認識する認識工程と、
前記認識手段が認識したデバイスドライバ固有の設定情報を、アプリケーションに対して通知する処理を制御する通知制御工程と、
を有することを特徴とする情報処理方法。
【請求項７】
前記オペレーティングシステムのインタフェースは、前記デバイスドライバとアプリケーションとの間でデバイスドライバに固有の設定情報をやり取りするための拡張インタフェースであることを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記管理情報は、前記拡張領域のアドレス情報を算出するための管理情報であって、
前記認識工程は、前記アドレス情報を用いて拡張領域を参照し、参照した拡張領域から前記デバイスドライバ固有の設定情報を読み出すことにより前記デバイスドライバ固有の設定情報を認識し、
前記通知工程は、前記アプリケーションの機能が表示制御する表示画面に表示させるべく、前記設定情報を前記アプリケーションに通知することを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
アプリケーションから、前記オペレーティングシステムのインタフェースを用いてデバイスドライバに対してデバイスドライバ固有の設定情報を通知し、前記デバイスドライバは、前記取得工程で取得された管理情報を用いて、前記拡張領域に対して前記アプリケーションから通知されたデバイスドライバ固有の設定情報を書き込む処理を制御する書き込み制御工程をさらに備えることを特徴とする請求項６乃至８のいずれかに記載の情報処理方法。
【請求項１０】
前記取得工程で取得される管理情報は、前記コアモジュール用拡張領域のサイズを含むものであることを特徴とする請求項６乃至９のいずれかに記載の情報処理方法。
【請求項１１】
請求項６乃至１０のいずれかの方法をコンピュータのＣＰＵに実行させることを特徴とする制御プログラム。
【請求項１２】
アプリケーションと、拡張モジュールとコアモジュールを有するデバイスドライバを搭載した情報処理システムにおいて、
前記デバイスドライバは、アプリケーション及びデバイスドライバが読み書き可能なメモリ領域を公開領域として、前記拡張モジュールからは読み書き可能であるがアプリケーションからは直接読み書きできないメモリ領域を拡張領域として管理するオペレーティングシステムと協働可能なデバイスドライバであって、
前記デバイスドライバは、前記オペレーティングシステムのインタフェースを用いて前記拡張領域の管理情報を取得する取得手段と、
前記取得手段が取得した管理情報を用いて、前記拡張領域に記憶されたデバイスドライバ固有の設定情報を認識する認識手段と、
前記認識手段が認識したデバイスドライバ固有の設定情報を、アプリケーションに対して通知する処理を制御する通知制御手段と、
前記アプリケーションは、前記デバイスドライバから通知されたデバイスドライバ固有の設定情報を獲得する獲得する手段と、
前記獲得したドライバ固有の設定情報を表示画面に表示する処理を制御する表示制御手段を備えることを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
デバイスドライバを搭載可能な情報処理装置、方法、制御プログラム等に関するものである。
【背景技術】
【０００２】
アプリケーション及びデバイスドライバが読み書き可能なメモリ領域を公開領域として、デバイスドライバからは読み書き可能であるがアプリケーションからは直接読み書きできないメモリ領域を拡張領域として管理するオペレーティングシステムが存在していた。
【０００３】
例えばオペレーティングシステムの一例であるＷｉｎｄｏｗｓ（登録商標）システムにおいてデバイスドライバの一例であるプリンタドライバの設定情報は、ＤＥＶＭＯＤＥ構造体に格納される。ここでＤＥＶＭＯＤＥ構造体は公開領域の一例であるパブリック領域と固有領域の一例であるプライベート領域）２つから構成されている。（特許文献１参照。Ｗｉｎｄｏｗｓ（登録商標）は、マイクロソフト社の商標である。以下、単にＷｉｎｄｏｗｓ（登録商標）と記載するときは、マイクロソフト社の商品名を表す。）
ここでパブリック領域には用紙サイズ、印刷品位、オリエンテーションなど印刷設定の一般的な項目が保持されており、Ｗｉｎｄｏｗｓ（登録商標）システムにおいてその構造が公開されていることから、アプリケーションはそのプログラム内部で直接現在の設定を参照し、同時にアプリケーションから直接更新することが可能である。
【０００４】
これに対し、ＰＲＩＶＡＴＥ領域には上記パブリック領域とは異なり、プリンタドライバの仕様に固有の情報が保持される、同時にＷｉｎｄｏｗｓ（登録商標）システムにおいては、プリンタドライバごとにその内部構造が異なると定義されている。アプリケーションは、ＰＲＩＶＡＴＥ領域の内部構造を知ることができない仕組みになっている。
【０００５】
一方近年は、デバイスドライバ固有の情報をアプリケーションにおいて直接ハンドリングする要求が増えてきている。
【０００６】
しかしながら、前述のとおり従来のシステムではアプリケーションがＰＲＩＶＡＴＥ領域の内容を更新又は読み出す、つまりプリンタドライバ固有の設定を更新又は読み出す場合は、プリンタドライバに対してドライバの設定画面を開くよう促し、プリンタドライバを起動し、ユーザのデバイスドライバに対する直接のプリンタドライバへの入力等に応じて入力された設定値のＤＥＶＭＯＤＥを返却するよう命令を発行する術しかなかった。
【特許文献１】特開２００３−１６２３８８
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述の例では、デバイスドライバ固有の設定情報を格納するための拡張領域を定義したのであるが、一方で、アプリケーションとデバイスドライバとが、固有領域を介して情報を授受することが困難という課題があった。
【０００８】
さらに、アプリケーションがプリンタドライバ固有の設定、つまりＰＲＩＶＡＴＥ領域に保存されている設定を更新する場合は、必ずプリンタドライバの設定画面を表示するしか手段が無い。しかしながらこれはユーザに煩雑な操作を行わせる原因となるため、理想的にはアプリケーションの設定画面上にプリンタドライバの固有の設定項目がメニューとして表示したいという課題があった。
【０００９】
さらに、デバイスドライバ固有の設定情報は、コアドライバを拡張する機能を持つ拡張モジュールからも固有領域を介して授受する必要があるが、これも実現されていなかった。
【００１０】
本願発明は上述の少なくとも一つの課題を解決すべく、なされたものである。本願発明の一つの側面は、アプリケーションとデバイスドライバとの親和性を高めることにある。
【００１１】
さらに本願発明のさらに別の側面は、アプリケーションとデバイスドライバとが、デバイスドライバ固有の情報を格納するための固有領域を介して情報を授受することを可能にするということにある。
【課題を解決するための手段】
【００１２】
実施形態においては、拡張モジュールとコアモジュールを有するデバイスドライバを搭載した情報処理装置において、前記デバイスドライバは、アプリケーション及びデバイスドライバが読み書き可能なメモリ領域を公開領域として、前記拡張モジュールからは読み書き可能であるがアプリケーションからは直接読み書きできないメモリ領域を拡張領域として管理するオペレーティングシステムと協働可能なデバイスドライバであって、前記デバイスドライバは、前記オペレーティングシステムのインタフェースを用いて前記拡張領域の管理情報を取得する取得手段と、前記取得手段が取得した管理情報を用いて、前記拡張領域に記憶されたデバイスドライバ固有の設定情報を認識する認識手段と、前記認識手段が認識したデバイスドライバ固有の設定情報を、アプリケーションに対して通知する処理を制御する通知制御手段と、を有することを特徴とする情報処理装置、方法、システム制御プログラムなどが開示される。
【発明の効果】
【００１３】
本願発明の一つの側面によれば、アプリケーションとデバイスドライバとの親和性を高めることができる。
【００１４】
さらに本願発明のさらに別の側面によれば、アプリケーションとデバイスドライバとが、デバイスドライバ固有の情報を格納するための固有領域を介して情報を授受することを可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。実施形態では、Ｗｉｎｄｏｗｓ（登録商標）システムで定義されているプリンタドライバ命令（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ、略して以後ＤＤＩと呼ぶ）とは別に、独自のプリンタドライバ命令（以後拡張ＤＤＩと呼ぶ）を新たに定義し、アプリケーションはプリンタドライバに用意された拡張ＤＤＩを直接利用することで、プリンタドライバの設定画面を表示させることなしに、アプリケーションの設定画面上にプリンタドライバ固有の設定項目をメニューとして用意する手段を用いる。一方プリンタドライバ開発ベンダーが開発するプリンタドライバの提供形態においては、以下の２つの提供形態が存在する。
【００１６】
１つはプリンタドライバ開発ベンダーが全てのプリンタドライバモジュールを開発提供する形態（以後モノリシックプリンタドライバと呼ぶ）である。もう１つはプリンタドライバ開発ベンダーが、ＵＩプラグインモジュールとレンダリングプラグインモジュールのみを提供し、他のモジュールはＷｉｎｄｏｗｓ（登録商標）システムにて提供されているモジュールを利用する形態（以後ユニバーサルプリンタドライバと呼ぶ）。特にユニバーサルプリンタドライバの形態では、Ｗｉｎｄｏｗｓ（登録商標）システムで定義されたＤＤＩでは、固有領域の一例であるＵＩプラグインモジュールのＰＲＩＶＡＴＥ領域のアドレスはＷｉｎｄｏｗｓ（登録商標）システムにより提供されるが、本実施形態の手段である、Ｗｉｎｄｏｗｓ（登録商標）システムで定義されていない独自の拡張ＤＤＩを利用する場合はＵＩプラグインモジュールのＰＲＩＶＡＴＥ領域を知る方法が提供されないため、ＵＩプラグインモジュールはＰＲＩＶＡＴＥ領域を更新することができない。
【００１７】
しかしながら本実施形態では、上記の問題を解決しつつ、２つのいずれのプリンタドライバ形態に対しても、拡張ＤＤＩを新たに定義しアプリケーションがプリンタドライバの設定画面を表示することなしに、アプリケーションが直接プリンタドライバ固有の設定項目を更新することが可能となる手法を提供する。
【００１８】
ホストコンピュータの構成を以下に示す。図１はホストコンピュータの概略を示す構成図である。ホストコンピュータ１−１は中央演算処理装置１−６、ハードディスク１−２、インタフェース１−３、記憶媒体装置１−４、揮発性記憶領域１−５、表示装置１−７、入力装置１−８で構成される。ハードディスク１−２は、オペレーティングシステムや文書や画像を作成もしくは編集するための各種アプリケーションプログラムを記憶する領域である。また、本ハードディスク１−２に対してプリンタドライバはインストールされる。インタフェース１−３は、ホストコンピュータ１−１から出力される印刷命令を印刷装置に送信するためのインタフェースである。具体的にはパラレルインタフェース、ＵＳＢインタフェース、赤外線通信もしくはネットワークインタフェースなどである。記憶媒体読取装置１−４はＣＤ−ＲＯＭやフロッピー（登録商標）ディスク等の記憶媒体に保存された内容を読み取る装置である。具体的にはＣＤ−ＲＯＭドライブやフロッピー（登録商標）ディスクドライブなどである。揮発性記憶領域１−５は、一時的に情報を保持可能な領域であり、ハードディスク１−２に保存されているオペレーティングシステムや文書や画像を作成もしくは編集するための各種アプリケーションプログラムが中央演算処理装置１−６で実行する際に一時的に情報を保持する領域として利用される。プリンタドライバに関しても中央演算処理装置１−６で実行される際に揮発性記憶領域１−５が一時的に情報を保存する領域として利用される。中央演算処理装置１−６はソフトウエアプログラムに従いホストコンピュータ１−１の全体を制御する。表示装置１−７はＣＲＴもしくは液晶ディスプレイなどつまりディスプレイを表し、アプリケーションソフトウエアの画面を表示したり、プリンタドライバの設定画面の現在の状態を表示したりすることが可能である。入力装置１−８はマウスやキーボードなどを表し、表示装置１−７で表示したインストールプログラムの画面や、プリンタドライバの設定画面などに対して各種入力するために利用される。
【００１９】
プリンタドライバの構成を以下に示す。図２はプリンタドライバがホストコンピュータ２−１上にインストールされたのちの、印刷装置の構成要素としてのプリンタドライバを表す構成図である。ホストコンピュータ２−１と印刷装置２−５はインタフェース２−１０で接続されている。具体的にはセントロニクスインタフェース、ＵＳＢインタフェース、赤外線通信もしくはネットワークインタフェース等である。主に文書や画像を作成または編集可能なアプリケーション２−６より印刷命令２−２がオペレーティングシステムのアプリケーションプログラミングインタフェースの一例であるグラフィックスドライバインタフェース（以後ＧＤＩ）２−７にＧＤＩ命令２−２として発行されると、ＧＤＩ２−７はスプーラ２−４を経由してプリンタドライバ２−８が公開しているデバイスドライバインタフェース（以後ＤＤＩ）命令発行される。ＤＤＩ命令を受けたプリンタドライバ２−８はＤＤＩ命令を印刷コマンド命令に変換し、プスーラ２−４を経由し双方向通信制御部２−９へ渡す。双方向通信制御部２−９は、上記インタフェース２−１０を利用し、印刷装置が判別可能な印刷命令を印刷装置２−１１に送信する。印刷命令を受信した印刷装置２−５の双方向通信制御部２−１１は、印刷命令を印刷制御部２−１２に渡し、印刷制御部２−１２は指定の用紙に印刷処理を実行する。
【００２０】
モノリシックプリンタドライバの構成例は以下のようになる。図３は、プリンタドライバ開発ベンダーが全てのプリンタドライバモジュールを開発提供する「モノリシックプリンタドライバ」という実装の一形態を表す構成図である。このモノリシックプリンタドライバは、図１のハードディスクに格納され、中央処理演算装置により読み出され実行される。また図４はモノリシックドライバにおけるＤＥＶＭＯＤＥ構造体を表す構成図である。図４において、まずＤＥＶＭＯＤＥ構造体とは、プリンタドライバが利用する印刷設定、例えば用紙サイズ、部数、印刷品質などの一般的な項目から、プリンタドライバの仕様に特化した情報、たとえばインクカートリッジの種類などを全て含めた全ての印刷設定値が保持される構造体である。またＤＥＶＭＯＤＥ構造体はアプリケーションソフトウエア３−４において図１の揮発性記憶領域１−５に保持されるが、構成としてパブリック領域４−１とＰＲＩＶＡＴＥ領域４−６の２つが揮発性記憶領域１−５に連続して配置される。
【００２１】
ここでパブリック領域４−１は、主に、パブリック領域のサイズ４−３と、印刷設定のうち一般的な項目である用紙サイズ４−３、部数４−４、印刷品質４−５などが保持されている。またパブリック領域４−１のこれら内部構成はプリンタドライバの種類を問わず統一の構成と定義されており、同時にアプリケーションソフトウエアにも公開されていることから、アプリケーションソフトウエアが直接各項目にアクセスすることが可能である。
【００２２】
一方ＰＲＩＶＡＴＥ領域４−６は、プリンタドライバ毎の固有の情報を保持する領域として定義されている。また同時にＰＲＩＶＡＴＥ領域４−６の構成はプリンタドライバ毎に独自の構成を持つことが許されているため、アプリケーションソフトウエアはその構成を知ることができず、ゆえに直接各項目にアクセスすることができない。つまりＰＲＩＶＡＴＥ領域の各項目にアクセスできるのは、内部構成を知っているプリンタドライバだけ可能となる。本実施例では例えば、拡張領域の一例であるＰＲＩＶＡＴＥ領域４−６にプリンタドライバ固有の設定情報の一例であるインクカートリッジの種類４−７を保持することとする。
【００２３】
ここで、プリンタドライバがＰＲＩＶＡＴＥ領域４−６にアクセスするためには、ＰＲＩＶＡＴＥ領域の先頭アドレス４−９を知らなければならないが、ＰＲＩＶＡＴＥ領域の先頭アドレス４−９はアプリケーションから指定されたパブリック領域の先頭アドレス４−８より、パブリック領域のサイズ４−２を参照し、パブリック領域の先頭アドレス４−８のアドレスに、パブリック領域のサイズ４−９を追加することでＰＲＩＶＡＴＥ領域の先頭アドレス４−１０を求めることが可能である。
【００２４】
図３の説明に戻る。まず図３においてモノリシックプリンタドライバ３−９は、主にモノリシックドライバＵＩ３−６と、モノリシックドライバレンダリング３−７で構成されている。具体的にモノリシックドライバＵＩ３−６とモノリシックドライバレンダリング３−７はダイナミックリンクライブラリ（ＤＬＬ）の形態で構成され、２つのＤＬＬはプリンタドライバベンダが全て開発及び提供する。一般的にアプリケーション３−４が印刷を実行する手順は、印刷設定を行う手順と印刷を開始する手順の２つに分けられる。まず印刷設定を行う手順を説明する。アプリケーション３−４は、印刷設定項目である用紙サイズやオリエンテーション、印刷品質などの全ての設定値をＤＥＶＭＯＤＥ構造体として獲得し、揮発性記憶領域１−５に保持する必要がある。
【００２５】
そこでアプリケーション３−４は、図４におけるパブリック領域４−１上に存在する用紙サイズ４−３や部数４−４、印刷品質４−５などは内部構成を知っているのでアプリケーションソフトウエアが自身のソースコード上でＤＥＶＭＯＤＥ構造体上の値を変更することが可能である。
【００２６】
その一方でアプリケーション３−４は、図４におけるＰＲＩＶＡＴＥ領域４−１上に存在するインクカートリッジの種類４−７においてはＰＲＩＶＡＴＥ領域４−１の構成を知らないためアプリケーション３−４が直接値を変更することはできない。そこで、アプリケーション３−４がＰＲＩＶＡＴＥ領域４−１上の値を変更するためには、一般的にはモノリシックドライバＵＩ３−６が公開するＤＤＩ命令郡３−５のうち、プリンタドライバに対して「設定画面を表示し、ユーザに設定を更新させ、結果をＤＥＶＭＯＤＥ構造体として返却する」という命令を行うことで、モノリシックドライバＵＩ自身に設定画面を表示させてその設定結果をＤＥＶＭＯＤＥ構造体として獲得する手法を取る。
【００２７】
次にアプリケーション３−４が印刷を開始する手順を説明する。前述の印刷設定を行う手順で揮発性記憶領域１−５に獲得したＤＥＶＭＯＤＥ構造体をＧＤＩ３−２が公開する印刷開始命令のパラメータとして渡す。同時に印刷対象となる描画命令も渡す。ＧＤＩ３−２はアプリケーション３−４から獲得したＤＥＶＭＯＤＥ構造体を、渡された描画命令と共にモノリシックドライバレンダリング３−７に渡す。そして、モノリシックドライバレンダリング３−７は、渡された描画命令の内容を、別途渡されたＤＥＶＭＯＤＥ構造体の印刷設定に従って印刷装置２−５の印刷制御部２−１２が理解可能な印刷コマンドに変換し、その印刷コマンドをプリントスプーラ３−３に送信する。
【００２８】
モノリシックプリンタドライバの拡張ＤＤＩ実施例は以下のようになる。上記の説明は、定義された一般のアプリケーションの印刷について解説した。よってアプリケーション３−４が印刷設定を行う手順において、アプリケーション３−４自身が表示できる印刷設定画面は例えば図９の９−１のようなる。
【００２９】
図９の９−１はアプリケーションの印刷設定画面の例だが、アプリケーションはＤＥＶＭＯＤＥ構造体のうちのパブリック領域４−１しかアクセスできないため、パブリック領域４−１に存在する用紙サイズ４−３、部数４−４、印刷品質４−５をそれぞれメニューとして用紙サイズ９−２、部数９−３、印刷品位９−４として表示することしかできない。よってＰＲＩＶＡＴＥ領域４−６に保持しているインクカートリッジの種類４−７を表示することはできない。インクカートリッジの種類４−７をユーザが変更するためには、別途３−５のＤＤＩ郡を用いてプリンタドライバの設定画面を新たに表示しなければならない。
【００３０】
なお、上述の例ではインクカートリッジの例を掲げたが、カートリッジ，カートリッジ検知ボタンのＯＮ及びＯＦＦ、色調整に関する設定、印刷プレビューのＯＮ及びＯＦＦ、プリント時に立ち上がるドライバヘルプ表示アプリであるプリントアドバイザのＯＮ，ＯＦＦなど、出力用紙サイズ、印刷の種類、ふちなしはみ出し量、自動両面ユニットを使用するか否か、逆順印刷をするか否かの設定、スタンプ印刷をするか否かの設定、背景印刷に関する設定、イラストタッチの画像処理を行うか否かの設定、単色効果を適用するか否かの設定、鮮やかに写真を印刷するモードであるＶＩＶＩＤフォトモードを適用するか否かの設定、イメージデータ補正に関する設定、デジカメノイズ除去に関する設定なども、カートリッジの種類４−７と同様に、プリンタドライバ固有の情報として拡張領域に管理される。これらの設定情報を読み出してアプリケーション側のユーザインタフェースに表示して、アプリケーションからの直接の設定及び表示が可能となる。
【００３１】
しかしながらこれはユーザに煩雑な操作を行わせる原因となるため、理想的には図９の９−１０に示す例のように、アプリケーションの設定画面上にプリンタドライバの固有の設定項目、つまりこの例ではインクカートリッジの種類９−１１が追加されているが、このようにプリンタドライバの固有の設定項目もアプリケーションの印刷設定画面９−１０上にメニューとして表示されているほうが望ましく理想的である。
【００３２】
そこで、本実施形態では図９に示すようにアプリケーションの設定画面９−１０にプリンタドライバの固有の設置項目であるＰＲＩＶＡＴＥ領域の情報を更新させる手段を、一般的なドライバ命令として定義されているＤＤＩ命令とは別の、独自のプリンタドライバ命令（以後拡張ＤＤＩと呼ぶ）という手法を設ける。
【００３３】
まず図３において、モノリシックドライバＵＩ３−６は、ＤＤＫで定義された標準のＤＤＩ命令郡３−５とは別に拡張ＤＤＩ３−９をサポートする。具体的にはダイナミックリンクライブラリとして構成されるモノリシックドライバＵＩ３−６が外部にｅｘｐｏｒｔする関数として拡張ＤＤＩ３−９を用意する。ここでアプリケーション３−４は、図９の９−１０に示すようにプリンタドライバ独自の設定であるインクカートリッジの種類９−１１のメニューを表示するために、アプリケーション３−４は拡張ＤＤＩ３−９に直接アクセスする構成を取る。
【００３４】
以下にアプリケーションが拡張ＤＤＩを利用するフローを説明する。図１１は、図３に示すアプリケーションが、図９の９−１１に示すアプリケーションの印刷設定画面を初期化するための拡張ＤＤＩ命令を処理するシーケンスのフローチャートである。なおこれらフローチャートの内容は、アプリケーションとして記憶媒体例えば図１のハードディスクに記録されており、ハードディスクから読み出されて図１の揮発性記憶領域１−５に一時的に保存され、中央演算処理装置１−６において実行される。ステップ１１−１から開始し、ステップ１１−２で、プリンタドライバが拡張ＤＤＩ命令をサポートしているか、つまり拡張ＤＤＩ命令でインクカートリッジの設定変更が可能であるかを判断し、サポートしている場合はステップ１１−３において、インクカートリッジの種類メニューを可視状態とする。その後ステップ１１−４に進む。一方ステップ１１−２で拡張ＤＤＩ命令でインクカートリッジの設定変更が不可と判断した場合はステップ１１−４に進む。この場合インクカートリッジの種類メニューは可視状態とならない。ステップ１１−４では、アプリケーションはＤＥＶＭＯＤＥ構造体のパブリック領域である用紙サイズメニューを表示しステップ１１−５に進む。ステップ１１−５ではパブリック領域の部数メニューを表示しステップ１１−６へ進む。ステップ１１−６ではパブリック領域の印刷品質メニューを表示しステップ１１−７へ進み終了する。
【００３５】
このフローにおいてステップ１１−４、ステップ１１−５、ステップ１１−６では、アプリケーションはＤＥＶＭＯＤＥ構造体のパブリック領域の構造を知っているために、拡張ＤＤＩ命令を利用することは無い。
【００３６】
またステップ１１−１０から１１−１５は、ステップ１１−３のインクカートリッジの種類メニューを表示するために拡張ＤＤＩ命令を利用する詳細なシーケンスのフローチャートである。ステップ１１−１０から開始し、ステップ１１−１１にてアプリケーションは拡張ＤＤＩにて現在プリンタドライバで選択できるインクカートリッジの種類を列挙しステップ１１−１２へ進む。ステップ１１−１２では前記列挙したインクカートリッジの内容で、メニューであるコンボボックス内のリストを更新し、ステップ１１−１３へ進む。ステップ１１−１３では、次にコンボボックスのどの項目を選択状態とするかを判断するために、拡張ＤＤＩにてインクカートリッジの現在の値を取得し、ステップ１１−１４へ進む。ステップ１１−１４では、ステップ１１−１３で取得した現在の値に合致したコンボボックス内の項目を表示状態とし、１１−１５で終了する。このフロー手順により、アプリケーションは拡張ＤＤＩを利用して項目メニューの初期化が可能となる。
【００３７】
図１２は、図３に示すアプリケーションが、図９に示すアプリケーションの印刷設定画面において、インクカートリッジの種類９−１１のメニューでインクカートリッジの種類を変更し印刷開始する場合のシーケンスを表すフローチャートである。ステップ１２−１０から開始し、ステップ１２−１１にて、ユーザがインクカートリッジのコンボボックスを変更した場合、ステップ１２−１２にて、アプリケーションは、ユーザが変更したインクカートリッジ種類を表すＩＤを拡張ＤＤＩにて指定する。次にステップ１２−１３にて、拡張ＤＤＩの出力情報として、ステップ１２−１２で指定した新しいインクカートリッジの種類にＰＲＩＶＡＴＥ領域が更新されたＤＥＶＭＯＤＥ構造体を取得する。アプリケーションは次にステップ１２−１４にて、取得したＤＥＶＭＯＤＥ構造体を印刷開始命令のパラメータとして印刷処理を開始する。これにより、アプリケーションは拡張ＤＤＩを利用して、アプリケーション自身がその構造を知らないＰＲＩＶＡＴＥ領域に保持されたインクカートリッジの種類をアプリケーション自身が持つメニューで更新することができ、結果としてユーザにプリンタドライバの設定画面を表示することなしにインクカートリッジの種類を更新して印刷を開始することが可能となる。
【００３８】
拡張ＤＤＩの入力及び出力情報を以下に説明する。図１０は、それぞれ図１１及び図１２に示した、アプリケーションが拡張ＤＤＩを利用する場合における、拡張ＤＤＩ命令のアプリケーション側からの入力情報及び、アプリケーション側への出力情報のフォーマットを表す図である。
【００３９】
１０−１から１０−５は、アプリケーションが特定の項目の値を列挙する場合、つまり図１１のステップ１１−１１で現在選択可能なインクカートリッジの種類を列挙する場合のアプリケーション側からの入力及びアプリケーションへの出力情報である。具体的にはアプリケーションは項目ＩＤ１０−１と現在のＤＥＶＭＯＤＥ構造体１０−２を拡張ＤＤＩに入力し、拡張ＤＤＩが返却する列挙の結果として列挙個数１０−３と、列挙されたインクカートリッジの値ＩＤを１０−４から１０−５で取得する。これにより拡張ＤＤＩにて値の列挙が可能となる。
【００４０】
また１０−１０から１０−１２は、アプリケーションが特定の項目の現在の値を取得する場合、つまり図１１のステップ１１−１３で現在のインクカートリッジの種類を獲得する場合のアプリケーション側からの入力及びアプリケーションへの出力情報である。具体的にはアプリケーションは項目ＩＤ１０−１０と現在のＤＥＶＭＯＤＥ構造体１０−１１を拡張ＤＤＩに入力し、拡張ＤＤＩが返却する現在値として値ＩＤ１０−１２を取得する。これにより拡張ＤＤＩにて現在値の取得が可能となる。
【００４１】
また１０−２０から１０−２３は、アプリケーションが特定の項目に対し新しい値へ更新する場合、つまり図１１のステップ１１−１４で新しいインクカートリッジの種類へ値を更新するばあいのアプリケーション側からの入力及びアプリケーションへの出力情報である。具体的にはアプリケーションは項目ＩＤ１０−２０と、変更先の値ＩＤ１０−２１と、現在のＤＥＶＭＯＤＥ構造体１０−２２を拡張ＤＤＩに入力し、拡張ＤＤＩが返却するＰＲＩＶＡＴＥ領域が更新されたＤＥＶＭＯＤＥ構造体１０−２３を取得する。これにより拡張ＤＤＩにて特定の項目の値を更新し、更新後のＤＥＶＭＯＤＥを獲得することが可能となる。
【００４２】
モノリシックプリンタドライバ側の拡張ＤＤＩ処理フローを以下に示す。図１３は、図３に示すモノリシックドライバＵＩ３−６が、アプリケーション３−４から拡張ＤＤＩ命令にてインクカートリッジの値の変更を受けた場合の拡張ＤＤＩ内部の処理を表すフローチャートである。つまり図１１におけるステップ１１−１４においてアプリケーションがインクカートリッジの値の変更である拡張ＤＤＩ命令を発行したときのプリンタドライバ側の拡張ＤＤＩ命令内部の処理フローである。この場合前述したとおり、図１０の１０−２０から１０−２２の入力情報がアプリケーションから拡張ＤＤＩに入力される。またこのときの入力情報１０−２２のＤＥＶＭＯＤＥ構造体の構成は図４で確認することができる。
【００４３】
ステップ１３−１から開始し、ステップ１３−２において、アプリケーションから指定されたＤＥＶＭＯＤＥ構造体のパブリック領域の先頭アドレスから、パブリック領域のサイズを参照しステップ１３−３へ進む。ステップ１３−３では、パブリック領域の先頭アドレスに、ステップ１３−２で獲得したパブリック領域のサイズを加算し、ＰＲＩＶＡＴＥ領域の先頭アドレスを算出する。これにより拡張ＤＤＩ内部で、入力情報として渡されたＤＥＶＭＯＤＥ構造体のＰＲＩＶＡＴＥ領域の先頭アドレスを獲得できる。次にステップ１３−４へ進み、ＰＲＩＶＡＴＥ領域に保持されているインクカートリッジの値が保持された領域を参照する。次にステップ１３−５にて、アプリケーションから入力情報として渡された、新しいインクカートリッジのＩＤで、ＰＲＩＶＡＴＥ領域のインクカートリッジの値を更新する。次にステップ１３−６へ進み、新しいインクカートリッジのＩＤで更新されたＤＥＶＭＯＤＥ構造体全体を、アプリケーションに拡張ＤＤＩの出力情報として返却する。このフローにより、プリンタドライバは拡張ＤＤＩによって、アプリケーションが特定の項目のＩＤを新しいＩＤに変更したい場合、ＰＲＩＶＡＴＥ領域に保持している情報を正しく更新し、更新したＤＥＶＭＯＤＥ構造体全てをアプリケーションに返却することが可能となる。
【００４４】
前述の実施形態と異なる箇所を中心に説明する。ユニバーサルプリンタドライバの構成例を以下に示す。図５はプリンタドライバ開発ベンダーが一部のプリンタドライバモジュールを開発提供する「ユニバーサルプリンタドライバ」という形態を表す構成図である。図５において図１のハードディスクに記憶され、中央処理演算装置に読み出し実行されるユニバーサルプリンタドライバ５−１は、ユニドライバＵＩ５−６と、ＵＩプラグイン５−７と、ユニドライバレンダリング５−８と、レンダリングプラグイン５−９で構成される。ここでプリンタベンダが開発できるモジュールは図のＵＩプラグイン５−７と、レンダリングプラグイン５−９のみであり、具体的にはＵＩプラグイン５−７とレンダリングプラグイン５−９はダイナミックリンクライブラリリ（ＤＬＬ）の形態で構成される。他のユニドライバＵＩ５−６や、ユニドライバレンダリング５−８はＷｉｎｄｏｗｓ（登録商標）  ＯＳに用意されたモジュールをそのまま加工せずに利用する必要がある。
【００４５】
また図７はユニバーサルプリンタドライバにおけるＤＥＶＭＯＤＥ構造体を表す構成図である。図７においてユニバーサルプリンタドライバのＤＥＶＭＯＤＥ構造体の構成は、前記図４で示したモノリシックプリンタドライバのＤＥＶＭＯＤＥ構造体とは異なることがわかる。具体的にはパブリック領域７−１はモノリシックプリンタドライバのパブリック領域４−１同じだが、ＰＲＩＶＡＴＥ領域がユニドライバＵＩのＰＲＩＶＡＴＥ領域７−６と、ＵＩプラグインのＰＲＩＶＡＴＥ領域７−７の２つで構成されている点が特に異なる。そして、インクカートリッジの種類７−８などプリンタドライバに固有の情報はＵＩプラグインのＰＲＩＶＡＴＥ領域７−７に保持される。これらの領域７−１，７−６、７−７は、図１の中央処理演算装置が参照可能なハードディスク又は揮発性領域１−５をメモリ空間にマップした領域とすると好適である。
【００４６】
またここで、Ｗｉｎｄｏｗｓ（登録商標）のＤＤＫでは図７の７−７に示すユニドライバＵＩのＰＲＩＶＡＴＥ領域の内容は公開されていない。つまりＵＩプラグインにとってユニドライバＵＩのＰＲＩＶＡＴＥ領域７−７の内部構成を知ることができず、ＵＩプラグインのＰＲＩＶＡＴＥ領域７−７の内部構成しか理解できないこととなる。
【００４７】
図５の解説に戻る。まずアプリケーション５−４が印刷設定を行う手順を説明する。アプリケーション５−４はは、印刷設定項目である用紙サイズやオリエンテーション、印刷品質などの全ての設定値をＤＥＶＭＯＤＥ構造体として獲得し、揮発性記憶領域１−５に保持する必要がある。
【００４８】
そこでアプリケーション５−４は、図７におけるパブリック領域７−１上に存在する用紙サイズ７−３や部数７−４、印刷品質７−５などは内部構成を知っているため、アプリケーションソフトウエアが自身のソースコード上でＤＥＶＭＯＤＥ構造体上の値を変更することが可能となる。
【００４９】
その一方でアプリケーション５−７は、図７におけるＵＩプラグインのＰＲＩＶＡＴＥＥ領域７−７上に存在するインクカートリッジの種類７−８においてはＵＩプラグインのＰＲＩＶＡＴＥ領域７−７の構成を知らないためアプリケーション５−４が直接値を変更することはできない。そこで、アプリケーション５−４がＵＩプラグインのＰＲＩＶＡＴＥ領域７−７上の値を変更するためには、一般的にはユニドライバＵＩ５−６が公開するＤＤＩ命令郡５−５のうち、プリンタドライバに対して「設定画面を表示し、ユーザに設定を更新させ、結果をＤＥＶＭＯＤＥ構造体として返却する」という命令を行う。するとユニドライバＵＩ５−６は、ＵＩプラグイン５−７が公開するＤＤＩ命令の同じ命令を呼び出す。
【００５０】
このとき、ＵＩプラグインには、パブリック領域の先頭アドレス７−９と同時に、プラグインＰＲＩＶＡＴＥ領域の先頭アドレス７−１０がユニドライバＵＩ５−６からパラメータとして渡される。
【００５１】
呼び出されたＵＩプラグイン５−７はＵＩプラグイン独自の設定画面を表示して、その設定画面にインクカートリッジの種類メニューを表示し、その設定結果をＵＩプラグインのＰＲＩＶＡＴＥ領域７−７上のインクカートリッジの種類７−８に記載しＤＥＶＭＯＤＥ全体をユニドライバＵＩ５−６に返却する。
【００５２】
次にＤＥＶＭＯＤＥ全体を返却されたユニドライバＵＩ５−６は、アプリケーション５−４にそのＤＥＶＭＯＤＥを返却する。これによりアプリケーション５−４はプリンタ独自の設定項目が更新されたＤＥＶＭＯＤＥ構造体を取得する手法を取る。
【００５３】
次にアプリケーション５−４が印刷を開始する手順を説明する。前述の印刷設定を行う手順で揮発性記憶領域１−５に獲得したＤＥＶＭＯＤＥ構造体をＧＤＩ５−２が公開する印刷開始命令のパラメータとして渡す。同時に印刷対象となる描画命令も渡す。ＧＤＩ５−２はアプリケーション５−４から獲得したＤＥＶＭＯＤＥ構造体を、渡された描画命令と共にユニドライバレンダリング５−８に渡す。ＤＥＶＭＯＤＥ構造体を描画命令と共に渡されたユニドライバレンダリング５−８は、その情報をレンダリングプラグイン５−９に渡す。そして、レンダリングプラグイン５−９は渡された描画命令の内容を、別途渡されたＤＥＶＭＯＤＥ構造体の印刷設定に従って印刷装置２−５の印刷制御部２−１２が理解可能な印刷コマンドに変換し、その印刷コマンドをユニドライバレンダリング５−８経由でプリントスプーラ５−３へ送信する。
【００５４】
ユニバーサルプリンタドライバの拡張ＤＤＩにおける実施例を以下に示す。図６はユニバーサルプリンタドライバ形態において拡張ＤＤＩの構成を表す構成図である。図６においてプリンタ開発ベンダが開発できるモジュールはＵＩプラグイン６−７とレンダリングプラグイン６−９のみであることから、ＵＩプラグイン６−７にてＤＤＫで定義された標準のＤＤＩ命令郡とは別に拡張ＤＤＩ６−１０をサポートする。具体的にはダイナミックリンクライブラリとして構成されるＵＩプラグイン６−７が外部にｅｘｐｏｒｔする関数として拡張ＤＤＩ６−１０を用意する。ここでアプリケーション６−４は、図９の９−１０に示すようにプリンタドライバ独自の設定であるインクカートリッジの種類９−１１のメニューを表示するために、アプリケーション６−４は拡張ＤＤＩ６−１０に直接アクセスする構成を取る。図９の表示画面は、図１の表示装置１−７に後述するフローチャートに従って表示される。
【００５５】
ユニバーサルプリンタドライバの拡張ＤＤＩの問題点を以下に示す。図６の構成にてユニバーサルプリンタドライバで拡張ＤＤＩをサポートする場合に問題がある。図６のようにアプリケーション６−４が拡張ＤＤＩ６−１０の命令を直接呼び出すことになり、この場合図７に示すユニバーサルプリンタドライバのＤＥＶＭＯＤＥ構造体のうち、アプリケーションからはパブリック領域の先頭アドレス７−９は指定されるが、プラグインＰＲＩＶＡＴＥ領域の先頭アドレス７−１０が指定されない。この原因は、図６においてユニドライバＵＩのＰＲＩＶＡＴＥ領域７−６のサイズを唯一把握しているユニドライバＵＩ６−６を経由せずに直接アプリケーション６−４とＵＩプラグイン６−７が情報のやりとりを行うためである。
【００５６】
ゆえにアプリケーションから直接拡張ＤＤＩ命令を受けるＵＩプラグイン６−７は、ＤＥＶＭＯＤＥ構造体のうちインクカートリッジなどプリンタドライバ固有の情報が保持されるＵＩプラグインのＰＲＩＶＡＴＥ領域の先頭アドレスを知ることができず、ゆえにインクカートリッジの種類７−８の位置を確認できず、拡張ＤＤＩの処理を行うことができなくなる。
【００５７】
前記問題点を解決するために、本実施形態においては、図８に示すようにユニバーサルプリンタドライバのＤＥＶＭＯＤＥ構造体において、ユニドライバＵＩのＰＲＩＶＡＴＥ領域の先頭に、ユニドライバＰＲＩＶＡＴＥ領域のサイズ８−７を配置し、その構造をＵＩプラグイン６−９に公開する。
【００５８】
このユニドライバＰＲＩＶＡＴＥ領域のサイズ８−７の具体的な構成は、例えば、８−２０に記載するような、ＵＮＩＰＲＩＶＡＴＥＨＥＡＤＥＲ構造体を新規に儲け、その中にＵＮＩＰＲＩＶＡＴＥＨＥＡＤＥＲ構造体を含むユニドライバＵＩのＰＲＩＶＡＴＥ領域全体のサイズを示すｄｗＳｉｚｅフィールドを設ける。そしてこのＵＮＩＰＲＩＶＡＴＥＨＥＡＤＥＲ構造体をユニドライバＵＩのＰＲＩＶＡＴＥ領域の先頭に必ず配置することとし、同時にＵＮＩＰＲＩＶＡＴＥＨＥＡＤＥＲ構造体の構造をＵＩプラグイン６−９にＤＤＫとして公開してもよい。
【００５９】
その結果図６に示す拡張ＤＤＩの実施例においても、ＵＩプラグイン６−７が正しくＵＩプラグインのＰＲＩＶＡＴＥ領域８−８上に存在するインクカートリッジ８−９の位置を参照することが可能とする手段を用いる。
【００６０】
本実施形態におけるユニバーサルプリンタドライバ側の拡張ＤＤＩ処理フローを以下に示す。図１４は、図６に示すＵＩプラグイン６−７が、アプリケーション６−４から拡張ＤＤＩ命令にてインクカートリッジの値の変更を受けた場合の拡張ＤＤＩ内部の処理を表すフローチャートである。つまり図１１におけるステップ１１−１４においてアプリケーションがインクカートリッジの値の変更である拡張ＤＤＩ命令を発行したときのプリンタドライバ側の拡張ＤＤＩ命令内部の処理フローである。この場合前述したとおり、図１０の１０−２０から１０−２２の入力情報がアプリケーションから拡張ＤＤＩに入力される。またこのときの入力情報１０−２２のＤＥＶＭＯＤＥ構造体の構成は図８で確認することができる。
【００６１】
図１４のフローを、図８のＤＥＶＭＯＤＥ構造体の構成に照らし合わせて解説する。ステップ１４−１から開始し、ステップ１４−２において、アプリケーションから指定されたＤＥＶＭＯＤＥ構造体のパブリック領域の先頭アドレスから、パブリック領域のサイズを参照しステップ１４−３へ進む。ステップ１４−３では、パブリック領域の先頭アドレスに、ステップ１４−２で獲得したパブリック領域のサイズを加算し、ユニドライバＰＲＩＶＡＴＥ領域の先頭アドレスを算出する。これによりまずユニドライバＵＩのＰＲＩＶＡＴＥ領域の先頭アドレス８−１２を獲得できる。次にステップ１４−４にて、ユニドライバＵＩのＰＲＩＶＡＴＥ領域の先頭に保持されたユニドライバＰＲＩＶＡＴＥ領域のサイズ８−７を参照しステップ１４−５に進む。ステップ１４−５ではユニドライバＰＲＩＶＡＴＥ領域の先頭アドレス８−１２に、ステップ１４−４で獲得したユニドライバＰＲＩＶＡＴＥ領域のサイズ８−１３を加算し、ＵＩプラグインＰＲＩＶＡＴＥ領域の先頭アドレス８−１４を獲得できる。これにより、拡張ＤＤＩ内部でＵＩプラグインのＰＲＩＶＡＴＥ領域の先頭アドレスを獲得でき、ＵＩプラグインのＰＲＩＶＡＴＥ領域を参照することが可能となる。次にステップ１４−６に進み、ＵＩプラグインのＰＲＩＶＡＴＥ領域８−８に保持されているインクカートリッジの種類８−９が保持された領域を参照する。次にステップ１４−７にて、アプリケーションから入力情報として渡された、新しいインクカートリッジのＩＤで、ＵＩプラグインのＰＲＩＶＡＴＥ領域のインクカートリッジの種類８−９を更新する。次にステップ１４−８へ進み、新しいインクカートリッジのＩＤで更新されたＤＥＶＭＯＤＥ構造体全体を、アプリケーションに拡張ＤＤＩの出力情報として返却する。
【００６２】
このフローにより、ユニバーサルプリンタドライバの拡張ＤＤＩの構成によっても、アプリケーションが特定の項目のＩＤを新しいＩＤに変更したい場合、ＰＲＩＶＡＴＥ領域に保持している情報を正しく更新し、更新したＤＥＶＭＯＤＥ構造体全てをアプリケーションに返却することが可能となる。
【００６３】
拡張モジュールの一例であるレンダリングプラグイン又はＵＩプラグインモジュールと、コアモジュールの一例であるユニドライバレンダリング又はユニドライバＵＩモジュールを有するデバイスドライバの一例であるプリンタドライバを搭載したホストコンピュータ１−１において、プリンタドライバは、アプリケーション及びデバイスドライバが読み書き可能なメモリ領域を公開領域（パブリック領域）として、前記拡張モジュールからは読み書き可能であるがアプリケーションからは直接読み書きできないメモリ領域を拡張領域（ＵＩプラグインのプライベート領域）として管理するオペレーティングシステム（ＧＤＩ）と協働可能なプリンタドライバである。
【００６４】
ＵＩプラグインモジュールは、オペレーティングシステムのインタフェースであるＧＤＩを用いて前記ＵＩプラグインのプライベート領域の管理情報を取得する。
【００６５】
図１のハードディスクに記憶され、中央処理演算装置により読み出されたＵＩプラグインモジュールは、取得した管理情報の一例であるパブリック領域のサイズとユニドライバＵＩのプライベート領域のサイズを用いて、ＵＩプラグインのプライベート領域８−８（図１のハードディスク又は不揮発性領域の一部）に記憶されたデバイスドライバ固有の設定情報の一例であるカートリッジ種類を示す情報情報を認識する。そして、ＵＩプラグインは、このインクカートリッジを示す情報を、アプリケーションに対して通知すべく、オペレーティングシステムのＡＰＩをコールする。
【００６６】
さらに、オペレーティングシステムのインタフェースの一例であるＧＤＩは、前記デバイスドライバとアプリケーションとの間でデバイスドライバに固有の設定情報をやり取りするための拡張インタフェースであることを示した。
【００６７】
さらにＵＩプラグインは、パブリック領域のサイズとユニドライバのプライベート領域のサイズを用いて拡張領域の一例であるＵＩプラグインのプライベート領域の先頭アドレスを計算する。そして、ＵＩプラグインが管理する構造体を参照し、該先頭アドレスのオフセットを認識してデバイスドライバ固有の設定情報の一例であるインクカートリッジ種別を示す情報を読み出す。さらに、ＵＩプラグインは、前記アプリケーションの機能が表示制御する表示画面に表示させるべく、前記設定情報を前記アプリケーションに通知するようオペレーティングシステムのＡＰＩをコールする。
【００６８】
さらに、アプリケーションから、オペレーティングシステムのインタフェースを用いてデバイスドライバに対してカートリッジの種別を示す情報を通知し、前記デバイスドライバは、前記取得手段が取得した管理情報を用いて、ＵＩプラグインモジュールのプライベート領域に対してアプリケーションから通知されたデバイスドライバ固有の設定情報の一例であるインクカートリッジの種別を示す情報を書き込むべくＯＳのＡＰＩをコールする。
【００６９】
さらに、ＵＩプラグインモジュールは、ユニドライバ用プライベート領域のサイズを含むものであってもよい。
【００７０】
以上まとめると、アプリケーションソフトウエア、プリンタドライバ、印刷装置で構成される印刷システムであって、印刷装置における構成要素であるプリンタドライバのうち、Ｗｉｎｄｏｗｓ（登録商標）システムで予め定義されている標準ＤＤＩとは別に、独自に定義した拡張ＤＤＩを実装した特徴を持つプリンタドライバであって、なおかつ拡張ＤＤＩとして定義された手順により、プリンタドライバがＰＲＩＶＡＴＥ領域に保有する、プリンタドライバ固有の設定項目の操作が可能かどうかをアプリケーションに返却することが可能な特徴を持つプリンタドライバであると好適である。
【００７１】
さらに、拡張ＤＤＩとして定義された手順により、プリンタドライバがＰＲＩＶＡＴＥ領域に保有する、プリンタドライバ固有の設定項目であり、現在選択できる設定値のリストをアプリケーションに返却することが可能な特徴をもつプリンタドライバであると好適である。
【００７２】
さらに、拡張ＤＤＩとして定義された手順により、プリンタドライバがＰＲＩＶＡＴＥ領域に保有する、プリンタドライバ固有の設定項目であり、その設定項目の現在の設定値をアプリケーションに返却することが可能な特徴をもつプリンタドライバであるようにすると好適である。
【００７３】
さらに、拡張ＤＤＩとして定義された手順により、プリンタドライバがＰＲＩＶＡＴＥ領域に保有する、プリンタドライバ固有の設定項目であり、その設定項目の現在値をアプリケーションが指定した新しい値に更新し、更新したＤＥＶＭＯＤＥ構造体をアプリケーションに返却することが可能な特徴をもつプリンタドライバであると好適である。
【００７４】
さらに、拡張ＤＤＩの手法をモノリシックプリンタドライバの構成で実現することが可能であるプリンタドライバであって、拡張ＤＤＩの手法を、ユニドライバＵＩのＰＲＩＶＡＴＥ領域に、ユニドライバＵＩのＰＲＩＶＡＴＥ領域のサイズを現すフィールドを設けることで、ユニバーサルプリンタドライバの構成で実現することが可能であるプリンタドライバであると好適である。
【００７５】
さらに、アプリケーションソフトウエアにおいて、決められた手順でプリンタドライバに実装された拡張ＤＤＩを利用することで、アプリケーションソフトウエアの画面に、プリンタドライバの固有の設定項目を保有することを特徴するアプリケーションソフトウエアであって、アプリケーションソフトウエアの画面上でプリンタドライバ固有の設定項目を更新することで、プリンタドライバの設定画面を表示する必要なしに、プリンタドライバの固有の設定項目を更新した印刷が可能な特徴を持つ印刷システムであると好適である。
【００７６】
（他の実施形態）
本実施形態における図１１乃至図１４に示す処理が、図１のハードディスクに記憶されたそれぞれのプリンタドライバ等のプログラムにより、外部からインストールされるプログラムによって、図１のホストコンピュータ１−１（コンピュータ）の中央処理演算装置１−６（ＣＰＵ）により遂行される。そして、その場合、ＣＤ−ＲＯＭやフラッシュメ９モリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群をホストコンピュータに供給される場合でも本発明は適用されるものである。
【００７７】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、又は、外部サーバ（図示省略）からダウンロードすることで、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００７８】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、たとえば、フロッピィーディスク、ハードディスク、光ディスク、光磁気ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ等を用いることができる。
【００７９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８０】
【図１】ホストコンピュータを表す概略図である。
【図２】印刷装置の構成要素としてのプリンタドライバを表す構成図である。
【図３】モノリシックプリンタドライバのモジュール構成図である。
【図４】モノリシックプリンタドライバの標準ＤＤＩおよび拡張ＤＤＩ時のＤＥＶＭＯＤＥ構造体を表す構成図である。
【図５】ユニバーサルプリンタドライバのモジュール構成図である。
【図６】ユニバーサルプリンタドライバの拡張ＤＤＩの構成図である。
【図７】ユニバーサルプリンタドライバの標準ＤＤＩ時のＤＥＶＭＯＤＥ構造体を表す構成図である。
【図８】ユニバーサルプリンタドライバの拡張ＤＤＩ時のＤＥＶＭＯＤＥ構造体を表す構成図である。
【図９】標準ＤＤＩ及び、拡張ＤＤＩを利用したアプリケーションの印刷設定画面例を表す図である。
【図１０】拡張ＤＤＩ命令の入力情報、出力情報を表す図である。
【図１１】拡張ＤＤＩを利用したアプリケーションの印刷画面の初期化処理フローチャートである。
【図１２】拡張ＤＤＩを利用したアプリケーションが、拡張ＤＤＩで項目を変更し、印刷を開始する処理のフローチャートである。
【図１３】モノリシックプリンタドライバの拡張ＤＤＩ内部の処理を表すフローチャートである。
【図１４】ユニバーサルプリンタドライバの拡張ＤＤＩ内部の処理を表すフローチャートである。
【図１】
2005148928.tif 000003
【図２】
2005148928.tif 000004
【図３】
2005148928.tif 000005
【図４】
2005148928.tif 000006
【図５】
2005148928.tif 000007
【図６】
2005148928.tif 000008
【図７】
2005148928.tif 000009
【図８】
2005148928.tif 000010
【図９】
2005148928.tif 000011
【図１０】
2005148928.tif 000012
【図１１】
2005148928.tif 000013
【図１２】
2005148928.tif 000014
【図１３】
2005148928.tif 000015
【図１４】
2005148928.tif 000016