説明

デバイスドライバ、及び情報処理装置

【課題】 画像形成装置を制御するプリンタドライバにプラグインモジュールを追加して、新規の機能をプラグインモジュールに実行させる際に、プリンタドライバとプラグインモジュールとの間での情報のやり取りが初期設定時のプラグインモジュールからの情報の伝達と、オペレーティングシステムからプリンタドライバを通してプラグインモジュールへのイベント通知だけであるため、動的に変化してゆく情報をプリンタドライバとプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることができなかった。
【解決手段】 本発明のプリンタドライバにおいては、前記プラグインモジュールが、プリンタドライバからのイベント通知の内容に応じて所定の処理を行うように動作を変更し、またプリンタドライバとの間で動的に変化する情報について必要時にやり取りを行うことにより課題を解決した。

【発明の詳細な説明】
【技術分野】
【0001】
入出力デバイスを制御するデバイスドライバを備えた情報処理装置において、デバイスドライバに機能を追加するプラグインモジュールとデバイスドライバとの間での動的な情報伝達方法に関するものである。
【背景技術】
【0002】
プリンタドライバに、プラグインモジュールを追加し、各イベント(ページ終了等)でプラグインの描画プログラムを起動し、描画を行なわせるなどのことは、昨今多く行なわれている(特許文献1参照)。
【0003】
しかし、処理効率の関係上、プリンタドライバの処理モデルは、入力されたページを単に逐次処理するモデルであることが多い。これは処理効率がよい反面、いくつかの制約を発生させている。
【0004】
例えば、総ページ数をフッタ印刷できないという不都合がある。これは、各々のページを処理する時点ではジョブの途中であり、総ページ数が不明であることに原因がある。総ページ数は、ジョブが終了するまで基本的に知ることは不可能である。
【0005】
これを解決するためには、プリンタドライバ内にバッファリング機構を設け、最終ページまでのデータをバッファリングしたのちに、実際の印刷を始めればよい。しかし、この方法をとることで、パフォーマンスの低下があり、常時バッファリングを行なうことには問題がある。
【0006】
しかし、特許文献1の方法では、プリンタドライバとプラグインとの間での情報の受け渡しに関しては、各種のイベント等に単純に応答するだけの仕組みを提供しているだけで、この構成では、ジョブ全体に跨る情報を扱うことが難しい。
【0007】
【特許文献1】特開2004−5608号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
解決しようとする問題点は、入出力デバイスの制御を実行させるためのデバイスドライバにおいて、前記デバイスドライバの機能を追加するためのソフトウェア部品であるプラグインモジュールが追加された機能を実行する際に、デバイスドライバとプラグインモジュールとの間での情報のやり取りが、初期設定時のプラグインモジュールからの情報の伝達と、オペレーティングシステムからデバイスドライバを通してプラグインモジュールへのイベント通知とだけであるため、動的に変化してゆく情報をデバイスドライバとプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることができなかった。
【課題を解決するための手段】
【0009】
本発明のデバイスドライバは、所定の入出力デバイスを制御するドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールと、を有するデバイスドライバであって、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第1情報収集提供API(Application Protocol Interface)と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で双方向に情報の交換を行う第2情報収集提供API(Application Protocol Interface)と、を有することを最も主要な特徴とする。
【0010】
本発明の情報処理装置は、所定の入出力デバイスを制御する情報処理装置であって、前記情報処理装置は、前記入出力デバイスを制御する機能を前記情報処理装置に実行させるドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールを有し、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第1情報収集提供API(Application Protocol Interface)と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して、該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で、双方向に情報の交換を行う第2情報収集提供API(Application Protocol Interface)と、を有することを最も主要な特徴とする。
【発明の効果】
【0011】
本発明のデバイスドライバは、所定の入出力デバイスを制御するドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールと、を有するデバイスドライバであって、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第1情報収集提供API(Application Protocol Interface)と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で双方向に情報の交換を行う第2情報収集提供API(Application Protocol Interface)と、を有することを最も主要な特徴とするため、前記デバイスドライバの機能を追加するためのソフトウェア部品であるプラグインモジュールが該追加された機能を実行する際に、動的に変化してゆく情報をドライバ本体とプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることが可能となった。
【0012】
本発明の情報処理装置は、所定の入出力デバイスを制御する情報処理装置であって、前記情報処理装置は、前記入出力デバイスを制御する機能を前記情報処理装置に実行させるドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールを有し、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第1情報収集提供API(Application Protocol Interface)と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して、該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で、双方向に情報の交換を行う第2情報収集提供API(Application Protocol Interface)と、を有することを最も主要な特徴とするため、前記ドライバ本体の機能を追加するためのソフトウェア部品であるプラグインモジュールが該追加された機能を実行する際に、動的に変化してゆく情報をデバイスドライバとプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることが可能となった。
【発明を実施するための最良の形態】
【0013】
本技術では、従来の単純なイベントによる描画プログラム起動ではなく、ドライバ本体からのモジュールへの情報問い合わせ、および、モジュール側からのドライバ本体への問い合わせなど、双方向の情報のやりとりを導入することにより、バッファリングの有無を必要に応じて切り替え、パフォーマンスの低下を最小限に抑えることを可能とした。
【実施例1】
【0014】
[構成]
図1は、本発明の実施例に係わる情報処理装置101の機能ブロック図である。
【0015】
情報処理装置101上に外部装置としてプリンタ201(入出力デバイス)が接続されている場合について説明してある。情報処理装置101上には、アプリケーション111、オペレーティングシステム(OS)113、プリンタドライバ120(デバイスドライバ)の各プログラム部分が搭載されている。
【0016】
アプリケーション111は、OS113のGDI(Graphic Device Interface)を通じて、プリンタドライバ120に描画命令を発行する。
【0017】
プリンタドライバ120(デバイスドライバ)は、アプリケーション111から発行された描画命令を、最終的にはプリンタ言語(PDL(Page Description Language)等)に翻訳する。
【0018】
プラグイン123〜129(プラグインモジュール)は、プリンタドライバ120の機能を拡張するプログラム部分のモジュールである。プラグインによって追加される機能の例としては、フッタ印刷機能を追加する機能がある。フッタ印刷機能とは、各ページの下部(フッタ部分)に所定の情報を追加して印刷する方法で、ページ数、総ページ数、印刷時刻、若しくは文書タイトル、またはそれらの自由な組み合わせなどが印刷される。特にページ数と総ページ数を例えば総ページ数が24ページの3ページ目であれば、『3/24』のように分数表記としてページ下部中央に追加して印字されることがよく行われる。
【0019】
次に、図2を用いてプリンタドライバ内における、ドライバ本体とプラグインの対話関係について示す。
【0020】
プリンタドライバ120のドライバ本体121のイベント送信部121Aを通じて、ドライバ本体121がイベント処理部123Aに各種印刷イベントを通知する。これには、ページの開始、終了、各描画コマンドの実行などがある。
【0021】
プラグイン123のイベント処理部123Aは、プラグイン側のイベント受付の窓口である。ドライバ本体121から送られてきたイベントを解釈して、必要な処理を行なう。また、ドライバ本体からの情報の問い合わせに応答する。
【0022】
プラグイン123の第2情報収集提供API123Cは、プラグインの持つ機能(例えばフッタ印刷)を実現するのに必要な情報のやり取りを行う。ドライバ本体間との情報のやり取りに関しては、ドライバ本体側の第1情報収集提供API121Cとの間での情報のやり取りを行って、バッファリングが必要かなどの情報をドライバ本体に提供したりする。
【0023】
ドライバ本体121の印刷API121Bは、ドライバ本体の印刷機能を提供するAPI(Application Protocol Interface)である。印刷機能には、文字や図形の描画のほか、ページ送り、ジョブ全体の制御(削除など)がある。プラグイン123は、このAPIを利用してプリンタドライバ本体121からプラグイン123へ送信された印刷データに対して必要な処理を行なう。
【0024】
ドライバ本体121の第1情報収集提供API121Cは、ドライバ本体の持つ情報を収集及び提供するAPIである。現在のジョブの処理状況、ジョブ内のページのカラー/モノクロの区別、現在実際にバッファリングしているか、など、ドライバ本体の持つ情報にアクセスすることができる。
【0025】
プリンタドライバからプラグインに通知されるイベントには、下記に示すものがある。
【0026】
(1)ジョブ開始
(2)ジョブ終了
(3)ページ受信開始
(4)ページ受信終了
(5)ページ印刷開始
(6)ページ印刷終了
(7)描画命令実行
(8)各種情報問い合わせ(バッファリング要か?描画イベント送信要か?)
このうちの、(3)ページ受信開始、(4)ページ受信終了、及び(8)各種情報問い合わせは、本発明における特徴的なものであり、動的に変化する情報をプリンタドライバ(デバイスドライバ)とプラグイン(プラグインモジュール)の間でやり取りを行う。
【0027】
[フローチャート]
図3のフローチャートを用いて動作の流れについて説明する。
【0028】
印刷が開始されると図3に示すフローチャートの処理がプリンタドライバ120及びそのプラグインモジュール123により情報処理装置101上で実行され、印刷データが作成される。作成された印刷データはプリンタ201に送信されて印刷が実行される。
【0029】
S11:ドライバ本体121は、印刷ジョブが開始されると最初に前述の「(8)各種情報問い合わせ」イベントを発生させ、イベント送信部121Aがイベント処理部123Aに送信する。これは、システム上に存在するすべてのプラグインに対して行なわれる。イベント通知の結果第1情報収集提供API121Cと第2情報収集提供API123Cとの間で情報のやり取りが行われ、その結果によって、内部処理方式が分岐(S15)する。
【0030】
S13:前ステップS11での情報収集提供API間の情報のやり取りは、複数プラグインが存在する場合は、すべてのプラグインの情報問い合わせが終了するまで繰り返すため、最後のプラグインでない場合には、S11に動作を移行する。最後のプラグインの場合には、S13に移行する。
【0031】
S15:前記S11でのAPI間での情報やり取りの結果、バッファリングを要求するプラグインが一つでも存在した場合、イベント処理部123Aは処理をバッファリングONの処理(S23)に移行する。バッファリングOFFの場合、イベント処理部123Aは処理をバッファリング無しの処理(S17)に移行する。
【0032】
S17:プリンタドライバ本体121は、ページデータを受信する。
【0033】
S19:プリンタドライバ本体121は、S17で受信したデータを印刷データに変換してプリンタ201上で即時に印刷するためにプリンタ201に送信する。
【0034】
S21:プリンタドライバ本体121は、送信した印刷データが最終ページであるかどうかを判断する。最終ページであればジョブを終了する。そうでなければ、動作をS17に移行する。バッファリング無しの場合、プラグイン側からみると、前述「(3,4)ページ受信開始/終了」と「(5,6)ページ印刷開始/終了」のイベントが交互に発生する。この状態では、各ページを印刷する段階で、ジョブ全体の情報を知ることは不可能だが、処理効率は高まる。
【0035】
S23:S15で判断したバッファリングONの場合には、ドライバ本体120からプラグイン123に印刷処理されるデータが渡される。
【0036】
S25:プラグイン123が受信したデータをバッファリングする。
【0037】
S27:受信した最終ページであるかどうかをプラグイン123が判断する。最終ページであれば、動作をS29に、そうでなければ動作をS23に移行する。
【0038】
S29:プラグイン123で処理が行われた印刷データは、ドライバ本体に戻されてドライバ本体から印刷のためにプリンタ201に送信されてプリンタ上で印刷される。
【0039】
S31:最終ページであるかどうかをプリンタ201が判断する。最終ページであれば動作を終了する。そうでなければS29に動作を移行して印刷を続行する。
【0040】
S23からのバッファリング有りの処理の場合には、プラグイン側からみると、「ページ受信開始/終了」のイベントがまとめて発生し、それがすべて終わったあとに、「ページ印刷開始/終了」のイベントが発生する。ページ数カウント等、ジョブ全体に跨る情報を知る必要がある場合、ページを受信した段階でページ数をカウントしておき、ページ印刷時にその情報を印刷する、というような処理が可能になる。
【0041】
すなわち、上記機構を利用する場合、プラグイン側の処理としては、下記のような最適化された処理を行なうことができる。
【0042】
ジョブ全体に跨る情報を、各ページ印刷時に知りたい場合(総ページ数をフッタに印刷する場合など)は、バッファリング要と返答して、印刷を行なう。
【0043】
上記以外の場合、バッファリング不要と返答して、印刷を行なう。
【0044】
[実施例の効果]
本発明実施例の情報処理装置により以下の効果が得られる。
【0045】
印刷ジョブの開始前に、情報問い合わせフェイズを設けることで、プラグイン側の状況を判断して最適な動作モードを選択できる。
【0046】
プラグイン機構の存在によって、印刷の性能が落ちることを最小限にすることができる。
【図面の簡単な説明】
【0047】
【図1】情報処理装置上のプログラム構成と外部装置の接続図である(実施例1)。
【図2】プリンタドライバ本体の各機能部のブロック構成図である(実施例1)。
【図3】本発明の実施例に係わるプリンタドライバの動作のフローチャートである(実施例1)。
【符号の説明】
【0048】
101 情報処理装置(コンピュータ)
111 アプリケーション
113 OS
120 プリンタドライバ(デバイスドライバ)
121 ドライバ本体(ドライバ本体)
121A イベント送信部
121B 印刷API
121C 第1情報収集提供API
123 プラグイン(プラグインモジュール)
123A イベント処理部
123C 第2情報収集提供API
201 プリンタ(入出力デバイス)

【特許請求の範囲】
【請求項1】
所定の入出力デバイスを制御するドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールと、を有するデバイスドライバであって、
前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、
前記プラグインモジュールとの間で、双方向に情報の交換を行う第1情報収集提供API(Application Protocol Interface)と、を有し、
前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して該イベント通知に対応する処理を実行するイベント処理部と、
前記ドライバ本体との間で双方向に情報の交換を行う第2情報収集提供API(Application Protocol Interface)と、を有する
ことを特徴とするデバイスドライバ。
【請求項2】
請求項1記載のデバイスドライバであって、
前記所定の入出力デバイスが画像形成装置であり、
前記プラグインモジュールに対して通知されるイベントが、ページ受信開始、ページ受信終了、バッファリングの必要有無の問い合わせ、若しくは描画イベント送信の必要有無の問い合わせ、またはそれらの自由な組み合わせであり、
前記プラグインモジュールによる追加機能がフッタによる総ページ数印刷である
ことを特徴とするデバイスドライバ。
【請求項3】
請求項1または2のいずれかに記載のデバイスドライバであって、
前記イベント処理部は、前記デバイスドライバとの間で行った双方向の情報の交換に基づいて、所定の処理を行う
ことを特徴とするデバイスドライバ。
【請求項4】
所定の入出力デバイスを制御する情報処理装置であって、
前記情報処理装置は、前記入出力デバイスを制御する機能を前記情報処理装置に実行させるドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールを有し、
前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第1情報収集提供API(Application Protocol Interface)と、を有し、
前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して、該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で、双方向に情報の交換を行う第2情報収集提供API(Application Protocol Interface)と、を有する
ことを特徴とする情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2008−282117(P2008−282117A)
【公開日】平成20年11月20日(2008.11.20)
【国際特許分類】
【出願番号】特願2007−124179(P2007−124179)
【出願日】平成19年5月9日(2007.5.9)
【出願人】(000006150)京セラミタ株式会社 (13,173)
【Fターム(参考)】