(57)【要約】【課題】  画像形成装置を制御するプリンタドライバにプラグインモジュールを追加して、新規の機能をプラグインモジュールに実行させる際に、プリンタドライバとプラグインモジュールとの間での情報のやり取りが初期設定時のプラグインモジュールからの情報の伝達と、オペレーティングシステムからプリンタドライバを通してプラグインモジュールへのイベント通知だけであるため、動的に変化してゆく情報をプリンタドライバとプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることができなかった。【解決手段】  本発明のプリンタドライバにおいては、前記プラグインモジュールが、プリンタドライバからのイベント通知の内容に応じて所定の処理を行うように動作を変更し、またプリンタドライバとの間で動的に変化する情報について必要時にやり取りを行うことにより課題を解決した。【選択図】図２
2008282117.tif 000002
【特許請求の範囲】
【請求項１】
所定の入出力デバイスを制御するドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールと、を有するデバイスドライバであって、
前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、
前記プラグインモジュールとの間で、双方向に情報の交換を行う第１情報収集提供ＡＰＩ（Application Protocol Interface）と、を有し、
前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して該イベント通知に対応する処理を実行するイベント処理部と、
前記ドライバ本体との間で双方向に情報の交換を行う第２情報収集提供ＡＰＩ（Application Protocol Interface）と、を有する
ことを特徴とするデバイスドライバ。
【請求項２】
請求項１記載のデバイスドライバであって、
前記所定の入出力デバイスが画像形成装置であり、
前記プラグインモジュールに対して通知されるイベントが、ページ受信開始、ページ受信終了、バッファリングの必要有無の問い合わせ、若しくは描画イベント送信の必要有無の問い合わせ、またはそれらの自由な組み合わせであり、
前記プラグインモジュールによる追加機能がフッタによる総ページ数印刷である
ことを特徴とするデバイスドライバ。
【請求項３】
請求項１または２のいずれかに記載のデバイスドライバであって、
前記イベント処理部は、前記デバイスドライバとの間で行った双方向の情報の交換に基づいて、所定の処理を行う
ことを特徴とするデバイスドライバ。
【請求項４】
所定の入出力デバイスを制御する情報処理装置であって、
前記情報処理装置は、前記入出力デバイスを制御する機能を前記情報処理装置に実行させるドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールを有し、
前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第１情報収集提供ＡＰＩ（Application Protocol Interface）と、を有し、
前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して、該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で、双方向に情報の交換を行う第２情報収集提供ＡＰＩ（Application Protocol Interface）と、を有する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
入出力デバイスを制御するデバイスドライバを備えた情報処理装置において、デバイスドライバに機能を追加するプラグインモジュールとデバイスドライバとの間での動的な情報伝達方法に関するものである。
【背景技術】
【０００２】
プリンタドライバに、プラグインモジュールを追加し、各イベント（ページ終了等）でプラグインの描画プログラムを起動し、描画を行なわせるなどのことは、昨今多く行なわれている（特許文献１参照）。
【０００３】
しかし、処理効率の関係上、プリンタドライバの処理モデルは、入力されたページを単に逐次処理するモデルであることが多い。これは処理効率がよい反面、いくつかの制約を発生させている。
【０００４】
例えば、総ページ数をフッタ印刷できないという不都合がある。これは、各々のページを処理する時点ではジョブの途中であり、総ページ数が不明であることに原因がある。総ページ数は、ジョブが終了するまで基本的に知ることは不可能である。
【０００５】
これを解決するためには、プリンタドライバ内にバッファリング機構を設け、最終ページまでのデータをバッファリングしたのちに、実際の印刷を始めればよい。しかし、この方法をとることで、パフォーマンスの低下があり、常時バッファリングを行なうことには問題がある。
【０００６】
しかし、特許文献１の方法では、プリンタドライバとプラグインとの間での情報の受け渡しに関しては、各種のイベント等に単純に応答するだけの仕組みを提供しているだけで、この構成では、ジョブ全体に跨る情報を扱うことが難しい。
【０００７】
【特許文献１】特開２００４−５６０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
解決しようとする問題点は、入出力デバイスの制御を実行させるためのデバイスドライバにおいて、前記デバイスドライバの機能を追加するためのソフトウェア部品であるプラグインモジュールが追加された機能を実行する際に、デバイスドライバとプラグインモジュールとの間での情報のやり取りが、初期設定時のプラグインモジュールからの情報の伝達と、オペレーティングシステムからデバイスドライバを通してプラグインモジュールへのイベント通知とだけであるため、動的に変化してゆく情報をデバイスドライバとプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることができなかった。
【課題を解決するための手段】
【０００９】
本発明のデバイスドライバは、所定の入出力デバイスを制御するドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールと、を有するデバイスドライバであって、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第１情報収集提供ＡＰＩ（Application Protocol Interface）と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で双方向に情報の交換を行う第２情報収集提供ＡＰＩ（Application Protocol Interface）と、を有することを最も主要な特徴とする。
【００１０】
本発明の情報処理装置は、所定の入出力デバイスを制御する情報処理装置であって、前記情報処理装置は、前記入出力デバイスを制御する機能を前記情報処理装置に実行させるドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールを有し、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第１情報収集提供ＡＰＩ（Application Protocol Interface）と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して、該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で、双方向に情報の交換を行う第２情報収集提供ＡＰＩ（Application Protocol Interface）と、を有することを最も主要な特徴とする。
【発明の効果】
【００１１】
本発明のデバイスドライバは、所定の入出力デバイスを制御するドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールと、を有するデバイスドライバであって、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第１情報収集提供ＡＰＩ（Application Protocol Interface）と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で双方向に情報の交換を行う第２情報収集提供ＡＰＩ（Application Protocol Interface）と、を有することを最も主要な特徴とするため、前記デバイスドライバの機能を追加するためのソフトウェア部品であるプラグインモジュールが該追加された機能を実行する際に、動的に変化してゆく情報をドライバ本体とプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることが可能となった。
【００１２】
本発明の情報処理装置は、所定の入出力デバイスを制御する情報処理装置であって、前記情報処理装置は、前記入出力デバイスを制御する機能を前記情報処理装置に実行させるドライバ本体と、前記ドライバ本体に機能を追加するためのソフトウェア部品であるプラグインモジュールを有し、前記ドライバ本体は、前記プラグインモジュールに対してイベントを通知するイベント送信部と、前記プラグインモジュールとの間で、双方向に情報の交換を行う第１情報収集提供ＡＰＩ（Application Protocol Interface）と、を有し、前記プラグインモジュールは、前記ドライバ本体からのイベント通知を受信して、該イベント通知に対応する処理を実行するイベント処理部と、前記ドライバ本体との間で、双方向に情報の交換を行う第２情報収集提供ＡＰＩ（Application Protocol Interface）と、を有することを最も主要な特徴とするため、前記ドライバ本体の機能を追加するためのソフトウェア部品であるプラグインモジュールが該追加された機能を実行する際に、動的に変化してゆく情報をデバイスドライバとプラグインモジュール間で双方向に問い合わせて情報のやり取りをすることが可能となった。
【発明を実施するための最良の形態】
【００１３】
本技術では、従来の単純なイベントによる描画プログラム起動ではなく、ドライバ本体からのモジュールへの情報問い合わせ、および、モジュール側からのドライバ本体への問い合わせなど、双方向の情報のやりとりを導入することにより、バッファリングの有無を必要に応じて切り替え、パフォーマンスの低下を最小限に抑えることを可能とした。
【実施例１】
【００１４】
［構成］
図１は、本発明の実施例に係わる情報処理装置１０１の機能ブロック図である。
【００１５】
情報処理装置１０１上に外部装置としてプリンタ２０１（入出力デバイス）が接続されている場合について説明してある。情報処理装置１０１上には、アプリケーション１１１、オペレーティングシステム（ＯＳ）１１３、プリンタドライバ１２０（デバイスドライバ）の各プログラム部分が搭載されている。
【００１６】
アプリケーション１１１は、ＯＳ１１３のＧＤＩ(Graphic Device Interface)を通じて、プリンタドライバ１２０に描画命令を発行する。
【００１７】
プリンタドライバ１２０（デバイスドライバ）は、アプリケーション１１１から発行された描画命令を、最終的にはプリンタ言語（ＰＤＬ（Page Description Language）等）に翻訳する。
【００１８】
プラグイン１２３〜１２９（プラグインモジュール）は、プリンタドライバ１２０の機能を拡張するプログラム部分のモジュールである。プラグインによって追加される機能の例としては、フッタ印刷機能を追加する機能がある。フッタ印刷機能とは、各ページの下部（フッタ部分）に所定の情報を追加して印刷する方法で、ページ数、総ページ数、印刷時刻、若しくは文書タイトル、またはそれらの自由な組み合わせなどが印刷される。特にページ数と総ページ数を例えば総ページ数が２４ページの３ページ目であれば、『３／２４』のように分数表記としてページ下部中央に追加して印字されることがよく行われる。
【００１９】
次に、図２を用いてプリンタドライバ内における、ドライバ本体とプラグインの対話関係について示す。
【００２０】
プリンタドライバ１２０のドライバ本体１２１のイベント送信部１２１Ａを通じて、ドライバ本体１２１がイベント処理部１２３Ａに各種印刷イベントを通知する。これには、ページの開始、終了、各描画コマンドの実行などがある。
【００２１】
プラグイン１２３のイベント処理部１２３Ａは、プラグイン側のイベント受付の窓口である。ドライバ本体１２１から送られてきたイベントを解釈して、必要な処理を行なう。また、ドライバ本体からの情報の問い合わせに応答する。
【００２２】
プラグイン１２３の第２情報収集提供ＡＰＩ１２３Ｃは、プラグインの持つ機能（例えばフッタ印刷）を実現するのに必要な情報のやり取りを行う。ドライバ本体間との情報のやり取りに関しては、ドライバ本体側の第１情報収集提供ＡＰＩ１２１Ｃとの間での情報のやり取りを行って、バッファリングが必要かなどの情報をドライバ本体に提供したりする。
【００２３】
ドライバ本体１２１の印刷ＡＰＩ１２１Ｂは、ドライバ本体の印刷機能を提供するＡＰＩ（Application Protocol Interface）である。印刷機能には、文字や図形の描画のほか、ページ送り、ジョブ全体の制御(削除など)がある。プラグイン１２３は、このＡＰＩを利用してプリンタドライバ本体１２１からプラグイン１２３へ送信された印刷データに対して必要な処理を行なう。
【００２４】
ドライバ本体１２１の第１情報収集提供ＡＰＩ１２１Ｃは、ドライバ本体の持つ情報を収集及び提供するＡＰＩである。現在のジョブの処理状況、ジョブ内のページのカラー／モノクロの区別、現在実際にバッファリングしているか、など、ドライバ本体の持つ情報にアクセスすることができる。
【００２５】
プリンタドライバからプラグインに通知されるイベントには、下記に示すものがある。
【００２６】
（１）ジョブ開始
（２）ジョブ終了
（３）ページ受信開始
（４）ページ受信終了
（５）ページ印刷開始
（６）ページ印刷終了
（７）描画命令実行
（８）各種情報問い合わせ（バッファリング要か？描画イベント送信要か？）
このうちの、（３）ページ受信開始、（４）ページ受信終了、及び（８）各種情報問い合わせは、本発明における特徴的なものであり、動的に変化する情報をプリンタドライバ（デバイスドライバ）とプラグイン（プラグインモジュール）の間でやり取りを行う。
【００２７】
［フローチャート］
図３のフローチャートを用いて動作の流れについて説明する。
【００２８】
印刷が開始されると図３に示すフローチャートの処理がプリンタドライバ１２０及びそのプラグインモジュール１２３により情報処理装置１０１上で実行され、印刷データが作成される。作成された印刷データはプリンタ２０１に送信されて印刷が実行される。
【００２９】
Ｓ１１：ドライバ本体１２１は、印刷ジョブが開始されると最初に前述の「（８）各種情報問い合わせ」イベントを発生させ、イベント送信部１２１Ａがイベント処理部１２３Ａに送信する。これは、システム上に存在するすべてのプラグインに対して行なわれる。イベント通知の結果第１情報収集提供ＡＰＩ１２１Ｃと第２情報収集提供ＡＰＩ１２３Ｃとの間で情報のやり取りが行われ、その結果によって、内部処理方式が分岐（Ｓ１５）する。
【００３０】
Ｓ１３：前ステップＳ１１での情報収集提供ＡＰＩ間の情報のやり取りは、複数プラグインが存在する場合は、すべてのプラグインの情報問い合わせが終了するまで繰り返すため、最後のプラグインでない場合には、Ｓ１１に動作を移行する。最後のプラグインの場合には、Ｓ１３に移行する。
【００３１】
Ｓ１５：前記Ｓ１１でのＡＰＩ間での情報やり取りの結果、バッファリングを要求するプラグインが一つでも存在した場合、イベント処理部１２３Ａは処理をバッファリングＯＮの処理（Ｓ２３）に移行する。バッファリングＯＦＦの場合、イベント処理部１２３Ａは処理をバッファリング無しの処理（Ｓ１７）に移行する。
【００３２】
Ｓ１７：プリンタドライバ本体１２１は、ページデータを受信する。
【００３３】
Ｓ１９：プリンタドライバ本体１２１は、Ｓ１７で受信したデータを印刷データに変換してプリンタ２０１上で即時に印刷するためにプリンタ２０１に送信する。
【００３４】
Ｓ２１：プリンタドライバ本体１２１は、送信した印刷データが最終ページであるかどうかを判断する。最終ページであればジョブを終了する。そうでなければ、動作をＳ１７に移行する。バッファリング無しの場合、プラグイン側からみると、前述「（３，４）ページ受信開始／終了」と「（５，６）ページ印刷開始／終了」のイベントが交互に発生する。この状態では、各ページを印刷する段階で、ジョブ全体の情報を知ることは不可能だが、処理効率は高まる。
【００３５】
Ｓ２３：Ｓ１５で判断したバッファリングＯＮの場合には、ドライバ本体１２０からプラグイン１２３に印刷処理されるデータが渡される。
【００３６】
Ｓ２５：プラグイン１２３が受信したデータをバッファリングする。
【００３７】
Ｓ２７：受信した最終ページであるかどうかをプラグイン１２３が判断する。最終ページであれば、動作をＳ２９に、そうでなければ動作をＳ２３に移行する。
【００３８】
Ｓ２９：プラグイン１２３で処理が行われた印刷データは、ドライバ本体に戻されてドライバ本体から印刷のためにプリンタ２０１に送信されてプリンタ上で印刷される。
【００３９】
Ｓ３１：最終ページであるかどうかをプリンタ２０１が判断する。最終ページであれば動作を終了する。そうでなければＳ２９に動作を移行して印刷を続行する。
【００４０】
Ｓ２３からのバッファリング有りの処理の場合には、プラグイン側からみると、「ページ受信開始／終了」のイベントがまとめて発生し、それがすべて終わったあとに、「ページ印刷開始／終了」のイベントが発生する。ページ数カウント等、ジョブ全体に跨る情報を知る必要がある場合、ページを受信した段階でページ数をカウントしておき、ページ印刷時にその情報を印刷する、というような処理が可能になる。
【００４１】
すなわち、上記機構を利用する場合、プラグイン側の処理としては、下記のような最適化された処理を行なうことができる。
【００４２】
ジョブ全体に跨る情報を、各ページ印刷時に知りたい場合(総ページ数をフッタに印刷する場合など)は、バッファリング要と返答して、印刷を行なう。
【００４３】
上記以外の場合、バッファリング不要と返答して、印刷を行なう。
【００４４】
［実施例の効果］
本発明実施例の情報処理装置により以下の効果が得られる。
【００４５】
印刷ジョブの開始前に、情報問い合わせフェイズを設けることで、プラグイン側の状況を判断して最適な動作モードを選択できる。
【００４６】
プラグイン機構の存在によって、印刷の性能が落ちることを最小限にすることができる。
【図面の簡単な説明】
【００４７】
【図１】情報処理装置上のプログラム構成と外部装置の接続図である（実施例１）。
【図２】プリンタドライバ本体の各機能部のブロック構成図である（実施例１）。
【図３】本発明の実施例に係わるプリンタドライバの動作のフローチャートである（実施例１）。
【符号の説明】
【００４８】
１０１  情報処理装置（コンピュータ）
１１１  アプリケーション
１１３  ＯＳ
１２０  プリンタドライバ（デバイスドライバ）
１２１  ドライバ本体（ドライバ本体）
１２１Ａ  イベント送信部
１２１Ｂ  印刷ＡＰＩ
１２１Ｃ  第１情報収集提供ＡＰＩ
１２３  プラグイン（プラグインモジュール）
１２３Ａ  イベント処理部
１２３Ｃ  第２情報収集提供ＡＰＩ
２０１  プリンタ（入出力デバイス）
【図１】
2008282117.tif 000003
【図２】
2008282117.tif 000004
【図３】
2008282117.tif 000005