(57)【要約】【課題】  従来、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールすることができなかった。【解決手段】  本発明の情報処理装置は、デバイスドライバーのインストールを管理者権限のコンポーネントで実現するＯＳ（オペレーティングシステム）が実行される情報処理装置であって、ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、前記管理手段は、前記ＯＳ上で動作する管理者権限の第１のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする。【選択図】  図７
2012216166.tif 000002
【特許請求の範囲】
【請求項１】
デバイスドライバーのインストールを管理者権限のコンポーネントで実現するＯＳ（オペレーティングシステム）が実行される情報処理装置であって、
ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、
前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、
前記管理手段は、前記ＯＳ上で動作する管理者権限の第１のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする情報処理装置。
【請求項２】
周辺機器を利用するためのデバイスドライバーの設定処理とは、デバイスドライバーのインストール、デバイスドライバーのポート作成、及びデバイスに対応するキューの作成の少なくともいずれかを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
処理要求の出力先を特定せずにインストールされた仮想ドライバーをユーザーが選択した際に、前記選択手段は前記処理要求の出力先となる周辺機器を選択させることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第１のコンポーネントとは、前記仮想ドライバーをインストールした際に、前記ＯＳの機能の一部として提供される管理者権限の第２のコンポーネントにより管理されるようセットアップされるコンポーネントであることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２のコンポーネントは、スプーラーサービスであり、
前記第１のコンポーネントは、スプーラーサービスによりロードされるランゲージモニターであることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記仮想ドライバーをインストールする際には、複数のデバイスモデルに対応する汎用デバイスドライバーもインストールされ、
前記管理手段は、前記選択された周辺機器を利用するために、当該汎用デバイスドライバーのポート作成を前記第１のコンポーネントに対して要求することを特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記管理手段は、前記第１のコンポーネントに対して要求するまえに、前記選択された周辺機器に対応するデバイスドライバーの設定処理を実行することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
デバイスドライバーのインストールを管理者権限のコンポーネントで実現するＯＳ（オペレーティングシステム）が実行される情報処理装置における制御方法であって、
ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択工程と、
前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理工程とを有し、
前記管理工程では、前記ＯＳ上で動作する管理者権限の第１のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする制御方法。
【請求項９】
請求項１乃至７のいずれか１項に記載の手段としてコンピューターを機能させることを特徴とするプログラム。
【請求項１０】
プリンタードライバーのインストールを管理者権限のコンポーネントで実現するＯＳ（オペレーティングシステム）が実行される情報処理装置と、プリンターとを含む印刷システムであって、
ユーザーからアプリケーションを介して印刷指示を受け付けたことに応じて、印刷対象となる中間形式のデータを保持する保持手段と、
前記プリンターから、プリンターの情報を含む印刷要求を受信する受信手段と、
前記プリンターの情報に基づき、当該プリンターに対応するプリンタードライバーの設定処理を制御する管理手段と、
前記保持された中間形式のデータから前記プリンタードライバーを用いて生成された印刷ジョブを、前記プリンターに送信する送信手段と、を有し、
前記管理手段は、前記ＯＳ上で動作する管理者権限のコンポーネントに対して、前記プリンターに対応するプリンタードライバーの設定処理を要求することを特徴とする印刷システム。
【請求項１１】
プリンタードライバーの設定処理とは、プリンタードライバーのインストール、プリンタードライバーのポート作成、及びプリンターに対応するキューの作成の少なくともいずれかを含むことを特徴とする請求項１０に記載の印刷システム。
【請求項１２】
プリンタードライバーのインストールを管理者権限のコンポーネントで実現するＯＳ（オペレーティングシステム）が実行される情報処理装置と、プリンターとを含む印刷システムにおける制御方法であって、
ユーザーからアプリケーションを介して印刷指示を受け付けたことに応じて、印刷対象となる中間形式のデータを保持する保持工程と、
前記プリンターから、プリンターの情報を含む印刷要求を受信する受信工程と、
前記プリンターの情報に基づき、当該プリンターに対応するプリンタードライバーの設定処理を制御する管理工程と、
前記保持された中間形式のデータから前記プリンタードライバーを用いて生成された印刷ジョブを、前記プリンターに送信する送信工程と、を有し、
前記管理工程では、前記ＯＳ上で動作する管理者権限のコンポーネントに対して、前記プリンターに対応するプリンタードライバーの設定処理を要求することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンターなどの周辺機器を利用するためのデバイスドライバーのインストールを制御するための技術に関するものである。
【背景技術】
【０００２】
パーソナルコンピューターなどの情報処理装置からプリンターやスキャナーなどの周辺機器を利用するには、一般的にその周辺機器に対応した特定のデバイスドライバーを情報処理装置に組み込む必要がある。従来、ユーザーが利用する周辺機器が複数台ある場合には、その台数分だけプリンタードライバーをユーザーの情報処理装置に組み込んでいたが、ユーザーは周辺機器のＩＰアドレスを調べたり、対応するデバイスドライバーを探してきたりする面倒なインストールのための作業を強いられてきた。
そこで、近年、このインストール作業を効率化するための技術が考案されている。例えば、特許文献１には、ネットワーク上の周辺機器から構成情報を受信して、対応するデバイスドライバーを情報処理装置にインストールするシステムの開示がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１３５４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前述の特許文献１は、ユーザーが印刷要求を行うより前のタイミングで、事前にデバイスドライバーをインストールしておく技術であった。しかしながら、例えば一般的なアプリケーションから印刷を指示して、印刷要求を行うタイミングにおいては、情報処理装置を別の場所に移動させた場合など、ネットワーク上にプリンターが存在しない場合がある。また、印刷要求を行うタイミングにおいて、よりユーザーが利用したいと思われるプリンターがネットワーク上に設置されることも考えられる。そのため、ユーザーが一般的なアプリケーションから印刷を指示して、印刷要求を行うタイミングで、所望のプリンタードライバーをインストールするための手法がより望まれる。
そこで、本発明においては、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールするための手法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の情報処理装置は、デバイスドライバーのインストールを管理者権限のコンポーネントで実現するＯＳ（オペレーティングシステム）が実行される情報処理装置であって、ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、前記管理手段は、前記ＯＳ上で動作する管理者権限の第１のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする。
【発明の効果】
【０００６】
本発明により、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールするための手法を提供できる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態におけるシステムの構成図およびホストコンピューターならびにプリンター内部の装置構成を示すブロック図
【図２】インストーラーのユーザーインターフェース例を表す図
【図３】プリンタードライバー、プリントキュー、ポートの各情報とそれらの関連を表す図
【図４】一般的なプリンタードライバーのインストールである第１のインストール処理を示すフローチャート
【図５】第１の実施形態における仮想・汎用・専用プリンタードライバーのインストール処理を示すフローチャート
【図６】第１の実施形態における印刷処理のデータフロー図
【図７】第１の実施形態における印刷処理のシーケンス図
【図８】アプリケーションおよびプリントジョブマネージャーのユーザーインターフェース例を表す図
【図９】出力準備処理のフローチャート
【図１０】本発明に特有のプリンタードライバーのインストール処理である第２のインストール処理を示すフローチャート
【図１１】インストール処理に関わるコンポーネントを表す図
【図１２】権限を考慮した第３のインストール処理を示すフローチャート
【図１３】ＢｉＤｉ  ＡＰＩで扱うデータの例を表す図
【図１４】第２の実施形態におけるシステムの構成図ならびに認証ユニットの掃除構成を示すブロック図
【図１５】認証ユニットが記憶する組み合わせ情報の例を表す図
【図１６】第２の実施形態における印刷処理のシーケンスの例
【発明を実施するための形態】
【０００８】
以下、本発明を実施するための実施例を図面を用いて説明する。
【０００９】
（第１の実施の形態）
図１（ａ）は、本発明の実施形態に係るネットワークシステムの概略を示すブロック図である。このネットワークシステムは、ホストコンピューター１０１と、このホストコンピューター１０１より印刷データを受信して印刷を行なう複数のプリンター（１０２ａ，１０２ｂ，…）などの周辺機器とデバイスドライバーを配信する配信サーバー１０３等を備える。これらはネットワーク１０４を介して接続されている。
【００１０】
図１（ｂ）は、図１（ａ）のホストコンピューター１０１とプリンター１０２の装置構成を示すブロック図である。
【００１１】
ホストコンピューター１０１は、一般的なパーソナルコンピューターなどを含む情報処理装置である。ＣＰＵ１１１は、ＲＡＭ１１２に記憶されているプログラムに従って、システムバス１１４に接続される各デバイスを総括的に制御している。このＲＡＭ１１２は、ＣＰＵ１１１の主メモリ、ワークエリア等としても機能している。ＲＯＭ１１３は、各種プログラム及びデータを格納しており、各種フォントを記憶するフォントＲＯＭ（１１３ａ）、ブートプログラムやＢＩＯＳ等を記憶するプログラムＲＯＭ（１１３ｂ）、及び各種データを記憶するデータＲＯＭ（１１３ｃ）に区分けして構成されている。キーボードコントローラＩ／Ｆ１１５は、キーボード１１９や不図示のポインティングデバイス（マウス）からのキー入力を制御する。ディスプレイＩ／Ｆ１１６は、ディスプレイ１２０への表示を制御している。外部メモリＩ／Ｆ１１７は、例えばハードディスク（ＨＤ）、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（ＳＳＤ）等の外部メモリ１２１とのアクセスを制御する。外部メモリ１２１は、オペレーティングシステムプログラム（以下、ＯＳ）１２２をはじめ各種アプリケーション１２３、印刷処理関連プログラム１２４、さらに、不図示のユーザファイル、編集ファイル等を記憶するコンピューターが読み取り可能な記憶媒体として機能する。なお、ここではＯＳ１２２としてＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）を使用するものとする。
【００１２】
印刷処理関連プログラム１２４は、本実施形態に係るプリントジョブマネージャー１２５と仮想プリンタードライバー１２６と汎用プリンタードライバー１２７と専用プリンタードライバー１２８とインストーラー１２９を含んでいる。
【００１３】
さらに印刷処理関連プログラム１２４は、第２の実施形態で使用される認証ジョブマネージャー１３０も含んでいる。
【００１４】
仮想プリンタードライバーとは、本実施形態特有のドキュメントを物理的なプリンターに対して直接ではなく、間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタードライバー１２６はＯＳ１２２上では一般的なプリンタードライバーとして登録されるため、ユーザーは通常の印刷作業手順に近い感覚で作業を行うことができる。一方、汎用プリンタードライバーと専用プリンタードライバーは、一般的に印刷指示に用いられるプリンタードライバーとして分類される。具体的には、汎用プリンタードライバーとは、複数のデバイスモデルのプリンターを利用した印刷が可能なプリンタードライバーである。汎用プリンタードライバーは、対応するデバイスモデルが共通で持つ機能を利用することができる。一方、専用プリンタードライバーとは、単一のデバイスモデルにのみ対応したプリンタードライバーである。専用プリンタードライバーは、対応するデバイスモデルの機能を最大限に引き出すことが可能である。
【００１５】
ネットワークＩ／Ｆ１１８は、ネットワーク１０４を介してプリンター１０２に接続され、プリンター１０２との間で通信制御処理を行なう。なお、配信サーバー１０３もホストコンピューター１０１と同様の装置構成を備える。
【００１６】
次にプリンター１０２の構成について説明する。ＣＰＵ１３２は、プリンター１０２の全体の動作を制御している。ＲＡＭ１３９は、ＣＰＵ１３２の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域としても用いられる。またこのＲＡＭ１３９は、ＮＶＲＡＭ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  ＲＡＭ：不揮発性ＲＡＭ）領域も備えており、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。ＲＯＭ１３３は、各種フォントを記憶するフォントＲＯＭ（１３３ａ）、ＣＰＵ１３２により実行される制御プログラム等を記憶するプログラムＲＯＭ（１３３ｂ）、及び各種データを記憶するデータＲＯＭ（１３３ｃ）を備えている。ネットワークＩ／Ｆ１３８は、ホストコンピューター１０１との間でデータの送受信を行なう。印刷部Ｉ／Ｆ１３６は、プリンタエンジンである印刷部１３７とのインターフェースを制御している。外部メモリ１３４は、外部メモリＩ／Ｆ１４０によりアクセスが制御されており、オプションとして接続されるハードディスク（ＨＤ）、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（ＳＳＤ）等を含んでおり、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。さらに、本実施形態に係る専用プリンタードライバー１４３を記憶することも可能である。なお、ハードディスク等の外部メモリ１３４が接続されていない場合には、ＲＯＭ１３３のデータＲＯＭ（１３３ｃ）に、ホストコンピューター１０１で利用される情報等を記憶することになる。なお、この外部メモリ１３４は１個に限らず複数備えるものであってもよく、例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。操作部１４２には、ユーザーによる操作を受け付ける操作パネルが設けられ、その操作パネルには操作のためのスイッチ及びＬＥＤ表示器等が配されている（不図示）。また、不図示のＮＶＲＡＭを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。ＣＰＵ１３２は、ＲＯＭ１３３のプログラムＲＯＭ（１３３ｂ）に記憶された制御プログラム等に基づき、印刷部Ｉ／Ｆ１３６を介して印刷部１３７に出力情報としての画像信号を出力する。また、ＣＰＵ１３２はネットワークＩ／Ｆ１３８を介してホストコンピューター１０１との通信処理が可能となっており、ホストコンピューター１０１から送信される印刷データを受信すると共に、プリンター１０２内の情報等をホストコンピューター１０１に通知可能に構成されている。
【００１７】
図２は、図１（ｂ）のインストーラー１２９が備えるユーザーインターフェース（ＵＩ）２００である。インストーラー１２９を実行すると、ディスプレイ１２０上に表示されるプリンターリスト２０１にインストール可能なプリンタードライバーの一覧が表示される。
【００１８】
Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａは、デバイスモデルＡのプリンターに対応した専用プリンタードライバーである。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｂは、デバイスモデルＢのプリンターに対応した専用プリンタードライバーである。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｃは、デバイスモデルＣのプリンターに対応した専用プリンタードライバーである。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｄは、デバイスモデルＤのプリンターに対応した専用プリンタードライバーである。
【００１９】
Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １は、デバイスモデルＡ、Ｂに対応した汎用プリンタードライバーである。Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２は、デバイスモデルＣ、Ｄに対応した汎用プリンタードライバーである。
【００２０】
Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌは、デバイスモデルＡ、Ｂ、Ｃ、Ｄだけではなく、あらゆるプリンターに対応可能な仮想プリンタードライバーである。ユーザーが任意のモデルを選択し、追加ボタン２０２を押下し、インストール対象となるプリンターリスト２０３に選択したモデルを加える。その後、ユーザーがインストールボタン２０４を押下することで、インストーラー１２９は指定されたモデルのプリンタードライバーをインストールする。
【００２１】
図３は、プリンタードライバーとプリントキューとポートの各情報とそれらの関係を説明した図である。ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）のオブジェクト図を使って表現している。
【００２２】
プリントキュー３０２は、アプリケーションから印刷する際の印刷対象オブジェクトである。同一デバイスモデルのプリンタードライバー３０１から複数作成することができる。例えば、オフィスにＤｅｖｉｃｅ  Ｍｏｄｅｌ  Ａのプリンターが３台導入された場合、Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａに対応したプリンタードライバーを１つインストールして、そのプリンタードライバーを使ったプリントキューを３つ作成することになる。ポート３０３は、ネットワークの出力先を特定するオブジェクトである。プリントキューとポートの関係は通常は一対一であるが、図のように同じポートを複数のプリントキューが使用してもかまわない。また、プリンタードライバー３０１はプリンタードライバー構成情報３０４を保持している。プリンタードライバー構成情報３０４は、ドライババージョン、デバイスモデル名、ハードウェア情報、ドライバモジュール名、等から構成される。このプリンタードライバー構成情報３０４は、ＯＳ１２２によって管理される。プリントキュー３０２は、プリントキュー構成情報３０５を保持している。プリントキュー構成情報３０５は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。このプリントキュー構成情報３０５は、ＯＳ１２２によって管理される。さらに、プリントキュー３０２は、本実施形態に特有の自動生成識別子３０６と更新日時３０７をも保持する。これらの情報は、プリントジョブマネージャー１２５によって管理される。ポート３０３は、ポート構成情報３０８を保持している。ポート構成情報３０８は、ポート名、モジュール名、ＩＰアドレス、等から構成される。このポート構成情報３０８は、ＯＳ１２２によって管理される。
【００２３】
図４は、図１（ｂ）のインストーラー１２９による一般的なプリンタードライバーのインストール処理を説明するためのフローチャートである。一般的なプリンタードライバーとは、専用プリンタードライバーおよび汎用プリンタードライバーを指す。本実施形態では、この処理を第１のインストール処理と呼ぶ。
【００２４】
プリンタードライバーのインストール処理が開始（Ｓ４００）されると、まずユーザーによるデバイスモデルの選択を受け付ける（Ｓ４０１）。ここでは、図２のプリンターリスト２０１において、Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ以外のデバイスモデルを選択された場合を想定している。専用プリンタードライバーもしくは汎用プリンタードライバーの選択を受け付けると、選択されたデバイスモデルのプリンタードライバーをインストールする（Ｓ４０２）。次に、ユーザーによるＩＰアドレス等のポート情報の入力を受け付ける（Ｓ４０３）。そして、ポートを作成する（Ｓ４０４）。次に、ユーザーによるプリントキュー名の入力を受け付ける（Ｓ４０５）。そして、Ｓ４０２でインストールしたプリンタードライバーとＳ４０４で作成したポートを関連付けて、プリントキューを作成する（Ｓ４０６）。以上で、専用プリンタードライバーまたは汎用プリンタードライバーのインストール処理が終了する（Ｓ４０７）。
【００２５】
図５は、図１（ｂ）のインストーラー１２９による本実施形態に特有の処理である仮想プリンタードライバーを含む、複数のプリンタードライバーの中からユーザーにより選択されたプリンタードライバーをインストールする処理を説明するためのフローチャートである。
【００２６】
プリンタードライバーのインストール処理が開始（Ｓ５００）されると、まずユーザーによるデバイスモデルの選択を受け付ける（Ｓ５０１）。
【００２７】
ここで、選択されたデバイスモデルが仮想プリンタードライバーかどうか判断する（Ｓ５０２）。選択されたデバイスモデルが仮想プリンタードライバーではない場合、図４で示す専用・汎用プリンタードライバーのインストール処理を行う（Ｓ５０３）。Ｓ５０３は、図４のＳ４０２以降の処理と同様である。そして、当インストール処理を終了する（Ｓ５１６）。
【００２８】
Ｓ５０２にて、選択されたデバイスモデルが仮想プリンタードライバーの場合、仮想プリンタードライバーをインストールする（Ｓ５０４）。本実施形態における仮想プリンタードライバーは、ポートに対する印刷データの出力を直接行わないので、ユーザーによる入力を伴わずにダミーのポートを作成する（Ｓ５０５）。仮想プリンタードライバーに対しては複数のプリントキューを作る必要性が無いので、とくにユーザーによる入力無しにデバイスモデル名と同じ名前でプリントキューを作成する（Ｓ５０６）。
【００２９】
図４で一般的なプリンタードライバーのインストール処理について説明した際、ユーザーによる入力は、Ｓ４０１とＳ４０３とＳ４０５の３回あった。一方、本実施形態に特有の仮想プリンタードライバーのインストール処理においては、ユーザーによる入力はＳ５０１における選択だけである。もし、インストーラー１２９が仮想プリンタードライバーだけを対象としたインストーラープログラムであるなら、Ｓ５０１の選択も不要となる。つまり、仮想プリンタードライバーのインストール処理方法は、ユーザーの負担と運用コストを低減させる効果がある。
【００３０】
本実施形態における仮想プリンタードライバーは、ポートに対する印刷データの出力を行わない。そこで、本実施形態では、仮想プリンタードライバーのインストールの指示に伴い、汎用プリンタードライバーのインストール処理を行い、プリンターの全ての機能を使えないまでも、汎用的な機能（部数の指定機能など）での印刷をユーザーに保証するようにしてもよい。Ｓ５０７〜Ｓ５１０では、仮想プリンタードライバーのインストールに伴う汎用プリンタードライバーのインストール処理について説明する。
【００３１】
図２のプリンターリスト２０１において、汎用プリンタードライバーは、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １とＧｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２が存在する。よって、１回目のループ処理では、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １をインストール対象とし、２回目のループ処理では、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２をインストール対象とする。対象となる汎用プリンタードライバーがホストコンピューター１０１にインストール済みかどうか判断する（Ｓ５０８）。まだ、インストールしていない場合は、当該汎用プリンタードライバーをインストールする（Ｓ５０９）。ここでは、汎用プリンタードライバーを使ったプリントキューを作成しないので、ユーザーが汎用プリンタードライバーのインストールを意識することはない。そして、Ｓ５１０へ進む。ループ処理が終了したら、本インストール処理を終了する（Ｓ５１６）。
【００３２】
Ｓ５０８にて、対象となる汎用プリンタードライバーがホストコンピューター１０１にインストール済みの場合は、インストール済みの汎用プリンタードライバーのバージョンを取得する（Ｓ５１１）。バージョン数から継続使用可能どうか判断する（Ｓ５１２）。継続使用可能と判断した場合、Ｓ５１０へ進む。
【００３３】
Ｓ５１２にて、インストール済みの汎用プリンタードライバーが継続使用不可能と判断した場合、インストール済みの汎用プリンタードライバーをアンインストールする（Ｓ５１３）。そして、取り出した汎用プリンタードライバーをインストールする（Ｓ５１４）。さらに、Ｓ５１３でのアンインストール前にインストール済み汎用プリンタードライバーを使って構成されていたプリントキューを、Ｓ５１４でインストールした汎用プリンタードライバーを使って復元する（Ｓ５１５）。
【００３４】
以上、インストーラー１２９が、仮想プリンタードライバーをインストールしてそのプリントキューを作成するとともに、自動的に汎用プリンタードライバーをインストールすることを説明した。なお、Ｓ５０７以降の汎用プリンタードライバーのインストール処理については、図１（ｂ）のインストーラー１２９が実施することで説明をしたが、仮想プリンタードライバー１２６の初期化処理において実施してもかまわない。また、一般にＶｅｎｄｏｒＳｅｔｕｐと呼ばれるＯＳ１２２から呼び出される不図示のプリンタードライバーのセットアップモジュールで実施してもかまわない。
【００３５】
図６は印刷処理のデータフロー図である。本図を用いて、印刷処理関連プログラムの各コンポーネント間でどのような入出力が行われているか明らかにする。
【００３６】
アプリケーション１２３は仮想プリンタードライバー１２６に対して、ＯＳ１２２の提供する描画インターフェースであるＧＤＩ（Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）６００を通じて印刷指示命令を出力する。次に仮想プリンタードライバー１２６は、入力された印刷指示命令をＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）６０１の形式に変換してプリントジョブマネージャー１２５に出力する。ここでＥＭＦ６０１とは、ＧＤＩ６００の印刷指示命令と互換性のある中間データ形式であり、アプリケーション１２３から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。本実施形態では中間データ形式としてＥＭＦ６０１を用いて説明しているが、印刷指示命令を再現可能なデータであれば、例えばＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）、あるいは独自に定義した任意の形式であっても良い。次にプリントジョブマネージャー１２５は、後述するプリンターの特定、汎用・専用プリンタードライバーの管理など固有の処理を行い、ＧＤＩ６００を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタードライバー１２７あるいは専用プリンタードライバー１２８に対して入力される。次に、汎用プリンタードライバー２１７あるいは専用プリンタードライバー２１８は、プリンター１０２が処理可能なＰＤＬ（Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）６０２の形式に変換し、プリンター１０２に出力する。最後にプリンター１０２は、入力されたＰＤＬ６０２を処理して印刷出力を行う。
【００３７】
図７は、本実施の形態における印刷処理のシーケンスの例を説明するための図である。本図を用いて、一連の印刷処理中に関連プログラムの各コンポーネントの内部、およびそれらの間でどのような処理が行われているか明らかにする。
【００３８】
まず、ユーザーはアプリケーション１２３に対して印刷したいドキュメントの印刷指示を図８（ａ）で示すユーザーインターフェース（ＵＩ）８０００を通じて入力する（Ｓ７００）。図８（ａ）の８００１〜８００３はプリントキューを表すアイコンである。このうち、８００１は仮想プリンタードライバーのプリントキューであり、８００２、８００３は専用プリンタードライバーのプリントキューである。ここでは仮想プリンタードライバーを通じて出力を行うため、ユーザーは８００１のアイコンを選択し、印刷ボタン８００４を押して、印刷を指示する。
【００３９】
次に、アプリケーション１２３は、仮想プリンタードライバー１２６に対して、印刷初期化処理を行う（Ｓ７０１）。仮想プリンタードライバー１２６は印刷初期化が行われるとプリントジョブマネージャー１２５の起動処理を行う（Ｓ７０２）。
【００４０】
プリントジョブマネージャー１２５は、このように仮想プリンタードライバー１２６に対するドキュメントの印刷開始後に起動されるプログラムであり、後述するプリンターの特定、汎用・専用プリンタードライバーの管理など固有の処理などを担う。また、プリントジョブマネージャー１２５は内部的なコンポーネントとして、デバイス特定部１２５１、ドライバー管理部１２５２、でスプール処理部１２５３を含む。
【００４１】
次に、アプリケーション１２３はプリントジョブマネージャー１２５が起動されると、仮想プリンタードライバー１２６に対して印刷を開始し、一連の印刷描画命令をＧＤＩ２１９を通じて出力する（Ｓ７０３）。仮想プリンタードライバー１２６は、入力された一連の印刷描画命令をＥＭＦ６０１形式に変換し、後段の処理で印刷描画命令を再現できるよう外部メモリ１２１に保存する。これをスプール処理と呼ぶ（Ｓ７０４）。アプリケーション１２３は一連の印刷描画命令の最後に印刷終了の処理を行い（Ｓ７０５）、仮想プリンタードライバー１２６はそれを受けて保存されたＥＭＦ６０１の外部メモリ１２１における保存位置情報をプリントジョブマネージャー１２５に通知する（Ｓ７０６）。なお、Ｓ７０４は、外部メモリ１２１に対してスプール処理を実施するが、外部メモリ１２１を介さずプリントジョブマネージャー１２５へ直接スプール処理してもかまわない。
【００４２】
次に、デバイス特定部１２５１は、プリンターの検索を行う（Ｓ７０７）。ここで検索とは、ネットワーク１０４に接続されたプリンター１０２ａや１０２ｂと通信し、それらの名称、設置場所、ＩＰアドレス、ハードウェア情報といった情報を取得することである。ハードウェア情報としては、プリンターの機種情報や製造元であるベンダ情報などが含まれる。通信手段としては公知の技術であるＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）やＷＳＤ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  ｏｎ  Ｄｅｖｉｃｅｓ）などのプロトコルが使用される。通常、プリンター１０２ａや１０２ｂの状態、すなわち電源が入っているかや、ネットワーク１０４に接続されているかを事前に把握することは不可能であるため、デバイス特定部１２５１は印刷指示の都度、すべてのプリンターとの通信を試みる。ネットワーク内のすべての装置との通信には、これも公知の技術であるブロードキャストという手段を用いる。デバイス特定部１２５１がこのブロードキャストの方法で、ネットワークＩ／Ｆ１１８を通じてＳＮＭＰの情報取得用データを送信すると、ネットワーク１０４で到達可能なすべてのプリンター１０２が情報取得用データを受信する。そして、各プリンター１０２が、取得対象として指定されたプリンターの名称や設置場所などの情報を応答のデータとしてネットワークＩ／Ｆ１３８を通じて送信すると、デバイス特定部１２５１は順次それらの応答を受信する。そして、受信した情報をＲＡＭ１１２に保存する。
【００４３】
デバイス特定部１２５１は、受信した応答からデバイス名や設置場所などの情報を取り出し、図８（ｂ）のようなプリンターリストとしてユーザーインターフェース（ＵＩ）８１００に表示する（Ｓ７０８）。ＵＩ８１００には情報を表示するためのリストコントロール８１０１が配置され、その中からひとつをカーソル８１０２によって、プリンターを選択することができる。ボタン８１０３を押すと、ネットワーク内で再検索が行われ、利用可能なプリンターのリストを最新の状態に更新できる。ボタン８１０４を押すと、カーソル８１０２で現在選択されているデバイスが出力先として決定される（Ｓ７０９）。デバイス特定部１２５１は、Ｓ７０９での出力先の決定を受け、次の処理に移る。チェックボックス８１０５とボタン８１０６は、プリントキューを管理する際にユーザーが操作する。これらの操作方法については後述する。Ｓ７０９で出力先のデバイスが決定されると、デバイス特定部１２５１はドライバー管理部１２５２に対して出力準備処理を実行するよう依頼する（Ｓ７１０）。
【００４４】
この出力準備処理（Ｓ７１１）の結果、ＯＳ１２２には選択されたプリンター１０２に印刷可能な専用プリンタードライバー２１８（または不図示の汎用プリンタードライバー）のプリントキューが登録される。出力準備処理（Ｓ７１１）については、図９、図１０を用いて後述する。
【００４５】
次に、デバイス特定部１２５１は、図８（ｂ）のデバイス特定用の画面から、デスプール処理部１２５３が有する図８（ｃ）の画面８２００に遷移する（Ｓ７１２）。デスプール処理部１２５３は、プレビューエリア８２０１に印刷ドキュメントを実際に印刷したときのイメージを表示する（Ｓ７１３）。このとき表示されるイメージは、Ｓ７０４においてスプールされたＥＭＦ６０１をデスプール処理部１２５３が読み込み、解析して、プレビューエリア８２０１の大きさに合わせて描画したものである。スピンコントロール８２０２やチェックボックス８２０３はそれぞれ印刷部数、白黒印刷といった一般的な印刷設定を変更するための入力手段である。さらに一般的でない印刷設定を変更するためには、ボタン８２０４を押下することにより、不図示のプリンタードライバー固有のＵＩを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタードライバー２１８のものである場合、汎用プリンタードライバー２１７のものに比べて、出力先のプリンター特有の機能（製本機能など）を含む印刷設定が可能である。ボタン８２０６は、画面８２００から、ひとつ前の画面であるデバイスを特定するための画面８１００に戻るための手段である。
【００４６】
ボタン８２０５をユーザーが押下すると（Ｓ７１４）、デスプール処理部１２５３は専用プリンタードライバー２１８に対してデスプール処理を行い、一連の印刷描画命令を発行する（Ｓ７１５）。ここで、デスプール処理というのはスプール処理の逆で、Ｓ７０６にて通知された保存位置情報からＥＭＦ６０１データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー１２５の処理のために中断していた印刷処理が再開され、印刷ドキュメントの出力が行われる。専用プリンタードライバー１２８は、入力された印刷描画命令をＰＤＬ６０２に変換し、ネットワークＩ／Ｆ１３８を通じてプリンター１０２に送信する（Ｓ７１６）。最後に、プリントジョブマネージャー１２５はプログラムを終了する。
【００４７】
図８にプリントジョブマネージャー１２５のユーザーインターフェース（ＵＩ）の遷移の概要を示す。
【００４８】
まず、プリントジョブマネージャー１２５は、デバイス特定ダイアログを示すＵＩ８１００を表示する。プリンターの特定と「次へ」のボタン８１０４の押下をうけて、プリントジョブマネージャー１２５は、「編集プレビュー」ダイアログを示すＵＩ８２００を表示する。ＵＩ８２００では、プリントジョブのプレビュー確認と基本的な印刷設定が可能である。「印刷」ボタン８２０５の押下をうけてプリントジョブマネージャー１２５はプリンターへ印刷を実行し同ダイアログを閉じる。加えて、ＵＩ８２００には、プリンタードライバーが持っている特有の機能を設定するために「詳細設定」ボタン８２０４が存在する。「詳細設定」ボタン８２０４の押下をうけて、プリントジョブマネージャー１２５は、プリンタードライバーの「印刷設定」ダイアログを表示する。更に、ＵＩ８２００には「戻る」ボタン８２０６が存在する。この「戻る」ボタン８２０６は、現在の出力先デバイスでは所望の機能が実現できないことが分かった際のプリンターの再設定のために存在する。「戻る」ボタン８２０６の押下をうけて、プリントジョブマネージャー１２５は、ＵＩ８１００を表示し、再度プリンターの指定が可能になる。
【００４９】
図９は、ドライバー管理部１２５２における出力準備処理（Ｓ７１１）を詳細に説明するためのフローチャートである。本処理では、Ｓ７０９でユーザーにより選択されたプリンターへ印刷要求するためのプリントキューが既にあればそれを選定し、なければ新しいプリントキューが作成される、あるいは最適なプリンタードライバーが情報処理装置内にインストールされる。
【００５０】
出力準備処理が開始（Ｓ１０００）されると、ドライバー管理部１２５２は、プリンター１０２のアドレス情報（たとえば、ＩＰアドレス）を取得する（Ｓ１００１）。アドレス情報はプリンターの検索処理（Ｓ７０７）において取得されＲＡＭ１１２に記憶されているものを取り出す。次に、ＯＳ１２２に登録されているすべてのプリントキューからプリントキューに関連付けられているポートのアドレス情報を取得する（Ｓ１００２〜Ｓ１００４）。
【００５１】
次に、Ｓ７０９でユーザーにより選択されたプリンターのアドレス情報と、ポートのアドレス情報が合致するプリントキューが存在するかどうか判断する（Ｓ１００５）。後述するが、本システムにおいて、プリントキューはプリンターごとに作成される。しかし、同じプリンターに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、プリンターとすべてのプリントキューのアドレス情報同士を比較することによって、既存のプリントキューの中に出力可能なものがないかを判断する。もし出力可能なプリントキューが存在すればＳ１００６に、存在しなければＳ１０１１に進む。
【００５２】
次にＳ１００６ではさらに汎用プリンタードライバーを優先させるモードであるかどうか判断する。プリンター１０２に出力可能なプリントキューの中には専用プリンタードライバー２１８のものが含まれている可能性もある。しかしながら、高度な機能は必要とせず、シンプルな汎用プリンタードライバー２１７を使用したいユーザーもいるため、例えば不図示のユーザーインターフェースによって汎用プリンタードライバーを優先させるかどうか切り替え可能なモードを設けることが考えられる。ここで、汎用プリンタードライバーを優先させる場合は、Ｓ１００７に進み、そうでなければＳ１００９に進む。
【００５３】
次に、Ｓ１００７ではプリントキューのデバイスモデル名を取得する。そして、デバイスもモデル名が汎用プリンタードライバーのものであるかどうか判断する（Ｓ１００８）。プリントキューの名前がユーザーによって変更可能であるのに対し、汎用プリンタードライバーのデバイスモデル名は「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １」のように固有の名称となる。よって、プリントキューのデバイスモデル名からドライバーの種類を判断できる。汎用プリンタードライバーである場合はＳ１００９へ進み、そうでなければＳ１０１０へ進む。
【００５４】
Ｓ１００９へ進んだ場合、Ｓ１００５で選択されたプリンターのアドレス情報と合致すると判断されたポートに対応する既存のプリンタードライバーのプリントキューを出力先として決定する。その後、出力準備処理を終了する（Ｓ１０１４）。
【００５５】
Ｓ１０１０へ進んだ場合、すなわち出力対象として選択されたプリンターに対応する専用プリンタードライバーのプリントキューが既に存在していると判断された場合は、汎用プリンタードライバーをインストールすると決定し、Ｓ１０１３に進む。Ｓ１０１１では、Ｓ１００６と同様に汎用プリンタードライバーを優先させるモードかどうかを判断し、優先させるモードならＳ１０１０に、そうでないならＳ１０１２へ進む。Ｓ１０１２では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタードライバーを優先させるモードでもないので、適合する最適な専用プリンタードライバーを検索してインストールすることに決定し、Ｓ１０１３に進む。
【００５６】
その後、Ｓ１０１０、またはＳ１０１２で決定された種類のプリンタードライバーをインストールする処理（図１０参照）を実行（Ｓ１０１３）し、出力準備処理を終了する（Ｓ１０１４）。
【００５７】
図１０は、ドライバー管理部１２５２における本発明に特有の汎用または専用プリンタードライバーインストール処理を詳細に説明するためのフローチャートである。本発明においては、この処理を第２のインストール処理と呼ぶ。
【００５８】
まず、ドライバー管理部１２５２は処理を開始すると（Ｓ１１００）、出力用のポートを作成する（Ｓ１１０１）。次に、図９のＳ１０１０、Ｓ１０１２での決定に従い、インストール対象が汎用プリンタードライバーであるかどうか判断する（Ｓ１１０２）。インストール対象が汎用プリンタードライバーであればＳ１１０８に、インストール対象が汎用プリンタードライバーでなければＳ１１０３に進む。
【００５９】
Ｓ１１０３〜Ｓ１１０７は、ホストコンピューター１０１、配信サーバー１０３、あるいはプリンター１０２ａや１０２ｂの何れかの記憶手段から、出力に最適な専用プリンタードライバー１４３を検索するステップである。まず、プリンターのハードウェア情報を取得する（Ｓ１１０３）。本実施形態ではハードウェア情報として、プラグアンドプレイインストールに用いられるハードウェア情報を取得する。ハードウェア情報はプリンターの検索処理（Ｓ７０７）において取得されＲＡＭ１１２に記憶されているものを取り出す。
【００６０】
次に、Ｓ１１０４ではインストール済みプリンタードライバー内に適合するプリンタードライバーがあるかどうか判断する。具体的には、ドライバー管理部１２５２は、ＯＳ１２２に登録されている各プリンタードライバーのハードウェア情報と、Ｓ１１０３で取得したプリンター１０２のハードウェア情報とを比較し、一致するものがあればすべてピックアップする。１つ以上適合するものがあればＳ１１１６へ、なければＳ１１０５へ進む。
【００６１】
次に、Ｓ１１０５ではドライバーストアで適合するプリンタードライバーが管理されているかどうか判断する。ドライバーストアとはＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）以降のＯＳで導入されたデバイスドライバーのデータベースシステムであり、インストール前のデバイスドライバーのパッケージをＯＳ１２２に格納する仕組みである。ドライバー管理部１２５２は、このドライバーストアに格納されているプリンタードライバーの中に、Ｓ１１０３で取得したプリンター１０２のハードウェア情報に一致するものがないかＯＳ１２２に問い合わせることができる。問い合わせの結果、１つ以上適合するものがあればＳ１１１２へ、なければＳ１１０６へ進む。
【００６２】
次に、Ｓ１１０６では配信サーバー１０３で適合するプリンタードライバーが管理されているかどうか判断する。ドライバー管理部１２５２は、ドライバー配信サーバー１０３にＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）やＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの手段で、ネットワーク１０４を経由して、ハードウェア情報に適合するプリンタードライバーがあるか問い合わせることができる。問い合わせの結果、１つ以上適合するものがあれば配信サーバー１０３からプリンタードライバーのパッケージをホストコンピューター１０１に転送して、外部メモリ１２１に記憶し、Ｓ１１１２へ進む。そうでなければＳ１１０７へ進む。
【００６３】
次に、Ｓ１１０７ではプリンター１０２で管理しているデバイスドライバーを検索し、適合するプリンタードライバーがあるかどうか判断する。前述したとおり、プリンター１０２はその外部メモリ（１３４）に、プリンター自身を利用するために必要な専用プリンタードライバー１４３を記憶することができる。ドライバー管理部１２５２は、このプリンター１０２に記憶されたプリンタードライバーも、Ｓ１１０６と同様の手段でネットワーク１０４を経由して、問い合わせることが可能である。問い合わせの結果、１つ以上適合するものがあればプリンター１０２から専用プリンタードライバー１４３のデータをホストコンピューター１０１に転送して、外部メモリ１２１に記憶し、Ｓ１１１２へ進む。ここで、外部メモリ１３４の設定変更等により専用プリンタードライバー１４３が消去されているなど、問い合わせの結果が１つも適合するものがないと判断された場合はＳ１１０８へ進む。
【００６４】
Ｓ１１０８〜Ｓ１１１１では、前記Ｓ１１０３〜Ｓ１１０６の一連の処理の結果、適合するプリンタードライバーが見つからない場合の代替手段として、あらかじめＳ５００〜Ｓ５１６でインストールされた汎用プリンタードライバーのプリントキューを作成する。
【００６５】
まず、ドライバー管理部１２５２はネットワーク１０４を経由して、プリンター１０２のコマンドタイプ情報を取得し（Ｓ１１０８）、それが「１」であるかどうか判断する（Ｓ１１０９）。ここで、コマンドタイプ情報とは、プリンター１０２が処理可能なＰＤＬ６０２の種類を表す情報である。ここで、汎用プリンタードライバーとは、複数のデバイスモデルに共通する機能を設定可能な特定のＰＤＬに対応するプリンタードライバーである。したがって、それと異なるＰＤＬをサポートするデバイスモデルに対しては異なる汎用プリンタードライバーが用意されているため、コマンドタイプ情報を取得して、互換性の確認を行う。本実施形態においては２種類のＰＤＬ、「１」および「２」のどちらかに対応したプリンターを利用することを前提としているので、コマンドタイプ情報が「１」であるかどうか判断する。「１」の場合はＳ１１１０へ、それ以外すなわち「２」の場合はＳ１１１１に進む。
【００６６】
Ｓ１１１０では、コマンドタイプ「１」に対応した「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １」のプリントキューを作成し、処理を終了する（Ｓ１１１８）。一方、Ｓ１１１１ではコマンドタイプ「２」に対応した「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２」のプリントキューを作成し、処理を終了する（Ｓ１１１８）。なお、プリントキューを作成する際は、Ｓ１１０１で作成したポートを関連付ける。
【００６７】
Ｓ１１１２〜Ｓ１１１４では、前記Ｓ１１０３〜Ｓ１１０６の一連の処理の結果、見つかった適合する専用プリンタードライバー１４３をインストールする。
【００６８】
まず、Ｓ１１１２では適合するプリンタードライバーが２つ以上見つかったかどうか判断し、２つ以上であればＳ１１１３、１つであればＳ１１１４へ進む。Ｓ１１１３では、その中から最もプリンタードライバーのバージョンの新しいものをインストール対象として選択する。各プリンタードライバーにはバージョンが付与されており、たとえ同じデバイスモデルのプリンタードライバーであっても作成された時期が違えば、通常は異なるバージョンを有する。バージョンの表現方法としては例えば「１０／１０／２００８．２．５．０．０」のように日付と数値の組み合わせで表現し、どちらの方が新しく作成されたものか容易に判断することができる。
【００６９】
なお、古いバージョンのドライバーをあえて使用する必然性が生じる場合がある。そのような場合は図８（ｄ）の８３００に示すようなユーザーインターフェースを表示して、ユーザーに選択させることが好ましい。８３０１には適合すると判断された複数のプリンタードライバーの情報（名称、バージョン）がリストで表示される。ユーザーは８３０１のリストの中から所望のプリンタードライバーを選び、ボタン８３０２を押すことで決定できる。その後、Ｓ１１１４では、見つかった１つの適合するプリンタードライバー、もしくは複数見つかった場合にＳ１１１３で選択されたプリンタードライバーを、ホストコンピューターにインストールする。
【００７０】
Ｓ１１１６〜Ｓ１１１７は、インストール済みプリンタードライバーの中に適合する専用プリンタードライバーがあった場合に処理されるステップであり、Ｓ１１１６はＳ１１１２と、またＳ１１１７はＳ１１１７と同様の処理である。Ｓ１１１４が不要なのは、プリンタードライバーをインストールする必要がないからである。
【００７１】
Ｓ１１１５では、Ｓ１１０１において作成したポートに関連付けてプリントキューを作成し、処理を終了する（Ｓ１１１８）。
【００７２】
以上で述べた第２のインストール処理に関して、Ｓ１１１４のプリンタードライバーをインストールする処理は、ＯＳ１２２における管理者権限を有したプロセスから実行する必要がある。しかしながら、印刷を行うアプリケーション１２３は、多くの場合において一般ユーザー権限で起動されている。その結果、アプリケーション１２３によりロードされる仮想プリンタードライバー１２６、さらにはプリントジョブマネージャー１２５も一般ユーザー権限で動作するため、図１０のＳ１１１４で説明したプリンタードライバーのインストール処理を実現することができない。本システムを利用する際に、アプリケーション１２３を必ず管理者権限で動作させることを前提としてしまうと、ユーザーの利便性を著しく損なう場合がある。そのため、本発明においては、一般ユーザー権限で動作するアプリケーションであっても、Ｓ１１１４におけるインストール処理が実現できる手法についても説明する。
【００７３】
図１１は、権限を考慮したインストール制御処理（図１２で後述）に関わるコンポーネントを、実行プロセス別に整理し表した模式図である。
【００７４】
スプーラーサービス２０１は、ＯＳ１２２の機能の一部として提供される印刷処理を制御するためのコンポーネントである。ランゲージモニター２０２は、プリンターなどの周辺機器との通信処理などを担うコンポーネントである。ランゲージモニター２０２は、仮想プリンタードライバー１２６のパッケージ内に含まれており、プリンタードライバー１２６のインストール時に、ＯＳ１２２に登録され、スプーラーサービス２０１によって管理される。
【００７５】
仮想プリンタードライバー１２６およびプリントジョブマネージャー１２５は、図７で説明した印刷の流れに従い、アプリケーション１２３によってロードされ、アプリケーションと同等の権限で動作する。一方、ランゲージモニター２０２は、常に管理者権限で起動されるスプーラーサービス２０１のプロセス上によってロードされ、動作する。スプーラーサービス２０１は、ＯＳ１２２の実行開始時に起動され、その後、ＯＳ１２２が終了するまで常駐するため、結果としてランゲージモニター２０２も常にロードされた状態になっている。ランゲージモニター２０２の機能呼び出しはＢｉｄｉ  ＡＰＩというインターフェースを通じて行う。Ｂｉｄｉ  ＡＰＩの詳細については後述する。
【００７６】
図１２は権限を考慮したインストール制御処理を説明するためのフローチャートである。
【００７７】
本発明においては、この処理を第３のインストール処理と呼ぶ。
【００７８】
まず、ドライバー管理部１２５２は処理を開始すると（Ｓ１２００）、現在の権限でインストールを実行する（Ｓ１２０１）。インストール処理が成功するかどうかは、現在の権限が管理者権限を有しているかどうかであることはすでに述べたが、それ以外にもＯＳのバージョンや設定にも依存するため、現在のプロセスがインストール可能かどうかあらかじめ一意に知る手段を見つけるのは困難である。そこで、試しに現在の権限でインストールを実行し、それが成功したかどうかを判定する（Ｓ１２０２）。インストールに成功したかどうかは、インストールを実行するために用意されたＡＰＩの戻り値をチェックすることで判別することができる。もしインストールに成功したらＳ１２０５に進んで処理を終了し、インストールに失敗したらＳ１２０３に進む。
【００７９】
Ｓ１２０３では、ドライバー管理部１２５２は、ＢｉＤｉ  ＡＰＩを使用して、ランゲージモニターにインストール処理を要求する。
【００８０】
ここで、ＢｉＤｉ  ＡＰＩとは、アプリケーションなどがプリンタードライバーの出力先であるデバイスとランゲージモニターを通じて通信するなどのために用意されたインターフェースである。ここで、ランゲージモニター２０２はスプーラーサービス２０１によってロードされているため、ＢｉＤｉ  ＡＰＩは実際にはスプーラーサービス２０１へのインターフェースとなっている。したがって、ＢｉＤｉ  ＡＰＩを呼び出すアプリケーションは、スプーラーサービス２０１とプロセス間通信することになる。
【００８１】
ＢｉＤｉ  ＡＰＩの提供する機能のひとつとして、ＸＭＬデータを送受信するメソッドが用意されている。これは、あらかじめ呼び出すアプリケーションとランゲージモニターとで取り決めた要求のＸＭＬデータとそれに対応する応答のＸＭＬデータを送受信するというものである。
【００８２】
図１３（ａ）にドライバー管理部１２５２からランゲージモニターへの要求の例を、図１３（ｂ）にランゲージモニターからドライバー管理部１２５２への応答の例を示す。ここで、要求と応答はともにＸＭＬ形式のデータである。本来、ＢｉＤｉ  ＡＰＩはデバイスとの通信をするために使用するものであるが、図１３（ａ）、（ｂ）にはそのような情報は含まれていない。本発明では、ランゲージモニター２０２を、デバイスとの通信を仲介するコンポーネントとしてではなく、管理者権限で動作する処理コンポーネントそのものとして使用するからである。
【００８３】
図１３（ａ）で示す要求内のＩｎｆｆｉｌｅＰａｔｈ要素には、ドライバーパッケージの場所を示す値を指定する。ここで指定するドライバーパッケージの場所とは、Ｓ１１０５〜Ｓ１１０７において見つかったプリンタードライバーのドライバーパッケージファイルがある場所を指す。また、ＭｏｄｅｌＮａｍｅ要素には、インストールするモデル名の値を指定する。
【００８４】
ランゲージモニター２０２は、図１３（ａ）で示す要求を受信すると、それにしたがってプリンタードライバーのインストール処理を行い、その結果を図１３（ｂ）で示す応答としてＢｉｄｉ  ＡＰＩを通じて返却する（Ｓ１２０４）。図１３（ｂ）で示す応答内のＭｏｄｅｌＮａｍｅ要素にはインストールされたモデル名の値が格納される。以上で、本処理は終了となる（Ｓ１２０５）。
【００８５】
なお、周辺機器を利用するためのデバイスドライバーに関する設定処理としては、インストール処理に限らず、Ｓ１１０１でのポートを作成する処理、Ｓ１１１０、Ｓ１１１１、Ｓ１１１５でのキューを作成する処理に関しても、管理者権限がないと実現でないケースが存在する。その場合、ポートおよびプリントキュー作成処理に関しても、上述したランゲージモニターを使用する方法を適用することにより、一般ユーザー権限でプリントジョブマネージャー１２５がロードされたとしても、ポートやプリントキューの作成が実現できる。
【００８６】
ところで、本発明では、図１２で説明した処理に関して、ランゲージモニター以外にも、管理者権限で動作する専用のコンポーネントを別途用意して、インストール処理があるまで待機させておくことでも、同様の処理を実現することが可能である。しかしながら、以下の点において、ランゲージモニターを利用する方が優れているといえる。
【００８７】
ひとつには、ランゲージモニターはプリンタードライバーのパッケージをインストールする際に、同時に自動的にインストールされるため、専用のコンポーネントをインストールするためのプログラムを提供しなくても、ホストコンピューターにセットアップが可能であるという点である。
【００８８】
さらに、専用のコンポーネントでは、一般のウィルス対策ソフトやセキュリティの厳しいオフィスなどによって、不審なものとして検知される対象となったりすることがあり、セットアップ自体が行えないといったリスクが存在する。一方、ランゲージモニターは、プリンタードライバー（本発明では、仮想プリンタードライバー）をインストールする際に、スプーラーサービスの一部として動作するコンポーネントとしてセットアップされることが一般的であるため、ホストコンピューターに導入できないといったリスクが比較的少ないと言える。
【００８９】
なお、スプーラーサービス自身を拡張するか、ランゲージモニターと同様に、スプーラーサービスなどのプリントシステム内における管理者権限のモジュールによってロードされて動作するほかのコンポーネントを利用する際も本発明は適用できる。具体的には、他にもポートモニターやプリントプロセッサーといったコンポーネントにより、本発明で述べた図１２の処理を実現してもよい。
【００９０】
（第２の実施の形態）
次に、本発明を実施するための第２の形態について図面を用いて説明する。
【００９１】
第１の形態は、ユーザーがホストコンピューター上で出力先を指定して印刷指示を行うシステムであった。それに対し、第２の形態では、ユーザーがホストコンピューター上で印刷指示のみ行い、出力先の指定は、プリンターなどの周辺機器に設置されたカードリーダーなどの認証ユニットで認証することによって行う、いわゆる認証プリントのシステムを想定する。
【００９２】
図１４（ａ）は、第２の形態に係るネットワークシステムの概略を示すブロック図である。図１４（ａ）に示すように、このネットワークシステムは、複数のホストコンピューター１０１ａ、１０１ｂ、複数のプリンター１０２ａ、１０２ｂ、複数の認証ユニット１４２ａ、１４２ｂ、ＩＣカード１４３、認証サーバー１４４を備える。これらはネットワーク１０４を介して接続されている。
【００９３】
ホストコンピューター１０１及びプリンター１０２の構成は、図１（ｂ）で説明した通りである。なお、認証ユニット１４２は、本実施形態において、ユーザーが利用するプリンター１０２を特定するためにもあるので、通常、認証ユニットとプリンターは物理的に接近して設置される。本実施形態においては、プリンターと認証ユニットを分けて構成しているが、認証ユニット相当の機能を包含するプリンターがあってもかまわない。
【００９４】
まず、システムを構成する各装置の詳細を説明する前に、システムの概要を印刷作業の流れに沿って説明する。
【００９５】
ユーザーによる印刷実行の指示を受けたホストコンピューター１０１ａは、出力対象のプリンターを特定せずに印刷処理を実行し、投入されたＥＭＦ形式など中間形式の印刷ジョブを保持する（Ｓ１４０）。次に、ユーザーがＩＣカードをかざすことによって出力プリンター１０２ａ選択の合図を受信（Ｓ１４１）した認証ユニット１４２ａは、ＩＣカード１４３からＩＣカード固有のＩＤを読み取り、認証サーバー１４４へＩＤを送る（Ｓ１４２）。
【００９６】
認証サーバー１４４は、受信したＩＤと関連付けられたホストコンピューター１０１ａへプリンター１０２ａのネットワークアドレスを送る（Ｓ１４３）。
【００９７】
ホストコンピューター１０１ａは、受信したプリンター１０２ａのネットワークアドレスに対し、保持しておいた中間形式のデータを、必要に応じてプリンター固有のＰＤＬに変換して、出力する。
【００９８】
次に、図１４ａのシステムを構成する本実施形態に関連する各装置の詳細を説明する。
【００９９】
（認証ユニット１４２について）
認証ユニット１４２ａ、ｂは、ＩＣカード１４３を用いた認証を行い認証プリントを実行するための端末である。本実施形態においては、ユーザーがホストコンピューターに一旦溜め置いた印刷ジョブを出力すべきプリンターを特定するために利用できる。認証ユニットは、出力プリンターとペアで存在する必要があり、図１において、プリンター１０２ａには認証ユニット１４２ａ、プリンター１０２ｂには認証ユニット１４２ｂという具合に関連付けがされている。
【０１００】
プリンターと認証ユニットの関連付けに関しては認証ユニットにその情報を記憶させることによっても実現可能ではあるが、本実施形態においては、後述する認証サーバー１４４によって実現している。
【０１０１】
図１４ｂは、認証ユニット１４２の概略的な構成の一例を示すブロック図である。認証ユニット１４２は、ＣＰＵ１４２１、ＲＡＭやＲＯＭなどを含む記憶部１４２３、ネットワークＩ／Ｆ１４２４、ローカルＩ／Ｆ１４２５を備え、システムバス１４２７により互いに接続して構成される。さらに、ローカルＩ／Ｆ１４２５にＩＣカードリーダー１４２６を接続して構成する。認証ユニット１４２は、記憶部に記憶され、ＣＰＵ１４２１により実行される認証用のプログラムに基づき、認証機能を実現する。
【０１０２】
ＣＰＵ１４２１は、認証ユニット１４２全体の制御を司る中央演算処理部である。記憶部１４２２は、認証用のプログラムに加え、認証ユニット１４２の初期設定時に入力される認証サーバー１４４のネットワークアドレスなどを記憶しておく。
【０１０３】
ＩＣカードリーダー１４２６は、ＩＣカードから一意な識別情報を読み取る。ここでは、ＩＣカードリーダー１４２６は、Ｆｅｌｉｃａ（登録商標）のような非接触式ＩＣカードに対応した読み取り機器を想定しているが、この技術に限定されるものではなく、一意な識別情報の入力が可能ならば他の実現方法であっても構わない。例えば、ＩＣカードリーダーの代わりに指紋センサー等の生体認証センサーを設置するという方法もある。なお、このＩＣカードリーダー１４２６が、直接システムバス１４２７に接続されずローカルＩ／Ｆ１４２５を介して接続されているのは、認証手段を柔軟に変更できるようにするためである。
【０１０４】
認証ユニット１４２は、ＩＣカードリーダー１４２６を介して取得するＩＤを、ネットワークＩ／Ｆ１４２４を介して、認証サーバー１４４へ送ることで外部と連携した認証機能を実現する。
【０１０５】
（認証サーバー１４４について）
認証サーバー１４４は、図１５（ａ）に示す、ＩＣカードのＩＤと、ホストコンピューターのネットワークアドレスの組み合わせ情報１５０１を記憶している。さらに、図１５（ｂ）に示す、認証ユニットのネットワークアドレスと出力デバイスのネットワークアドレスの組み合わせ情報１５０２も記憶している。
【０１０６】
認証サーバー１４４が図１５（ａ）、（ｂ）の情報を一元管理することによって、ホストコンピューターとプリンターと認証ユニットを連携させた認証プリントが実現されている。
【０１０７】
認証サーバー１４４は、認証ユニット１４２ａからＩＣカード１４３のＩＤを受信すると、図１５（ａ）の組み合わせ情報１５０１からＩＤ（１６２６９６５０９４００６７８６５７に関連付けられたホストコンピューター１０１ａのネットワークアドレス（１９２．１６８．０．２）を得る。さらに、認証サーバー１４４は、ＩＤを受信した際に認証ユニット１２０ａのネットワークアドレス（１９２．１６８．０．１６）も同時に受信しているので、図１５（ｂ）の組み合わせ情報１５０２から、認証ユニット１４２ａに関連付けられたプリンター１０２ａのネットワークアドレス（１９２．１６８．０．４８）を得る。
【０１０８】
そして、認証サーバー１４４は、こうして得られたプリンター１０２ａのネットワークアドレス（１９２．１６８．０．４８）をホストコンピューター１０１ａに送信する。ホストコンピューター１０１ａは、受信したプリンター１０２ａのネットワークアドレスを用いて、出力対象となるプリンターの情報を取得して、プリンタードライバーのインストール処理などを行うことができる。また、ホストコンピューター１３１ａからプリンター１０２ａへ、ホストコンピューター１３１ａ溜め置かれたジョブ一覧の情報を提示して、プリンターからの要求に応じたジョブの転送を促すことが可能となる。
【０１０９】
なお、第１の実施形態において印刷処理やインストール処理などを含む中心的な役割を担ったのがプリントジョブマネージャー１２５であったのに対し、第２の実施形態では認証ジョブマネージャー１３０が主な処理を担う。
【０１１０】
（本実施の形態における印刷処理のシーケンスの例）
以下、図１６のシーケンス図を用いて、認証ジョブマネージャー１３０を中心とした印刷処理関連プログラム間で行われる処理を説明する。
【０１１１】
Ｓ８０１〜Ｓ８０６で示すアプリケーション１２３と仮想プリンタードライバー１２６の印刷処理は、第１の実施形態の図７で述べたＳ７００〜Ｓ７０６までの処理と同様である。唯一、異なるのは、Ｓ８０２で起動されるプログラムが認証ジョブマネージャー１３０である点のみである。なお、ユーザーが仮想プリンタードライバーに対して、印刷を繰り返すことにより、複数のＥＭＦ形式の印刷ジョブがホストコンピューターにおいて溜め置かれることになる。
【０１１２】
認証ジョブマネージャー１３０が有する内部コンポーネントは、第１の実施形態のプリントジョブマネージャー１２５と同じく３つあり、プリンタードライバー管理処理部１２５２とデスプール処理部１２５３の２つは両者で共通である。残りの通信処理部１３０１は、認証ジョブマネージャー１３０特有の内部コンポーネントで、認証ユニット１４２との通信や、プリンタードライバー管理処理部１２５２とデスプール処理部１２５３の制御を行う。
【０１１３】
認証ジョブマネージャー１３０がＳ８０２において起動されると、通信処理部１３０１は受信待機処理を実行する（Ｓ８０７）。受信待機処理とは、すなわち、認証サーバー１４４が送信する情報を受信できるよう、ホストコンピューター１０１のネットワークＩ／Ｆ１１８を制御する処理である。ネットワークＩ／Ｆ１１８の制御はＯＳ１２２が提供するＡＰＩの機能によって実現される。ＡＰＩの例としてはＷｉｎｓｏｃｋなどがある。Ｓ８０６でＥＭＦのメモリ位置が通知され、Ｓ８０７で受信待機処理が実行されると、ユーザーによる認証操作が行われるまでジョブがホストコンピューター１０１上で留め置かれ、待機状態に入る。
【０１１４】
次に、認証ユニット１４２は、ユーザーによってＩＣカード１４３を使った認証操作が行われると（Ｓ１４１）、カードＩＤを読み取り、カードＩＤ情報を認証サーバー１４４に送信する（Ｓ１４２）。次に、認証サーバー１４４は、記憶した組み合わせ情報１５０２を元に得た出力先のプリンター１０２のネットワークアドレスを、ホストコンピューター１０１に送信する（Ｓ１４３）。Ｓ１４１〜Ｓ１４３の処理の詳細については、すでに図１５（ａ）、（ｂ）などを用いて前述した通りである。ここでは、プリンターにおけるユーザーの印刷対象となるジョブの特定も同時に行われ、認証ジョブマネージャー１３０に印刷要求として通知される。
【０１１５】
次に、認証ジョブマネージャー１３０の通信処理部１３０１は、認証サーバー１４４から出力先のプリンター１０２のネットワークアドレスを受信すると、出力先となるプリンターのデバイス情報を取得する処理を行う（Ｓ８０８）。この取得処理は、Ｓ７０７のプリンターの検索処理と同様の処理を、ひとつのプリンター１０２に対して行うものである。具体的には、Ｓ７０７ではブロードキャストなどの通信方法によって、ＳＮＭＰプロトコルなどによりプリンターのハードウェア情報などを取得するものであったが、Ｓ８０８はプリンター１０２からのみハードウェア情報を取得する処理である。
【０１１６】
次の通信処理部１３０１による出力準備処理依頼（Ｓ８０９）およびプリンタードライバー管理処理部１２５２による出力準備処理（Ｓ８１０）は、第１の実施形態で述べたＳ７１０およびＳ７１１と同様である。
【０１１７】
なお、本実施の形態でも、認証ジョブマネージャー１３０が、管理者権限でなくユーザー権限で起動されてしまうと、そのままではＳ１４３で通知されたアドレスで示すプリンターのプリンタードライバーのインストール処理が実行できないという課題が生じる。そこで、出力準備処理Ｓ８１０は、第２の実施形態においてもその内部処理として、第１の実施形態で述べた本発明特有のインストール処理である第３のインストール処理（Ｓ１２００〜Ｓ１２０５）を行うものとする。
【０１１８】
通信処理部１３０１は、Ｓ８１０において、専用プリンタードライバーのインストールが完了したら、デスプール処理部１２５３に対して印刷開始の指示を行う（Ｓ８１１）。
【０１１９】
以降のデスプール処理部１２５３のデスプール処理（Ｓ８１２）と専用プリンタードライバー１２８によるＰＤＬ生成送信処理（Ｓ８１３）は、それぞれ第１の実施形態のＳ７１５、Ｓ７１６と同様である。ここで生成されたＰＤＬの印刷ジョブは、ネットワークアドレスを送信してきたプリンター１０２へ送信され、印刷処理が実行される。
【０１２０】
以上、第２の実施形態では、ホストコンピューターにおいて溜め置かれた印刷ジョブを、ユーザーが任意のプリンターの設置場所で認証してから印刷を行うといった動作を説明した。とくに、プリンターから溜め置かれたジョブの印刷要求があった際に、該ホストコンピューターにプリンタードライバーが自動でインストールされる点に特徴がある。
【０１２１】
（他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012216166.tif 000003
【図２】
2012216166.tif 000004
【図３】
2012216166.tif 000005
【図４】
2012216166.tif 000006
【図５】
2012216166.tif 000007
【図６】
2012216166.tif 000008
【図７】
2012216166.tif 000009
【図８】
2012216166.tif 000010
【図９】
2012216166.tif 000011
【図１０】
2012216166.tif 000012
【図１１】
2012216166.tif 000013
【図１２】
2012216166.tif 000014
【図１３】
2012216166.tif 000015
【図１４】
2012216166.tif 000016
【図１５】
2012216166.tif 000017
【図１６】
2012216166.tif 000018