(57)【要約】　　　（修正有）【課題】デバイスドライバの再コンパイレーションの必要なく動的拡張可能な機能を提供する。【解決手段】デバイスドライバプログラムは、オペレーティングシステムにより呼び出され、ドライバプラグインプログラムを検出し、検出されたドライバプラグインプログラムから情報を獲得し、且つ検出されたドライバプラグインプログラムからの情報をオペレーティングシステムへ転送する初期設定部と、検出されたプラグインプログラムの機能部をアクセスし且つ実行し、外部装置に対応するイベント通知をオペレーティングシステムから受信し、検出されたドライバプラグインプログラムがそのイベント通知を受け入れる場合、イベント通知を検出されたドライバプラグインプログラムへ転送する動作部とを含む構成とする。【選択図】図３
2004005608.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行する計算装置による外部装置の使用をサポートするためのデバイスドライバのデバイスドライバプログラムであって、
前記オペレーティングシステムにより呼び出され、ドライバプラグインプログラムの有無を検出し、検出されたドライバプラグインプログラムから情報を獲得し、検出されたドライバプラグインプログラムからの情報を前記オペレーティングシステムへ転送する初期設定部と、
検出されたプラグインプログラムの機能部をアクセスし且つ実行し、前記オペレーティングシステムから前記外部装置に対応するイベント通知を受信し、検出されたドライバプラグインプログラムがイベント通知を受け入れる場合には、イベント通知を検出されたドライバプラグインプログラムへ転送する動作部とを具備するデバイスドライバプログラム。
【請求項２】
ドライバプラグインプログラムは前記計算装置により表示されるべきダイアログプロパティシートに対応する請求項１記載のデバイスドライバプログラム。
【請求項３】
初期設定部は、前記オペレーティングシステムのシステムレジストリにおけるドライバプラグインプログラムの識別子を検出することにより、ドライバプラグインプログラムの有無を検出する請求項１記載のデバイスドライバプログラム。
【請求項４】
初期設定部は、前記計算装置に対してアクセス可能である記憶媒体に格納されているデータベースファイルにおけるドライバプラグインプログラムの識別子を検出することにより、ドライバプラグインプログラムの有無を検出する請求項１記載のデバイスドライバプログラム。
【請求項５】
初期設定部は、ドライバプラグインプログラム中の情報機能呼び出しを指示するポインタを受信し、次に、初期設定部に情報を戻す情報機能呼び出しを実行することにより、検出されたドライバプラグインプログラムから情報を獲得する請求項１記載のデバイスドライバプログラム。
【請求項６】
検出されたドライバプラグインプログラムから初期設定部により受信される情報は、検出されたドライバプラグインプログラムの資源部のアドレスを表現する資源ポインタと、検出されたドライバプラグインプログラムの機能部のアドレスを表現する機能ポインタとを含む請求項１記載のデバイスドライバプログラム。
【請求項７】
初期設定部により前記オペレーティングシステムへ転送される情報は、検出されたドライバプラグインプログラムから受信される情報のサブセットである請求項１記載のデバイスドライバプログラム。
【請求項８】
初期設定部により前記オペレーティングシステムへ転送される情報は、検出されたドライバプラグインプログラムによりサポートされるダイアログプロパティシートの数及び検出されたドライバプラグインプログラムによりサポートされる各ダイアログプロパティシートの属性に対応する情報を含む請求項１記載のデバイスドライバプログラム。
【請求項９】
検出されたドライバプラグインプログラムの機能部は、検出されたドライバプラグインプログラムにより表現される機能を実現するための実行可能コードから構成されている請求項６記載のデバイスドライバプログラム。
【請求項１０】
検出されたドライバプラグインプログラムから受信される情報は検出されたドライバプラグインプログラムによりサポートされる機能の型を含み、且つ初期設定部は、機能の型に基づいて、前記オペレーティングシステムへ情報を転送すべきか否か及び検出されたドライバプラグインプログラムの機能部をアクセスし且つ実行すべきか否かを判定する請求項１記載のデバイスドライバプログラム。
【請求項１１】
前記外部装置はプリンタである請求項１記載のデバイスドライバプログラム。
【請求項１２】
前記デバイスドライバプログラムはユーザインタフェースモジュールであり、且つ検出されたドライバプラグインプログラムは１つ以上のダイアログプロパティシートに対して機能を実現する請求項１１記載のデバイスドライバプログラム。
【請求項１３】
検出されたドライバプラグインプログラムの機能部は初期設定部から転送されるイベント通知を利用する請求項１記載のデバイスドライバプログラム。
【請求項１４】
初期設定部により獲得される情報は、検出されたドライバプラグインプログラムが初期設定部から受け入れるイベント通知の１つ以上の型に対応するイベント要求を含む請求項１記載のデバイスドライバプログラム。
【請求項１５】
オペレーティングシステムを実行する計算装置によるプリンタの使用をサポートするためのプリンタドライバのユーザインタフェースモジュールであって、
前記オペレーティングシステムにより呼び出され、前記オペレーティングシステムのシステムレジストリにおけるドライバプラグイン識別子を検出し、ドライバプラグイン識別子に対応するドライバプラグインプログラムをアクセスし且つメモリにロードし、ドライバプラグインプログラム中の情報機能呼び出しを指示するポインタをドライバプラグインプログラムから獲得し、ドライバプラグインプログラムから情報を受信するために情報機能呼び出しを実行し、受信された情報をローカルデータ構造に格納し、且つオペレーティングシステム機能呼び出しを使用することにより、受信された情報の一部を前記オペレーティングシステムへ転送する初期設定部と、
受信された情報において提供される機能ポインタを使用することにより、ドライバプラグインプログラムの機能部をアクセスし且つ実行し、前記プリンタにより実行されるべきプリントジョブに対応するイベント通知を前記オペレーティングシステムから受信し、受信された情報において提供されるクライアント要求を示す標識情報（イベント・リクエスト・インディケータ）がドライバプラグインプログラムはイベント通知を受け入れることを指示する場合、イベント通知をドライバプラグインプログラムへ転送する動作部とを具備するユーザインタフェースモジュール。
【請求項１６】
オペレーティングシステムを実行する計算装置による外部装置の使用をサポートするためのデバイスドライバのデバイスドライバプログラムにより使用するためのドライバプラグインプログラムにおいて、
機能アプリケーションをサポートする実行可能コードを有する機能部と、
ドライバプラグインプログラムによりサポートされる機能に対応する資源情報と、情報機能呼び出しを指示する情報ポインタとを含む資源部とを具備し、
情報ポインタは、資源部の資源情報に対応する資源ポインタと、機能部の実行可能コードに対応する機能ポインタとをデバイスドライバプログラムに戻す情報機能呼び出しを開始するために、デバイスドライバプログラムによりアクセスされるドライバプラグインプログラム。
【請求項１７】
オペレーティングシステムを実行する計算装置によるプリンタの使用をサポートするプリンタドライバのユーザインタフェースプログラムにより使用するためのドライバプラグインプログラムであって、
機能アプリケーションに対応する少なくとも１つのダイアログプロパティシートをサポートする実行可能コードを有する機能部と、
ドライバプラグインプログラムによりサポートされるダイアログプロパティシートの数と、ドライバプラグインプログラムによりサポートされる各ダイアログプロパティシートの型と、ドライバプラグインプログラムによりサポートされる各ダイアログプロパティシートの属性と、情報機能呼び出しを指示する情報ポインタと、イベントハンドラを指示するイベントポインタとを含む資源情報を含む資源部とを具備し、
情報ポインタは、資源部の資源情報に対応する資源ポインタと、機能部の実行可能コードに対応する機能ポインタとをユーザインタフェースプログラムに戻す情報機能呼び出しを開始するためにユーザインタフェースプログラムによりアクセスされ、且つイベントポインタは、前記オペレーティングシステムからユーザインタフェースプログラムにより受信される、前記プリンタにより実行されるべきプリントジョブの状態に対応するイベント通知をドライバプラグインプログラムへ転送するイベントハンドラを開始するために、ユーザインタフェースプログラムにより使用されるドライバプラグインプログラム。
【請求項１８】
計算装置による外部装置の使用をサポートするデバイスドライバのデバイスドライバプログラムにより使用するためのドライバプラグインプログラムを登録する方法であって、
外部供給源に配置された少なくとも１つの利用可能ドライバプラグインプログラムを識別する過程と、
前記計算装置にインストールするために前記利用可能ドライバプラグインプログラムのうちの少なくとも１つを選択する過程と、
選択された各ドライバプラグインプログラムを前記計算装置のメモリに格納し、且つ選択された各ドライバプラグインプログラムに対応する識別子を前記計算装置で実行中であるオペレーティングシステムのシステムレジストリに入力することにより、選択された各ドライバプラグインプログラムを前記計算装置にインストールする過程とから成る方法。
【請求項１９】
方法は、前記デバイスドライバのインストールのために規定されたインストールスクリプトにより実行される請求項１８記載の方法。
【請求項２０】
各識別子は前記外部装置の名前に対応するシステムレジストリの記憶場所に入力される請求項１８記載の方法。
【請求項２１】
各識別子はユーザの名前に対応するシステムレジストリの記憶場所に入力される請求項１８記載の方法。
【請求項２２】
各識別子は前記計算装置の名前に対応するシステムレジストリの記憶場所に入力される請求項１８記載の方法。
【請求項２３】
各識別子は前記外部装置の型に対応するシステムレジストリの記憶場所に入力される請求項１８記載の方法。
【請求項２４】
新たなプラグインプログラムがインストールされるときに前記ユーザインタフェースにおけるタブシートの数が増加するように、表示装置に表示されたドライバのユーザインタフェースの内容を制御する過程を更に含む請求項１８記載の方法。
【請求項２５】
オペレーティングシステムを実行する計算装置による外部装置の使用をサポートするためのコンピュータ実行可能なプロセスステップを格納するコンピュータ読み取り可能な媒体であって、前記コンピュータ実行可能なプロセスステップは請求項１８から２４のいずれか１項に記載の方法を実行するために実行可能であるプロセスステップを含むコンピュータ読み取り可能な媒体。
【請求項２６】
計算装置による外部装置の使用をサポートするデバイスドライバのデバイスドライバプログラムにより使用するためのドライバプラグインプログラムを登録する装置であって、
外部供給源に配置された少なくとも１つの利用可能ドライバプラグインプログラムを識別する識別手段と、
前記計算装置にインストールするために前記利用可能ドライバプラグインプログラムのうちの少なくとも１つを選択する選択手段と、
選択された各ドライバプラグインプログラムを前記計算装置のメモリに格納し、且つ選択された各ドライバプラグインプログラムに対応する識別子を前記計算装置で実行中であるオペレーティングシステムのシステムレジストリに入力することにより、選択された各ドライバプラグインプログラムを前記計算装置にインストールするインストール手段とを具備する装置。
【請求項２７】
前記デバイスドライバのインストールのために規定されたインストレーションスクリプトにより制御される請求項２６記載の装置。
【請求項２８】
新たなプラグインプログラムがインストールされるときに前記ユーザインタフェースにおけるタブシートの数が増加するように、表示装置に表示されたドライバのユーザインタフェースの内容を制御する制御手段を更に具備する請求項２６記載の装置。
【請求項２９】
各識別子は前記外部装置の名前に対応するシステムレジストリの記憶場所に入力される請求項２６記載の装置。
【請求項３０】
各識別子はユーザの名前に対応するシステムレジストリの記憶場所に入力される請求項２６記載の装置。
【請求項３１】
各識別子は前記計算装置の名前に対応するシステムレジストリの記憶場所に入力される請求項２６記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デバイスドライバの再コンパイレーションの必要なく動的拡張可能機能を提供するデバイスドライバに関する。例えば、本発明は、プリンタドライバがドライバプラグインモジュールを検出し、検出されたドライバプラグインモジュールに対応する情報をオペレーティングシステムに提供し、次に、検出されたドライバプラグインモジュールの機能を動的にアクセスするように、オペレーティングシステムにインタフェースするプリンタドライバにおいて実現されることが可能である。
【０００２】
【従来の技術】
通常、プリンタドライバなどのデバイスドライバは、プリンタなどの対応する装置へのアクセス及びその使用をサポートするためにワークステーション又はコンピュータにインストールされる。デバイスドライバは、一般に、対応する装置のメーカーにより開発、提供されており、対応する装置が計算環境に物理的に設置されるときに、又はユーザが既に設置されている装置を使用し始める前にインストールされる。
【０００３】
ウィンドウイングオペレーティングシステムにおけるデバイスドライバは、通常、各々がデバイスドライバの主要な機能構成要素を実現する、ダイナミックリンクライブラリ（．ｄｌｌ）として知られる多数のファイルから構成されている。例えば、プリンタドライバは、ユーザインタフェースプロパティシートを表示するためのユーザインタフェース．ｄｌｌと、画像データの必要なレンダリングを処理するためのグラフィックスレンダリング．ｄｌｌファイルと、プリンタドライバのその他の機能構成要素を表現するその他の．ｄｌｌファイルとから構成されている。このような例では、ユーザインタフェース．ｄｌｌファイルは、オペレーティングシステムインタフェース呼び出しを利用し且つアクセスすることによりユーザインタフェース機能を実現するためのコンパイルドコードを含む。このようにして、ユーザインタフェース．ｄｌｌファイルは、ユーザの表示装置にプリンタドライバの所望のユーザインタフェースプロパティシートを表示することができるように、必要な情報及びパラメータをオペレーティングシステムに提供する。
【０００４】
更に、ユーザインタフェース．ｄｌｌファイルは表示されるユーザインタフェースに対してバックグラウンドのサポートを動的に提供するために必要な機能コードを有する。例えば、ユーザインタフェースは白黒印刷又はカラー印刷のいずれかを選択するためのボタン及びダイアログ機能を含んでいても良い。ユーザが白黒印刷を選択した場合、ユーザインタフェース．ｄｌｌファイルの機能コードはユーザのその選択を表示されているユーザインタフェースプロパティシートで確認し、ユーザの選択を実現するようにグラフィックスレンダリング．ｄｌｌファイルへ転送するための内部フラグを設定する。
【０００５】
先に述べた通り、デバイスドライバの．ｄｌｌファイルは、プリンタドライバのユーザインタフェース．ｄｌｌファイル及びグラフィックスレンダリング．ｄｌｌファイルのように、デバイスドライバの所定の機能を実現する。各々の．ｄｌｌファイルは、それ自体、他の．ｄｌｌファイルに対する呼び出しを含んでいても良い。例えば、ユーザインタフェース．ｄｌｌファイルはユーザがアクセス及び変更またはそのいずれかをすることを希望する装置の機能の型に応じて選択すべきユーザ向けのいくつかのタブ付きプロパティシートから構成されたユーザインタフェースを提供しても良い。そのような場合、ユーザインタフェース．ｄｌｌファイルはユーザインタフェースのタブ付きプロパティシートの各々を表現する他の所定の．ｄｌｌファイルに対する固定呼び出しを含む。
【０００６】
上述のようなデバイスドライバは、通常、デバイスドライバの機能に応じて静的に固定された後、デバイスドライバの開発担当者によってコンパイルされる。例えば、ユーザインタフェース．ｄｌｌファイルはユーザのコンピュータ上に順次分配されるインストールの前にコンパイルされるため、ユーザインタフェース．ｄｌｌファイルによって表示され且つサポートされるユーザインタフェースのプロパティシートは、通常同じである。ユーザインタフェース．ｄｌｌファイルが他の所定の．ｄｌｌファイルそれぞれに対する固定された呼び出しを含む上述の例においても、他の所定の．ｄｌｌファイルの各アイデンティティは、通常、ユーザインタフェース．ｄｌｌファイルのコンパイルの後、固定される。
【０００７】
従って、ユーザのコンピュータにインストールされたデバイスドライバの機能は静的に固定されており、ユーザにより、又はネットワーク化された計算環境におけるネットワーク管理者により希望されるような追加機能を追加するために容易に変更することは不可能である。例えば、ネットワーク管理者がユーザのプリンタドライバに保護印刷及びジョブ課金などのネットワーク全体にわたる印刷アプリケーションをサポートさせることを希望したとする。上述のようなプリンタドライバは、そのような機能を追加するために管理者により容易に変更することができない。その代わりに、そのような機能を追加し、その後、．ｄｌｌファイルを再コンパイルし且つ試験するために、プリンタドライバの開発担当者がユーザインタフェース．ｄｌｌファイル及びその他の．ｄｌｌファイルを修正しなければならないであろう。その後に、プリンタドライバの修正済み．ｄｌｌファイルをユーザのコンピュータにインストールしなければならないであろう。デバイスドライバへの新たな機能の追加が希望されるたびに、このような修正プロセスはユーザ、ネットワーク管理者及びデバイスドライバ開発担当者にとって煩雑で、非効率的であることがわかる。
【０００８】
【発明の概要】
本発明は、オペレーティングシステムにインタフェースするプリンタドライバを提供し、プリンタドライバは１つ以上のドライバプラグインモジュールを検出し、検出された各ドライバプラグインモジュールに対応する情報をオペレーティングシステムに提供し、その後、検出された各ドライバプラグインモジュールの機能を動的にアクセスする構成とすることにより、上述の問題に対処する。このように、デバイスドライバの機能は、デバイスドライバを再設計、再コンパイル及び再試験する必要なく、デバイスドライバにより検出されたドライバプラグインモジュールの数及び型に基づいて動的に拡張される。
【０００９】
従って、本発明の１つの面は、オペレーティングシステムを実行する計算装置による外部装置の使用をサポートするためのデバイスドライバのデバイスドライバプログラムであって、オペレーティングシステムにより呼び出され、ドライバプラグインプログラムの有無を検出し、検出されたドライバプラグインプログラムから情報を獲得し、検出されたドライバプラグインプログラムからの情報をオペレーティングシステムへ転送する初期設定部を含み、且つ検出されたプラグインプログラムの機能部をアクセスし且つ実行し、オペレーティングシステムから外部装置に対応するイベント通知を受信し、検出されたドライバプラグインプログラムがイベント通知を受け入れる場合には、イベント通知を検出されたドライバプラグインプログラムへ転送する動作部を更に含むデバイスドライバプログラムに関する。
【００１０】
ドライバプラグインプログラムは、そのドライバプラグインプログラムに対応するエントリを求めてオペレーティングシステムのシステムレジストリを検索することにより検出されるのが好ましい。また、情報は、ドライバプラグインプログラムからエクスポートされるポインタによりアクセスされる情報機能呼び出しを利用することにより、ドライバプラグインプログラムから獲得される。更に、デバイスドライバプログラムはユーザインタフェースプログラムであるのが好ましく、ドライバプラグインプログラムから獲得される情報は、表示されるべきダイアログプロパティシートの属性と、プリントジョブ課金又は別の機能などの特定の機能を実現するためのドライバプラグインプログラム中の実行可能コードを指示するポインタとを含むのが好ましい。ドライバプラグインプログラムから獲得される情報はユーザインタフェースプログラムによりローカルデータ構造に格納されるのが好ましい。最後に、ドライバプラグインプログラムから獲得される情報は、ドライバプラグインプログラムへどの型のイベント通知を転送すべきかを判定するときに使用するためのイベント要求を含むのが好ましい。
【００１１】
以上の構成によって、検出された各ドライバプラグインプログラムの機能がデバイスドライバを再設計、再コンパイル及び再試験する必要なくデバイスドライバによりアクセスされ且つ利用されるように、デバイスドライバにより計算装置において検出されたドライバプラグインプログラムの数及び型に基づき、デバイスドライバの機能は動的に拡張されることが可能である。
【００１２】
別の面によれば、本発明は、オペレーティングシステムを実行する計算装置によるプリンタの使用をサポートするためのプリンタドライバのユーザインタフェースプログラムに関する。ユーザインタフェースプログラムは、オペレーティングシステムにより呼び出され、オペレーティングシステムのシステムレジストリにおけるドライバプラグイン識別子を検出し、ドライバプラグイン識別子に対応するドライバプラグインプログラムをアクセスし且つメモリにロードし、ドライバプラグインプログラム中の情報機能呼び出しを指示するポインタをドライバプラグインプログラムから獲得し、ドライバプラグインプログラムから情報を受信するために情報機能呼び出しを実行し、受信された情報をローカルデータ構造に格納し、且つオペレーティングシステム機能呼び出しを使用することにより、受信された情報の一部を前記オペレーティングシステムへ転送する初期設定部を含む。ユーザインタフェースプログラムは、受信された情報において提供される機能ポインタを使用することにより、ドライバプラグインプログラムの機能部をアクセスし且つ実行し、プリンタにより実行されるべきプリントジョブに対応するイベント通知をオペレーティングシステムから受信し、受信された情報において提供されるクライアント要求がドライバプラグインプログラムはイベント通知を受け入れることを指示する場合、イベント通知をドライバプラグインプログラムへ転送する動作部を更に含む。
【００１３】
ドライバプラグインプログラムから獲得される情報は、表示されるべきダイアログプロパティシートの属性と、プリントジョブ課金又は別の機能などの特定の機能を実現するためのドライバプラグインプログラム中の実行可能コードを指示するポインタとを含むのが好ましい。また、イベント要求は、どの型のイベント通知をドライバプラグインプログラムへ転送すべきかを定義するのが好ましい。
【００１４】
以上の構成によって、検出された各ドライバプラグインプログラムの機能がデバイスドライバを再設計、再コンパイル及び再試験する必要なくデバイスドライバによりアクセスされ且つ利用されるように、デバイスドライバにより計算装置において検出されたドライバプラグインプログラムの数及び型に基づき、デバイスドライバの機能は動的に拡張されることが可能である。
【００１５】
本発明の別の面においては、オペレーティングシステムを実行する計算装置による外部装置の使用をサポートするためのデバイスドライバのデバイスドライバプログラムにより使用するためのドライバプラグインプログラムが提供される。ドライバプラグインプログラムは、機能アプリケーションをサポートする実行可能コードを有する機能部と、ドライバプラグインプログラムによりサポートされる機能に対応する資源情報及び情報機能呼び出しを指示する情報ポインタとを含む資源部とを含む。情報ポインタは、資源部の資源情報に対応する資源ポインタと、機能部の実行可能コードに対応する機能ポインタとをデバイスドライバプログラムに戻す情報機能呼び出しを開始するために、デバイスドライバプログラムによりアクセスされる。
【００１６】
資源情報は資源ポインタを利用することによりアクセスされ、ドライバプラグインプログラムによりサポートされるダイアログプロパティシートの数と、ドライバプラグインプログラムによりサポートされる各ダイアログプロパティシートの型と、ドライバプラグインプログラムによりサポートされる各ダイアログプロパティシートの属性とを含むのが好ましい。
【００１７】
更に、資源部はイベントハンドラを指示するイベントポインタを含むのが好ましく、イベントポインタが情報機能呼び出しを介してデバイスドライバプログラムへ転送されることにより、イベントポインタは、デバイスドライバプログラムにより受信されたイベント通知をオペレーティングシステムからドライバプラグインプログラムへ転送するようにイベントハンドラを開始するためにデバイスドライバプログラムにより使用される。
【００１８】
デバイスドライバプログラムとドライバプラグインプログラムは、それぞれ、ダイナミックリンクライブラリファイルから構成されているのが好ましい。
【００１９】
以上の構成によって、検出された各ドライバプラグインプログラムの機能がデバイスドライバを再設計、再コンパイル及び再試験する必要なくデバイスドライバによりアクセスされ且つ利用されるように、デバイスドライバにより計算装置において検出されるべく登録されたドライバプラグインプログラムの数及び型に基づき、デバイスドライバの機能は動的に拡張されることが可能である。
【００２０】
更に別の実施例においては、本発明は、計算装置による外部装置の使用をサポートするデバイスドライバのデバイスドライバプログラムにより使用するためのドライバプラグインプログラムを登録する方法を指向している。方法は、外部供給源に配置された少なくとも１つの利用可能ドライバプラグインプログラムを識別することと、計算装置にインストールするために利用可能ドライバプラグインプログラムのうちの少なくとも１つを選択することと、選択された各ドライバプラグインプログラムを計算装置のメモリに格納し、且つ選択された各ドライバプラグインプログラムに対応する識別子を計算装置で実行中であるオペレーティングシステムのシステムレジストリに入力することにより、選択された各ドライバプラグインプログラムを計算装置にインストールすることとを含む。
【００２１】
方法は、デバイスドライバの開発者により提供されるインストレーションプログラムから、あるいはウェブ又はＣＤ−ＲＯＭなどの別の供給源から獲得されるインストレーションスクリプトにより実行されるのが好ましい。また、外部装置の名前に対応するシステムレジストリの記憶場所に、選択された各ドライバプラグインプログラムに対応する識別子が入力されるのが好ましい。
【００２２】
以上の構成によって、ドライバプラグインプログラムはプリンタのインストレーションの時点で、又は後の時点で容易にアクセスされ且つ登録されることが可能である。従って、検出された各ドライバプラグインプログラムの機能がデバイスドライバを再設計、再コンパイル及び再試験する必要なくデバイスドライバによりアクセスされ且つ利用されるように、デバイスドライバにより計算装置において検出されるべく登録されたドライバプラグインプログラムの数及び型に基づき、デバイスドライバの機能は動的に拡張されることが可能である。
【００２３】
本発明の別の実施例においては、計算装置によりプリンタへ送信されるべきプリントジョブをプリンタにおいて実行する方法が提示される。方法は、計算装置で実行中であるオペレーティングシステムにより、計算装置の表示装置に主プリンタダイアログプロパティシートを表示するための第１のユーザ入力要求を受信することと、オペレーティングシステムにより、プリンタに対応するプリンタドライバのユーザインタフェースプログラムの実行を開始することと、ユーザインタフェースプログラムにより、ドライバプラグインプログラムに対応するシステムレジストリ中の識別子を検出することと、ユーザインタフェースプログラムにより、タブ付きダイアログプロパティシート情報及び機能ポインタをドライバプラグインプログラムから獲得することと、タブ付きダイアログプロパティシート情報及び主ダイアログプロパティシート情報をユーザインタフェースプログラムからオペレーティングシステムへ転送することとを含む。方法は、オペレーティングシステムにより、ドライバプラグインプログラムから獲得されたタブ付きダイアログプロパティシート情報に対応するタブ付きダイアログプロパティシートをアクセスするためのタブを含む主プリンタダイアログプロパティシートを表示装置に表示することと、オペレーティングシステムにより、タブ付きダイアログプロパティシートを表示するための第２のユーザ入力要求を受信することと、オペレーティングシステムにより、第２のユーザ入力要求に応答してタブ付きダイアログプロパティシートを表示することとを更に含む。これに加えて、方法は、オペレーティングシステムにより、タブ付きダイアログプロパティシートによりサポートされる機能を使用するための第３のユーザ入力要求を受信することと、オペレーティングシステムにより、第３のユーザ入力要求をユーザインタフェースプログラムへ送信することと、ユーザインタフェースプログラムにより機能ポインタが利用されたときに、第３のユーザ入力要求に対応する機能を実現するドライバプラグインプログラム中の実行可能コードの実行を開始することと、オペレーティングシステムにより、プリンタによる画像データの印刷を開始するためのプリント要求を受信することと、オペレーティングシステムからプリント要求を受信したとき、プリンタドライバにより、画像データをプリントジョブとしてレンダリングし且つプリントジョブを実行するプリンタへプリントジョブを送信することとを含む。最後に、方法は、プリントジョブに関連するプリントイベント通知をユーザインタフェースプログラムからドライバプラグインプログラムへ送信することを含む。プリントイベント通知はドライバプラグインプログラム中の実行可能コードにより利用される。
【００２４】
タブ付きダイアログ情報は、ドライバプラグインプログラムからエクスポートされるポインタによりアクセスされる情報機能呼び出しを利用することによりドライバプラグインプログラムから獲得されるのが好ましい。また、タブ付きダイアログ情報は表示されるべきダイアログプロパティシートの属性と、プリントジョブ課金又は別の機能などの特定の機能を実現するためのドライバプラグインプログラム中の実行可能コードを指示するポインタとを含むのが好ましい。ドライバプラグインプログラムから獲得された情報はユーザインタフェースプログラムによりローカルデータ構造に格納されるのが好ましい。最後に、ドライバプラグインプログラムから獲得される情報は、ドライバプラグインプログラムへどの型のイベント通知を送信すべきかを判定するときに使用するためのイベント要求を含むのが好ましい。
【００２５】
以上の構成によって、検出された各ドライバプラグインプログラムの機能がデバイスドライバを再設計、再コンパイル及び再試験する必要なくデバイスドライバによりアクセスされ且つ利用されるように、デバイスドライバにより計算装置において検出されるドライバプラグインプログラムの数及び型に基づき、デバイスドライバの機能は動的に拡張されることが可能である。
【００２６】
以上、本発明の性質を迅速に理解できるように簡単な概要を提示した。添付の図面と関連させて以下の本発明の好ましい実施例の詳細な説明を参照することにより、本発明を更に完全に理解することが可能である。
【００２７】
【発明の実施の形態】
本発明は、プリンタなどの外部装置の使用をサポートするために計算装置において使用するための拡張可能デバイスドライバに関する。具体的には、本発明のデバイスドライバは、計算装置の機能能力を拡張するために計算装置に既に存在しているプラグインモジュールを検出し、それを組み込むことが可能である。一例として、以下に、デバイスドライバがプリンタの使用をサポートするプリンタドライバである一実施例に従って本発明を説明する。デジタル複写機、スキャナ、カメラなどの他の装置をサポートする他のデバイスドライバに対しても本発明を実現できることを理解すべきである。
【００２８】
図１は、本発明を実現できる計算環境のシステム図を示す。図１に示すように、計算環境はコンピュータ１０と、プリンタ２０と、サーバ３０と、接続部１とを具備する。接続部１はコンピュータ１０とプリンタ２０との間の、直列接続、ＵＳＢ、ＦｉｒｅＷｉｒｅ又は他のそのような接続などの単純なローカル接続であって良い。あるいは、接続部１はバス型物理アーキテクチャから構成されるイーサネットネットワーク媒体などのネットワークであっても良い。接続部１はインターネットを含む別の型のネットワークから構成されていても良いことを理解すべきである。
【００２９】
デスクトップコンピュータ１０は、ＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓ２０００、ＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓＭＥ又はＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓＸＰなどのウィンドウイングオペレーティングシステム環境を有する典型的なパーソナルコンピュータ又はワークステーションであるのが好ましい。
【００３０】
ＰＣ型コンピュータでは通常見られるように、デスクトップコンピュータ１０は、表示装置１１、キーボード１５、マウス１４、ホストプロセッサ１２、固定ディスク１３、ＣＤ−ＲＯＭドライブ１６、フロッピードライブおよび他の種類の記憶媒体（図示せず）またはそのいずれかを有しているのが好ましい。本発明によるコンピュータ１０の固定ディスク１３の内容については、以下に図２に関して更に詳細に説明する。
【００３１】
コンピュータ１０には接続部１によりプリンタ２０及び２５も接続されており、これらのプリンタは受信されるプリントデータに基づいて記録媒体に画像を印刷することが可能であるレーザープリンタ又はインクジェットプリンタであるのが好ましい。例えば、コンピュータ１０は、以下に更に詳細に説明するように、本発明に従ってプリンタドライバを実行することによりプリントジョブをレンダリングする。プリンタ２０はコンピュータ１０及びその他の供給源またはそのいずれかから接続部１を介してレンダリングされたプリントジョブを受信し、そのプリントジョブを実行する。プリンタ２０によるプリントジョブの実行中に、プリントジョブの状態をコンピュータ１０に報告することができるように、プリンタ２０は接続部１を介してコンピュータ１０と両方向通信するのが好ましい。プリンタ２５は以上説明したプリンタ２０と同様に動作する。本発明は他の種類の計算装置でも実現可能であり、図１に示すようなコンピュータ１０における実現には限定されないことを理解すべきである。更に、スキャナ、複写機、デジタルカメラなどのプリンタ以外の種類の装置をサポートするために本発明を利用することも可能である。
【００３２】
更に、接続部１は、バス型物理アーキテクチャから構成されるイーサネットネットワーク媒体などのネットワーク接続であるのが好ましい。接続部１にはサーバ３０も接続されている。サーバ３０は、ＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓ２０００、ＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓＭＥ又はＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓＸＰなどのウィンドウイングオペレーティングシステム環境を有するＰＣ互換機を具備するのが好ましい。サーバ３０は、多数のファイル、アプリケーション、データ、ウェブページ及び後述するプラグインモジュールを格納するための大型固定ディスクであるのが好ましい固定ディスク３１を有する。従って、サーバ３０はコンピュータ１０などの接続部１に接続する他の装置によりファイルサーバ、ウェブページサーバ、アプリケーションサーバ又はその他の種類のサーバとして利用されることが可能である。サーバ３０は、接続部１に接続する他の装置に対して、インターネットなどの別のネットワークをアクセスするためのゲートウェイとして動作しても良い。最後に、サーバ３０は、以下に更に詳細に説明するように、デバイスプラグインモジュールを獲得し且つインストールするためにコンピュータ１０によりアクセスされるべきウェブページをサポートするためのウェブサーバとして動作しても良い。
【００３３】
図２は、本発明を実現するための、固定ディスク１３の内容を含めたコンピュータ１０の内部構造を説明するためのブロック線図である。図２からわかるように、コンピュータ１０の内部構造は固定ディスク１３と、ランダムアクセスメモリ（ＲＡＭ）１７と、プロセッサ（ＣＰＵ）１９とを含む。典型的なコンピュータの場合と同様に、オペレーティングシステム４０は所望のプログラムの実行可能コードをＣＰＵ１９によるアクセス及び実行のためにＲＡＭ１７にロードする。コンピュータ１０の固定ディスク１３はオペレーティングシステム４０と、プリンタドライバ５０と、格納領域６０とを含む。先に述べた通り、オペレーティングシステム４０はウィンドウイングオペレーティングシステムであるのが好ましく、特に、オペレーティングシステム４０で実行中であるアプリケーションに対してアプリケーションプログラムインタフェースを提供するために機能呼び出しをサポートするＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓオペレーティングシステムであるのが好ましい。具体的には、機能呼び出しは、コンピュータ１０の表示装置１１にプロパティシートをレンダリングするための、プロパティシートに対応する属性及び情報を獲得するためのオペレーティングシステム１０に対する呼び出しを含むのが好ましい。更に、オペレーティングシステム４０は、コンピュータ１０で実行中であるアプリケーションに外部装置の状態情報を提供することをサポートするための機能呼び出しを含む。
【００３４】
レジストリ４１は固定ディスク１３にあり、固定ディスク１３のファイルフォルダ又はデータベースに常駐することができる情報格納場所である。レジストリ４１はオペレーティングシステム４０により維持及び利用され、オペレーティングシステム４０がプリンタ、スキャナ、複写機などの装置をサポートするために必要な情報を含む。この場合、簡潔にするため、レジストリ４１はコンピュータ１０のオペレーティングシステム４０によりサポートされるプリンタ２０及び２５に対応するデータのみを含むものとして図示されている。具体的には、レジストリ４１は本発明を実現するためのプラグイン識別子を含み、オペレーティングシステム４０がサポートするプリンタ２０及び２５にそれぞれ対応する２つの列を示す。ｐｒｉｎｔｅｒ１＿ｉｄ４２及びｐｒｉｎｔｅｒ２＿ｉｄ４７は各々のプリンタ２０、２５の装置識別子であり、一般に対応するプリンタの名前又はコードから構成されている。例えば、ｐｒｉｎｔｅｒ１＿ｉｄ４２をプリンタ２０に対応する「ＬＡＳＥＲ１」とし、ｐｒｉｎｔｅｒ２＿ｉｄ４７をプリンタ２５に対応する「ＩＮＫＪＥＴ１」として、それにより、オペレーティングシステム４０を介してコンピュータ１０のユーザにより利用できる２つのプリンタを識別しても良い。
【００３５】
ｐｒｉｎｔｅｒ１＿ｉｄ４２及びｐｒｉｎｔｅｒ２＿ｉｄ４７として表される各々の列には、プリンタドライバなどの既存のデバイスドライバを変形、再コンパイル及び試験する必要なくデバイスドライバに機能を追加することにより本発明を実現するために、プリンタドライバ５０により使用されるべき、格納領域６０で利用可能である各プラグインモジュールを識別するプラグイン識別子のリストが提供されている。各プラグイン識別子は格納領域６０にある、対応するプラグインモジュールの記憶場所のアドレスであるのが好ましい。あるいは、各プラグイン識別子は対応するプラグインモジュールの名前又はコードから構成されていることも可能である。
【００３６】
レジストリ４１に戻ると、プリンタ２０に対応するｐｒｉｎｔｅｒ１＿ｉｄ４２により表される列は、格納領域６０に配置されている保護プリントプラグインモジュール６３、ジョブリダイレクトプラグインモジュール６２、インストレーションプラグインモジュール６１及びジョブａｃｃｔプラグインモジュール６５に対応するｓｅｃ＿ｐｌｕｇｉｎ＿ｉｄ４２、ｒｄｒ＿ｐｌｕｇｉｎ＿ｉｄ４４、ｉｎｓｔ＿ｐｌｕｇｉｎ＿ｉｄ４５及びａｃｔ＿ｐｌｕｇｉｎ＿ｉｄ４６のプラグイン識別子を含む。このように、レジストリ４１は、プリンタドライバ５０の機能を拡張するためにプリンタドライバ５０により使用する目的でどのプラグインモジュールを利用可能にすべきかをプリンタドライバ５０が検出するのを補助するために、プリンタごとにプラグイン識別子を維持している。この点に関して、レジストリ４１の各プラグイン識別子は、特定の装置がインストールされるときに、あるいは以下に更に詳細に説明するように後の時点でコンピュータ１０のユーザ又はシステム管理者により、レジストリ４１の、その特定の装置の識別子の下に入力される。
【００３７】
図２のプリンタドライバ５０は、コンピュータ１０をプリンタ２０と通信させ且つコンピュータ１０がプリンタ２０を利用できるようにするためにオペレーティングシステム４０により実行されるべきドライバモジュールである。プリンタ２５と通信し且つプリンタ２５を利用するために同様のプリンタドライバ（図示せず）を使用できるが、ここでは簡潔にするためにこのプリンタドライバについては説明しない。図２に示すように、プリンタドライバ５０はｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１、ｇｒａｐｈｉｃｓ＿ｒｅｎｄｅｒ＿ｍｏｄ５２及びｏｔｈｅｒ＿ｍｏｄ５３を含む３つのモジュールから構成されている。ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はユーザにプリンタドライバ５０をアクセスさせ且つ制御させるためのユーザインタフェースを構成するために利用される。例えば、本発明のこの実施例では、デバイスドライバはコンピュータ１０によりプリンタ２０を駆動するためのプリンタドライバ５０であり、従って、ユーザがプリンタドライバ５０の機能をアクセスし且つ制御するために表示装置１１においてユーザインタフェースを閲覧したいという希望を指示したときに、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は実行される。オペレーティングシステム４０のようなウィンドウイングオペレーティングシステムにおいては、主ダイアログプロパティシートと、他のタブ付きダイアログプロパティシートをアクセスするためのタブとから一般に構成されるプリンタドライバユーザインタフェースを表示するようにダイアログプロパティシートを表示するために、ユーザは「プリンタプロパティ」に対応するボタンをたたくのが普通である。尚、各ダイアログプロパティシートはボタンと、情報と、プリンタドライバのいくつかの機能に関するダイアログとを提示する。
【００３８】
先に述べた通り、本発明は、デバイスドライバの機能を拡張するためにデバイスドライバによりアクセスされ且つ組み込まれるべきプラグインモジュールを提供する。先に説明した実施例では、ジョブ課金、保護印刷などの新たな機能をプリンタドライバ５０に追加するためにプラグインモジュールが利用される。更に、プラグインモジュールは、表示装置１１に表示されるプリンタドライバユーザインタフェースに組み込むためにｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１によりアクセスされるべき、新たな機能に対応するタブ付きダイアログプロパティシートも提供する。ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の構成と操作については以下に更に詳細に説明する。ｇｒａｐｈｉｃｓ＿ｒｅｎｄｅｒ＿ｍｏｄ５２はプリンタドライバ５０のもう１つの構成要素であり、コンピュータ１０のユーザの所望の設定に従って所定の画像データをプリントジョブにレンダリングするために使用される。ｏｔｈｅｒ＿ｍｏｄ５３は、プリンタドライバ５０を実現するために使用される他のモジュールを表す。この点に関して、ｇｒａｐｈｉｃｓ＿ｒｅｎｄｅｒ＿ｍｏｄ５２及びｏｔｈｅｒ＿ｍｏｄ５３もプラグインモジュールをアクセスし、組み込むことによりその機能を拡張することができるが、簡潔にするため、以下、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１に関してプラグインモジュールの使用を詳細に説明する。プリンタドライバ５０の上述のモジュールはダイナミックリンクライブラリファイルであるのが好ましい。
【００３９】
格納領域６０は、固定ディスク１３の、コンピュータを動作させ且つ本発明に従ってプリンタドライバ５０を利用するためにオペレーティングシステム４０とプリンタドライバ５０の双方により使用される領域である。図２に示すように、格納領域６０はインストレーションプラグインモジュール６１、ジョブリダイレクトプラグインモジュール６２、保護プリントプラグインモジュール６３、ポリシーｍｇｍｔプラグインモジュール６４、ジョブａｃｃｔプラグインモジュール６５及び機能ｍｏｄプラグインモジュール６６を含む。先にレジストリ４１に関して説明したように、これらのプラグインモジュールは、プリンタドライバ５０などのデバイスドライバの機能を拡張するためにアクセスされるべく使用される。例えば、インストレーションプラグインモジュール６１はコンピュータ１０により使用するための新たなプリンタをインストールする機能を提供し、ジョブリダイレクトプラグインモジュール６２はプリントジョブを１つのプリンタから別のプリンタへ移行させる機能を提供し、保護プリントプラグインモジュール６３はプリントジョブが保護方式でプリンタへ送信され、印刷されるように保証する機能を提供し、ポリシーｍｇｍｔプラグインモジュール６４はプリンタ及びプリンタ機能へのアクセスを管理する機能を提供し、ジョブａｃｃｔプラグインモジュール６５はプリンタへ送信されるプリントジョブを追跡し且つ報告する機能を提供し、機能ｍｏｄプラグインモジュール６６はペーパートレイ又はホッチキスなどの仕上げ装置のような、プリンタに追加される新たなハードウェアをサポートする機能を提供する。言うまでもなく、図２の格納領域６０に示されるプラグインモジュールの型はプリンタをサポートするためにプリンタドライバにより使用されるべき機能の例であり、プリンタドライバのプラグインモジュールにより実現できる全ての機能の型を網羅したリストではなく、また、スキャナ、複写機、デジタルカメラなどの他の装置に関わる機能は全く含まれていないことを理解すべきである。プラグインモジュールはダイナミックリンクライブラリファイルであるのが好ましい。
【００４０】
図２に戻ると、格納領域６０は他のモジュール６７、他のファイル６９、ウェブブラウザ７０、システムフォルダ７１、データベース７２、ローカルデータ構造７３及び登録アプリケーション７４を更に含んでいることがわかる。他のモジュール６７及び他のファイル６９は、オペレーティングシステム４０及びコンピュータ１０のＣＰＵ１９により実行される他のアプリケーションによりコンピュータ１０を動作させるために利用される。ウェブブラウザ７０は、コンピュータ１０のユーザにサーバ３０などのウェブサーバのウェブページを接続部１を介してアクセスさせるためにＣＰＵ１９により実行される。システムフォルダは、オペレーティングシステム４０及びＣＰＵ１９により実行される他のアプリケーションにより使用されるべきファイル及びアプリケーションを格納する管理記憶場所である。同様に、データベース７２は、オペレーティングシステム４０及びＣＰＵ１９により実行される他のアプリケーションによりアクセス及び使用される情報を格納するために使用される。ローカルデータ構造７３は、以下に更に詳細に説明するように、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により使用されるべきデータ構造の集合である。最後に、登録アプリケーションは、以下に更に詳細に説明するように、プラグインモジュールを識別し且つレジストリ４１にインストールするために使用される、命令スクリプトから構成されているのが好ましいアプリケーションである。
【００４１】
図３は、図２に示すプリンタドライバ５０のｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の構成を説明するためのブロック線図である。図３に示すように、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は初期設定部８０と、動作部９０とから構成されている。初期設定部８０は、プリンタドライバ５０のユーザインタフェースを閲覧するというユーザの要求に応答してｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１を初期設定するために使用される。例えば、ユーザが表示装置１１の、プリンタ２０に対応する「プリンタプロパティ」ボタンを選択すると、オペレーティングシステム４０は、プリンタドライバユーザインタフェースを初期設定し且つ必要なダイアログプロパティシート情報を表示のためにオペレーティングシステム４０へ転送するために、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の初期設定部８０の実行を開始する。初期設定部８０はプラグイン検索機能８１と、プラグイン情報機能８２と、ダイアログ構造機能８３と、静的ダイアログプロパティシート属性８４とを含む。
【００４２】
プラグイン検索機能８１は、プリンタ２０に対応する登録済みプラグインモジュールを求めてレジストリ４１などの所定の記憶場所を検索する。言うまでもなく、プラグイン検索機能８１によりアクセスされるべきプラグインモジュールを格納するための所定の記憶場所として、システムディレクトリフォルダ又はデータベースなどの別の記憶場所を使用することも可能である。プラグイン情報機能８２はプラグイン検索機能８１により検出されたプラグインモジュールに対応する情報を獲得し、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により利用可能である検出済みプラグインモジュールを選択する。プラグイン情報機能８２は選択されたプラグインモジュールごとの獲得情報をローカルデータ構造に格納する。ダイアログ構造機能８３は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１によりサポートされる各静的ダイアログプロパティシートの情報及び属性、並びに選択されたプラグインモジュールによりサポートされる各タブ付きダイアログプロパティシートの獲得情報及び属性をオペレーティングシステム４０へ転送するために使用される。オペレーティングシステム４０がダイアログプロパティシートごとの情報及び属性を受信したならば、オペレーティングシステム４０はコンピュータ１０の表示装置１１にレンダリングされたダイアログプロパティシートを表示する。この点に関して、静的ダイアログプロパティシート属性８４はｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１によりサポートされる各静的ダイアログプロパティシートの情報及び属性を含む。
【００４３】
ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の動作部９０は静的ダイアログプロパティシートサポートコード９１と、静的機能コード９２と、プラグイン機能アクセスコード９３と、プラグインイベントコード９４とから構成されている。動作部９０は初期設定部８０が完了した後に実行され、動作部９０は静的ダイアログプロパティシートをサポートし、選択されたプラグインモジュールによりサポートされる各タブ付きダイアログプロパティシートのサポートのために対応するプラグインモジュールをアクセスし、且つ必要に応じて適切なプラグインモジュールへイベント情報を転送するために使用される。静的ダイアログプロパティシートサポートコード９１は、各静的ダイアログプロパティシートにおける設定値及びボタンのユーザ修正を監視し、次に静的ダイアログプロパティシートをそれに対応して更新し、ユーザの修正を実現するために修正された設定値を静的機能コード９２と、可能であればｇｒａｐｈｉｃｓ＿ｒｅｎｄｅｒ＿ｍｏｄ５２などのプリンタドライバ５０の他の部へ転送することにより静的ダイアログプロパティシートをサポートするためのダイアログプロセスを実行する。例えば、ユーザがカラー印刷ではなく、白黒印刷を選択するために、表示されているプリンタドライバユーザインタフェースの主ダイアログプロパティシートのうちの１つで１つのボタンを利用することが考えられる。
【００４４】
静的ダイアログプロパティシートサポートコード９１はこのユーザ選択をｇｒａｐｈｉｃｓ＿ｒｅｎｄｅｒ＿ｍｏｄ５２へ転送し、そこで、画像データはプリンタ２０により印刷するためのプリントジョブにおいて白黒でレンダリングされる。静的機能コード９２は、プリンタ２０との通信の状態を監視する及びプリンタ２０により実行されるべきプリントジョブの状態を監視するなどのｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の他の静的機能を処理するために使用される。
【００４５】
プラグイン機能アクセスコード９３は、対応する選択されたプラグインモジュールにより提供されるタブ付きダイアログプロパティシートをサポートし且つジョブ課金、ポリシー管理などの、各々の選択されたプラグインモジュールによりサポートされる機能を実現するために、選択された各プラグインモジュールの機能コードをアクセスするために使用される。プラグインイベントコード９４はプリンタ２０に対応するオペレーティングシステム４０からのイベント通知を受信し、受信されたイベント通知が選択されたプラグインモジュールのうちのいずれかにより要求されていたか否かを判定し、適切な選択されたプラグインモジュールへ使用に備えてイベント通知を転送する。
【００４６】
図４は、本発明の一実施例によるプラグインモジュールの構成を説明するためのブロック線図である。このようなプラグインモジュールの構成を一般的に説明するために、図４にはジョブａｃｃｔプラグインモジュール６５が例示されている。図４に示すように、ジョブａｃｃｔプラグインモジュール６５は資源部１００と、機能部１３０とを含む。一般に、資源部１００は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１にタブ付きダイアログプロパティシート及びジョブａｃｃｔプラグインモジュール６５によりサポートされる機能をアクセスさせ且つそれを実現させるための情報及び機能を提供する。機能部１３０は、一般に、資源部１００に記述されているタブ付きダイアログプロパティシートをサポートし且つ所定のプリンタへ送信されるプリントジョブの数及び型を追跡し、報告するジョブａｃｃｔプラグインモジュール６５の機能を提供するための機能コードを提供する。
【００４７】
図４に示すように、資源部はインタフェース１０１と、属性１１０とを含む。インタフェース１０１は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１にタブ付きダイアログプロパティシート情報及びジョブａｃｃｔプラグインモジュール６５によりサポートされる機能をアクセスさせ且つそれを実現させるための情報及び機能を提供する。インタフェース１０１はプラグイン機能型１０２と、情報機能ポインタ１０３と、イベントハンドラポインタ１０４と、資源ポインタ１０５と、機能ポインタ１０６と、情報獲得機能１０７と、イベントハンドラ１０８とを含む。プラグイン機能型１０２は、プラグインモジュールによりサポートされる機能の型、この場合にはジョブ課金の指示をテキスト又はコードの形で提供する。情報機能ポインタ１０３は情報獲得機能１０７のアドレスを表現するポインタであり、これにより、ジョブａｃｃｔプラグインモジュール６５はｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１に情報機能ポインタ１０３を提供し、その後、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はジョブａｃｃｔプラグインモジュール６５に含まれている情報をアクセスするために情報機能ポインタ１０３を使用して情報獲得機能１０７呼び出す。
【００４８】
イベントハンドラポインタ１０４はイベントハンドラ１０８のアドレスを指示するポインタであり、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１がプリンタ２０に関するイベント通知をジョブａｃｃｔプラグインモジュール６５に提供するためにイベントハンドラ１０８を呼び出すことができるように、ジョブａｃｃｔプラグインモジュール６５によりｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１に提供される。この点に関して、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は、情報獲得機能１０７を介してｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１へ転送されるイベントハンドラ１０８に基づいて、イベント通知がジョブａｃｃｔプラグインモジュール６５へ送信されるべきか否かを判定する。別の実施例においては、イベントハンドラ１０８は、ジョブａｃｃｔプラグインモジュール６５へ送信されるべきイベント通知の型を記述する、テキスト又はコードの形態をとる記述子を提供することもできる。例えば、ジョブａｃｃｔプラグインモジュール６５のジョブ課金機能は、プリンタ２０へ送信された全てのプリントジョブの正確な料金を計算するためにプリントジョブの首尾良く印刷されたページの枚数と、プリントジョブの型とを必要とする。資源ポインタ１０５は属性１１０のアドレスを指示するポインタであり、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１がジョブａｃｃｔプラグインモジュール６５によりサポートされる各タブ付きダイアログプロパティシートの型及び属性をアクセスできるように、情報獲得機能１０７を介してｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１に提供される。同様に、機能ポインタ１０６も属性１１０のアドレスを指示するポインタであり、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１がジョブａｃｃｔプラグインモジュール６５によりサポートされる各タブ付きダイアログプロパティシートの型及び属性をアクセスできるように、情報獲得機能１０７を介してｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１に提供される。
【００４９】
属性１１０は資源ポインタ１０５によりアクセスされ、ダイアログプロパティシートの数１１１と、プロパティシート属性１１５とを含む。ダイアログプロパティシートの数１１１は、ジョブａｃｃｔプラグインモジュール６５によりサポートされるダイアログプロパティシートの数を指示する。プロパティシート属性１１５は、ジョブａｃｃｔプラグインモジュール６５によりサポートされるダイアログプロパティシートごとの列を含み、プロパティシートの番号１１６、型１１７及び属性１１８を表現するデータ構造である。このように、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により資源ポインタ１０５が獲得されると、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はジョブａｃｃｔプラグインモジュール６５によりサポートされる各ダイアログプロパティシートの型と属性を獲得することができ、各ダイアログプロパティシートの型及び属性はオペレーティングシステム４０へ転送されて、表示装置１１にタブ付きプロパティシートがレンダリングされる。型１１７は、静的プロパティシートの場合のＩＮＦＯや、ユーザがボタンなどを使用してパラメータを修正することが可能である動的プロパティシートの場合のＳＥＬＥＣＴなどのダイアログプロパティシートの型のテキスト又はコードによる表現であるのが好ましい。属性１１８はダイアログプロパティシートのレイアウト、ボタン及びダイアログプロパティシートにおけるダイアログ、並びに表示装置１１にダイアログプロパティシートをレンダリングするためにオペレーティングシステム４０により必要とされるダイアログプロパティシートのその他の面を表す記述データを含む。
【００５０】
機能部１３０は機能コード１３１と、イベント状態監視コード１３２とを含む。機能コード１３１は、情報獲得機能１０７を介してｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により獲得される機能ポインタ１０６を使用してｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により呼び出される実行可能コードである。機能コード１３１は、この場合にはプリントジョブ課金であるジョブａｃｃｔプラグインモジュール６５の機能を実現する。イベント状態監視コード１３２は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１からイベントハンドラ１０８を介してジョブａｃｃｔプラグインモジュール６５へ転送されるイベント通知の受信を処理する。イベント状態監視コード１３２は、ジョブａｃｃｔプラグインモジュール６５によりサポートされる機能の実現に使用するために、受信されたイベント通知を機能コード１３１へ転送する。
【００５１】
図５は、図２の格納領域６０のローカルデータ構造７３の構成を説明するためのブロック線図である。先に図３でｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の初期設定部８０に関して説明したように、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は情報獲得機能１０７を使用して、ジョブａｃｃｔプラグインモジュール６５から情報、ポインタ及び属性を獲得する。初期設定部８０は、ジョブａｃｃｔプラグインモジュール６５からこの情報を受信したならば、後に情報獲得機能１０７を再度使用する必要なくこの情報を迅速且つ効率的にアクセスできるように、ジョブａｃｃｔプラグインモジュール６５に対応する別個のデータ構造に情報を格納する。具体的には、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の初期設定部８０のプラグイン情報機能８３及びダイアログ構造機能８４は選択された各プラグインモジュールから情報を獲得し、それをローカルデータ構造７３の別個のディレクトリ構造に格納する。
【００５２】
図５に戻ると、ローカルデータ構造７３は、プリンタ２０に対応する、レジストリ４１のｐｒｉｎｔｅｒ１＿ｉｄ４２に登録されている４つのプラグインモジュールの各々に対応する構造１４０、１６０、１８０及び２００を含む。簡潔にするため、ジョブａｃｃｔプラグインモジュール６５からｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により獲得される情報に対応しているという意味で、データ構造１４０についてのみ説明する。データ構造１４０を見るとわかるように、データ構造１４０に含まれる情報はジョブａｃｃｔプラグインモジュール６５の資源部１０に含まれている情報のサブセットである。具体的には、この情報はプラグイン機能型１４２と、資源ポインタ１４３と、機能ポインタ１４４と、イベントハンドラポインタ１４５と、属性１５０とを含む。属性１５０はダイアログプロパティシートの数１５１と、ジョブａｃｃｔプラグインモジュール６５によりサポートされる各ダイアログプロパティシートのプロパティシート番号１５２、型１５３及び属性１５４とを含む。これらのデータの各々は先に図４のジョブａｃｃｔプラグインモジュール６５に関して説明済みであるので、ここでは詳細には説明しない。
【００５３】
図６は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１とジョブａｃｃｔプラグインモジュール６５との対話を記述したフローチャートである。ステップＳ６０１で、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はオペレーティングシステム４０から初期設定呼び出しを受信し、続いて初期設定部８０をトリガする。ステップＳ６０２で、プラグイン検索機能８１はプリンタ２０に対応するプラグインモジュールの有無に関してレジストリを検索する。ステップＳ６０３で、プラグインモジュールが検出されたか否かが判定される。検出されていなければ、流れはステップＳ６１５へ進み、戻る。プラグインモジュールが検出されていた場合には、流れはステップＳ６０４へ進み、ジョブａｃｃｔプラグインモジュール６５などの検出されたプラグインモジュールがＲＡＭ１７などのメモリにロードされる。次に、ステップＳ６０５で、プラグイン情報機能８２はジョブａｃｃｔプラグインモジュール６５から情報機能ポインタ１０３を獲得する。次に、プラグイン情報機能８２はステップＳ６０６で情報機能ポインタ１０３を使用して、ジョブａｃｃｔプラグインモジュール６５の資源部１００から情報及びダイアログプロパティシート属性１１０を受信するために、情報獲得機能１０７を呼び出す。
【００５４】
ステップＳ６０７では、検出されたプラグインモジュール、この場合にはジョブａｃｃｔプラグインモジュール６５がｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１によりサポートされる型であるか否かが判定される。サポートされる型でない場合、流れはステップＳ６０２へ進み、登録されているプラグインモジュールの検索を継続する。プラグインモジュールがサポートされているならば、この場合にはジョブ課金がサポートされているならば、流れはステップＳ６０８へ進み、ジョブａｃｃｔプラグインモジュール６５から受信された情報がローカルデータ構造７３の別個のローカルデータ構造１４０に格納される。ステップＳ６０９で、ダイアログ構造機能８３は静的ダイアログプロパティシートと、プラグインからのダイアログプロパティシートを含めた全てのダイアログプロパティシートの属性を、オペレーティングシステム４０により表示装置１１においてプリンタドライバユーザインタフェースとしてレンダリングするために、オペレーティングシステム４０へ転送する。ステップＳ６１０で、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１の動作部９０が実行され、ジョブａｃｃｔプラグインモジュール６５の機能部１３０が呼び出されて、ジョブａｃｃｔプラグインモジュール６５によりサポートされる機能を実現するために必要に応じて動作部９０により実行される。
【００５５】
次に、ステップＳ６１１では、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により組み込まれるべきプラグインがまだ存在するか否かが判定され、存在していれば、流れはステップＳ６０２へ進む。プラグインがそれ以上存在していない場合には、流れはステップＳ６１２へ進み、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はオペレーティングシステム４０からプリンタ２０に関するイベント通知を受信する。ステップＳ６１３では、受信されたイベント通知の型がイベントハンドラ１０８を使用してジョブａｃｃｔプラグインモジュール６５により要求された型であるか否かが判定される。要求された型であれば、流れはステップＳ６１４へ進み、イベント通知はジョブａｃｃｔプラグインモジュール６５で実行可能コードにより使用されるためにｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１からジョブａｃｃｔプラグインモジュール６５へ転送され、その後、流れはステップＳ６１５へ進み、戻る。要求された型ではない場合には、流れは直接にステップＳ６１５へ進み、戻る。
【００５６】
図７は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１によりプラグインモジュールが検出されず、組み込まれなかった場合のプリンタドライバユーザインタフェース２２０のグラフィック表現である。図７に示すように、プリンタドライバユーザインタフェース２２０は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により本来サポートされる静的ダイアログプロパティシートを表現する８つのタブ付きダイアログプロパティシート２２１から２２８から構成されている。８つのタブ付きダイアログプロパティシート２２１から２２８はプリンタ２０における印刷の様々な面を表現している。
【００５７】
図８は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により３つのプラグインモジュールが検出され、組み込まれた場合のプリンタドライバユーザインタフェース２２０のグラフィック表現である。図８に示すように、プリンタドライバユーザインタフェース２２０は、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により本来サポートされる静的ダイアログプロパティシートを表現する図７の８つのタブ付きダイアログプロパティシート２２１から２２８を含む。これに加えて、プリンタドライバユーザインタフェース２２０は、ポリシーｍｇｍｔプラグインモジュール６４、インストレーションプラグインモジュール６１及びジョブリダイレクトプラグインモジュール６２に対応する管理２２９、プリンタインストール２３０及びリダイレクト３１の３つのタブ付きダイアログプロパティシートを更に含む。このように、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１を変形、再コンパイル及び試験する必要なく、これら３つの追加機能の各々に関するタブ付きダイアログプロパティシートがそれぞれ対応するプラグインによりｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１を介して提供される。
【００５８】
図９は、本発明に従ったデバイスプラグインモジュールの識別及び登録を説明するためのフローチャートである。ステップＳ９０１では、コンピュータ１０のユーザによりプラグインモジュール登録アプリケーション７４がアクセスされる。この点に関して、ユーザはコンピュータ１０の構成及び保守の責任を負うシステム管理者であっても良いし、あるいは単なるコンピュータ１０のユーザであっても良い。先に述べた通り、プラグインモジュール登録アプリケーション７４は、プリンタ２０などの対応する装置がインストールされる時点でアクセスされ、固定ディスク１３の格納領域６０にロードされても良いし、あるいは後にプリンタ２０のプリンタドライバ５０に新たな機能を追加することが望まれるようになった時点でアクセスされ、ロードされても良い。例えば、プラグインモジュール登録アプリケーション７４はメーカーによりプリンタ２０と共に提供される、ＣＤ−ＲＯＭなどの形態をとるインストレーションファイルからアクセスされても良いし、あるいはウェブページから接続部１のウェブを介してアクセスされるか、固定ディスク１３又は別の記憶媒体からアクセスされても良い。この場合、プラグインモジュール登録アプリケーション７４はプリンタドライバ５０の構成要素もインストールするのが好ましい。また、プラグインモジュール登録アプリケーション７４はプリンタ２０の初期インストレーションと関連しない別個のアプリケーションであっても良く、ウェブ、ＣＤ−ＲＯＭ、固定ディスク１３又は他の記憶媒体からこれをアクセスし、ダウンロードすることも可能である。
【００５９】
プラグインモジュール登録アプリケーション７４はインストレーションスクリプトから構成されているのが好ましいが、プログラムコードを使用することもできる。
【００６０】
図９に戻ると、ステップＳ９０２で、プラグインモジュール登録アプリケーション７４により提供される利用可能プラグインモジュールが表示装置１１への表示のために識別される。利用可能プラグインモジュールは、プラグインモジュール登録アプリケーション７４がアクセスされたのと同じ記憶場所にあっても良いし、あるいはウェブのウェブページ、ＣＤ−ＲＯＭ、固定ディスク１３又は別の記憶媒体などの別の記憶場所から獲得されても良い。利用可能プラグインモジュールはプリンタ名、プリンタの型又は他の何らかのパラメータに基づいて配列されており、分類されるのが可能であるのが好ましい。ステップＳ９０３で、利用可能プラグインモジュールが識別されたか否かが判定される。識別されていなければ、流れはステップＳ９９１へ進み、戻る。利用可能プラグインモジュールが識別され且つ表示されていた場合には、ステップＳ９０４で、インストレーションのために少なくとも１つの利用可能プラグインモジュールが選択される。この点に関して、利用可能プラグインモジュールの選択はコンピュータ１０のユーザにより手動操作で実行されても良いし、あるいはコンピュータ１０において検出されたプリンタドライバ５０の型に基づいて自動的に選択されても良い。自動選択は、プリンタ２０がインストールされる時点でプラグインモジュールがインストールされる場合に特に有用であろう。
【００６１】
ステップＳ９０５で、選択されたプラグインモジュールをその源からコピーして、固定ディスク１３の格納領域６０に格納し、選択されたプラグインモジュールの登録の準備を行うためにレジストリ４１をアクセスする。ステップＳ９０６では、レジストリ４１に、選択されたプラグインモジュールと同じ型又は同じ名前の既存のプラグインモジュールが既に登録されているか否かが判定される。既に登録されていれば、流れはステップＳ９０７へ進み、コンピュータ１０のユーザにその状況が通知され、その後、ステップＳ９０８で、ユーザが既存のプラグインモジュールと置き換える又は別の名前を付けることにより選択されたプラグインモジュールのインストレーションを進行することを命令したか否かが判定される。ユーザが置き換え（又は別の名前を付けること）を選択した場合、流れはステップＳ９０９へ進み、既存のプラグインモジュールは場合に応じて削除されるか、又は別の名前を付けられる。その後、流れはステップＳ９１０へ進む。これに対し、ステップＳ９０８でユーザが既存のプラグインモジュールと置き換える又は別の名前を付けることにより選択されたプラグインモジュールのインストレーションを進行することを命令していなかった場合には、流れはステップＳ９１１へ進み、戻る。
【００６２】
ステップＳ９０６で、選択されたプラグインモジュールと同じ型又は同じ名前の既存のプラグインモジュールがレジストリ４１に既に登録されていなかった場合には、流れは直接にステップＳ９１０へ進む。そこで、選択されたプラグインモジュールによりサポートされる装置、この場合にはプリンタ２０のエントリに対応して、選択されたプラグインモジュールに対してレジストリ４１に識別子が入力される（ステップＳ９１０）。識別子は図２に示すレジストリ４１などで装置識別子に基づくエントリの下に入力されても良いし、あるいはｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１が装置の型、ユーザ名又はコンピュータ名などのエントリ型に基づいて登録済みプラグインモジュールを検索するのであれば、それらのエントリ型に基づくエントリの下に入力されても良い。流れはステップＳ９１１へ進み、戻る。このように、プラグインモジュールを対応する装置のインストール時又はインストール後の任意の時点で容易にアクセスし、インストールし、登録することが可能であり、これにより、デバイスドライバを変形、再コンパイル及び試験する必要なく、装置のデバイスドライバに新たな機能を提供することができる。
【００６３】
図１０は、本発明の一実施例に従ったオペレーティングシステム４０と、プリンタドライバ５０のｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１及び複数のプラグインモジュールとの対話を説明するためのフローチャートである。ステップＳ１００１で、オペレーティングシステム４０はプリンタドライバ５０のユーザインタフェースの主ダイアログプロパティシートの表示を求めるユーザ要求を受信する。ステップＳ１００２で、オペレーティングシステムは主ダイアログプロパティシートの表示を求めるユーザ要求に応答して初期設定呼び出しをｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１へ送信する。そこで、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はプリンタ２０に対応する登録済みプラグインモジュールを検出するためにレジストリ４１を検索する。ステップＳ１００４で、ステップＳ１００３において登録済みプラグインモジュールが検出されたか否かが判定される。検出されていなければ、流れはステップＳ１０１９へ進み、戻る。プラグインモジュールが検出されていた場合には、流れはステップＳ１００５へ進み、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は、先に説明したように、情報ポインタを使用することにより、検出された各プラグインモジュールからタブ付きダイアログプロパティシートに対応する情報及び属性を獲得する。
【００６４】
次に、ステップＳ１００６で、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は獲得された情報及び属性を、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により本来サポートされる静的タブ付きダイアログプロパティシートの情報及び属性と共にオペレーティングシステム４０へ転送する。ステップＳ１００７で、オペレーティングシステム４０はプリンタドライバユーザインタフェースの主ダイアログプロパティシートをコンピュータ１０の表示装置１１にレンダリングする。主ダイアログプロパティシートは検出されたプラグインモジュールから獲得された他のタブ付きダイアログプロパティシートをアクセスするためのタブを有する。オペレーティングシステム４０は、ステップＳ１００８で、検出されたプラグインモジュールから獲得された他のタブ付きダイアログプロパティシートのうちの１つの表示を求める要求を受信する。ステップＳ１００９で、オペレーティングシステム４０は検出されたプラグインモジュールから獲得された、要求されているタブ付きダイアログプロパティシートを表示する。ステップＳ１０１０で、表示されたタブ付きダイアログプロパティシートによりサポートされる機能を利用するための要求がオペレーティングシステム４０により受信され、オペレーティングシステム４０は、ステップＳ１０１１で、機能要求をｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１へ送信する。
【００６５】
ステップＳ１０１２で、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１は機能ポインタを使用して、機能要求を受信したタブ付きダイアログプロパティシートに対応するプラグインモジュールの機能コードをアクセスし、実行する。このようにして、プラグインモジュールはプリンタドライバ５０のｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１により本来はサポートされない機能を実現する。ステップＳ１０１３では、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１に組み込むべきプラグインモジュールがまだ存在するか否かが判定され、存在していれば、流れはステップＳ１００５へ進み、他のプラグインに関する情報を獲得する。
【００６６】
組み込むべきプラグインモジュールがそれ以上存在していない場合には、流れは直接にステップＳ１０１４へ進み、オペレーティングシステム４０はプリンタ２０により画像データを印刷するためのプリント要求をユーザから受信する。オペレーティングシステム４０はステップＳ１０１５でプリント要求をプリンタドライバ５０へ送信し、ステップＳ１０１６で、画像データがプリンタ２０へ印刷のために送信されるプリントジョブとしてレンダリングされる。ステップＳ１０１７で、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はプリンタ２０の状態に関するイベント通知をオペレーティングシステム４０から受信し、次に、ステップＳ１０１８で、ｕｓｅｒ＿ｉｎｔｅｒｆａｃｅ＿ｍｏｄ５１はイベント通知を適切なプラグインモジュールへそれらを使用するために送信する。その後、流れはステップＳ１０１９へ進み、戻る。
【００６７】
このように、オペレーティングシステム、デバイスドライバ及びドライバプラグインモジュールは共に協調して機能し、デバイスドライバを変形、再コンパイル及び試験する必要なくデバイスドライバに追加の機能を提供する。
【００６８】
本発明は他の種類の装置をサポートするプリンタドライバ以外のデバイスドライバの機能能力を拡張するためにも実現可能であることを理解すべきである。更に、本発明は、ここで例示したものを超える、他の種類の計算装置及び計算環境においても、他の形態のオペレーティングシステムを伴って実現可能である。加えて、ソフトウェアモジュール、機能、プログラム、アプリケーション及びその他のファイルの機能面もここで例示した以外のソフトウェア及び命令の形態で実現可能である。
【００６９】
本発明を特定の実施例によって説明した。本発明は上述の実施例に限定されず、本発明の趣旨の範囲から逸脱せずに当業者により様々な変更及び変形を実施できることを理解すべきである。特に、先に述べた通り、ネットワークプリンタのみならず、様々な種類のネットワーク装置を管理するために本発明を使用することができる。
【図面の簡単な説明】
【図１】本発明の一実施例に従って本発明を実現できる計算環境の典型的な図。
【図２】図１に示すコンピュータの内部構造を示す詳細なブロック線図。
【図３】本発明の一実施例によるプリンタドライバのユーザインタフェースモジュールの構成要素を説明するためのブロック線図。
【図４】本発明の一実施例によるプラグインモジュールの構成要素を説明するためのブロック線図。
【図５】本発明の一実施例によるローカルデータ構造の構成要素を説明するためのブロック線図。
【図６Ａ】本発明の一実施例に従ったプリンタドライバによるプラグインモジュールの使用を説明するためのブロック線図。
【図６Ｂ】本発明の一実施例に従ったプリンタドライバによるプラグインモジュールの使用を説明するためのブロック線図。
【図７】本発明の一実施例によるプリンタドライバユーザインタフェースの主ダイアログプロパティシートを説明するためのブロック線図。
【図８】本発明の一実施例に従ってプラグインモジュールからタブ付きダイアログプロパティシートを取り入れるプリンタドライバユーザインタフェースの主ダイアログプロパティシートを説明するためのブロック線図。
【図９】本発明の一実施例に従ったプラグインモジュールの登録を説明するためのフローチャート。
【図１０Ａ】本発明の一実施例に従ったプラグインモジュールと、プリンタドライバと、オペレーティングシステムの間の対話を説明するためのフローチャート。
【図１０Ｂ】本発明の一実施例に従ったプラグインモジュールと、プリンタドライバと、オペレーティングシステムの間の対話を説明するためのフローチャート。
【図１】
2004005608.tif 000003
【図２】
2004005608.tif 000004
【図３】
2004005608.tif 000005
【図４】
2004005608.tif 000006
【図５】
2004005608.tif 000007
【図６Ａ】
2004005608.tif 000008
【図６Ｂ】
2004005608.tif 000009
【図７】
2004005608.tif 000010
【図８】
2004005608.tif 000011
【図９】
2004005608.tif 000012
【図１０Ａ】
2004005608.tif 000013
【図１０Ｂ】
2004005608.tif 000014
【外国語明細書】
2004005608.tif 000015
2004005608.tif 000016
2004005608.tif 000017
2004005608.tif 000018
2004005608.tif 000019
2004005608.tif 000020
2004005608.tif 000021
2004005608.tif 000022
2004005608.tif 000023
2004005608.tif 000024
2004005608.tif 000025
2004005608.tif 000026
2004005608.tif 000027
2004005608.tif 000028
2004005608.tif 000029
2004005608.tif 000030
2004005608.tif 000031
2004005608.tif 000032
2004005608.tif 000033
2004005608.tif 000034
2004005608.tif 000035
2004005608.tif 000036
2004005608.tif 000037
2004005608.tif 000038
2004005608.tif 000039
2004005608.tif 000040
2004005608.tif 000041
2004005608.tif 000042
2004005608.tif 000043
2004005608.tif 000044
2004005608.tif 000045
2004005608.tif 000046
2004005608.tif 000047
2004005608.tif 000048
2004005608.tif 000049
2004005608.tif 000050
2004005608.tif 000051
2004005608.tif 000052
2004005608.tif 000053
2004005608.tif 000054
2004005608.tif 000055
【図１】2004005608.tif 000056
【図２】2004005608.tif 000057
【図３】2004005608.tif 000058
【図４】2004005608.tif 000059
【図５】2004005608.tif 000060
【図６Ａ】
2004005608.tif 000061
【図６Ｂ】
2004005608.tif 000062
【図７】2004005608.tif 000063
【図８】2004005608.tif 000064
【図９】2004005608.tif 000065
【図１０Ａ】
2004005608.tif 000066
【図１０Ｂ】
2004005608.tif 000067