情報処理装置、その方法、及びプログラム
【課題】 従来、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールすることができなかった。
【解決手段】 本発明の情報処理装置は、デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置であって、ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、前記管理手段は、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする。
【解決手段】 本発明の情報処理装置は、デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置であって、ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、前記管理手段は、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プリンターなどの周辺機器を利用するためのデバイスドライバーのインストールを制御するための技術に関するものである。
【背景技術】
【0002】
パーソナルコンピューターなどの情報処理装置からプリンターやスキャナーなどの周辺機器を利用するには、一般的にその周辺機器に対応した特定のデバイスドライバーを情報処理装置に組み込む必要がある。従来、ユーザーが利用する周辺機器が複数台ある場合には、その台数分だけプリンタードライバーをユーザーの情報処理装置に組み込んでいたが、ユーザーは周辺機器のIPアドレスを調べたり、対応するデバイスドライバーを探してきたりする面倒なインストールのための作業を強いられてきた。
そこで、近年、このインストール作業を効率化するための技術が考案されている。例えば、特許文献1には、ネットワーク上の周辺機器から構成情報を受信して、対応するデバイスドライバーを情報処理装置にインストールするシステムの開示がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−135414号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
前述の特許文献1は、ユーザーが印刷要求を行うより前のタイミングで、事前にデバイスドライバーをインストールしておく技術であった。しかしながら、例えば一般的なアプリケーションから印刷を指示して、印刷要求を行うタイミングにおいては、情報処理装置を別の場所に移動させた場合など、ネットワーク上にプリンターが存在しない場合がある。また、印刷要求を行うタイミングにおいて、よりユーザーが利用したいと思われるプリンターがネットワーク上に設置されることも考えられる。そのため、ユーザーが一般的なアプリケーションから印刷を指示して、印刷要求を行うタイミングで、所望のプリンタードライバーをインストールするための手法がより望まれる。
そこで、本発明においては、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールするための手法を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の情報処理装置は、デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置であって、ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、前記管理手段は、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする。
【発明の効果】
【0006】
本発明により、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールするための手法を提供できる。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態におけるシステムの構成図およびホストコンピューターならびにプリンター内部の装置構成を示すブロック図
【図2】インストーラーのユーザーインターフェース例を表す図
【図3】プリンタードライバー、プリントキュー、ポートの各情報とそれらの関連を表す図
【図4】一般的なプリンタードライバーのインストールである第1のインストール処理を示すフローチャート
【図5】第1の実施形態における仮想・汎用・専用プリンタードライバーのインストール処理を示すフローチャート
【図6】第1の実施形態における印刷処理のデータフロー図
【図7】第1の実施形態における印刷処理のシーケンス図
【図8】アプリケーションおよびプリントジョブマネージャーのユーザーインターフェース例を表す図
【図9】出力準備処理のフローチャート
【図10】本発明に特有のプリンタードライバーのインストール処理である第2のインストール処理を示すフローチャート
【図11】インストール処理に関わるコンポーネントを表す図
【図12】権限を考慮した第3のインストール処理を示すフローチャート
【図13】BiDi APIで扱うデータの例を表す図
【図14】第2の実施形態におけるシステムの構成図ならびに認証ユニットの掃除構成を示すブロック図
【図15】認証ユニットが記憶する組み合わせ情報の例を表す図
【図16】第2の実施形態における印刷処理のシーケンスの例
【発明を実施するための形態】
【0008】
以下、本発明を実施するための実施例を図面を用いて説明する。
【0009】
(第1の実施の形態)
図1(a)は、本発明の実施形態に係るネットワークシステムの概略を示すブロック図である。このネットワークシステムは、ホストコンピューター101と、このホストコンピューター101より印刷データを受信して印刷を行なう複数のプリンター(102a,102b,…)などの周辺機器とデバイスドライバーを配信する配信サーバー103等を備える。これらはネットワーク104を介して接続されている。
【0010】
図1(b)は、図1(a)のホストコンピューター101とプリンター102の装置構成を示すブロック図である。
【0011】
ホストコンピューター101は、一般的なパーソナルコンピューターなどを含む情報処理装置である。CPU111は、RAM112に記憶されているプログラムに従って、システムバス114に接続される各デバイスを総括的に制御している。このRAM112は、CPU111の主メモリ、ワークエリア等としても機能している。ROM113は、各種プログラム及びデータを格納しており、各種フォントを記憶するフォントROM(113a)、ブートプログラムやBIOS等を記憶するプログラムROM(113b)、及び各種データを記憶するデータROM(113c)に区分けして構成されている。キーボードコントローラI/F115は、キーボード119や不図示のポインティングデバイス(マウス)からのキー入力を制御する。ディスプレイI/F116は、ディスプレイ120への表示を制御している。外部メモリI/F117は、例えばハードディスク(HD)、Solid State Disk(SSD)等の外部メモリ121とのアクセスを制御する。外部メモリ121は、オペレーティングシステムプログラム(以下、OS)122をはじめ各種アプリケーション123、印刷処理関連プログラム124、さらに、不図示のユーザファイル、編集ファイル等を記憶するコンピューターが読み取り可能な記憶媒体として機能する。なお、ここではOS122としてMicrosoft Windows(登録商標)を使用するものとする。
【0012】
印刷処理関連プログラム124は、本実施形態に係るプリントジョブマネージャー125と仮想プリンタードライバー126と汎用プリンタードライバー127と専用プリンタードライバー128とインストーラー129を含んでいる。
【0013】
さらに印刷処理関連プログラム124は、第2の実施形態で使用される認証ジョブマネージャー130も含んでいる。
【0014】
仮想プリンタードライバーとは、本実施形態特有のドキュメントを物理的なプリンターに対して直接ではなく、間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタードライバー126はOS122上では一般的なプリンタードライバーとして登録されるため、ユーザーは通常の印刷作業手順に近い感覚で作業を行うことができる。一方、汎用プリンタードライバーと専用プリンタードライバーは、一般的に印刷指示に用いられるプリンタードライバーとして分類される。具体的には、汎用プリンタードライバーとは、複数のデバイスモデルのプリンターを利用した印刷が可能なプリンタードライバーである。汎用プリンタードライバーは、対応するデバイスモデルが共通で持つ機能を利用することができる。一方、専用プリンタードライバーとは、単一のデバイスモデルにのみ対応したプリンタードライバーである。専用プリンタードライバーは、対応するデバイスモデルの機能を最大限に引き出すことが可能である。
【0015】
ネットワークI/F118は、ネットワーク104を介してプリンター102に接続され、プリンター102との間で通信制御処理を行なう。なお、配信サーバー103もホストコンピューター101と同様の装置構成を備える。
【0016】
次にプリンター102の構成について説明する。CPU132は、プリンター102の全体の動作を制御している。RAM139は、CPU132の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域としても用いられる。またこのRAM139は、NVRAM(Non−volatile RAM:不揮発性RAM)領域も備えており、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。ROM133は、各種フォントを記憶するフォントROM(133a)、CPU132により実行される制御プログラム等を記憶するプログラムROM(133b)、及び各種データを記憶するデータROM(133c)を備えている。ネットワークI/F138は、ホストコンピューター101との間でデータの送受信を行なう。印刷部I/F136は、プリンタエンジンである印刷部137とのインターフェースを制御している。外部メモリ134は、外部メモリI/F140によりアクセスが制御されており、オプションとして接続されるハードディスク(HD)、Solid State Disk(SSD)等を含んでおり、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。さらに、本実施形態に係る専用プリンタードライバー143を記憶することも可能である。なお、ハードディスク等の外部メモリ134が接続されていない場合には、ROM133のデータROM(133c)に、ホストコンピューター101で利用される情報等を記憶することになる。なお、この外部メモリ134は1個に限らず複数備えるものであってもよく、例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。操作部142には、ユーザーによる操作を受け付ける操作パネルが設けられ、その操作パネルには操作のためのスイッチ及びLED表示器等が配されている(不図示)。また、不図示のNVRAMを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。CPU132は、ROM133のプログラムROM(133b)に記憶された制御プログラム等に基づき、印刷部I/F136を介して印刷部137に出力情報としての画像信号を出力する。また、CPU132はネットワークI/F138を介してホストコンピューター101との通信処理が可能となっており、ホストコンピューター101から送信される印刷データを受信すると共に、プリンター102内の情報等をホストコンピューター101に通知可能に構成されている。
【0017】
図2は、図1(b)のインストーラー129が備えるユーザーインターフェース(UI)200である。インストーラー129を実行すると、ディスプレイ120上に表示されるプリンターリスト201にインストール可能なプリンタードライバーの一覧が表示される。
【0018】
Device Model Aは、デバイスモデルAのプリンターに対応した専用プリンタードライバーである。Device Model Bは、デバイスモデルBのプリンターに対応した専用プリンタードライバーである。Device Model Cは、デバイスモデルCのプリンターに対応した専用プリンタードライバーである。Device Model Dは、デバイスモデルDのプリンターに対応した専用プリンタードライバーである。
【0019】
Generic Device Model 1は、デバイスモデルA、Bに対応した汎用プリンタードライバーである。Generic Device Model 2は、デバイスモデルC、Dに対応した汎用プリンタードライバーである。
【0020】
Virtual Device Modelは、デバイスモデルA、B、C、Dだけではなく、あらゆるプリンターに対応可能な仮想プリンタードライバーである。ユーザーが任意のモデルを選択し、追加ボタン202を押下し、インストール対象となるプリンターリスト203に選択したモデルを加える。その後、ユーザーがインストールボタン204を押下することで、インストーラー129は指定されたモデルのプリンタードライバーをインストールする。
【0021】
図3は、プリンタードライバーとプリントキューとポートの各情報とそれらの関係を説明した図である。UML(Unified Modeling Language)のオブジェクト図を使って表現している。
【0022】
プリントキュー302は、アプリケーションから印刷する際の印刷対象オブジェクトである。同一デバイスモデルのプリンタードライバー301から複数作成することができる。例えば、オフィスにDevice Model Aのプリンターが3台導入された場合、Device Model Aに対応したプリンタードライバーを1つインストールして、そのプリンタードライバーを使ったプリントキューを3つ作成することになる。ポート303は、ネットワークの出力先を特定するオブジェクトである。プリントキューとポートの関係は通常は一対一であるが、図のように同じポートを複数のプリントキューが使用してもかまわない。また、プリンタードライバー301はプリンタードライバー構成情報304を保持している。プリンタードライバー構成情報304は、ドライババージョン、デバイスモデル名、ハードウェア情報、ドライバモジュール名、等から構成される。このプリンタードライバー構成情報304は、OS122によって管理される。プリントキュー302は、プリントキュー構成情報305を保持している。プリントキュー構成情報305は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。このプリントキュー構成情報305は、OS122によって管理される。さらに、プリントキュー302は、本実施形態に特有の自動生成識別子306と更新日時307をも保持する。これらの情報は、プリントジョブマネージャー125によって管理される。ポート303は、ポート構成情報308を保持している。ポート構成情報308は、ポート名、モジュール名、IPアドレス、等から構成される。このポート構成情報308は、OS122によって管理される。
【0023】
図4は、図1(b)のインストーラー129による一般的なプリンタードライバーのインストール処理を説明するためのフローチャートである。一般的なプリンタードライバーとは、専用プリンタードライバーおよび汎用プリンタードライバーを指す。本実施形態では、この処理を第1のインストール処理と呼ぶ。
【0024】
プリンタードライバーのインストール処理が開始(S400)されると、まずユーザーによるデバイスモデルの選択を受け付ける(S401)。ここでは、図2のプリンターリスト201において、Virtual Device Model以外のデバイスモデルを選択された場合を想定している。専用プリンタードライバーもしくは汎用プリンタードライバーの選択を受け付けると、選択されたデバイスモデルのプリンタードライバーをインストールする(S402)。次に、ユーザーによるIPアドレス等のポート情報の入力を受け付ける(S403)。そして、ポートを作成する(S404)。次に、ユーザーによるプリントキュー名の入力を受け付ける(S405)。そして、S402でインストールしたプリンタードライバーとS404で作成したポートを関連付けて、プリントキューを作成する(S406)。以上で、専用プリンタードライバーまたは汎用プリンタードライバーのインストール処理が終了する(S407)。
【0025】
図5は、図1(b)のインストーラー129による本実施形態に特有の処理である仮想プリンタードライバーを含む、複数のプリンタードライバーの中からユーザーにより選択されたプリンタードライバーをインストールする処理を説明するためのフローチャートである。
【0026】
プリンタードライバーのインストール処理が開始(S500)されると、まずユーザーによるデバイスモデルの選択を受け付ける(S501)。
【0027】
ここで、選択されたデバイスモデルが仮想プリンタードライバーかどうか判断する(S502)。選択されたデバイスモデルが仮想プリンタードライバーではない場合、図4で示す専用・汎用プリンタードライバーのインストール処理を行う(S503)。S503は、図4のS402以降の処理と同様である。そして、当インストール処理を終了する(S516)。
【0028】
S502にて、選択されたデバイスモデルが仮想プリンタードライバーの場合、仮想プリンタードライバーをインストールする(S504)。本実施形態における仮想プリンタードライバーは、ポートに対する印刷データの出力を直接行わないので、ユーザーによる入力を伴わずにダミーのポートを作成する(S505)。仮想プリンタードライバーに対しては複数のプリントキューを作る必要性が無いので、とくにユーザーによる入力無しにデバイスモデル名と同じ名前でプリントキューを作成する(S506)。
【0029】
図4で一般的なプリンタードライバーのインストール処理について説明した際、ユーザーによる入力は、S401とS403とS405の3回あった。一方、本実施形態に特有の仮想プリンタードライバーのインストール処理においては、ユーザーによる入力はS501における選択だけである。もし、インストーラー129が仮想プリンタードライバーだけを対象としたインストーラープログラムであるなら、S501の選択も不要となる。つまり、仮想プリンタードライバーのインストール処理方法は、ユーザーの負担と運用コストを低減させる効果がある。
【0030】
本実施形態における仮想プリンタードライバーは、ポートに対する印刷データの出力を行わない。そこで、本実施形態では、仮想プリンタードライバーのインストールの指示に伴い、汎用プリンタードライバーのインストール処理を行い、プリンターの全ての機能を使えないまでも、汎用的な機能(部数の指定機能など)での印刷をユーザーに保証するようにしてもよい。S507〜S510では、仮想プリンタードライバーのインストールに伴う汎用プリンタードライバーのインストール処理について説明する。
【0031】
図2のプリンターリスト201において、汎用プリンタードライバーは、Generic Device Model 1とGeneric Device Model 2が存在する。よって、1回目のループ処理では、Generic Device Model 1をインストール対象とし、2回目のループ処理では、Generic Device Model 2をインストール対象とする。対象となる汎用プリンタードライバーがホストコンピューター101にインストール済みかどうか判断する(S508)。まだ、インストールしていない場合は、当該汎用プリンタードライバーをインストールする(S509)。ここでは、汎用プリンタードライバーを使ったプリントキューを作成しないので、ユーザーが汎用プリンタードライバーのインストールを意識することはない。そして、S510へ進む。ループ処理が終了したら、本インストール処理を終了する(S516)。
【0032】
S508にて、対象となる汎用プリンタードライバーがホストコンピューター101にインストール済みの場合は、インストール済みの汎用プリンタードライバーのバージョンを取得する(S511)。バージョン数から継続使用可能どうか判断する(S512)。継続使用可能と判断した場合、S510へ進む。
【0033】
S512にて、インストール済みの汎用プリンタードライバーが継続使用不可能と判断した場合、インストール済みの汎用プリンタードライバーをアンインストールする(S513)。そして、取り出した汎用プリンタードライバーをインストールする(S514)。さらに、S513でのアンインストール前にインストール済み汎用プリンタードライバーを使って構成されていたプリントキューを、S514でインストールした汎用プリンタードライバーを使って復元する(S515)。
【0034】
以上、インストーラー129が、仮想プリンタードライバーをインストールしてそのプリントキューを作成するとともに、自動的に汎用プリンタードライバーをインストールすることを説明した。なお、S507以降の汎用プリンタードライバーのインストール処理については、図1(b)のインストーラー129が実施することで説明をしたが、仮想プリンタードライバー126の初期化処理において実施してもかまわない。また、一般にVendorSetupと呼ばれるOS122から呼び出される不図示のプリンタードライバーのセットアップモジュールで実施してもかまわない。
【0035】
図6は印刷処理のデータフロー図である。本図を用いて、印刷処理関連プログラムの各コンポーネント間でどのような入出力が行われているか明らかにする。
【0036】
アプリケーション123は仮想プリンタードライバー126に対して、OS122の提供する描画インターフェースであるGDI(Graphic Device Interface)600を通じて印刷指示命令を出力する。次に仮想プリンタードライバー126は、入力された印刷指示命令をEMF(Enhanced Meta File)601の形式に変換してプリントジョブマネージャー125に出力する。ここでEMF601とは、GDI600の印刷指示命令と互換性のある中間データ形式であり、アプリケーション123から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。本実施形態では中間データ形式としてEMF601を用いて説明しているが、印刷指示命令を再現可能なデータであれば、例えばXPS(XML Paper Specification)、PDF(Portable Document Format)、あるいは独自に定義した任意の形式であっても良い。次にプリントジョブマネージャー125は、後述するプリンターの特定、汎用・専用プリンタードライバーの管理など固有の処理を行い、GDI600を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタードライバー127あるいは専用プリンタードライバー128に対して入力される。次に、汎用プリンタードライバー217あるいは専用プリンタードライバー218は、プリンター102が処理可能なPDL(Printer Description Language)602の形式に変換し、プリンター102に出力する。最後にプリンター102は、入力されたPDL602を処理して印刷出力を行う。
【0037】
図7は、本実施の形態における印刷処理のシーケンスの例を説明するための図である。本図を用いて、一連の印刷処理中に関連プログラムの各コンポーネントの内部、およびそれらの間でどのような処理が行われているか明らかにする。
【0038】
まず、ユーザーはアプリケーション123に対して印刷したいドキュメントの印刷指示を図8(a)で示すユーザーインターフェース(UI)8000を通じて入力する(S700)。図8(a)の8001〜8003はプリントキューを表すアイコンである。このうち、8001は仮想プリンタードライバーのプリントキューであり、8002、8003は専用プリンタードライバーのプリントキューである。ここでは仮想プリンタードライバーを通じて出力を行うため、ユーザーは8001のアイコンを選択し、印刷ボタン8004を押して、印刷を指示する。
【0039】
次に、アプリケーション123は、仮想プリンタードライバー126に対して、印刷初期化処理を行う(S701)。仮想プリンタードライバー126は印刷初期化が行われるとプリントジョブマネージャー125の起動処理を行う(S702)。
【0040】
プリントジョブマネージャー125は、このように仮想プリンタードライバー126に対するドキュメントの印刷開始後に起動されるプログラムであり、後述するプリンターの特定、汎用・専用プリンタードライバーの管理など固有の処理などを担う。また、プリントジョブマネージャー125は内部的なコンポーネントとして、デバイス特定部1251、ドライバー管理部1252、でスプール処理部1253を含む。
【0041】
次に、アプリケーション123はプリントジョブマネージャー125が起動されると、仮想プリンタードライバー126に対して印刷を開始し、一連の印刷描画命令をGDI219を通じて出力する(S703)。仮想プリンタードライバー126は、入力された一連の印刷描画命令をEMF601形式に変換し、後段の処理で印刷描画命令を再現できるよう外部メモリ121に保存する。これをスプール処理と呼ぶ(S704)。アプリケーション123は一連の印刷描画命令の最後に印刷終了の処理を行い(S705)、仮想プリンタードライバー126はそれを受けて保存されたEMF601の外部メモリ121における保存位置情報をプリントジョブマネージャー125に通知する(S706)。なお、S704は、外部メモリ121に対してスプール処理を実施するが、外部メモリ121を介さずプリントジョブマネージャー125へ直接スプール処理してもかまわない。
【0042】
次に、デバイス特定部1251は、プリンターの検索を行う(S707)。ここで検索とは、ネットワーク104に接続されたプリンター102aや102bと通信し、それらの名称、設置場所、IPアドレス、ハードウェア情報といった情報を取得することである。ハードウェア情報としては、プリンターの機種情報や製造元であるベンダ情報などが含まれる。通信手段としては公知の技術であるSNMP(Simple Network Management Protocol)やWSD(Web Services on Devices)などのプロトコルが使用される。通常、プリンター102aや102bの状態、すなわち電源が入っているかや、ネットワーク104に接続されているかを事前に把握することは不可能であるため、デバイス特定部1251は印刷指示の都度、すべてのプリンターとの通信を試みる。ネットワーク内のすべての装置との通信には、これも公知の技術であるブロードキャストという手段を用いる。デバイス特定部1251がこのブロードキャストの方法で、ネットワークI/F118を通じてSNMPの情報取得用データを送信すると、ネットワーク104で到達可能なすべてのプリンター102が情報取得用データを受信する。そして、各プリンター102が、取得対象として指定されたプリンターの名称や設置場所などの情報を応答のデータとしてネットワークI/F138を通じて送信すると、デバイス特定部1251は順次それらの応答を受信する。そして、受信した情報をRAM112に保存する。
【0043】
デバイス特定部1251は、受信した応答からデバイス名や設置場所などの情報を取り出し、図8(b)のようなプリンターリストとしてユーザーインターフェース(UI)8100に表示する(S708)。UI8100には情報を表示するためのリストコントロール8101が配置され、その中からひとつをカーソル8102によって、プリンターを選択することができる。ボタン8103を押すと、ネットワーク内で再検索が行われ、利用可能なプリンターのリストを最新の状態に更新できる。ボタン8104を押すと、カーソル8102で現在選択されているデバイスが出力先として決定される(S709)。デバイス特定部1251は、S709での出力先の決定を受け、次の処理に移る。チェックボックス8105とボタン8106は、プリントキューを管理する際にユーザーが操作する。これらの操作方法については後述する。S709で出力先のデバイスが決定されると、デバイス特定部1251はドライバー管理部1252に対して出力準備処理を実行するよう依頼する(S710)。
【0044】
この出力準備処理(S711)の結果、OS122には選択されたプリンター102に印刷可能な専用プリンタードライバー218(または不図示の汎用プリンタードライバー)のプリントキューが登録される。出力準備処理(S711)については、図9、図10を用いて後述する。
【0045】
次に、デバイス特定部1251は、図8(b)のデバイス特定用の画面から、デスプール処理部1253が有する図8(c)の画面8200に遷移する(S712)。デスプール処理部1253は、プレビューエリア8201に印刷ドキュメントを実際に印刷したときのイメージを表示する(S713)。このとき表示されるイメージは、S704においてスプールされたEMF601をデスプール処理部1253が読み込み、解析して、プレビューエリア8201の大きさに合わせて描画したものである。スピンコントロール8202やチェックボックス8203はそれぞれ印刷部数、白黒印刷といった一般的な印刷設定を変更するための入力手段である。さらに一般的でない印刷設定を変更するためには、ボタン8204を押下することにより、不図示のプリンタードライバー固有のUIを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタードライバー218のものである場合、汎用プリンタードライバー217のものに比べて、出力先のプリンター特有の機能(製本機能など)を含む印刷設定が可能である。ボタン8206は、画面8200から、ひとつ前の画面であるデバイスを特定するための画面8100に戻るための手段である。
【0046】
ボタン8205をユーザーが押下すると(S714)、デスプール処理部1253は専用プリンタードライバー218に対してデスプール処理を行い、一連の印刷描画命令を発行する(S715)。ここで、デスプール処理というのはスプール処理の逆で、S706にて通知された保存位置情報からEMF601データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー125の処理のために中断していた印刷処理が再開され、印刷ドキュメントの出力が行われる。専用プリンタードライバー128は、入力された印刷描画命令をPDL602に変換し、ネットワークI/F138を通じてプリンター102に送信する(S716)。最後に、プリントジョブマネージャー125はプログラムを終了する。
【0047】
図8にプリントジョブマネージャー125のユーザーインターフェース(UI)の遷移の概要を示す。
【0048】
まず、プリントジョブマネージャー125は、デバイス特定ダイアログを示すUI8100を表示する。プリンターの特定と「次へ」のボタン8104の押下をうけて、プリントジョブマネージャー125は、「編集プレビュー」ダイアログを示すUI8200を表示する。UI8200では、プリントジョブのプレビュー確認と基本的な印刷設定が可能である。「印刷」ボタン8205の押下をうけてプリントジョブマネージャー125はプリンターへ印刷を実行し同ダイアログを閉じる。加えて、UI8200には、プリンタードライバーが持っている特有の機能を設定するために「詳細設定」ボタン8204が存在する。「詳細設定」ボタン8204の押下をうけて、プリントジョブマネージャー125は、プリンタードライバーの「印刷設定」ダイアログを表示する。更に、UI8200には「戻る」ボタン8206が存在する。この「戻る」ボタン8206は、現在の出力先デバイスでは所望の機能が実現できないことが分かった際のプリンターの再設定のために存在する。「戻る」ボタン8206の押下をうけて、プリントジョブマネージャー125は、UI8100を表示し、再度プリンターの指定が可能になる。
【0049】
図9は、ドライバー管理部1252における出力準備処理(S711)を詳細に説明するためのフローチャートである。本処理では、S709でユーザーにより選択されたプリンターへ印刷要求するためのプリントキューが既にあればそれを選定し、なければ新しいプリントキューが作成される、あるいは最適なプリンタードライバーが情報処理装置内にインストールされる。
【0050】
出力準備処理が開始(S1000)されると、ドライバー管理部1252は、プリンター102のアドレス情報(たとえば、IPアドレス)を取得する(S1001)。アドレス情報はプリンターの検索処理(S707)において取得されRAM112に記憶されているものを取り出す。次に、OS122に登録されているすべてのプリントキューからプリントキューに関連付けられているポートのアドレス情報を取得する(S1002〜S1004)。
【0051】
次に、S709でユーザーにより選択されたプリンターのアドレス情報と、ポートのアドレス情報が合致するプリントキューが存在するかどうか判断する(S1005)。後述するが、本システムにおいて、プリントキューはプリンターごとに作成される。しかし、同じプリンターに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、プリンターとすべてのプリントキューのアドレス情報同士を比較することによって、既存のプリントキューの中に出力可能なものがないかを判断する。もし出力可能なプリントキューが存在すればS1006に、存在しなければS1011に進む。
【0052】
次にS1006ではさらに汎用プリンタードライバーを優先させるモードであるかどうか判断する。プリンター102に出力可能なプリントキューの中には専用プリンタードライバー218のものが含まれている可能性もある。しかしながら、高度な機能は必要とせず、シンプルな汎用プリンタードライバー217を使用したいユーザーもいるため、例えば不図示のユーザーインターフェースによって汎用プリンタードライバーを優先させるかどうか切り替え可能なモードを設けることが考えられる。ここで、汎用プリンタードライバーを優先させる場合は、S1007に進み、そうでなければS1009に進む。
【0053】
次に、S1007ではプリントキューのデバイスモデル名を取得する。そして、デバイスもモデル名が汎用プリンタードライバーのものであるかどうか判断する(S1008)。プリントキューの名前がユーザーによって変更可能であるのに対し、汎用プリンタードライバーのデバイスモデル名は「Generic Device Model 1」のように固有の名称となる。よって、プリントキューのデバイスモデル名からドライバーの種類を判断できる。汎用プリンタードライバーである場合はS1009へ進み、そうでなければS1010へ進む。
【0054】
S1009へ進んだ場合、S1005で選択されたプリンターのアドレス情報と合致すると判断されたポートに対応する既存のプリンタードライバーのプリントキューを出力先として決定する。その後、出力準備処理を終了する(S1014)。
【0055】
S1010へ進んだ場合、すなわち出力対象として選択されたプリンターに対応する専用プリンタードライバーのプリントキューが既に存在していると判断された場合は、汎用プリンタードライバーをインストールすると決定し、S1013に進む。S1011では、S1006と同様に汎用プリンタードライバーを優先させるモードかどうかを判断し、優先させるモードならS1010に、そうでないならS1012へ進む。S1012では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタードライバーを優先させるモードでもないので、適合する最適な専用プリンタードライバーを検索してインストールすることに決定し、S1013に進む。
【0056】
その後、S1010、またはS1012で決定された種類のプリンタードライバーをインストールする処理(図10参照)を実行(S1013)し、出力準備処理を終了する(S1014)。
【0057】
図10は、ドライバー管理部1252における本発明に特有の汎用または専用プリンタードライバーインストール処理を詳細に説明するためのフローチャートである。本発明においては、この処理を第2のインストール処理と呼ぶ。
【0058】
まず、ドライバー管理部1252は処理を開始すると(S1100)、出力用のポートを作成する(S1101)。次に、図9のS1010、S1012での決定に従い、インストール対象が汎用プリンタードライバーであるかどうか判断する(S1102)。インストール対象が汎用プリンタードライバーであればS1108に、インストール対象が汎用プリンタードライバーでなければS1103に進む。
【0059】
S1103〜S1107は、ホストコンピューター101、配信サーバー103、あるいはプリンター102aや102bの何れかの記憶手段から、出力に最適な専用プリンタードライバー143を検索するステップである。まず、プリンターのハードウェア情報を取得する(S1103)。本実施形態ではハードウェア情報として、プラグアンドプレイインストールに用いられるハードウェア情報を取得する。ハードウェア情報はプリンターの検索処理(S707)において取得されRAM112に記憶されているものを取り出す。
【0060】
次に、S1104ではインストール済みプリンタードライバー内に適合するプリンタードライバーがあるかどうか判断する。具体的には、ドライバー管理部1252は、OS122に登録されている各プリンタードライバーのハードウェア情報と、S1103で取得したプリンター102のハードウェア情報とを比較し、一致するものがあればすべてピックアップする。1つ以上適合するものがあればS1116へ、なければS1105へ進む。
【0061】
次に、S1105ではドライバーストアで適合するプリンタードライバーが管理されているかどうか判断する。ドライバーストアとはWindows Vista(登録商標)以降のOSで導入されたデバイスドライバーのデータベースシステムであり、インストール前のデバイスドライバーのパッケージをOS122に格納する仕組みである。ドライバー管理部1252は、このドライバーストアに格納されているプリンタードライバーの中に、S1103で取得したプリンター102のハードウェア情報に一致するものがないかOS122に問い合わせることができる。問い合わせの結果、1つ以上適合するものがあればS1112へ、なければS1106へ進む。
【0062】
次に、S1106では配信サーバー103で適合するプリンタードライバーが管理されているかどうか判断する。ドライバー管理部1252は、ドライバー配信サーバー103にRPC(Remote Procedure Call)やHTTP(Hyper Text Transfer Protocol)などの手段で、ネットワーク104を経由して、ハードウェア情報に適合するプリンタードライバーがあるか問い合わせることができる。問い合わせの結果、1つ以上適合するものがあれば配信サーバー103からプリンタードライバーのパッケージをホストコンピューター101に転送して、外部メモリ121に記憶し、S1112へ進む。そうでなければS1107へ進む。
【0063】
次に、S1107ではプリンター102で管理しているデバイスドライバーを検索し、適合するプリンタードライバーがあるかどうか判断する。前述したとおり、プリンター102はその外部メモリ(134)に、プリンター自身を利用するために必要な専用プリンタードライバー143を記憶することができる。ドライバー管理部1252は、このプリンター102に記憶されたプリンタードライバーも、S1106と同様の手段でネットワーク104を経由して、問い合わせることが可能である。問い合わせの結果、1つ以上適合するものがあればプリンター102から専用プリンタードライバー143のデータをホストコンピューター101に転送して、外部メモリ121に記憶し、S1112へ進む。ここで、外部メモリ134の設定変更等により専用プリンタードライバー143が消去されているなど、問い合わせの結果が1つも適合するものがないと判断された場合はS1108へ進む。
【0064】
S1108〜S1111では、前記S1103〜S1106の一連の処理の結果、適合するプリンタードライバーが見つからない場合の代替手段として、あらかじめS500〜S516でインストールされた汎用プリンタードライバーのプリントキューを作成する。
【0065】
まず、ドライバー管理部1252はネットワーク104を経由して、プリンター102のコマンドタイプ情報を取得し(S1108)、それが「1」であるかどうか判断する(S1109)。ここで、コマンドタイプ情報とは、プリンター102が処理可能なPDL602の種類を表す情報である。ここで、汎用プリンタードライバーとは、複数のデバイスモデルに共通する機能を設定可能な特定のPDLに対応するプリンタードライバーである。したがって、それと異なるPDLをサポートするデバイスモデルに対しては異なる汎用プリンタードライバーが用意されているため、コマンドタイプ情報を取得して、互換性の確認を行う。本実施形態においては2種類のPDL、「1」および「2」のどちらかに対応したプリンターを利用することを前提としているので、コマンドタイプ情報が「1」であるかどうか判断する。「1」の場合はS1110へ、それ以外すなわち「2」の場合はS1111に進む。
【0066】
S1110では、コマンドタイプ「1」に対応した「Generic Device Model 1」のプリントキューを作成し、処理を終了する(S1118)。一方、S1111ではコマンドタイプ「2」に対応した「Generic Device Model 2」のプリントキューを作成し、処理を終了する(S1118)。なお、プリントキューを作成する際は、S1101で作成したポートを関連付ける。
【0067】
S1112〜S1114では、前記S1103〜S1106の一連の処理の結果、見つかった適合する専用プリンタードライバー143をインストールする。
【0068】
まず、S1112では適合するプリンタードライバーが2つ以上見つかったかどうか判断し、2つ以上であればS1113、1つであればS1114へ進む。S1113では、その中から最もプリンタードライバーのバージョンの新しいものをインストール対象として選択する。各プリンタードライバーにはバージョンが付与されており、たとえ同じデバイスモデルのプリンタードライバーであっても作成された時期が違えば、通常は異なるバージョンを有する。バージョンの表現方法としては例えば「10/10/2008.2.5.0.0」のように日付と数値の組み合わせで表現し、どちらの方が新しく作成されたものか容易に判断することができる。
【0069】
なお、古いバージョンのドライバーをあえて使用する必然性が生じる場合がある。そのような場合は図8(d)の8300に示すようなユーザーインターフェースを表示して、ユーザーに選択させることが好ましい。8301には適合すると判断された複数のプリンタードライバーの情報(名称、バージョン)がリストで表示される。ユーザーは8301のリストの中から所望のプリンタードライバーを選び、ボタン8302を押すことで決定できる。その後、S1114では、見つかった1つの適合するプリンタードライバー、もしくは複数見つかった場合にS1113で選択されたプリンタードライバーを、ホストコンピューターにインストールする。
【0070】
S1116〜S1117は、インストール済みプリンタードライバーの中に適合する専用プリンタードライバーがあった場合に処理されるステップであり、S1116はS1112と、またS1117はS1117と同様の処理である。S1114が不要なのは、プリンタードライバーをインストールする必要がないからである。
【0071】
S1115では、S1101において作成したポートに関連付けてプリントキューを作成し、処理を終了する(S1118)。
【0072】
以上で述べた第2のインストール処理に関して、S1114のプリンタードライバーをインストールする処理は、OS122における管理者権限を有したプロセスから実行する必要がある。しかしながら、印刷を行うアプリケーション123は、多くの場合において一般ユーザー権限で起動されている。その結果、アプリケーション123によりロードされる仮想プリンタードライバー126、さらにはプリントジョブマネージャー125も一般ユーザー権限で動作するため、図10のS1114で説明したプリンタードライバーのインストール処理を実現することができない。本システムを利用する際に、アプリケーション123を必ず管理者権限で動作させることを前提としてしまうと、ユーザーの利便性を著しく損なう場合がある。そのため、本発明においては、一般ユーザー権限で動作するアプリケーションであっても、S1114におけるインストール処理が実現できる手法についても説明する。
【0073】
図11は、権限を考慮したインストール制御処理(図12で後述)に関わるコンポーネントを、実行プロセス別に整理し表した模式図である。
【0074】
スプーラーサービス201は、OS122の機能の一部として提供される印刷処理を制御するためのコンポーネントである。ランゲージモニター202は、プリンターなどの周辺機器との通信処理などを担うコンポーネントである。ランゲージモニター202は、仮想プリンタードライバー126のパッケージ内に含まれており、プリンタードライバー126のインストール時に、OS122に登録され、スプーラーサービス201によって管理される。
【0075】
仮想プリンタードライバー126およびプリントジョブマネージャー125は、図7で説明した印刷の流れに従い、アプリケーション123によってロードされ、アプリケーションと同等の権限で動作する。一方、ランゲージモニター202は、常に管理者権限で起動されるスプーラーサービス201のプロセス上によってロードされ、動作する。スプーラーサービス201は、OS122の実行開始時に起動され、その後、OS122が終了するまで常駐するため、結果としてランゲージモニター202も常にロードされた状態になっている。ランゲージモニター202の機能呼び出しはBidi APIというインターフェースを通じて行う。Bidi APIの詳細については後述する。
【0076】
図12は権限を考慮したインストール制御処理を説明するためのフローチャートである。
【0077】
本発明においては、この処理を第3のインストール処理と呼ぶ。
【0078】
まず、ドライバー管理部1252は処理を開始すると(S1200)、現在の権限でインストールを実行する(S1201)。インストール処理が成功するかどうかは、現在の権限が管理者権限を有しているかどうかであることはすでに述べたが、それ以外にもOSのバージョンや設定にも依存するため、現在のプロセスがインストール可能かどうかあらかじめ一意に知る手段を見つけるのは困難である。そこで、試しに現在の権限でインストールを実行し、それが成功したかどうかを判定する(S1202)。インストールに成功したかどうかは、インストールを実行するために用意されたAPIの戻り値をチェックすることで判別することができる。もしインストールに成功したらS1205に進んで処理を終了し、インストールに失敗したらS1203に進む。
【0079】
S1203では、ドライバー管理部1252は、BiDi APIを使用して、ランゲージモニターにインストール処理を要求する。
【0080】
ここで、BiDi APIとは、アプリケーションなどがプリンタードライバーの出力先であるデバイスとランゲージモニターを通じて通信するなどのために用意されたインターフェースである。ここで、ランゲージモニター202はスプーラーサービス201によってロードされているため、BiDi APIは実際にはスプーラーサービス201へのインターフェースとなっている。したがって、BiDi APIを呼び出すアプリケーションは、スプーラーサービス201とプロセス間通信することになる。
【0081】
BiDi APIの提供する機能のひとつとして、XMLデータを送受信するメソッドが用意されている。これは、あらかじめ呼び出すアプリケーションとランゲージモニターとで取り決めた要求のXMLデータとそれに対応する応答のXMLデータを送受信するというものである。
【0082】
図13(a)にドライバー管理部1252からランゲージモニターへの要求の例を、図13(b)にランゲージモニターからドライバー管理部1252への応答の例を示す。ここで、要求と応答はともにXML形式のデータである。本来、BiDi APIはデバイスとの通信をするために使用するものであるが、図13(a)、(b)にはそのような情報は含まれていない。本発明では、ランゲージモニター202を、デバイスとの通信を仲介するコンポーネントとしてではなく、管理者権限で動作する処理コンポーネントそのものとして使用するからである。
【0083】
図13(a)で示す要求内のInffilePath要素には、ドライバーパッケージの場所を示す値を指定する。ここで指定するドライバーパッケージの場所とは、S1105〜S1107において見つかったプリンタードライバーのドライバーパッケージファイルがある場所を指す。また、ModelName要素には、インストールするモデル名の値を指定する。
【0084】
ランゲージモニター202は、図13(a)で示す要求を受信すると、それにしたがってプリンタードライバーのインストール処理を行い、その結果を図13(b)で示す応答としてBidi APIを通じて返却する(S1204)。図13(b)で示す応答内のModelName要素にはインストールされたモデル名の値が格納される。以上で、本処理は終了となる(S1205)。
【0085】
なお、周辺機器を利用するためのデバイスドライバーに関する設定処理としては、インストール処理に限らず、S1101でのポートを作成する処理、S1110、S1111、S1115でのキューを作成する処理に関しても、管理者権限がないと実現でないケースが存在する。その場合、ポートおよびプリントキュー作成処理に関しても、上述したランゲージモニターを使用する方法を適用することにより、一般ユーザー権限でプリントジョブマネージャー125がロードされたとしても、ポートやプリントキューの作成が実現できる。
【0086】
ところで、本発明では、図12で説明した処理に関して、ランゲージモニター以外にも、管理者権限で動作する専用のコンポーネントを別途用意して、インストール処理があるまで待機させておくことでも、同様の処理を実現することが可能である。しかしながら、以下の点において、ランゲージモニターを利用する方が優れているといえる。
【0087】
ひとつには、ランゲージモニターはプリンタードライバーのパッケージをインストールする際に、同時に自動的にインストールされるため、専用のコンポーネントをインストールするためのプログラムを提供しなくても、ホストコンピューターにセットアップが可能であるという点である。
【0088】
さらに、専用のコンポーネントでは、一般のウィルス対策ソフトやセキュリティの厳しいオフィスなどによって、不審なものとして検知される対象となったりすることがあり、セットアップ自体が行えないといったリスクが存在する。一方、ランゲージモニターは、プリンタードライバー(本発明では、仮想プリンタードライバー)をインストールする際に、スプーラーサービスの一部として動作するコンポーネントとしてセットアップされることが一般的であるため、ホストコンピューターに導入できないといったリスクが比較的少ないと言える。
【0089】
なお、スプーラーサービス自身を拡張するか、ランゲージモニターと同様に、スプーラーサービスなどのプリントシステム内における管理者権限のモジュールによってロードされて動作するほかのコンポーネントを利用する際も本発明は適用できる。具体的には、他にもポートモニターやプリントプロセッサーといったコンポーネントにより、本発明で述べた図12の処理を実現してもよい。
【0090】
(第2の実施の形態)
次に、本発明を実施するための第2の形態について図面を用いて説明する。
【0091】
第1の形態は、ユーザーがホストコンピューター上で出力先を指定して印刷指示を行うシステムであった。それに対し、第2の形態では、ユーザーがホストコンピューター上で印刷指示のみ行い、出力先の指定は、プリンターなどの周辺機器に設置されたカードリーダーなどの認証ユニットで認証することによって行う、いわゆる認証プリントのシステムを想定する。
【0092】
図14(a)は、第2の形態に係るネットワークシステムの概略を示すブロック図である。図14(a)に示すように、このネットワークシステムは、複数のホストコンピューター101a、101b、複数のプリンター102a、102b、複数の認証ユニット142a、142b、ICカード143、認証サーバー144を備える。これらはネットワーク104を介して接続されている。
【0093】
ホストコンピューター101及びプリンター102の構成は、図1(b)で説明した通りである。なお、認証ユニット142は、本実施形態において、ユーザーが利用するプリンター102を特定するためにもあるので、通常、認証ユニットとプリンターは物理的に接近して設置される。本実施形態においては、プリンターと認証ユニットを分けて構成しているが、認証ユニット相当の機能を包含するプリンターがあってもかまわない。
【0094】
まず、システムを構成する各装置の詳細を説明する前に、システムの概要を印刷作業の流れに沿って説明する。
【0095】
ユーザーによる印刷実行の指示を受けたホストコンピューター101aは、出力対象のプリンターを特定せずに印刷処理を実行し、投入されたEMF形式など中間形式の印刷ジョブを保持する(S140)。次に、ユーザーがICカードをかざすことによって出力プリンター102a選択の合図を受信(S141)した認証ユニット142aは、ICカード143からICカード固有のIDを読み取り、認証サーバー144へIDを送る(S142)。
【0096】
認証サーバー144は、受信したIDと関連付けられたホストコンピューター101aへプリンター102aのネットワークアドレスを送る(S143)。
【0097】
ホストコンピューター101aは、受信したプリンター102aのネットワークアドレスに対し、保持しておいた中間形式のデータを、必要に応じてプリンター固有のPDLに変換して、出力する。
【0098】
次に、図14aのシステムを構成する本実施形態に関連する各装置の詳細を説明する。
【0099】
(認証ユニット142について)
認証ユニット142a、bは、ICカード143を用いた認証を行い認証プリントを実行するための端末である。本実施形態においては、ユーザーがホストコンピューターに一旦溜め置いた印刷ジョブを出力すべきプリンターを特定するために利用できる。認証ユニットは、出力プリンターとペアで存在する必要があり、図1において、プリンター102aには認証ユニット142a、プリンター102bには認証ユニット142bという具合に関連付けがされている。
【0100】
プリンターと認証ユニットの関連付けに関しては認証ユニットにその情報を記憶させることによっても実現可能ではあるが、本実施形態においては、後述する認証サーバー144によって実現している。
【0101】
図14bは、認証ユニット142の概略的な構成の一例を示すブロック図である。認証ユニット142は、CPU1421、RAMやROMなどを含む記憶部1423、ネットワークI/F1424、ローカルI/F1425を備え、システムバス1427により互いに接続して構成される。さらに、ローカルI/F1425にICカードリーダー1426を接続して構成する。認証ユニット142は、記憶部に記憶され、CPU1421により実行される認証用のプログラムに基づき、認証機能を実現する。
【0102】
CPU1421は、認証ユニット142全体の制御を司る中央演算処理部である。記憶部1422は、認証用のプログラムに加え、認証ユニット142の初期設定時に入力される認証サーバー144のネットワークアドレスなどを記憶しておく。
【0103】
ICカードリーダー1426は、ICカードから一意な識別情報を読み取る。ここでは、ICカードリーダー1426は、Felica(登録商標)のような非接触式ICカードに対応した読み取り機器を想定しているが、この技術に限定されるものではなく、一意な識別情報の入力が可能ならば他の実現方法であっても構わない。例えば、ICカードリーダーの代わりに指紋センサー等の生体認証センサーを設置するという方法もある。なお、このICカードリーダー1426が、直接システムバス1427に接続されずローカルI/F1425を介して接続されているのは、認証手段を柔軟に変更できるようにするためである。
【0104】
認証ユニット142は、ICカードリーダー1426を介して取得するIDを、ネットワークI/F1424を介して、認証サーバー144へ送ることで外部と連携した認証機能を実現する。
【0105】
(認証サーバー144について)
認証サーバー144は、図15(a)に示す、ICカードのIDと、ホストコンピューターのネットワークアドレスの組み合わせ情報1501を記憶している。さらに、図15(b)に示す、認証ユニットのネットワークアドレスと出力デバイスのネットワークアドレスの組み合わせ情報1502も記憶している。
【0106】
認証サーバー144が図15(a)、(b)の情報を一元管理することによって、ホストコンピューターとプリンターと認証ユニットを連携させた認証プリントが実現されている。
【0107】
認証サーバー144は、認証ユニット142aからICカード143のIDを受信すると、図15(a)の組み合わせ情報1501からID(162696509400678657に関連付けられたホストコンピューター101aのネットワークアドレス(192.168.0.2)を得る。さらに、認証サーバー144は、IDを受信した際に認証ユニット120aのネットワークアドレス(192.168.0.16)も同時に受信しているので、図15(b)の組み合わせ情報1502から、認証ユニット142aに関連付けられたプリンター102aのネットワークアドレス(192.168.0.48)を得る。
【0108】
そして、認証サーバー144は、こうして得られたプリンター102aのネットワークアドレス(192.168.0.48)をホストコンピューター101aに送信する。ホストコンピューター101aは、受信したプリンター102aのネットワークアドレスを用いて、出力対象となるプリンターの情報を取得して、プリンタードライバーのインストール処理などを行うことができる。また、ホストコンピューター131aからプリンター102aへ、ホストコンピューター131a溜め置かれたジョブ一覧の情報を提示して、プリンターからの要求に応じたジョブの転送を促すことが可能となる。
【0109】
なお、第1の実施形態において印刷処理やインストール処理などを含む中心的な役割を担ったのがプリントジョブマネージャー125であったのに対し、第2の実施形態では認証ジョブマネージャー130が主な処理を担う。
【0110】
(本実施の形態における印刷処理のシーケンスの例)
以下、図16のシーケンス図を用いて、認証ジョブマネージャー130を中心とした印刷処理関連プログラム間で行われる処理を説明する。
【0111】
S801〜S806で示すアプリケーション123と仮想プリンタードライバー126の印刷処理は、第1の実施形態の図7で述べたS700〜S706までの処理と同様である。唯一、異なるのは、S802で起動されるプログラムが認証ジョブマネージャー130である点のみである。なお、ユーザーが仮想プリンタードライバーに対して、印刷を繰り返すことにより、複数のEMF形式の印刷ジョブがホストコンピューターにおいて溜め置かれることになる。
【0112】
認証ジョブマネージャー130が有する内部コンポーネントは、第1の実施形態のプリントジョブマネージャー125と同じく3つあり、プリンタードライバー管理処理部1252とデスプール処理部1253の2つは両者で共通である。残りの通信処理部1301は、認証ジョブマネージャー130特有の内部コンポーネントで、認証ユニット142との通信や、プリンタードライバー管理処理部1252とデスプール処理部1253の制御を行う。
【0113】
認証ジョブマネージャー130がS802において起動されると、通信処理部1301は受信待機処理を実行する(S807)。受信待機処理とは、すなわち、認証サーバー144が送信する情報を受信できるよう、ホストコンピューター101のネットワークI/F118を制御する処理である。ネットワークI/F118の制御はOS122が提供するAPIの機能によって実現される。APIの例としてはWinsockなどがある。S806でEMFのメモリ位置が通知され、S807で受信待機処理が実行されると、ユーザーによる認証操作が行われるまでジョブがホストコンピューター101上で留め置かれ、待機状態に入る。
【0114】
次に、認証ユニット142は、ユーザーによってICカード143を使った認証操作が行われると(S141)、カードIDを読み取り、カードID情報を認証サーバー144に送信する(S142)。次に、認証サーバー144は、記憶した組み合わせ情報1502を元に得た出力先のプリンター102のネットワークアドレスを、ホストコンピューター101に送信する(S143)。S141〜S143の処理の詳細については、すでに図15(a)、(b)などを用いて前述した通りである。ここでは、プリンターにおけるユーザーの印刷対象となるジョブの特定も同時に行われ、認証ジョブマネージャー130に印刷要求として通知される。
【0115】
次に、認証ジョブマネージャー130の通信処理部1301は、認証サーバー144から出力先のプリンター102のネットワークアドレスを受信すると、出力先となるプリンターのデバイス情報を取得する処理を行う(S808)。この取得処理は、S707のプリンターの検索処理と同様の処理を、ひとつのプリンター102に対して行うものである。具体的には、S707ではブロードキャストなどの通信方法によって、SNMPプロトコルなどによりプリンターのハードウェア情報などを取得するものであったが、S808はプリンター102からのみハードウェア情報を取得する処理である。
【0116】
次の通信処理部1301による出力準備処理依頼(S809)およびプリンタードライバー管理処理部1252による出力準備処理(S810)は、第1の実施形態で述べたS710およびS711と同様である。
【0117】
なお、本実施の形態でも、認証ジョブマネージャー130が、管理者権限でなくユーザー権限で起動されてしまうと、そのままではS143で通知されたアドレスで示すプリンターのプリンタードライバーのインストール処理が実行できないという課題が生じる。そこで、出力準備処理S810は、第2の実施形態においてもその内部処理として、第1の実施形態で述べた本発明特有のインストール処理である第3のインストール処理(S1200〜S1205)を行うものとする。
【0118】
通信処理部1301は、S810において、専用プリンタードライバーのインストールが完了したら、デスプール処理部1253に対して印刷開始の指示を行う(S811)。
【0119】
以降のデスプール処理部1253のデスプール処理(S812)と専用プリンタードライバー128によるPDL生成送信処理(S813)は、それぞれ第1の実施形態のS715、S716と同様である。ここで生成されたPDLの印刷ジョブは、ネットワークアドレスを送信してきたプリンター102へ送信され、印刷処理が実行される。
【0120】
以上、第2の実施形態では、ホストコンピューターにおいて溜め置かれた印刷ジョブを、ユーザーが任意のプリンターの設置場所で認証してから印刷を行うといった動作を説明した。とくに、プリンターから溜め置かれたジョブの印刷要求があった際に、該ホストコンピューターにプリンタードライバーが自動でインストールされる点に特徴がある。
【0121】
(他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、プリンターなどの周辺機器を利用するためのデバイスドライバーのインストールを制御するための技術に関するものである。
【背景技術】
【0002】
パーソナルコンピューターなどの情報処理装置からプリンターやスキャナーなどの周辺機器を利用するには、一般的にその周辺機器に対応した特定のデバイスドライバーを情報処理装置に組み込む必要がある。従来、ユーザーが利用する周辺機器が複数台ある場合には、その台数分だけプリンタードライバーをユーザーの情報処理装置に組み込んでいたが、ユーザーは周辺機器のIPアドレスを調べたり、対応するデバイスドライバーを探してきたりする面倒なインストールのための作業を強いられてきた。
そこで、近年、このインストール作業を効率化するための技術が考案されている。例えば、特許文献1には、ネットワーク上の周辺機器から構成情報を受信して、対応するデバイスドライバーを情報処理装置にインストールするシステムの開示がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−135414号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
前述の特許文献1は、ユーザーが印刷要求を行うより前のタイミングで、事前にデバイスドライバーをインストールしておく技術であった。しかしながら、例えば一般的なアプリケーションから印刷を指示して、印刷要求を行うタイミングにおいては、情報処理装置を別の場所に移動させた場合など、ネットワーク上にプリンターが存在しない場合がある。また、印刷要求を行うタイミングにおいて、よりユーザーが利用したいと思われるプリンターがネットワーク上に設置されることも考えられる。そのため、ユーザーが一般的なアプリケーションから印刷を指示して、印刷要求を行うタイミングで、所望のプリンタードライバーをインストールするための手法がより望まれる。
そこで、本発明においては、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールするための手法を提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の情報処理装置は、デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置であって、ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、前記管理手段は、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする。
【発明の効果】
【0006】
本発明により、ユーザーが周辺機器に対して処理要求を行うタイミングで、所望のデバイスドライバーを的確にインストールするための手法を提供できる。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態におけるシステムの構成図およびホストコンピューターならびにプリンター内部の装置構成を示すブロック図
【図2】インストーラーのユーザーインターフェース例を表す図
【図3】プリンタードライバー、プリントキュー、ポートの各情報とそれらの関連を表す図
【図4】一般的なプリンタードライバーのインストールである第1のインストール処理を示すフローチャート
【図5】第1の実施形態における仮想・汎用・専用プリンタードライバーのインストール処理を示すフローチャート
【図6】第1の実施形態における印刷処理のデータフロー図
【図7】第1の実施形態における印刷処理のシーケンス図
【図8】アプリケーションおよびプリントジョブマネージャーのユーザーインターフェース例を表す図
【図9】出力準備処理のフローチャート
【図10】本発明に特有のプリンタードライバーのインストール処理である第2のインストール処理を示すフローチャート
【図11】インストール処理に関わるコンポーネントを表す図
【図12】権限を考慮した第3のインストール処理を示すフローチャート
【図13】BiDi APIで扱うデータの例を表す図
【図14】第2の実施形態におけるシステムの構成図ならびに認証ユニットの掃除構成を示すブロック図
【図15】認証ユニットが記憶する組み合わせ情報の例を表す図
【図16】第2の実施形態における印刷処理のシーケンスの例
【発明を実施するための形態】
【0008】
以下、本発明を実施するための実施例を図面を用いて説明する。
【0009】
(第1の実施の形態)
図1(a)は、本発明の実施形態に係るネットワークシステムの概略を示すブロック図である。このネットワークシステムは、ホストコンピューター101と、このホストコンピューター101より印刷データを受信して印刷を行なう複数のプリンター(102a,102b,…)などの周辺機器とデバイスドライバーを配信する配信サーバー103等を備える。これらはネットワーク104を介して接続されている。
【0010】
図1(b)は、図1(a)のホストコンピューター101とプリンター102の装置構成を示すブロック図である。
【0011】
ホストコンピューター101は、一般的なパーソナルコンピューターなどを含む情報処理装置である。CPU111は、RAM112に記憶されているプログラムに従って、システムバス114に接続される各デバイスを総括的に制御している。このRAM112は、CPU111の主メモリ、ワークエリア等としても機能している。ROM113は、各種プログラム及びデータを格納しており、各種フォントを記憶するフォントROM(113a)、ブートプログラムやBIOS等を記憶するプログラムROM(113b)、及び各種データを記憶するデータROM(113c)に区分けして構成されている。キーボードコントローラI/F115は、キーボード119や不図示のポインティングデバイス(マウス)からのキー入力を制御する。ディスプレイI/F116は、ディスプレイ120への表示を制御している。外部メモリI/F117は、例えばハードディスク(HD)、Solid State Disk(SSD)等の外部メモリ121とのアクセスを制御する。外部メモリ121は、オペレーティングシステムプログラム(以下、OS)122をはじめ各種アプリケーション123、印刷処理関連プログラム124、さらに、不図示のユーザファイル、編集ファイル等を記憶するコンピューターが読み取り可能な記憶媒体として機能する。なお、ここではOS122としてMicrosoft Windows(登録商標)を使用するものとする。
【0012】
印刷処理関連プログラム124は、本実施形態に係るプリントジョブマネージャー125と仮想プリンタードライバー126と汎用プリンタードライバー127と専用プリンタードライバー128とインストーラー129を含んでいる。
【0013】
さらに印刷処理関連プログラム124は、第2の実施形態で使用される認証ジョブマネージャー130も含んでいる。
【0014】
仮想プリンタードライバーとは、本実施形態特有のドキュメントを物理的なプリンターに対して直接ではなく、間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタードライバー126はOS122上では一般的なプリンタードライバーとして登録されるため、ユーザーは通常の印刷作業手順に近い感覚で作業を行うことができる。一方、汎用プリンタードライバーと専用プリンタードライバーは、一般的に印刷指示に用いられるプリンタードライバーとして分類される。具体的には、汎用プリンタードライバーとは、複数のデバイスモデルのプリンターを利用した印刷が可能なプリンタードライバーである。汎用プリンタードライバーは、対応するデバイスモデルが共通で持つ機能を利用することができる。一方、専用プリンタードライバーとは、単一のデバイスモデルにのみ対応したプリンタードライバーである。専用プリンタードライバーは、対応するデバイスモデルの機能を最大限に引き出すことが可能である。
【0015】
ネットワークI/F118は、ネットワーク104を介してプリンター102に接続され、プリンター102との間で通信制御処理を行なう。なお、配信サーバー103もホストコンピューター101と同様の装置構成を備える。
【0016】
次にプリンター102の構成について説明する。CPU132は、プリンター102の全体の動作を制御している。RAM139は、CPU132の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域としても用いられる。またこのRAM139は、NVRAM(Non−volatile RAM:不揮発性RAM)領域も備えており、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。ROM133は、各種フォントを記憶するフォントROM(133a)、CPU132により実行される制御プログラム等を記憶するプログラムROM(133b)、及び各種データを記憶するデータROM(133c)を備えている。ネットワークI/F138は、ホストコンピューター101との間でデータの送受信を行なう。印刷部I/F136は、プリンタエンジンである印刷部137とのインターフェースを制御している。外部メモリ134は、外部メモリI/F140によりアクセスが制御されており、オプションとして接続されるハードディスク(HD)、Solid State Disk(SSD)等を含んでおり、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。さらに、本実施形態に係る専用プリンタードライバー143を記憶することも可能である。なお、ハードディスク等の外部メモリ134が接続されていない場合には、ROM133のデータROM(133c)に、ホストコンピューター101で利用される情報等を記憶することになる。なお、この外部メモリ134は1個に限らず複数備えるものであってもよく、例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。操作部142には、ユーザーによる操作を受け付ける操作パネルが設けられ、その操作パネルには操作のためのスイッチ及びLED表示器等が配されている(不図示)。また、不図示のNVRAMを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。CPU132は、ROM133のプログラムROM(133b)に記憶された制御プログラム等に基づき、印刷部I/F136を介して印刷部137に出力情報としての画像信号を出力する。また、CPU132はネットワークI/F138を介してホストコンピューター101との通信処理が可能となっており、ホストコンピューター101から送信される印刷データを受信すると共に、プリンター102内の情報等をホストコンピューター101に通知可能に構成されている。
【0017】
図2は、図1(b)のインストーラー129が備えるユーザーインターフェース(UI)200である。インストーラー129を実行すると、ディスプレイ120上に表示されるプリンターリスト201にインストール可能なプリンタードライバーの一覧が表示される。
【0018】
Device Model Aは、デバイスモデルAのプリンターに対応した専用プリンタードライバーである。Device Model Bは、デバイスモデルBのプリンターに対応した専用プリンタードライバーである。Device Model Cは、デバイスモデルCのプリンターに対応した専用プリンタードライバーである。Device Model Dは、デバイスモデルDのプリンターに対応した専用プリンタードライバーである。
【0019】
Generic Device Model 1は、デバイスモデルA、Bに対応した汎用プリンタードライバーである。Generic Device Model 2は、デバイスモデルC、Dに対応した汎用プリンタードライバーである。
【0020】
Virtual Device Modelは、デバイスモデルA、B、C、Dだけではなく、あらゆるプリンターに対応可能な仮想プリンタードライバーである。ユーザーが任意のモデルを選択し、追加ボタン202を押下し、インストール対象となるプリンターリスト203に選択したモデルを加える。その後、ユーザーがインストールボタン204を押下することで、インストーラー129は指定されたモデルのプリンタードライバーをインストールする。
【0021】
図3は、プリンタードライバーとプリントキューとポートの各情報とそれらの関係を説明した図である。UML(Unified Modeling Language)のオブジェクト図を使って表現している。
【0022】
プリントキュー302は、アプリケーションから印刷する際の印刷対象オブジェクトである。同一デバイスモデルのプリンタードライバー301から複数作成することができる。例えば、オフィスにDevice Model Aのプリンターが3台導入された場合、Device Model Aに対応したプリンタードライバーを1つインストールして、そのプリンタードライバーを使ったプリントキューを3つ作成することになる。ポート303は、ネットワークの出力先を特定するオブジェクトである。プリントキューとポートの関係は通常は一対一であるが、図のように同じポートを複数のプリントキューが使用してもかまわない。また、プリンタードライバー301はプリンタードライバー構成情報304を保持している。プリンタードライバー構成情報304は、ドライババージョン、デバイスモデル名、ハードウェア情報、ドライバモジュール名、等から構成される。このプリンタードライバー構成情報304は、OS122によって管理される。プリントキュー302は、プリントキュー構成情報305を保持している。プリントキュー構成情報305は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。このプリントキュー構成情報305は、OS122によって管理される。さらに、プリントキュー302は、本実施形態に特有の自動生成識別子306と更新日時307をも保持する。これらの情報は、プリントジョブマネージャー125によって管理される。ポート303は、ポート構成情報308を保持している。ポート構成情報308は、ポート名、モジュール名、IPアドレス、等から構成される。このポート構成情報308は、OS122によって管理される。
【0023】
図4は、図1(b)のインストーラー129による一般的なプリンタードライバーのインストール処理を説明するためのフローチャートである。一般的なプリンタードライバーとは、専用プリンタードライバーおよび汎用プリンタードライバーを指す。本実施形態では、この処理を第1のインストール処理と呼ぶ。
【0024】
プリンタードライバーのインストール処理が開始(S400)されると、まずユーザーによるデバイスモデルの選択を受け付ける(S401)。ここでは、図2のプリンターリスト201において、Virtual Device Model以外のデバイスモデルを選択された場合を想定している。専用プリンタードライバーもしくは汎用プリンタードライバーの選択を受け付けると、選択されたデバイスモデルのプリンタードライバーをインストールする(S402)。次に、ユーザーによるIPアドレス等のポート情報の入力を受け付ける(S403)。そして、ポートを作成する(S404)。次に、ユーザーによるプリントキュー名の入力を受け付ける(S405)。そして、S402でインストールしたプリンタードライバーとS404で作成したポートを関連付けて、プリントキューを作成する(S406)。以上で、専用プリンタードライバーまたは汎用プリンタードライバーのインストール処理が終了する(S407)。
【0025】
図5は、図1(b)のインストーラー129による本実施形態に特有の処理である仮想プリンタードライバーを含む、複数のプリンタードライバーの中からユーザーにより選択されたプリンタードライバーをインストールする処理を説明するためのフローチャートである。
【0026】
プリンタードライバーのインストール処理が開始(S500)されると、まずユーザーによるデバイスモデルの選択を受け付ける(S501)。
【0027】
ここで、選択されたデバイスモデルが仮想プリンタードライバーかどうか判断する(S502)。選択されたデバイスモデルが仮想プリンタードライバーではない場合、図4で示す専用・汎用プリンタードライバーのインストール処理を行う(S503)。S503は、図4のS402以降の処理と同様である。そして、当インストール処理を終了する(S516)。
【0028】
S502にて、選択されたデバイスモデルが仮想プリンタードライバーの場合、仮想プリンタードライバーをインストールする(S504)。本実施形態における仮想プリンタードライバーは、ポートに対する印刷データの出力を直接行わないので、ユーザーによる入力を伴わずにダミーのポートを作成する(S505)。仮想プリンタードライバーに対しては複数のプリントキューを作る必要性が無いので、とくにユーザーによる入力無しにデバイスモデル名と同じ名前でプリントキューを作成する(S506)。
【0029】
図4で一般的なプリンタードライバーのインストール処理について説明した際、ユーザーによる入力は、S401とS403とS405の3回あった。一方、本実施形態に特有の仮想プリンタードライバーのインストール処理においては、ユーザーによる入力はS501における選択だけである。もし、インストーラー129が仮想プリンタードライバーだけを対象としたインストーラープログラムであるなら、S501の選択も不要となる。つまり、仮想プリンタードライバーのインストール処理方法は、ユーザーの負担と運用コストを低減させる効果がある。
【0030】
本実施形態における仮想プリンタードライバーは、ポートに対する印刷データの出力を行わない。そこで、本実施形態では、仮想プリンタードライバーのインストールの指示に伴い、汎用プリンタードライバーのインストール処理を行い、プリンターの全ての機能を使えないまでも、汎用的な機能(部数の指定機能など)での印刷をユーザーに保証するようにしてもよい。S507〜S510では、仮想プリンタードライバーのインストールに伴う汎用プリンタードライバーのインストール処理について説明する。
【0031】
図2のプリンターリスト201において、汎用プリンタードライバーは、Generic Device Model 1とGeneric Device Model 2が存在する。よって、1回目のループ処理では、Generic Device Model 1をインストール対象とし、2回目のループ処理では、Generic Device Model 2をインストール対象とする。対象となる汎用プリンタードライバーがホストコンピューター101にインストール済みかどうか判断する(S508)。まだ、インストールしていない場合は、当該汎用プリンタードライバーをインストールする(S509)。ここでは、汎用プリンタードライバーを使ったプリントキューを作成しないので、ユーザーが汎用プリンタードライバーのインストールを意識することはない。そして、S510へ進む。ループ処理が終了したら、本インストール処理を終了する(S516)。
【0032】
S508にて、対象となる汎用プリンタードライバーがホストコンピューター101にインストール済みの場合は、インストール済みの汎用プリンタードライバーのバージョンを取得する(S511)。バージョン数から継続使用可能どうか判断する(S512)。継続使用可能と判断した場合、S510へ進む。
【0033】
S512にて、インストール済みの汎用プリンタードライバーが継続使用不可能と判断した場合、インストール済みの汎用プリンタードライバーをアンインストールする(S513)。そして、取り出した汎用プリンタードライバーをインストールする(S514)。さらに、S513でのアンインストール前にインストール済み汎用プリンタードライバーを使って構成されていたプリントキューを、S514でインストールした汎用プリンタードライバーを使って復元する(S515)。
【0034】
以上、インストーラー129が、仮想プリンタードライバーをインストールしてそのプリントキューを作成するとともに、自動的に汎用プリンタードライバーをインストールすることを説明した。なお、S507以降の汎用プリンタードライバーのインストール処理については、図1(b)のインストーラー129が実施することで説明をしたが、仮想プリンタードライバー126の初期化処理において実施してもかまわない。また、一般にVendorSetupと呼ばれるOS122から呼び出される不図示のプリンタードライバーのセットアップモジュールで実施してもかまわない。
【0035】
図6は印刷処理のデータフロー図である。本図を用いて、印刷処理関連プログラムの各コンポーネント間でどのような入出力が行われているか明らかにする。
【0036】
アプリケーション123は仮想プリンタードライバー126に対して、OS122の提供する描画インターフェースであるGDI(Graphic Device Interface)600を通じて印刷指示命令を出力する。次に仮想プリンタードライバー126は、入力された印刷指示命令をEMF(Enhanced Meta File)601の形式に変換してプリントジョブマネージャー125に出力する。ここでEMF601とは、GDI600の印刷指示命令と互換性のある中間データ形式であり、アプリケーション123から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。本実施形態では中間データ形式としてEMF601を用いて説明しているが、印刷指示命令を再現可能なデータであれば、例えばXPS(XML Paper Specification)、PDF(Portable Document Format)、あるいは独自に定義した任意の形式であっても良い。次にプリントジョブマネージャー125は、後述するプリンターの特定、汎用・専用プリンタードライバーの管理など固有の処理を行い、GDI600を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタードライバー127あるいは専用プリンタードライバー128に対して入力される。次に、汎用プリンタードライバー217あるいは専用プリンタードライバー218は、プリンター102が処理可能なPDL(Printer Description Language)602の形式に変換し、プリンター102に出力する。最後にプリンター102は、入力されたPDL602を処理して印刷出力を行う。
【0037】
図7は、本実施の形態における印刷処理のシーケンスの例を説明するための図である。本図を用いて、一連の印刷処理中に関連プログラムの各コンポーネントの内部、およびそれらの間でどのような処理が行われているか明らかにする。
【0038】
まず、ユーザーはアプリケーション123に対して印刷したいドキュメントの印刷指示を図8(a)で示すユーザーインターフェース(UI)8000を通じて入力する(S700)。図8(a)の8001〜8003はプリントキューを表すアイコンである。このうち、8001は仮想プリンタードライバーのプリントキューであり、8002、8003は専用プリンタードライバーのプリントキューである。ここでは仮想プリンタードライバーを通じて出力を行うため、ユーザーは8001のアイコンを選択し、印刷ボタン8004を押して、印刷を指示する。
【0039】
次に、アプリケーション123は、仮想プリンタードライバー126に対して、印刷初期化処理を行う(S701)。仮想プリンタードライバー126は印刷初期化が行われるとプリントジョブマネージャー125の起動処理を行う(S702)。
【0040】
プリントジョブマネージャー125は、このように仮想プリンタードライバー126に対するドキュメントの印刷開始後に起動されるプログラムであり、後述するプリンターの特定、汎用・専用プリンタードライバーの管理など固有の処理などを担う。また、プリントジョブマネージャー125は内部的なコンポーネントとして、デバイス特定部1251、ドライバー管理部1252、でスプール処理部1253を含む。
【0041】
次に、アプリケーション123はプリントジョブマネージャー125が起動されると、仮想プリンタードライバー126に対して印刷を開始し、一連の印刷描画命令をGDI219を通じて出力する(S703)。仮想プリンタードライバー126は、入力された一連の印刷描画命令をEMF601形式に変換し、後段の処理で印刷描画命令を再現できるよう外部メモリ121に保存する。これをスプール処理と呼ぶ(S704)。アプリケーション123は一連の印刷描画命令の最後に印刷終了の処理を行い(S705)、仮想プリンタードライバー126はそれを受けて保存されたEMF601の外部メモリ121における保存位置情報をプリントジョブマネージャー125に通知する(S706)。なお、S704は、外部メモリ121に対してスプール処理を実施するが、外部メモリ121を介さずプリントジョブマネージャー125へ直接スプール処理してもかまわない。
【0042】
次に、デバイス特定部1251は、プリンターの検索を行う(S707)。ここで検索とは、ネットワーク104に接続されたプリンター102aや102bと通信し、それらの名称、設置場所、IPアドレス、ハードウェア情報といった情報を取得することである。ハードウェア情報としては、プリンターの機種情報や製造元であるベンダ情報などが含まれる。通信手段としては公知の技術であるSNMP(Simple Network Management Protocol)やWSD(Web Services on Devices)などのプロトコルが使用される。通常、プリンター102aや102bの状態、すなわち電源が入っているかや、ネットワーク104に接続されているかを事前に把握することは不可能であるため、デバイス特定部1251は印刷指示の都度、すべてのプリンターとの通信を試みる。ネットワーク内のすべての装置との通信には、これも公知の技術であるブロードキャストという手段を用いる。デバイス特定部1251がこのブロードキャストの方法で、ネットワークI/F118を通じてSNMPの情報取得用データを送信すると、ネットワーク104で到達可能なすべてのプリンター102が情報取得用データを受信する。そして、各プリンター102が、取得対象として指定されたプリンターの名称や設置場所などの情報を応答のデータとしてネットワークI/F138を通じて送信すると、デバイス特定部1251は順次それらの応答を受信する。そして、受信した情報をRAM112に保存する。
【0043】
デバイス特定部1251は、受信した応答からデバイス名や設置場所などの情報を取り出し、図8(b)のようなプリンターリストとしてユーザーインターフェース(UI)8100に表示する(S708)。UI8100には情報を表示するためのリストコントロール8101が配置され、その中からひとつをカーソル8102によって、プリンターを選択することができる。ボタン8103を押すと、ネットワーク内で再検索が行われ、利用可能なプリンターのリストを最新の状態に更新できる。ボタン8104を押すと、カーソル8102で現在選択されているデバイスが出力先として決定される(S709)。デバイス特定部1251は、S709での出力先の決定を受け、次の処理に移る。チェックボックス8105とボタン8106は、プリントキューを管理する際にユーザーが操作する。これらの操作方法については後述する。S709で出力先のデバイスが決定されると、デバイス特定部1251はドライバー管理部1252に対して出力準備処理を実行するよう依頼する(S710)。
【0044】
この出力準備処理(S711)の結果、OS122には選択されたプリンター102に印刷可能な専用プリンタードライバー218(または不図示の汎用プリンタードライバー)のプリントキューが登録される。出力準備処理(S711)については、図9、図10を用いて後述する。
【0045】
次に、デバイス特定部1251は、図8(b)のデバイス特定用の画面から、デスプール処理部1253が有する図8(c)の画面8200に遷移する(S712)。デスプール処理部1253は、プレビューエリア8201に印刷ドキュメントを実際に印刷したときのイメージを表示する(S713)。このとき表示されるイメージは、S704においてスプールされたEMF601をデスプール処理部1253が読み込み、解析して、プレビューエリア8201の大きさに合わせて描画したものである。スピンコントロール8202やチェックボックス8203はそれぞれ印刷部数、白黒印刷といった一般的な印刷設定を変更するための入力手段である。さらに一般的でない印刷設定を変更するためには、ボタン8204を押下することにより、不図示のプリンタードライバー固有のUIを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタードライバー218のものである場合、汎用プリンタードライバー217のものに比べて、出力先のプリンター特有の機能(製本機能など)を含む印刷設定が可能である。ボタン8206は、画面8200から、ひとつ前の画面であるデバイスを特定するための画面8100に戻るための手段である。
【0046】
ボタン8205をユーザーが押下すると(S714)、デスプール処理部1253は専用プリンタードライバー218に対してデスプール処理を行い、一連の印刷描画命令を発行する(S715)。ここで、デスプール処理というのはスプール処理の逆で、S706にて通知された保存位置情報からEMF601データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー125の処理のために中断していた印刷処理が再開され、印刷ドキュメントの出力が行われる。専用プリンタードライバー128は、入力された印刷描画命令をPDL602に変換し、ネットワークI/F138を通じてプリンター102に送信する(S716)。最後に、プリントジョブマネージャー125はプログラムを終了する。
【0047】
図8にプリントジョブマネージャー125のユーザーインターフェース(UI)の遷移の概要を示す。
【0048】
まず、プリントジョブマネージャー125は、デバイス特定ダイアログを示すUI8100を表示する。プリンターの特定と「次へ」のボタン8104の押下をうけて、プリントジョブマネージャー125は、「編集プレビュー」ダイアログを示すUI8200を表示する。UI8200では、プリントジョブのプレビュー確認と基本的な印刷設定が可能である。「印刷」ボタン8205の押下をうけてプリントジョブマネージャー125はプリンターへ印刷を実行し同ダイアログを閉じる。加えて、UI8200には、プリンタードライバーが持っている特有の機能を設定するために「詳細設定」ボタン8204が存在する。「詳細設定」ボタン8204の押下をうけて、プリントジョブマネージャー125は、プリンタードライバーの「印刷設定」ダイアログを表示する。更に、UI8200には「戻る」ボタン8206が存在する。この「戻る」ボタン8206は、現在の出力先デバイスでは所望の機能が実現できないことが分かった際のプリンターの再設定のために存在する。「戻る」ボタン8206の押下をうけて、プリントジョブマネージャー125は、UI8100を表示し、再度プリンターの指定が可能になる。
【0049】
図9は、ドライバー管理部1252における出力準備処理(S711)を詳細に説明するためのフローチャートである。本処理では、S709でユーザーにより選択されたプリンターへ印刷要求するためのプリントキューが既にあればそれを選定し、なければ新しいプリントキューが作成される、あるいは最適なプリンタードライバーが情報処理装置内にインストールされる。
【0050】
出力準備処理が開始(S1000)されると、ドライバー管理部1252は、プリンター102のアドレス情報(たとえば、IPアドレス)を取得する(S1001)。アドレス情報はプリンターの検索処理(S707)において取得されRAM112に記憶されているものを取り出す。次に、OS122に登録されているすべてのプリントキューからプリントキューに関連付けられているポートのアドレス情報を取得する(S1002〜S1004)。
【0051】
次に、S709でユーザーにより選択されたプリンターのアドレス情報と、ポートのアドレス情報が合致するプリントキューが存在するかどうか判断する(S1005)。後述するが、本システムにおいて、プリントキューはプリンターごとに作成される。しかし、同じプリンターに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、プリンターとすべてのプリントキューのアドレス情報同士を比較することによって、既存のプリントキューの中に出力可能なものがないかを判断する。もし出力可能なプリントキューが存在すればS1006に、存在しなければS1011に進む。
【0052】
次にS1006ではさらに汎用プリンタードライバーを優先させるモードであるかどうか判断する。プリンター102に出力可能なプリントキューの中には専用プリンタードライバー218のものが含まれている可能性もある。しかしながら、高度な機能は必要とせず、シンプルな汎用プリンタードライバー217を使用したいユーザーもいるため、例えば不図示のユーザーインターフェースによって汎用プリンタードライバーを優先させるかどうか切り替え可能なモードを設けることが考えられる。ここで、汎用プリンタードライバーを優先させる場合は、S1007に進み、そうでなければS1009に進む。
【0053】
次に、S1007ではプリントキューのデバイスモデル名を取得する。そして、デバイスもモデル名が汎用プリンタードライバーのものであるかどうか判断する(S1008)。プリントキューの名前がユーザーによって変更可能であるのに対し、汎用プリンタードライバーのデバイスモデル名は「Generic Device Model 1」のように固有の名称となる。よって、プリントキューのデバイスモデル名からドライバーの種類を判断できる。汎用プリンタードライバーである場合はS1009へ進み、そうでなければS1010へ進む。
【0054】
S1009へ進んだ場合、S1005で選択されたプリンターのアドレス情報と合致すると判断されたポートに対応する既存のプリンタードライバーのプリントキューを出力先として決定する。その後、出力準備処理を終了する(S1014)。
【0055】
S1010へ進んだ場合、すなわち出力対象として選択されたプリンターに対応する専用プリンタードライバーのプリントキューが既に存在していると判断された場合は、汎用プリンタードライバーをインストールすると決定し、S1013に進む。S1011では、S1006と同様に汎用プリンタードライバーを優先させるモードかどうかを判断し、優先させるモードならS1010に、そうでないならS1012へ進む。S1012では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタードライバーを優先させるモードでもないので、適合する最適な専用プリンタードライバーを検索してインストールすることに決定し、S1013に進む。
【0056】
その後、S1010、またはS1012で決定された種類のプリンタードライバーをインストールする処理(図10参照)を実行(S1013)し、出力準備処理を終了する(S1014)。
【0057】
図10は、ドライバー管理部1252における本発明に特有の汎用または専用プリンタードライバーインストール処理を詳細に説明するためのフローチャートである。本発明においては、この処理を第2のインストール処理と呼ぶ。
【0058】
まず、ドライバー管理部1252は処理を開始すると(S1100)、出力用のポートを作成する(S1101)。次に、図9のS1010、S1012での決定に従い、インストール対象が汎用プリンタードライバーであるかどうか判断する(S1102)。インストール対象が汎用プリンタードライバーであればS1108に、インストール対象が汎用プリンタードライバーでなければS1103に進む。
【0059】
S1103〜S1107は、ホストコンピューター101、配信サーバー103、あるいはプリンター102aや102bの何れかの記憶手段から、出力に最適な専用プリンタードライバー143を検索するステップである。まず、プリンターのハードウェア情報を取得する(S1103)。本実施形態ではハードウェア情報として、プラグアンドプレイインストールに用いられるハードウェア情報を取得する。ハードウェア情報はプリンターの検索処理(S707)において取得されRAM112に記憶されているものを取り出す。
【0060】
次に、S1104ではインストール済みプリンタードライバー内に適合するプリンタードライバーがあるかどうか判断する。具体的には、ドライバー管理部1252は、OS122に登録されている各プリンタードライバーのハードウェア情報と、S1103で取得したプリンター102のハードウェア情報とを比較し、一致するものがあればすべてピックアップする。1つ以上適合するものがあればS1116へ、なければS1105へ進む。
【0061】
次に、S1105ではドライバーストアで適合するプリンタードライバーが管理されているかどうか判断する。ドライバーストアとはWindows Vista(登録商標)以降のOSで導入されたデバイスドライバーのデータベースシステムであり、インストール前のデバイスドライバーのパッケージをOS122に格納する仕組みである。ドライバー管理部1252は、このドライバーストアに格納されているプリンタードライバーの中に、S1103で取得したプリンター102のハードウェア情報に一致するものがないかOS122に問い合わせることができる。問い合わせの結果、1つ以上適合するものがあればS1112へ、なければS1106へ進む。
【0062】
次に、S1106では配信サーバー103で適合するプリンタードライバーが管理されているかどうか判断する。ドライバー管理部1252は、ドライバー配信サーバー103にRPC(Remote Procedure Call)やHTTP(Hyper Text Transfer Protocol)などの手段で、ネットワーク104を経由して、ハードウェア情報に適合するプリンタードライバーがあるか問い合わせることができる。問い合わせの結果、1つ以上適合するものがあれば配信サーバー103からプリンタードライバーのパッケージをホストコンピューター101に転送して、外部メモリ121に記憶し、S1112へ進む。そうでなければS1107へ進む。
【0063】
次に、S1107ではプリンター102で管理しているデバイスドライバーを検索し、適合するプリンタードライバーがあるかどうか判断する。前述したとおり、プリンター102はその外部メモリ(134)に、プリンター自身を利用するために必要な専用プリンタードライバー143を記憶することができる。ドライバー管理部1252は、このプリンター102に記憶されたプリンタードライバーも、S1106と同様の手段でネットワーク104を経由して、問い合わせることが可能である。問い合わせの結果、1つ以上適合するものがあればプリンター102から専用プリンタードライバー143のデータをホストコンピューター101に転送して、外部メモリ121に記憶し、S1112へ進む。ここで、外部メモリ134の設定変更等により専用プリンタードライバー143が消去されているなど、問い合わせの結果が1つも適合するものがないと判断された場合はS1108へ進む。
【0064】
S1108〜S1111では、前記S1103〜S1106の一連の処理の結果、適合するプリンタードライバーが見つからない場合の代替手段として、あらかじめS500〜S516でインストールされた汎用プリンタードライバーのプリントキューを作成する。
【0065】
まず、ドライバー管理部1252はネットワーク104を経由して、プリンター102のコマンドタイプ情報を取得し(S1108)、それが「1」であるかどうか判断する(S1109)。ここで、コマンドタイプ情報とは、プリンター102が処理可能なPDL602の種類を表す情報である。ここで、汎用プリンタードライバーとは、複数のデバイスモデルに共通する機能を設定可能な特定のPDLに対応するプリンタードライバーである。したがって、それと異なるPDLをサポートするデバイスモデルに対しては異なる汎用プリンタードライバーが用意されているため、コマンドタイプ情報を取得して、互換性の確認を行う。本実施形態においては2種類のPDL、「1」および「2」のどちらかに対応したプリンターを利用することを前提としているので、コマンドタイプ情報が「1」であるかどうか判断する。「1」の場合はS1110へ、それ以外すなわち「2」の場合はS1111に進む。
【0066】
S1110では、コマンドタイプ「1」に対応した「Generic Device Model 1」のプリントキューを作成し、処理を終了する(S1118)。一方、S1111ではコマンドタイプ「2」に対応した「Generic Device Model 2」のプリントキューを作成し、処理を終了する(S1118)。なお、プリントキューを作成する際は、S1101で作成したポートを関連付ける。
【0067】
S1112〜S1114では、前記S1103〜S1106の一連の処理の結果、見つかった適合する専用プリンタードライバー143をインストールする。
【0068】
まず、S1112では適合するプリンタードライバーが2つ以上見つかったかどうか判断し、2つ以上であればS1113、1つであればS1114へ進む。S1113では、その中から最もプリンタードライバーのバージョンの新しいものをインストール対象として選択する。各プリンタードライバーにはバージョンが付与されており、たとえ同じデバイスモデルのプリンタードライバーであっても作成された時期が違えば、通常は異なるバージョンを有する。バージョンの表現方法としては例えば「10/10/2008.2.5.0.0」のように日付と数値の組み合わせで表現し、どちらの方が新しく作成されたものか容易に判断することができる。
【0069】
なお、古いバージョンのドライバーをあえて使用する必然性が生じる場合がある。そのような場合は図8(d)の8300に示すようなユーザーインターフェースを表示して、ユーザーに選択させることが好ましい。8301には適合すると判断された複数のプリンタードライバーの情報(名称、バージョン)がリストで表示される。ユーザーは8301のリストの中から所望のプリンタードライバーを選び、ボタン8302を押すことで決定できる。その後、S1114では、見つかった1つの適合するプリンタードライバー、もしくは複数見つかった場合にS1113で選択されたプリンタードライバーを、ホストコンピューターにインストールする。
【0070】
S1116〜S1117は、インストール済みプリンタードライバーの中に適合する専用プリンタードライバーがあった場合に処理されるステップであり、S1116はS1112と、またS1117はS1117と同様の処理である。S1114が不要なのは、プリンタードライバーをインストールする必要がないからである。
【0071】
S1115では、S1101において作成したポートに関連付けてプリントキューを作成し、処理を終了する(S1118)。
【0072】
以上で述べた第2のインストール処理に関して、S1114のプリンタードライバーをインストールする処理は、OS122における管理者権限を有したプロセスから実行する必要がある。しかしながら、印刷を行うアプリケーション123は、多くの場合において一般ユーザー権限で起動されている。その結果、アプリケーション123によりロードされる仮想プリンタードライバー126、さらにはプリントジョブマネージャー125も一般ユーザー権限で動作するため、図10のS1114で説明したプリンタードライバーのインストール処理を実現することができない。本システムを利用する際に、アプリケーション123を必ず管理者権限で動作させることを前提としてしまうと、ユーザーの利便性を著しく損なう場合がある。そのため、本発明においては、一般ユーザー権限で動作するアプリケーションであっても、S1114におけるインストール処理が実現できる手法についても説明する。
【0073】
図11は、権限を考慮したインストール制御処理(図12で後述)に関わるコンポーネントを、実行プロセス別に整理し表した模式図である。
【0074】
スプーラーサービス201は、OS122の機能の一部として提供される印刷処理を制御するためのコンポーネントである。ランゲージモニター202は、プリンターなどの周辺機器との通信処理などを担うコンポーネントである。ランゲージモニター202は、仮想プリンタードライバー126のパッケージ内に含まれており、プリンタードライバー126のインストール時に、OS122に登録され、スプーラーサービス201によって管理される。
【0075】
仮想プリンタードライバー126およびプリントジョブマネージャー125は、図7で説明した印刷の流れに従い、アプリケーション123によってロードされ、アプリケーションと同等の権限で動作する。一方、ランゲージモニター202は、常に管理者権限で起動されるスプーラーサービス201のプロセス上によってロードされ、動作する。スプーラーサービス201は、OS122の実行開始時に起動され、その後、OS122が終了するまで常駐するため、結果としてランゲージモニター202も常にロードされた状態になっている。ランゲージモニター202の機能呼び出しはBidi APIというインターフェースを通じて行う。Bidi APIの詳細については後述する。
【0076】
図12は権限を考慮したインストール制御処理を説明するためのフローチャートである。
【0077】
本発明においては、この処理を第3のインストール処理と呼ぶ。
【0078】
まず、ドライバー管理部1252は処理を開始すると(S1200)、現在の権限でインストールを実行する(S1201)。インストール処理が成功するかどうかは、現在の権限が管理者権限を有しているかどうかであることはすでに述べたが、それ以外にもOSのバージョンや設定にも依存するため、現在のプロセスがインストール可能かどうかあらかじめ一意に知る手段を見つけるのは困難である。そこで、試しに現在の権限でインストールを実行し、それが成功したかどうかを判定する(S1202)。インストールに成功したかどうかは、インストールを実行するために用意されたAPIの戻り値をチェックすることで判別することができる。もしインストールに成功したらS1205に進んで処理を終了し、インストールに失敗したらS1203に進む。
【0079】
S1203では、ドライバー管理部1252は、BiDi APIを使用して、ランゲージモニターにインストール処理を要求する。
【0080】
ここで、BiDi APIとは、アプリケーションなどがプリンタードライバーの出力先であるデバイスとランゲージモニターを通じて通信するなどのために用意されたインターフェースである。ここで、ランゲージモニター202はスプーラーサービス201によってロードされているため、BiDi APIは実際にはスプーラーサービス201へのインターフェースとなっている。したがって、BiDi APIを呼び出すアプリケーションは、スプーラーサービス201とプロセス間通信することになる。
【0081】
BiDi APIの提供する機能のひとつとして、XMLデータを送受信するメソッドが用意されている。これは、あらかじめ呼び出すアプリケーションとランゲージモニターとで取り決めた要求のXMLデータとそれに対応する応答のXMLデータを送受信するというものである。
【0082】
図13(a)にドライバー管理部1252からランゲージモニターへの要求の例を、図13(b)にランゲージモニターからドライバー管理部1252への応答の例を示す。ここで、要求と応答はともにXML形式のデータである。本来、BiDi APIはデバイスとの通信をするために使用するものであるが、図13(a)、(b)にはそのような情報は含まれていない。本発明では、ランゲージモニター202を、デバイスとの通信を仲介するコンポーネントとしてではなく、管理者権限で動作する処理コンポーネントそのものとして使用するからである。
【0083】
図13(a)で示す要求内のInffilePath要素には、ドライバーパッケージの場所を示す値を指定する。ここで指定するドライバーパッケージの場所とは、S1105〜S1107において見つかったプリンタードライバーのドライバーパッケージファイルがある場所を指す。また、ModelName要素には、インストールするモデル名の値を指定する。
【0084】
ランゲージモニター202は、図13(a)で示す要求を受信すると、それにしたがってプリンタードライバーのインストール処理を行い、その結果を図13(b)で示す応答としてBidi APIを通じて返却する(S1204)。図13(b)で示す応答内のModelName要素にはインストールされたモデル名の値が格納される。以上で、本処理は終了となる(S1205)。
【0085】
なお、周辺機器を利用するためのデバイスドライバーに関する設定処理としては、インストール処理に限らず、S1101でのポートを作成する処理、S1110、S1111、S1115でのキューを作成する処理に関しても、管理者権限がないと実現でないケースが存在する。その場合、ポートおよびプリントキュー作成処理に関しても、上述したランゲージモニターを使用する方法を適用することにより、一般ユーザー権限でプリントジョブマネージャー125がロードされたとしても、ポートやプリントキューの作成が実現できる。
【0086】
ところで、本発明では、図12で説明した処理に関して、ランゲージモニター以外にも、管理者権限で動作する専用のコンポーネントを別途用意して、インストール処理があるまで待機させておくことでも、同様の処理を実現することが可能である。しかしながら、以下の点において、ランゲージモニターを利用する方が優れているといえる。
【0087】
ひとつには、ランゲージモニターはプリンタードライバーのパッケージをインストールする際に、同時に自動的にインストールされるため、専用のコンポーネントをインストールするためのプログラムを提供しなくても、ホストコンピューターにセットアップが可能であるという点である。
【0088】
さらに、専用のコンポーネントでは、一般のウィルス対策ソフトやセキュリティの厳しいオフィスなどによって、不審なものとして検知される対象となったりすることがあり、セットアップ自体が行えないといったリスクが存在する。一方、ランゲージモニターは、プリンタードライバー(本発明では、仮想プリンタードライバー)をインストールする際に、スプーラーサービスの一部として動作するコンポーネントとしてセットアップされることが一般的であるため、ホストコンピューターに導入できないといったリスクが比較的少ないと言える。
【0089】
なお、スプーラーサービス自身を拡張するか、ランゲージモニターと同様に、スプーラーサービスなどのプリントシステム内における管理者権限のモジュールによってロードされて動作するほかのコンポーネントを利用する際も本発明は適用できる。具体的には、他にもポートモニターやプリントプロセッサーといったコンポーネントにより、本発明で述べた図12の処理を実現してもよい。
【0090】
(第2の実施の形態)
次に、本発明を実施するための第2の形態について図面を用いて説明する。
【0091】
第1の形態は、ユーザーがホストコンピューター上で出力先を指定して印刷指示を行うシステムであった。それに対し、第2の形態では、ユーザーがホストコンピューター上で印刷指示のみ行い、出力先の指定は、プリンターなどの周辺機器に設置されたカードリーダーなどの認証ユニットで認証することによって行う、いわゆる認証プリントのシステムを想定する。
【0092】
図14(a)は、第2の形態に係るネットワークシステムの概略を示すブロック図である。図14(a)に示すように、このネットワークシステムは、複数のホストコンピューター101a、101b、複数のプリンター102a、102b、複数の認証ユニット142a、142b、ICカード143、認証サーバー144を備える。これらはネットワーク104を介して接続されている。
【0093】
ホストコンピューター101及びプリンター102の構成は、図1(b)で説明した通りである。なお、認証ユニット142は、本実施形態において、ユーザーが利用するプリンター102を特定するためにもあるので、通常、認証ユニットとプリンターは物理的に接近して設置される。本実施形態においては、プリンターと認証ユニットを分けて構成しているが、認証ユニット相当の機能を包含するプリンターがあってもかまわない。
【0094】
まず、システムを構成する各装置の詳細を説明する前に、システムの概要を印刷作業の流れに沿って説明する。
【0095】
ユーザーによる印刷実行の指示を受けたホストコンピューター101aは、出力対象のプリンターを特定せずに印刷処理を実行し、投入されたEMF形式など中間形式の印刷ジョブを保持する(S140)。次に、ユーザーがICカードをかざすことによって出力プリンター102a選択の合図を受信(S141)した認証ユニット142aは、ICカード143からICカード固有のIDを読み取り、認証サーバー144へIDを送る(S142)。
【0096】
認証サーバー144は、受信したIDと関連付けられたホストコンピューター101aへプリンター102aのネットワークアドレスを送る(S143)。
【0097】
ホストコンピューター101aは、受信したプリンター102aのネットワークアドレスに対し、保持しておいた中間形式のデータを、必要に応じてプリンター固有のPDLに変換して、出力する。
【0098】
次に、図14aのシステムを構成する本実施形態に関連する各装置の詳細を説明する。
【0099】
(認証ユニット142について)
認証ユニット142a、bは、ICカード143を用いた認証を行い認証プリントを実行するための端末である。本実施形態においては、ユーザーがホストコンピューターに一旦溜め置いた印刷ジョブを出力すべきプリンターを特定するために利用できる。認証ユニットは、出力プリンターとペアで存在する必要があり、図1において、プリンター102aには認証ユニット142a、プリンター102bには認証ユニット142bという具合に関連付けがされている。
【0100】
プリンターと認証ユニットの関連付けに関しては認証ユニットにその情報を記憶させることによっても実現可能ではあるが、本実施形態においては、後述する認証サーバー144によって実現している。
【0101】
図14bは、認証ユニット142の概略的な構成の一例を示すブロック図である。認証ユニット142は、CPU1421、RAMやROMなどを含む記憶部1423、ネットワークI/F1424、ローカルI/F1425を備え、システムバス1427により互いに接続して構成される。さらに、ローカルI/F1425にICカードリーダー1426を接続して構成する。認証ユニット142は、記憶部に記憶され、CPU1421により実行される認証用のプログラムに基づき、認証機能を実現する。
【0102】
CPU1421は、認証ユニット142全体の制御を司る中央演算処理部である。記憶部1422は、認証用のプログラムに加え、認証ユニット142の初期設定時に入力される認証サーバー144のネットワークアドレスなどを記憶しておく。
【0103】
ICカードリーダー1426は、ICカードから一意な識別情報を読み取る。ここでは、ICカードリーダー1426は、Felica(登録商標)のような非接触式ICカードに対応した読み取り機器を想定しているが、この技術に限定されるものではなく、一意な識別情報の入力が可能ならば他の実現方法であっても構わない。例えば、ICカードリーダーの代わりに指紋センサー等の生体認証センサーを設置するという方法もある。なお、このICカードリーダー1426が、直接システムバス1427に接続されずローカルI/F1425を介して接続されているのは、認証手段を柔軟に変更できるようにするためである。
【0104】
認証ユニット142は、ICカードリーダー1426を介して取得するIDを、ネットワークI/F1424を介して、認証サーバー144へ送ることで外部と連携した認証機能を実現する。
【0105】
(認証サーバー144について)
認証サーバー144は、図15(a)に示す、ICカードのIDと、ホストコンピューターのネットワークアドレスの組み合わせ情報1501を記憶している。さらに、図15(b)に示す、認証ユニットのネットワークアドレスと出力デバイスのネットワークアドレスの組み合わせ情報1502も記憶している。
【0106】
認証サーバー144が図15(a)、(b)の情報を一元管理することによって、ホストコンピューターとプリンターと認証ユニットを連携させた認証プリントが実現されている。
【0107】
認証サーバー144は、認証ユニット142aからICカード143のIDを受信すると、図15(a)の組み合わせ情報1501からID(162696509400678657に関連付けられたホストコンピューター101aのネットワークアドレス(192.168.0.2)を得る。さらに、認証サーバー144は、IDを受信した際に認証ユニット120aのネットワークアドレス(192.168.0.16)も同時に受信しているので、図15(b)の組み合わせ情報1502から、認証ユニット142aに関連付けられたプリンター102aのネットワークアドレス(192.168.0.48)を得る。
【0108】
そして、認証サーバー144は、こうして得られたプリンター102aのネットワークアドレス(192.168.0.48)をホストコンピューター101aに送信する。ホストコンピューター101aは、受信したプリンター102aのネットワークアドレスを用いて、出力対象となるプリンターの情報を取得して、プリンタードライバーのインストール処理などを行うことができる。また、ホストコンピューター131aからプリンター102aへ、ホストコンピューター131a溜め置かれたジョブ一覧の情報を提示して、プリンターからの要求に応じたジョブの転送を促すことが可能となる。
【0109】
なお、第1の実施形態において印刷処理やインストール処理などを含む中心的な役割を担ったのがプリントジョブマネージャー125であったのに対し、第2の実施形態では認証ジョブマネージャー130が主な処理を担う。
【0110】
(本実施の形態における印刷処理のシーケンスの例)
以下、図16のシーケンス図を用いて、認証ジョブマネージャー130を中心とした印刷処理関連プログラム間で行われる処理を説明する。
【0111】
S801〜S806で示すアプリケーション123と仮想プリンタードライバー126の印刷処理は、第1の実施形態の図7で述べたS700〜S706までの処理と同様である。唯一、異なるのは、S802で起動されるプログラムが認証ジョブマネージャー130である点のみである。なお、ユーザーが仮想プリンタードライバーに対して、印刷を繰り返すことにより、複数のEMF形式の印刷ジョブがホストコンピューターにおいて溜め置かれることになる。
【0112】
認証ジョブマネージャー130が有する内部コンポーネントは、第1の実施形態のプリントジョブマネージャー125と同じく3つあり、プリンタードライバー管理処理部1252とデスプール処理部1253の2つは両者で共通である。残りの通信処理部1301は、認証ジョブマネージャー130特有の内部コンポーネントで、認証ユニット142との通信や、プリンタードライバー管理処理部1252とデスプール処理部1253の制御を行う。
【0113】
認証ジョブマネージャー130がS802において起動されると、通信処理部1301は受信待機処理を実行する(S807)。受信待機処理とは、すなわち、認証サーバー144が送信する情報を受信できるよう、ホストコンピューター101のネットワークI/F118を制御する処理である。ネットワークI/F118の制御はOS122が提供するAPIの機能によって実現される。APIの例としてはWinsockなどがある。S806でEMFのメモリ位置が通知され、S807で受信待機処理が実行されると、ユーザーによる認証操作が行われるまでジョブがホストコンピューター101上で留め置かれ、待機状態に入る。
【0114】
次に、認証ユニット142は、ユーザーによってICカード143を使った認証操作が行われると(S141)、カードIDを読み取り、カードID情報を認証サーバー144に送信する(S142)。次に、認証サーバー144は、記憶した組み合わせ情報1502を元に得た出力先のプリンター102のネットワークアドレスを、ホストコンピューター101に送信する(S143)。S141〜S143の処理の詳細については、すでに図15(a)、(b)などを用いて前述した通りである。ここでは、プリンターにおけるユーザーの印刷対象となるジョブの特定も同時に行われ、認証ジョブマネージャー130に印刷要求として通知される。
【0115】
次に、認証ジョブマネージャー130の通信処理部1301は、認証サーバー144から出力先のプリンター102のネットワークアドレスを受信すると、出力先となるプリンターのデバイス情報を取得する処理を行う(S808)。この取得処理は、S707のプリンターの検索処理と同様の処理を、ひとつのプリンター102に対して行うものである。具体的には、S707ではブロードキャストなどの通信方法によって、SNMPプロトコルなどによりプリンターのハードウェア情報などを取得するものであったが、S808はプリンター102からのみハードウェア情報を取得する処理である。
【0116】
次の通信処理部1301による出力準備処理依頼(S809)およびプリンタードライバー管理処理部1252による出力準備処理(S810)は、第1の実施形態で述べたS710およびS711と同様である。
【0117】
なお、本実施の形態でも、認証ジョブマネージャー130が、管理者権限でなくユーザー権限で起動されてしまうと、そのままではS143で通知されたアドレスで示すプリンターのプリンタードライバーのインストール処理が実行できないという課題が生じる。そこで、出力準備処理S810は、第2の実施形態においてもその内部処理として、第1の実施形態で述べた本発明特有のインストール処理である第3のインストール処理(S1200〜S1205)を行うものとする。
【0118】
通信処理部1301は、S810において、専用プリンタードライバーのインストールが完了したら、デスプール処理部1253に対して印刷開始の指示を行う(S811)。
【0119】
以降のデスプール処理部1253のデスプール処理(S812)と専用プリンタードライバー128によるPDL生成送信処理(S813)は、それぞれ第1の実施形態のS715、S716と同様である。ここで生成されたPDLの印刷ジョブは、ネットワークアドレスを送信してきたプリンター102へ送信され、印刷処理が実行される。
【0120】
以上、第2の実施形態では、ホストコンピューターにおいて溜め置かれた印刷ジョブを、ユーザーが任意のプリンターの設置場所で認証してから印刷を行うといった動作を説明した。とくに、プリンターから溜め置かれたジョブの印刷要求があった際に、該ホストコンピューターにプリンタードライバーが自動でインストールされる点に特徴がある。
【0121】
(他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置であって、
ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、
前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、
前記管理手段は、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする情報処理装置。
【請求項2】
周辺機器を利用するためのデバイスドライバーの設定処理とは、デバイスドライバーのインストール、デバイスドライバーのポート作成、及びデバイスに対応するキューの作成の少なくともいずれかを含むことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
処理要求の出力先を特定せずにインストールされた仮想ドライバーをユーザーが選択した際に、前記選択手段は前記処理要求の出力先となる周辺機器を選択させることを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第1のコンポーネントとは、前記仮想ドライバーをインストールした際に、前記OSの機能の一部として提供される管理者権限の第2のコンポーネントにより管理されるようセットアップされるコンポーネントであることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記第2のコンポーネントは、スプーラーサービスであり、
前記第1のコンポーネントは、スプーラーサービスによりロードされるランゲージモニターであることを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記仮想ドライバーをインストールする際には、複数のデバイスモデルに対応する汎用デバイスドライバーもインストールされ、
前記管理手段は、前記選択された周辺機器を利用するために、当該汎用デバイスドライバーのポート作成を前記第1のコンポーネントに対して要求することを特徴とする請求項3に記載の情報処理装置。
【請求項7】
前記管理手段は、前記第1のコンポーネントに対して要求するまえに、前記選択された周辺機器に対応するデバイスドライバーの設定処理を実行することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置における制御方法であって、
ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択工程と、
前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理工程とを有し、
前記管理工程では、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする制御方法。
【請求項9】
請求項1乃至7のいずれか1項に記載の手段としてコンピューターを機能させることを特徴とするプログラム。
【請求項10】
プリンタードライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置と、プリンターとを含む印刷システムであって、
ユーザーからアプリケーションを介して印刷指示を受け付けたことに応じて、印刷対象となる中間形式のデータを保持する保持手段と、
前記プリンターから、プリンターの情報を含む印刷要求を受信する受信手段と、
前記プリンターの情報に基づき、当該プリンターに対応するプリンタードライバーの設定処理を制御する管理手段と、
前記保持された中間形式のデータから前記プリンタードライバーを用いて生成された印刷ジョブを、前記プリンターに送信する送信手段と、を有し、
前記管理手段は、前記OS上で動作する管理者権限のコンポーネントに対して、前記プリンターに対応するプリンタードライバーの設定処理を要求することを特徴とする印刷システム。
【請求項11】
プリンタードライバーの設定処理とは、プリンタードライバーのインストール、プリンタードライバーのポート作成、及びプリンターに対応するキューの作成の少なくともいずれかを含むことを特徴とする請求項10に記載の印刷システム。
【請求項12】
プリンタードライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置と、プリンターとを含む印刷システムにおける制御方法であって、
ユーザーからアプリケーションを介して印刷指示を受け付けたことに応じて、印刷対象となる中間形式のデータを保持する保持工程と、
前記プリンターから、プリンターの情報を含む印刷要求を受信する受信工程と、
前記プリンターの情報に基づき、当該プリンターに対応するプリンタードライバーの設定処理を制御する管理工程と、
前記保持された中間形式のデータから前記プリンタードライバーを用いて生成された印刷ジョブを、前記プリンターに送信する送信工程と、を有し、
前記管理工程では、前記OS上で動作する管理者権限のコンポーネントに対して、前記プリンターに対応するプリンタードライバーの設定処理を要求することを特徴とする制御方法。
【請求項1】
デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置であって、
ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択手段と、
前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理手段とを有し、
前記管理手段は、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする情報処理装置。
【請求項2】
周辺機器を利用するためのデバイスドライバーの設定処理とは、デバイスドライバーのインストール、デバイスドライバーのポート作成、及びデバイスに対応するキューの作成の少なくともいずれかを含むことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
処理要求の出力先を特定せずにインストールされた仮想ドライバーをユーザーが選択した際に、前記選択手段は前記処理要求の出力先となる周辺機器を選択させることを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記第1のコンポーネントとは、前記仮想ドライバーをインストールした際に、前記OSの機能の一部として提供される管理者権限の第2のコンポーネントにより管理されるようセットアップされるコンポーネントであることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記第2のコンポーネントは、スプーラーサービスであり、
前記第1のコンポーネントは、スプーラーサービスによりロードされるランゲージモニターであることを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記仮想ドライバーをインストールする際には、複数のデバイスモデルに対応する汎用デバイスドライバーもインストールされ、
前記管理手段は、前記選択された周辺機器を利用するために、当該汎用デバイスドライバーのポート作成を前記第1のコンポーネントに対して要求することを特徴とする請求項3に記載の情報処理装置。
【請求項7】
前記管理手段は、前記第1のコンポーネントに対して要求するまえに、前記選択された周辺機器に対応するデバイスドライバーの設定処理を実行することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
デバイスドライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置における制御方法であって、
ユーザーからアプリケーションを介して処理要求を受け付けたことに応じて、当該処理要求の出力先となる周辺機器を選択させる選択工程と、
前記選択された周辺機器に対応するデバイスドライバーの、当該周辺機器を利用するための設定処理を制御する管理工程とを有し、
前記管理工程では、前記OS上で動作する管理者権限の第1のコンポーネントに対して、前記選択された周辺機器に対応するデバイスドライバーの設定処理を要求することを特徴とする制御方法。
【請求項9】
請求項1乃至7のいずれか1項に記載の手段としてコンピューターを機能させることを特徴とするプログラム。
【請求項10】
プリンタードライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置と、プリンターとを含む印刷システムであって、
ユーザーからアプリケーションを介して印刷指示を受け付けたことに応じて、印刷対象となる中間形式のデータを保持する保持手段と、
前記プリンターから、プリンターの情報を含む印刷要求を受信する受信手段と、
前記プリンターの情報に基づき、当該プリンターに対応するプリンタードライバーの設定処理を制御する管理手段と、
前記保持された中間形式のデータから前記プリンタードライバーを用いて生成された印刷ジョブを、前記プリンターに送信する送信手段と、を有し、
前記管理手段は、前記OS上で動作する管理者権限のコンポーネントに対して、前記プリンターに対応するプリンタードライバーの設定処理を要求することを特徴とする印刷システム。
【請求項11】
プリンタードライバーの設定処理とは、プリンタードライバーのインストール、プリンタードライバーのポート作成、及びプリンターに対応するキューの作成の少なくともいずれかを含むことを特徴とする請求項10に記載の印刷システム。
【請求項12】
プリンタードライバーのインストールを管理者権限のコンポーネントで実現するOS(オペレーティングシステム)が実行される情報処理装置と、プリンターとを含む印刷システムにおける制御方法であって、
ユーザーからアプリケーションを介して印刷指示を受け付けたことに応じて、印刷対象となる中間形式のデータを保持する保持工程と、
前記プリンターから、プリンターの情報を含む印刷要求を受信する受信工程と、
前記プリンターの情報に基づき、当該プリンターに対応するプリンタードライバーの設定処理を制御する管理工程と、
前記保持された中間形式のデータから前記プリンタードライバーを用いて生成された印刷ジョブを、前記プリンターに送信する送信工程と、を有し、
前記管理工程では、前記OS上で動作する管理者権限のコンポーネントに対して、前記プリンターに対応するプリンタードライバーの設定処理を要求することを特徴とする制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2012−216166(P2012−216166A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2011−159010(P2011−159010)
【出願日】平成23年7月20日(2011.7.20)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願日】平成23年7月20日(2011.7.20)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]