(57)【特許請求の範囲】
【請求項１】
プリンタドライバと、当該プリンタドライバの出力先として前記プリンタドライバと関連付けられているデバイスアプリケーションと、を少なくとも有する情報処理装置であって、
前記プリンタドライバは、
前記情報処理装置上で動作するアプリケーションからデータを受信し、当該受信したデータに基づき印刷ジョブを生成する生成手段と、
前記生成された印刷ジョブを前記出力先に向けて送信する送信手段と、を有し、
前記出力先に向けて送信された印刷ジョブは、前記情報処理装置のＯＳ（オペレーティングシステム）によって前記デバイスアプリケーションに対応するポート番号が指定されて送信されることにより、前記デバイスアプリケーションに届けられ、
前記デバイスアプリケーションは、
プリンタと双方向通信を行う通信制御手段と、
前記プリンタドライバから送信された前記印刷ジョブを受信する受信手段と、
前記双方向通信で前記プリンタのステータス情報を取得し、当該ステータス情報に従って、前記受信した印刷ジョブに基づくデータ送信を制御する送信制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記デバイスアプリケーションは、前記ＯＳを経由して受信した前記印刷ジョブをキューに格納する格納手段を更に備え、
前記送信制御手段は、当該キューに保存された印刷ジョブを読み出して、当該印刷ジョブに基づくデータを前記プリンタに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記デバイスアプリケーションの前記通信制御手段は、前記プリンタに対してステータスを問い合わせる第１のコマンドを送信し、当該第１のコマンドの応答として前記ステータス情報を取得することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
プリンタドライバと、当該プリンタドライバの出力先として前記プリンタドライバと関連付けられているデバイスアプリケーションと、を少なくとも有する情報処理装置であって、
前記プリンタドライバは、
前記情報処理装置上で動作するアプリケーションからデータを受信し、当該受信したデータに基づき印刷ジョブを生成する生成手段と、
前記生成された印刷ジョブを前記出力先に向けて送信する送信手段と、を有し、
前記出力先に向けて送信された印刷ジョブは、前記情報処理装置のＯＳ（オペレーティングシステム）によって、前記デバイスアプリケーションに送信され、
前記デバイスアプリケーションは、
プリンタと双方向通信を行う通信制御手段と、
前記プリンタドライバから送信された前記印刷ジョブを受信する受信手段と、
前記双方向通信で前記プリンタのステータス情報を取得し、当該ステータス情報に従って、前記受信した印刷ジョブに基づくデータ送信を制御する送信制御手段とを有し、
前記プリンタドライバは、Ｗｉｎｄｏｗｓ（登録商標）のＶｅｒｓｉｏｎ４プリントアーキテクチャのプリンタドライバであり、前記デバイスアプリケーションは、前記情報処理装置にインストールされた前記プリンタのエミュレーターソフトウェアであることを特徴とする情報処理装置。
【請求項５】
プリンタドライバと、当該プリンタドライバの出力先として前記プリンタドライバと関連付けられているデバイスアプリケーションと、を少なくとも有する情報処理装置であって、
前記プリンタドライバは、
前記情報処理装置上で動作するアプリケーションからデータを受信し、当該受信したデータに基づき印刷ジョブを生成する生成手段と、
前記生成された印刷ジョブを前記出力先に向けて送信する送信手段と、を有し、
前記出力先に向けて送信された印刷ジョブは、前記情報処理装置のＯＳ（オペレーティングシステム）によって、前記デバイスアプリケーションに送信され、
前記デバイスアプリケーションは、
プリンタと双方向通信を行う通信制御手段と、
前記プリンタドライバから送信された前記印刷ジョブを受信する受信手段と、
前記双方向通信で前記プリンタのステータス情報を取得し、当該ステータス情報に従って、前記受信した印刷ジョブに基づくデータ送信を制御する送信制御手段とを有し、
前記情報処理装置には２以上の異なるプリンタドライバがインストールされており、前記デバイスアプリケーションは、前記２以上の異なるプリンタドライバの出力先として関連付けられており、前記デバイスアプリケーションの格納手段は、印刷ジョブを格納するキューをプリンタドライバごとに有していることを特徴とする情報処理装置。
【請求項６】
プリンタドライバと、当該プリンタドライバの出力先として前記プリンタドライバと関連付けられているデバイスアプリケーションと、を少なくとも有する情報処理装置であって、
前記プリンタドライバは、
前記情報処理装置上で動作するアプリケーションからデータを受信し、当該受信したデータに基づき印刷ジョブを生成する生成手段と、
前記生成された印刷ジョブを前記出力先に向けて送信する送信手段と、を有し、
前記出力先に向けて送信された印刷ジョブは、前記情報処理装置のＯＳ（オペレーティングシステム）によって、前記デバイスアプリケーションに送信され、
前記デバイスアプリケーションは、
プリンタと双方向通信を行う通信制御手段と、
前記プリンタドライバから送信された前記印刷ジョブを受信する受信手段と、
前記双方向通信で前記プリンタのステータス情報を取得し、当該ステータス情報に従って、前記受信した印刷ジョブに基づくデータ送信を制御する送信制御手段とを有し、
前記デバイスアプリケーションは、前記プリンタドライバの出力先ポートとして、前記プリンタドライバと関連付けられており、
前記ＯＳは、前記出力先ポートに向けて出力された印刷ジョブを、内部ループバックを用いて前記デバイスアプリケーションの受信ポートに転送し、
前記デバイスアプリケーションの受信手段は、前記受信ポートを開いた状態で、当該受信ポートへのデータの入力を待ち受けることで、前記内部ループバックで転送された印刷ジョブを受信することを特徴とする情報処理装置。
【請求項７】
プリンタドライバと、当該プリンタドライバの出力先として前記プリンタドライバと関連付けられているデバイスアプリケーションと、を少なくとも有する情報処理装置を制御する制御方法であって、
前記プリンタドライバが、前記情報処理装置上で動作するアプリケーションからデータを受信し、当該受信したデータに基づき印刷ジョブを生成する生成工程と、
前記プリンタドライバが、前記生成された印刷ジョブを前記出力先に向けて送信する送信工程と、
前記出力先に向けて送信された印刷ジョブが、前記情報処理装置のＯＳ（オペレーティングシステム）によって前記デバイスアプリケーションに対応するポート番号が指定されて送信されることにより、前記デバイスアプリケーションに届けられる工程と、
前記デバイスアプリケーションが、プリンタと双方向通信を行う通信制御工程と、
前記デバイスアプリケーションが、前記プリンタドライバから送信された前記印刷ジョブを受信する受信工程と、
前記デバイスアプリケーションが、前記双方向通信で前記プリンタのステータス情報を取得し、当該ステータス情報に従って、前記受信した印刷ジョブに基づくデータ送信を制御する送信制御工程と、
を有することを特徴とする制御方法。
【請求項８】
コンピュータを、請求項１乃至６のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項９】
プリンタドライバに関連付けられているアプリケーションプログラムであって、
前記アプリケーションプログラムは、前記プリンタドライバがインストールされている情報処理装置のコンピュータに、
前記プリンタドライバから、前記情報処理装置のＯＳ（オペレーティングシステム）によって、前記アプリケーションプログラムに対応するポート番号が指定されて送信された印刷ジョブを受信する受信工程と、
前記プリンタドライバに関連するプリンタから、双方向通信で当該プリンタのステータス情報を取得し、当該ステータス情報と、前記受信した印刷ジョブとに少なくとも基づいて前記プリンタが受け付け可能なデータを生成し、当該生成したデータを前記プリンタに送信する送信制御工程と、
を実行させることを特徴とするプログラム。
【請求項１０】
印刷ジョブを生成する印刷ジョブ生成プログラムに関連付けられているアプリケーションプログラムであって、
前記アプリケーションプログラムは、前記印刷ジョブ生成プログラムを有する情報処理装置のコンピュータに、
前記印刷ジョブ生成プログラムから、前記情報処理装置のＯＳ（オペレーティングシステム）によって、前記アプリケーションプログラムに対応するポート番号が指定されて送信された印刷ジョブを受信する受信工程と、
前記印刷ジョブ生成プログラムに関連するプリンタから、双方向通信で当該プリンタのステータス情報を取得し、当該ステータス情報と、前記受信した印刷ジョブとに少なくとも基づいて前記プリンタが受け付け可能なデータを生成し、当該生成したデータを前記プリンタに送信する送信制御工程と、
を実行させることを特徴とするプログラム。
【請求項１１】
ＯＳ（オペレーティングシステム）を有する情報処理装置内にインストールされるデバイスアプリケーションであって、前記情報処理装置を、
プリンタとの通信により、当該プリンタのステータス情報を取得する制御手段と、
前記情報処理装置内で生成された印刷ジョブであって、前記ＯＳから当該デバイスアプリケーションに対応するポート番号のポートへと送られてきた印刷ジョブを取得する取得手段と、
前記取得したステータス情報に従って、前記取得した印刷ジョブに基づくデータ送信を実行する送信制御手段と、
して機能させるデバイスアプリケーション。
【請求項１２】
ＯＳ（オペレーティングシステム）を有する情報処理装置内にインストールされるプログラムであって、前記情報処理装置を、
プリンタとの通信により、当該プリンタのステータス情報を取得する制御手段と、
前記情報処理装置内で生成された印刷ジョブであって、前記ＯＳから当該プログラムに対応するポート番号のポートへと送られてきた印刷ジョブを取得する取得手段と、
前記取得したステータス情報に従って、前記取得した印刷ジョブに基づくデータ送信を実行する送信制御手段と、
して機能させるプログラム。
【請求項１３】
前記データ送信は、前記ＯＳ（オペレーティングシステム）によって自装置を指定したルーブバック送信であることを特徴とする請求項１２に記載のプログラム。
【請求項１４】
プリンタドライバ及びＯＳ（オペレーティングシステム）を有する情報処理装置内にインストールされたデバイスアプリケーションであって、前記情報処理装置を、
プリンタとの通信により、当該プリンタのステータス情報を取得する制御手段と、
前記プリンタドライバによって生成された印刷ジョブであって、前記ＯＳから当該デバイスアプリケーションに対応するポート番号のポートへと送られてきた印刷ジョブを前記ポートから取得する取得手段と、
前記取得したステータス情報に従って、前記取得した印刷ジョブに基づくデータ送信を実行する送信制御手段と、
して機能させるデバイスアプリケーション。
【請求項１５】
前記データ送信は、前記ＯＳ（オペレーティングシステム）によって自装置を指定したルーブバック送信であることを特徴とする請求項１１又は１４に記載のデバイスアプリケーション。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置とその制御方法、及びデバイスアプリケーションとプログラムに関するものである。
【背景技術】
【０００２】
情報処理装置が画像形成装置等の周辺機器を利用するには、その周辺機器に対応したデバイスドライバ（プリンタであればプリンタドライバ）を、その情報処理装置上で動作するオペレーションシステム（以下、ＯＳ）に組み込む必要がある。そして、周辺機器であるプリンタ装置を利用する際は、プリンタドライバをアプリケーションから起動させて印刷に必要な設定を行い、画像データ及び印刷設定（以下、これらをまとめて印刷ジョブと呼ぶ）を生成する。そして、その生成した印刷ジョブをプリンタ装置に送信する。これにより、その印刷ジョブを受信したプリンタ装置は、その印刷ジョブの印刷設定に応じた画像生成処理（以下、レンダリング）を実行して用紙に画像を印刷する。
【０００３】
従来のプリンタドライバは、ユーザやアプリケーションからの入力を管理するユーザインターフェースモジュール、印刷ジョブを生成する印刷ジョブ生成モジュール、情報処理装置とプリンタ装置間の通信を制御する通信制御モジュールを含んでいる。以下、この通信制御モジュールをランゲージモニタと呼ぶ。
【０００４】
これらのモジュール群を含むプリンタドライバは、Ｖｅｒｓｉｏｎ３ドライバ（以下、Ｖ３ドライバ）と呼ばれている。ランゲージモニタは、ＯＳを介して、印刷ジョブ生成モジュールにより生成された印刷ジョブを受け取ってプリンタ装置へ送信する。またランゲージモニタは、ユーザやアプリケーションから印刷ジョブのキャンセル等の要求を受信すると、その要求に応じた処理を実施してジョブを制御する。またランゲージモニタを拡張し、プリンタドライバから印刷ジョブを送信するだけでなく、プリンタ装置側から、そのプリンタ装置の装置情報を受信し、使用する印刷通信用のプロトコルをサポートできるランゲージモニタを搭載したＶ３ドライバが存在する。このプロトコルをサポートしたランゲージモニタにより、メモリ容量の少ないプリンタ装置でも、そのプリンタ装置のメモリ状態を情報として絶えずプリンタドライバが確認し、安定した印刷を実行することが可能となる。そしてこのプロトコルをサポートしたランゲージモニタにより、情報処理装置がプリンタ装置の状態を事細かに収集し、本来、プリンタ装置で行う印刷ジョブの管理、制御を行うことができる。更に、その収集したプリンタ装置の状態やユーザへのメッセージ表示、プリンタ装置に対する設定の入力等を、情報処理装置上のアプリケーションで行うことが可能なシステムが広く製品化され利用されている。
【０００５】
このように本来、プリンタ装置のパネルで表示、入力できる内容を、情報処理装置のアプリケーションで行うことにより、プリンタ装置の操作パネルを簡素化でき、製品コストを低く抑えることができる。更には、プリンタ装置でレンダリングを行わず、情報処理装置上のＶ３ドライバでレンダリングを行った画像データをプリンタ装置へ送信して印刷させるシステムも製品化され利用されている。このようなシステムはホストベース型印刷システムと呼ばれ、前述したようなランゲージモニタの機能により、少ないメモリ容量や低スペックのＣＰＵを搭載したプリンタ装置でも、通常のプリンタ装置と同等の印刷を行うことができる。このようにしてプリンタ装置のコストを低く抑えることができるようになる。
【０００６】
一方、近年Ｍｉｃｒｏｓｏｆｔ社により導入されたＷｉｎｄｏｗｓ８（登録商標）以降では、上記構成と異なるプリンタドライバ構成が採用されている。このプリンタドライバを構成するモジュール群には、上述のランゲージモニタが含まれていない。また使用可能な通信ポートは、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート及びＷＳＤ（Ｗｅｂ  Ｓｅｒｖｉｃｅ  ｏｎ  Ｄｅｖｉｃｅ）ポートに限られる。このプリンタドライバは、Ｖｅｒｓｉｏｎ４ドライバ（以下、Ｖ４ドライバ）と呼ばれる。このＶ４ドライバはランゲージモニタを有していないため、印刷ジョブ生成モジュールにより生成された印刷ジョブをプリンタ装置に送信する通信処理は、Ｗｉｎｄｏｗｓ（登録商標）に標準に搭載されているスプーラにより提供される。またＶ３ドライバではランゲージモニタが行っていた、ユーザやアプリケーションからの印刷ジョブのキャンセル等の要求に対する処理も、このスプーラが実行している。
【０００７】
このように、従来は、Ｖ３ドライバにおいてランゲージモニタが行っていた処理をＶ４ドライバではスプーラが行うようになったことにより、Ｖ３ドライバでは可能であった制御ができなくなる場合がある。例えば、プリンタ装置と情報処理装置とがＵＳＢを介して接続され、かつ、プリンタ装置で印刷処理を継続できないエラーが生じている場合、そのエラーが生じた印刷ジョブに対しキャンセル要求が発行された場合を考える。そのような場合、スプーラはＯＳに対しプリンタ装置に対して印刷をキャンセルするように指示しない場合がある。このような問題に対して、例えば特許文献１には、Ｖ４ドライバの構成要素であるコマンド生成フィルタ又はスプーラが、そのプリンタ装置の状況を適切に判定して、適切に印刷ジョブをキャンセルする技術が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−１３４８６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したホストベース型印刷システムに適用できるプリンタ装置は、印刷通信用のプロトコルをサポートしたランゲージモニタを搭載したＶ３ドライバがあることを前提として設計されている。そのため、情報処理装置からプリンタ装置への印刷の実行要求やキャンセル要求などの印刷ジョブに対する要求や動作設定変更要求、またプリンタ装置から情報処理装置へのプリンタ装置の状態情報通知などは、印刷通信用のプロトコルを用いて行われていた。更に、印刷ジョブの管理などもランゲージモニタで行っている。
【００１０】
しかし、Ｖ４ドライバでは、独自のランゲージモニタをプリンタドライバ内に含ませることができないという制約があるため、印刷通信用のプロトコルをサポートしたランゲージモニタをＶ４ドライバに含ませることができない。その結果、Ｖ４ドライバでは、ホストベース型印刷システムに適用したプリンタ装置を使用して印刷できないという課題がある。
【００１１】
本発明の目的は、上記従来技術の課題を解決することにある。
【００１２】
本発明の特徴は、独自のランゲージモニタを含ませることができないドライバをインストールしている情報処理装置でも、従来のＶ３ドライバと同等に画像形成装置を制御できる技術を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
プリンタドライバと、当該プリンタドライバの出力先として前記プリンタドライバと関連付けられているデバイスアプリケーションと、を少なくとも有する情報処理装置であって、
前記プリンタドライバは、
前記情報処理装置上で動作するアプリケーションからデータを受信し、当該受信したデータに基づき印刷ジョブを生成する生成手段と、
前記生成された印刷ジョブを前記出力先に向けて送信する送信手段と、を有し、
前記出力先に向けて送信された印刷ジョブは、前記情報処理装置のＯＳ（オペレーティングシステム）によって前記デバイスアプリケーションに対応するポート番号が指定されて送信されることにより、前記デバイスアプリケーションに届けられ、
前記デバイスアプリケーションは、
プリンタと双方向通信を行う通信制御手段と、
前記プリンタドライバから送信された前記印刷ジョブを受信する受信手段と、
前記双方向通信で前記プリンタのステータス情報を取得し、当該ステータス情報に従って、前記受信した印刷ジョブに基づくデータ送信を制御する送信制御手段と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、独自のランゲージモニタを含ませることができないドライバをインストールしている環境であっても、ホストベース型印刷システムに対応した印刷装置で印刷ができるという効果がある。
【００１５】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１６】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態１に係る印刷システムの概略構成を示すブロック図。
【図２】Ｖ４ドライバのソフトウェア構成を説明するブロック図。
【図３】実施形態１に係る仮想デバイスサービスのソフトウェア構成を説明するブロック図。
【図４】実施形態１に係る情報処理装置のハードウェア構成を説明するブロック図。
【図５】実施形態１に係る情報処理装置の設定アプリケーションが表示部に表示する画面例を示す図。
【図６】実施形態１に係る情報処理装置が表示する仮想デバイス設定変更ダイアログの一例を示す図。
【図７】実施形態１に係る情報処理装置が表示する仮想デバイス設定ダイアログの一例を示す図。
【図８】実施形態１に係る情報処理装置のステータスウィンドウにより表示されるステータス表示画面の一例を示す図。
【図９】実施形態１に係る情報処理装置が表示するジョブリストダイアログの一例を示す図。
【図１０】実施形態１に係る画像形成装置のハードウェア構成を説明するブロック図。
【図１１】実施形態１に係る画像形成装置による印刷処理を説明するフローチャート。
【図１２】実施形態１に係る情報処理装置で実行されるＶ４ドライバによる印刷処理を説明するフローチャート。
【図１３】実施形態１に係る情報処理装置の仮想デバイスサービスによる処理の一例を説明するフローチャート。
【図１４】実施形態１に係る情報処理装置が、仮想デバイスと画像形成装置との接続に問題がないか否かを判定する処理を説明するフローチャート。
【図１５】実施形態１に係る情報処理装置が、ステータスウィンドウと仮想デバイスとの接続に関するエラーを表示するかどうかを判定する処理を説明するフローチャート。
【図１６】実施形態１に係る情報処理装置が、Ｖ４ドライバと仮想デバイスの接続に問題がないかどうかを判定する処理を説明するフローチャート。
【図１７】実施形態１に係る情報処理装置で、ステータスウィンドウと仮想デバイスとの接続に関するエラーが発生した場合に表示するステータスウィンドウＴＯＰ画面の一例を示す図。
【図１８】実施形態１に係る情報処理装置で、ステータスウィンドウが仮想デバイスサービスと通信できなかった場合に表示するステータスウィンドウＴＯＰ画面の一例を示す図ス。
【図１９】本発明の実施形態２に係る印刷システムの概略構成を示すブロック図。
【発明を実施するための形態】
【００１７】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１８】
［実施形態１］
まず、本発明に係る実施形態１について説明する。
【００１９】
図１は、本発明の実施形態１に係る印刷システムの概略構成を示すブロック図である。図中の太い実線の矢印は、印刷ジョブのやり取りを示し、細い点線の矢印は、印刷ジョブ以外のデータのやり取りを示している。
【００２０】
アプリケーション１０２は情報処理装置１０１に実装されており、ユーザが目的に応じて利用するソフトウェアであり、ユーザは、このアプリケーション１０２を使用して印刷を指示することができる。Ｖ４ドライバ１０３は情報処理装置１０１に実装されており、アプリケーション１０２から印刷の指示コマンドを受け取ると、それに従って印刷ジョブを作成する。Ｗｉｎｄｏｗｓ標準スプーラ１０４は、情報処理装置１０１にインストールされているＯＳ（実施形態１では、Ｍｉｃｒｏｓｏｆｔ Ｗｉｎｄｏｗｓ（登録商標）とする）内の印刷用スプーラである。Ｗｉｎｄｏｗｓ標準スプーラ１０４は、受信した印刷ジョブを一時的にスプールしておき、それらを受信した順に一つずつ出力する。Ｗｉｎｄｏｗｓ標準スプーラ１０４は、仮想デバイスサービス１０６に対してネットワーク経由で印刷ジョブを送信する。実施形態１では、Ｗｉｎｄｏｗｓ標準スプーラ１０４は、自分自身に対してデータを送信するループバックを用いた通信で印刷ジョブを送信する。このシステムでは、Ｗｉｎｄｏｗｓ標準スプーラ１０４は、いかなるジョブも仮想デバイスサービス１０６へ送信する。
【００２１】
ステータスウィンドウ１０５は、画像形成装置１０７，１０８のステータスの表示や任意の設定等を可能にするソフトウェアである。ステータスウィンドウ１０５は、ＲＰＣ（Ｒｅｍｏｔｅ Ｐｒｏｃｅｄｕｒｅ Ｃａｌｌ）クライアント機能を持っており、それを用いて仮想デバイスサービス１０６と通信する。ステータスウィンドウ１０５は、仮想デバイスサービス１０６に対して状態情報を取得するよう命令し、返信として受け取った状態情報に基づいてステータスを表示する。ステータスウィンドウ１０５は機種情報を有しており、実施形態１では、機種情報は製品名とする。仮想デバイスサービス１０６は、Ｖ４ドライバ１０３、Ｗｉｎｄｏｗｓ標準スプーラ１０４、ステータスウィンドウ１０５に対して物理的な画像形成装置のように振る舞うエミュレーターソフトウェアである。仮想デバイスサービス１０６との通信はＷｉｎｄｏｗｓ上のネットワーク機能を利用する。
【００２２】
画像形成装置１０７，１０８は、受信した印刷ジョブに基づいて画像の形成を行う。画像形成装置１０７，１０８は機種情報を有しており、実施形態１では、その機種情報は製品名とする。設定アプリケーション１０９は、後述する仮想デバイス３００，３０１（図３）の設定、管理を行うソフトウェアである。
【００２３】
図２は、Ｖ４ドライバ１０３のソフトウェア構成を説明するブロック図である。
【００２４】
従来のＶ３ドライバでは、ＯＳが提供するアプリケーションインターフェース（ＡＰＩ）を介してアプリケーション１０２からＯＳ（ドライバを含む）を呼び出しており、Ｄｅｖｍｏｄｅとよばれるバイナリデータを印刷設定用のデータとして使用していた。
【００２５】
ＯＳが提供するＡＰＩを利用するアプリケーション１０２は、ＧＤＩ（Ｇｒａｐｈｉｃ Ｄｅｖｉｃｅ Ｉｎｔｅｒｆａｃｅ）を呼び出して描画を行う。Ｖ４ドライバ１０３のＵＩは、ＯＳが標準で搭載しているＵＩ（以下、ＯＳ標準ＵＩ）での表示となる。Ｖ３ドライバと同等のＵＩを使用するためには、ＯＳが提供するＶ４ドライバ用拡張ＵＩソフトウェア２０１（以下、拡張ＵＩソフトウェア）をインストールする必要がある。
【００２６】
ユーザがアプリケーション１０２を実行して印刷を行う場合、拡張ＵＩソフトウェア２０１がインストールされていれば拡張ＵＩソフトウェア２０１のＵＩが表示され、そうでなければＯＳ標準ＵＩが表示される。実施形態１では、拡張ＵＩソフトウェア２０１がインストールされているものとして説明するが、拡張ＵＩソフトウェア２０１がインストールされていなくてもよい。
【００２７】
印刷設定管理部２０２は、拡張ＵＩソフトウェア２０１やＯＳ標準ＵＩで表示する印刷設定項目や、同時に設定できない印刷設定項目の組み合わせ（以下、コンフリクト）などを管理している。表示する印刷設定項目やコンフリクトは、画像形成装置１０７，１０８がサポートしている機能、能力に応じて画像形成装置ごと（機種ごと）に変更が可能である。Ｖ４ドライバでは印刷設定は、ＰｒｉｎｔＴｉｃｋｅｔと呼ばれる、Ｖ３ドライバにおけるＤＥＶＭＯＤＥ構造体をベースにする印刷設定に代わって登場した、ＸＭＬをベースとした新印刷設定フォーマットで管理される。
【００２８】
デバイス情報取得部２０３は、印刷ジョブ生成部２０４で印刷ジョブを生成するために必要な画像形成装置の情報を取得する。実施形態１では、仮想デバイスサービス１０６を経由して画像形成装置１０７，１０８の情報を取得する。デバイス情報取得部２０３はＲＰＣクライアント機能を持ち、仮想デバイスサービス１０６が持つＲＰＣサーバ３１１，３２１（図３）と通信することで、それぞれ画像形成装置１０７，１０８の情報を取得する。
【００２９】
印刷ジョブ生成部２０４は、デバイス情報取得部２０３から取得した画像形成装置の情報や、アプリケーション１０２から送られた印刷設定に応じたレンダリング等を行って印刷ジョブを生成する。印刷ジョブ生成部２０４は機種情報を有し、印刷ジョブを生成する際、その印刷ジョブに機種情報を埋め込む。実施形態１では、機種情報は製品名とする。また印刷ジョブ生成部２０４が受け取るデータは、ＸＰＳ（ＸＭＬ Ｐａｐｅｒ Ｓｐｅｃｉｆｉｃａｔｉｏｎ）である。Ｗｉｎ３２ＡＰＩを利用するアプリケーション１０２がＧＤＩを呼び出すとＯＳ内部でＸＰＳに自動変換されて、ＸＰＳドライバ（実施形態１ではＶ４ドライバ１０３）が呼び出される。ＷＰＦ（Ｗｉｎｄｏｗｓ Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎ）アプリケーションから印刷する場合、そのままＸＰＳドライバが呼び出される。
【００３０】
ＰＤＬ変換部２０５は、印刷ジョブを送信する画像形成装置に対応するＰＤＬ（Ｐａｇｅ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ）に変換する。デバイスＩＦ部２０６は、Ｗｉｎｄｏｗｓ標準スプーラ１０４に印刷ジョブを送信する。
【００３１】
図３は、実施形態１に係る仮想デバイスサービス１０６のソフトウェア構成を説明するブロック図である。
【００３２】
仮想デバイスサービス１０６は、１つ以上の仮想デバイスを持ち、これら仮想デバイスはそれぞれ１つの画像形成装置と接続される。実施形態１では、仮想デバイスサービス１０６は２つの仮想デバイス３００，３０１を有し、各仮想デバイス３００，３０１はそれぞれ画像形成装置１０７と画像形成装置１０８に接続されているものとする。
【００３３】
仮想デバイスサービス１０６は、外部から仮想デバイスの登録／削除を受け付ける機能を持つ。また仮想デバイスサービス１０６は、不図示のインストーラによる仮想デバイスの登録に際して、情報処理装置１０１が持つ受信ポート番号（以下、受信ポート番号）の指定を必要とする。そして仮想デバイスサービス１０６は、指定された受信ポート番号と仮想デバイスとを紐づけて管理する。また仮想デバイスサービス１０６は、登録された仮想デバイスを実行する機能を有する。仮想デバイスの実行は、仮想デバイスサービス１０６が実行された時、又は仮想デバイスが新たに登録されたときに行う。
【００３４】
仮想デバイス３００は、受信部３１０、ＲＰＣサーバ３１１、仮想デバイススプーラ３１２、仮想デバイスランゲージモニタ３１３、ポートモニタ３１４を有している。また、仮想デバイス３００は機種情報を有し、実施形態１では、機種情報は製品名とし、仮想デバイス３００内の仮想デバイススプーラ３１２が持つものとする。受信部３１０は、仮想デバイス３００と紐づけられたポート番号を介してＷｉｎｄｏｗｓ標準スプーラ１０４から受け付けた印刷ジョブを仮想デバイススプーラ３１２に引き渡す。ＲＰＣサーバ３１１は、ＲＰＣ通信により、ステータスウィンドウ１０５やデバイス情報取得部２０３などのＲＰＣクライアント機能をもつ外部モジュールと仮想デバイススプーラ３１２との通信を仲介する。
【００３５】
仮想デバイススプーラ３１２は、受信部３１０から引き渡された印刷ジョブを格納するキューを持ち、その印刷ジョブの管理と、仮想デバイスランゲージモニタ３１３への送信を行う。また仮想デバイススプーラ３１２は、管理している印刷ジョブに対する、印刷ジョブ情報の取得や印刷ジョブの削除などの各種アクセス機能を提供する。このアクセス機能は、仮想デバイスランゲージモニタ３１３や設定アプリケーション１０９によって利用される。また仮想デバイススプーラ３１２は、ＲＰＣサーバ３１１を介して各種命令の受信及び命令への返信を行う。また仮想デバイススプーラ３１２は、仮想デバイスランゲージモニタ３１３への各種命令の送信及び命令への返信の受付を行う。実施形態１では、仮想デバイススプーラ３１２は、自身が所属している仮想デバイス３００の機種情報として、製品名を持つものとする。
【００３６】
仮想デバイスランゲージモニタ３１３は、印刷ジョブの制御及び各種情報の管理を行うモジュールであり、仮想デバイススプーラ３１２から受信した印刷ジョブを、ポートモニタ３１４を介して画像形成装置１０７へ送信する。また、仮想デバイスランゲージモニタ３１３は、ポートモニタ３１４を介して、画像形成装置１０７への各種命令の送信、及び、画像形成装置１０７からの情報の取得を行う。実施形態１では、仮想デバイスランゲージモニタ３１３は、画像形成装置１０７の印刷状況、各種状態及び設定情報、エラー情報などを取得する。また仮想デバイスランゲージモニタ３１３は、画像形成装置１０７と接続された際に、その製品名を取得する。また、仮想デバイスランゲージモニタ３１３は、自身が持つ情報と画像形成装置１０７から取得した情報とに基づいて、画像形成装置１０７の状態の判定を行う。そしてエラー状態であると判定した場合、印刷処理を停止するなどのエラー処理を行う。また、仮想デバイスランゲージモニタ３１３は、仮想デバイススプーラ３１２からの各種命令の受信及び命令への返信を行う。例えば、仮想デバイススプーラ３１２を介してステータスウィンドウ１０５から状態情報を取得する命令を受け付けた場合は、前述の状態判定に基づいた状態情報と、機種情報を返信する。ポートモニタ３１４は、画像形成装置１０７と接続された情報処理装置１０１のポートと、仮想デバイスランゲージモニタ３１３との通信の仲介を行う。画像形成装置１０７は機種ごとに取り扱える通信が異なる場合があり、この画像形成装置１０７ごとに特化した通信処理を行う。
【００３７】
仮想デバイス３０１は、情報処理装置１０１が持つポートの内、仮想デバイス３００とは別のポートを介して画像形成装置１０８と接続されている。この仮想デバイス３０１は、受信部３２０、ＲＰＣサーバ３２１、仮想デバイススプーラ３２２、仮想デバイスランゲージモニタ３２３、ポートモニタ３２４を有している。この仮想デバイス３０１の構成は、仮想デバイス３００と同じであるため詳細な説明は省略する。
【００３８】
図４は、実施形態１に係る情報処理装置１０１のハードウェア構成を説明するブロック図である。
【００３９】
ＣＰＵ４０１は、この情報処理装置１０１全体を制御するプロセッサである。ＲＡＭ４０２は、ＣＰＵ４０１が動作するためのシステムワークメモリであり、プログラムを記録するためのプログラムメモリとして使用される。ＮＶＭＥＭ４０３は不揮発性メモリであり設定情報等を記録する。ＲＯＭ４０４は書き換え不可能な不揮発性メモリであり、各種プログラムが記録される。ＨＤＤ４０５はＯＳやプログラムなどを格納している。ＵＳＢＩ／Ｆ４０８は、ＵＳＢデバイスに接続するための機能ユニットで、ＵＳＢを介して他のデバイスのステータスを取得したり、ステータスを返したりするために使用される。ＬＡＮＩ／Ｆ４０７は、ＬＡＮに接続するための機能ユニットで、ＬＡＮを介して他のデバイスのステータスを取得したり、ステータスを返したりするために使用される。表示部インターフェース（Ｉ／Ｆ）４０９は、表示部４１０とＣＰＵ４０１とのインタフェースを制御している。入出力Ｉ／Ｆ４１１は、例えばキーボードやポインティングデバイス等を含む操作部４１２とのインタフェースを制御している。以上のデバイスがシステムバス４０６に配置される。ＣＰＵ４０１はＲＯＭ４０４に記憶されているブートプログラムを実行してＨＤＤ４０５にインストールされているＯＳやプログラムなどをＲＡＭ４０２に展開し、それを実行することにより、後述する情報処理装置１０１に係る処理を実行する。尚、表示部４１０はタッチパネル機能を備えていても良い。
【００４０】
図５は、実施形態１に係る情報処理装置１０１の設定アプリケーション１０９が表示部４１０に表示する画面例を示す図である。
【００４１】
設定アプリケーション１０９のＴＯＰ画面５００は、情報処理装置１０１にインストールされている仮想デバイスの情報や稼働状態を表示し、更に仮想デバイスの削除や仮想デバイスが持つ情報の変更などの機能を有する。これは仮想デバイススプーラ３１２，３２２が提供しているアクセス機能を利用している。仮想デバイス名５０１は、情報処理装置１０１にインストールされている仮想デバイスの名称を表示する。機種名５０２は、各仮想デバイス３００，３０１と紐づく画像形成装置１０７，１０８を特定できる名称を示す。この実施形態１では製品名を表示している。接続方法５０３は、画像形成装１０７，１０８との接続方法を示しており、ＮＷはネットワーク経由、ＵＳＢはＵＳＢを介して接続されていることを示している。ＩＰアドレス５０４は、接続方法５０３で画像形成装置１０７，１０８との接続がネットワーク接続（ＮＷ）である場合に、その画像形成装置のＩＰアドレスを示す。ポート番号５０５は、ジョブを受信する際に、仮想デバイスに割り当てられた受信ポート番号を示す。
【００４２】
この画面で、ユーザが仮想デバイスの一覧から仮想デバイスを選択して削除ボタン５０６を押下すると、不図示の確認メッセージを表示し、ユーザの同意が得られたら、その選択された仮想デバイスを削除する。またユーザが仮想デバイスを選択して変更ボタン５０７を押下すると、その選択された仮想デバイスの仮想デバイス名５０１や画像形成装置１０７，１０８のＩＰアドレス、紐づけられた受信ポート番号を変更できるダイアログが表示される。またユーザが仮想デバイスを選択し、デバイス設定ボタン５０８を押下すると、その選択された仮想デバイスのログの保存に関する設定や時刻通知に関する設定が可能なダイアログが表示される。またユーザが仮想デバイスを選択して起動ボタン５０９を押下すると、その選択された仮想デバイスのステータスウィンドウ１０５が起動する。更にユーザが仮想デバイスを選択してキュー表示ボタン５１０を押下すると、その選択された仮想デバイスの仮想デバイススプーラ３１２が管理する印刷ジョブに関する情報が表示される。
【００４３】
ＩＰアドレス表示欄５１１には、この情報処理装置１０１のＩＰアドレスが表示される。ユーザが閉じるボタン５１２を押下すると、このアプリケーションを終了する。またアイコン５１３は、仮想デバイスが稼働中、或いは停止中かを示すアイコンで、仮想デバイス名の先頭に表示される。
【００４４】
図６は、実施形態１に係る情報処理装置１０１が表示する仮想デバイス設定変更ダイアログ６００の一例を示す図である。この画面は、図５の画面でユーザが仮想デバイスの一覧から仮想デバイスを選択して変更ボタン５０７を押下することにより表示される。
【００４５】
接続プリンタ６０１は、選択された仮想デバイスと紐づく画像形成装置１０７，１０８の製品名を示す。接続先６０２は、選択された仮想デバイスがジョブを出力する接続先を示す。画像形成装置との接続がＮＷの場合、この接続先６０２は、その画像形成装置のＩＰアドレスとなる。また画像形成装置との接続がＵＳＢ接続の場合は、この接続先６０２（コントロール）は非表示となる。仮想デバイス名６０３は、図５のＴＯＰ画面５００で表示される仮想デバイス名５０１に表示される名称である。受信ポート番号６０４は、前述の受信ポート番号を示す。図６では、図５の仮想デバイス名が「VitualPrinter_1」が選択されて変更ボタン５０７を押下された場合であるため、ＩＰアドレス、受信ポート番号は、図５と対応している。尚、仮想デバイス名「VitualPrinter_1」は、ここでは画像形成装置１０８に対応している。
【００４６】
ここでユーザが画像形成装置のＩＰアドレスを変更した場合、接続先６０２のＩＰアドレスを変更することで、同じ画像形成装置に出力することが可能となる。また同一機種で別の画像形成装置に出力したい場合も、ユーザは接続先６０２のＩＰアドレスを変更することでジョブの出力先を変更できる。こうしてユーザが、この画面を介して所望の項目を編集した後、ＯＫボタン６０５を押下すると、この画面での設定を反映して仮想デバイス設定変更ダイアログ６００を閉じる。またユーザがキャンセルボタン６０６を押下すると、この画面での編集内容は破棄されて、仮想デバイス設定変更ダイアログ６００を閉じる。
【００４７】
図７は、実施形態１に係る情報処理装置１０１が表示する仮想デバイス設定ダイアログ７００の一例を示す図である。この画面は、図５の画面でユーザが仮想デバイスを選択してデバイス設定ボタン５０８を押下することにより表示される。図７は、図５の仮想デバイス名が「VitualPrinter_1」が選択されてデバイス設定ボタン５０８が押下された場合を示している。
【００４８】
この画面でユーザが、プリンタのログを保存するラジオボタン７０１にチェックすると、仮想デバイスと紐づく画像形成装置１０８の内部のログ情報を情報処理装置１０１上に吸い上げ、保存先７０６で指定されたファイルに保存する。またユーザが、コンピュータのログを保存するラジオボタン７０２にチェックすると、情報処理装置１０１における画像形成装置１０８との通信の記録など、情報処理装置１０１で処理したログを、保存先７０７で指定されたファイルに保存する。またユーザが、プリンタに時刻を通知するラジオボタン７０３にチェックすると、定期的に情報処理装置１０１の時刻を画像形成装置１０８に通知する。ＯＫボタン７０４が押下されると、この画面での編集内容を反映して仮想デバイス設定ダイアログ７００を閉じる。またユーザがキャンセルボタン７０５を押下すると、この画面での編集内容を破棄して仮想デバイス設定ダイアログ７００を閉じる。
【００４９】
図８は、実施形態１に係る情報処理装置１０１のステータスウィンドウ１０５により表示されるステータス表示画面の一例を示す図である。この画面は、図５の画面でユーザが起動ボタン５０９を押下することによりステータスウィンドウ１０５が起動されて表示される。
【００５０】
ステータスウィンドウＴＯＰ画面８０１は、選択された仮想デバイスのステータスの内容に応じてメインメッセージ部８０２、ステータス画面部８０３の表示を切り替える。補助メッセージ部８０４は、ステータスの補足情報などを表示する。図８では、ネットワークを介して接続されている画像形成装置１０８（VirtualPrinter_1）のトナーが少なくなっていることを示すメッセージが表示されている。
【００５１】
図９は、実施形態１に係る情報処理装置１０１が表示するジョブリストダイアログ９０１の一例を示す図である。この画面は、図５の画面で、ユーザがキュー表示ボタン５１０を押下することにより起動される仮想デバイススプーラ３１２（３２２）が管理するジョブリストダイアログの一例を示している。
【００５２】
ドキュメント名９０２は、処理中のドキュメント名を表示する。ユーザ名９０３は、ジョブを実行したユーザ名を表示する。状況９０４は、印刷中や待機中などのジョブの状況を示す。この画面でユーザが更新ボタン９０５を押下すると、表示しているジョブリストを最新の状態に更新する。またユーザが全選択ボタン９０６を押下すると、ジョブリストに表示されている全てのジョブを選択状態とする。ユーザがジョブリストでジョブを選択してジョブ削除ボタン９０７を押下すると、その選択されたジョブを削除する。ユーザが閉じるボタン９０８を押下すると、このジョブリストダイアログ９００が閉じられる。
【００５３】
図１０は、実施形態１に係る画像形成装置１０８（１０７）のハードウェア構成を説明するブロック図である。ここでは、ネットワークを介して接続された画像形成装置１０８を参照して説明するが画像形成装置１０７の構成も基本的に同様であるため、ここでは画像形成装置１０７の構成の説明を省略する。
【００５４】
ＣＰＵ１００１は、画像形成装置１０８の全体の動作を制御している。ＲＡＭ１００２は、ＣＰＵ１００１の主メモリ、ワークエリア等として機能するとともに、出力情報の展開領域、環境データの格納領域としても用いられる。またこのＲＡＭ１００２は、ＮＶＲＡＭ（不揮発性ＲＡＭ）領域も備えており、図示しない増設用ソケットに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。ＲＯＭ１００３は、各種フォントを記憶するフォントＲＯＭ１０２０，ＣＰＵ１００１により実行される制御プログラム等を記憶するプログラムＲＯＭ１０２１及び各種データを記憶するデータＲＯＭ１０２２を備えている。各種Ｉ／Ｆ（ネットワーク及びＵＳＢＩ／Ｆが主たるもので図はネットワークの場合）１００４は、情報処理装置１０１との間でデータの送受信を行なう。印刷部Ｉ／Ｆ１００５は、プリンタエンジンである印刷部１００６とのインターフェースを制御している。外部メモリ１００９は、外部メモリＩ／Ｆ１００８によりアクセスが制御されており、オプションとして接続されるハードディスク（ＨＤ）、Ｓｏｌｉｄ Ｓｔａｔｅ Ｄｉｓｋ（ＳＳＤ）等を含んでいる。外部メモリ１００９は、フォントデータ、フォームデータ等を記憶する。更にこの画像形成装置１０８で一時的に作成され、外部とのやり取りを行うためのファイル１０１０を記憶することも可能である。
【００５５】
尚、ハードディスク等の外部メモリ１００９が接続されていない場合には、ＲＯＭ１００３のデータＲＯＭ１０２２に、情報処理装置１０１で利用される情報等を記憶することになる。尚、この外部メモリ１００９は１個に限らず複数備えるものであってもよい。例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。操作部１００７には、ユーザによる操作を受け付けるタッチパネル構造の操作パネルが設けられ、更に、操作パネルには、操作のためのスイッチ及び表示器等が配されている（不図示）。また、不図示のＮＶＲＡＭを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。
【００５６】
ＣＰＵ１００１は、ＲＯＭ１００３のプログラムＲＯＭ１０２１に記憶された制御プログラム等に基づき、印刷部Ｉ／Ｆ１００５を介して印刷部１００６に出力情報としての画像信号を出力する。また、ＣＰＵ１００１は、各種Ｉ／Ｆ（ネットワーク又はＵＳＢＩ／Ｆが主たるもの）１００４を介して情報処理装置１０１と通信を行うことができる。そして、情報処理装置１０１から送信される印刷ジョブを受信すると共に、画像形成装置１０８の情報等を、情報処理装置１０１に通知可能な双方向通信経路が構成されている。
【００５７】
図１１は、実施形態１に係る画像形成装置１０８による印刷処理を説明するフローチャートである。尚、この処理を実行するプログラムは、ＲＯＭ１００３のプログラムＲＯＭ１０２１に格納されており、ＣＰＵ１００１がこのプログラムを読み出して実行することにより、このフローチャートで示す処理が実現される。
【００５８】
先ずＳ１１０１でＣＰＵ１００１は、仮想デバイスサービス１０６が動作する情報処理装置１０１からデータを受信するとＳ１１０２に進み、そのデータの処理が必要かどうか判定する。Ｓ１１０２でＣＰＵ１００１が、そのデータの処理が必要と判定するとＳ１１０３へ進むが、そうでないときはＳ１１０１に進んでデータの受信を待ち続ける。ここで意味の無いデータの場合には、そのデータを読み捨てるようにしても良い。尚、ここで、受信したデータは、画像形成装置１０８が認識できるコマンド形式であることを前提とする。
【００５９】
Ｓ１１０３でＣＰＵ１００１は、その受信データのコマンドを解析し、その解析結果に応じた処理を行う。次にＳ１１０４に進みＣＰＵ１００１は、そのデータが画像処理パラメータの取得コマンドかどうかを判定し、そうであればＳ１１０５に進み、画像形成装置１０８が持つ画像補正用の画像パラメータを参照して取得する。そしてＳ１１０６に進みＣＰＵ１００１は、その取得コマンドに対して返信するための返信用バッファに、その取得したパラメータ値を設定する。そしてＳ１１０７に進みＣＰＵ１００１は、返信用バッファに設定したパラメータを返信する返信処理を実行してＳ１１０１のデータ受信待ちへ進む。
【００６０】
一方、Ｓ１１０４でＣＰＵ１００１が、画像処理パラメータの取得コマンドでないと判定したときはＳ１１０８に進む。Ｓ１１０８でＣＰＵ１００１は、そのデータが、画像形成装置を制御する制御コマンド（装置の設定参照や設定実行、装置の状態参照など）かどうか判定し、そうであればＳ１１０９に進む。Ｓ１１０９でＣＰＵ１００１は、その制御コマンドを判定し、その制御コマンドに応じた処理を実行してＳ１１１０に進む。Ｓ１１１０でＣＰＵ１００１は、その制御コマンドに対して返信する必要があるかどうか判定し、返信が必要と判定するとＳ１１０７に進んで、返信処理を実行してＳ１１０１に進む。またＳ１１１０で返信が不要と判定すると、そのままＳ１１０１に進む。
【００６１】
またＳ１１０８で制御コマンドでないと判定したときはＳ１１１１に進む、この場合は、印刷ジョブ（印刷コマンドを含む）を受信したと判定して、その印刷ジョブの解析を行。そしてＳ１１１２に進みＣＰＵ１００１は、この画像形成装置１０８の印刷部１００６を制御して印刷処理を実行する。こうして印刷処理が終了するとＳ１１０１のデータ受信待ちに進む。
【００６２】
次に、実施形態１に係る印刷システムを用いて印刷が行われた場合のデータの流れを、前述の図１〜図３を参照して説明する。
【００６３】
情報処理装置１０１でユーザが利用するアプリケーション１０２から印刷の開始が指示されるとＶ４ドライバ１０３が呼ばれて印刷ジョブを作成する。この印刷ジョブの作成に際して、画像形成装置の動的な画像パラメータが用いられる。ここで図２のデバイス情報取得部２０３は、仮想デバイスサービス１０６を通して画像形成装置からの情報を受信する。この情報とともに印刷ジョブ生成部２０４が印刷ジョブを生成し、更にＰＤＬ変換部２０５にてＰＤＬ形式の印刷ジョブに変換する。そして、この印刷ジョブは、情報処理装置１０１で動作するＷｉｎｄｏｗｓのＷｉｎｄｏｗｓ標準スプーラ１０４へ渡される。Ｗｉｎｄｏｗｓ標準スプーラ１０４上の印刷ジョブは、Ｗｉｎｄｏｗｓネットワーク機能における標準ポートモニタを通して、Ｗｉｎｄｏｗｓネットワーク機能を通して仮想デバイスサービス１０６の仮想デバイス３０１の受信部３２０へ送信される。仮想デバイス３０１の受信部３２０は、この印刷ジョブをネットワークを介して受信し、仮想デバイス３０１内の仮想デバイススプーラ３２２が持つキューへ格納する。仮想デバイススプーラ３２２は、仮想デバイスランゲージモニタ３２３とやりとりをしながら、キューに格納された印刷ジョブを、仮想デバイス３０１のポートモニタ３２４を介して画像形成装置１０８へ送信する。仮想デバイススプーラ３２２は、これと同時に双方向通信によって画像形成装置１０８の状態情報を受け取り、ＲＰＣサーバ３２１を介して各種命令受信及び命令への返信を行う。
【００６４】
ステータスウィンドウ１０５は、Ｗｉｎｄｏｗｓネットワーク機能を介して仮想デバイスサービス１０６とやりとりし、画像形成装置１０８の状態表示や画像形成装置１０８の設定項目の編集等を行う。
【００６５】
図１２は、実施形態１に係る情報処理装置１０１で実行されるＶ４ドライバ１０３による印刷処理を説明するフローチャートである。尚、この処理は、情報処理装置１０１のＣＰＵ４０１がＨＤＤ４０５に記憶されているプログラムをＲＡＭ４０２に展開して実行することにより達成される。尚、ここでは画像形成装置１０８を使用して印刷する場合で説明する。
【００６６】
Ｖ４ドライバ１０３を実行するＣＰＵ４０１はＳ１２０１で初期化処理を実行し、画像形成装置１０８に存在する画像処理用の画像パラメータを取得する。この画像パラメータは、これ以降の画像レンダリング処理において必要な画像パラメータである。この取得処理では、図２のＶ４ドライバ１０３中のデバイス情報取得部２０３が、図３の仮想デバイスサービス１０６のＲＰＣサーバ３２１と通信して、画像形成装置１０８から画像パラメータを取得する。つまり後述する図１３におけるＳ１３１１，Ｓ１３１２にて応答がなされた結果の受信が行われる。ここで画像形成装置１０８から画像パラメータが得られない場合は、画像データの補正に不具合が現れるなどの可能性があるが、そのような場合には、ある規定の値を用いて画像レンダリング処理は継続される。
【００６７】
その次にＳ１２０２，Ｓ１２０３でＣＰＵ４０１は、アプリケーション１０２からの印刷ジョブの入力を待つ。ここで印刷ジョブが入力されるとＳ１２０４へ進み、後段の仮想デバイスサービス１０６からのメッセージデータを入力する。この後段からのメッセージデータとは、画像形成装置１０８からの印刷ジョブの受信完了を示すメッセージ等である。そしてＳ１２０５に進みＣＰＵ４０１は、処理すべきメッセージデータを受け取ったかどうかを判定し、処理すべきメッセージデータを受信していないときはＳ１２０８へ進む。Ｓ１２０５で処理すべきメッセージデータを受け取ったと判定するとＳ１２０６へ進み、そのメッセージ種別に応じた表示等の処理を行う（メッセージ種の詳細については省略する）。このメッセージ種の一つとしては「印刷処理終了」があり、その場合はＳ１２０７で処理終了と判定して、この処理を終了する。尚、異常終了などの場合もＳ１２０７で印刷終了と判定されて、この処理を終了する。
【００６８】
Ｓ１２０７で印刷終了でないと判定するとＳ１２０８に処理を進め、受信した印刷ジョブの処理が必要かどうかを判定する。ここで処理の必要が無いと判定すると、更にアプリケーション１０２からのデータを受け取るためにＳ１２０２へ戻る。Ｓ１２０８でＣＰＵ４０１は印刷ジョブの処理が必要と判定するとＳ１２０９へ進み、Ｓ１２０１で取得した画像補正用パラメータを用いてレンダリング処理を行う。次にＳ１２１０に進みＣＰＵ４０１は、レンダリング処理により得られた印刷データを含む印刷ジョブをＷｉｎｄｏｗｓ標準スプーラ１０４へ保存する。そしてＳ１２１１に進みＣＰＵ４０１は、その印刷ジョブを、実際に印刷を行う画像形成装置１０８が入力可能な印刷データの形式へ変換する。ここではＷｉｎｄｏｗｓ標準スプーラ１０４上で、このデータの変換が実行される。そしてＳ１２１２に進みＣＰＵ４０１は、Ｗｉｎｄｏｗｓ標準スプーラ１０４に、変換後の印刷ジョブを保存する。そしてＳ１２１３に進みＣＰＵ４０１は、Ｗｉｎｄｏｗｓネットワーク機能におけるＷｉｎｄｏｗｓ標準ポートモニタ（不図示）へ印刷ジョブの送信を依頼し、その印刷ジョブを仮想デバイスサービス１０６へ送信する。こうして印刷ジョブの送信が終了すると、更に次の印刷ジョブを送信するためにＳ１２０５へ戻り、前述したメッセージ処理、レンダリング処理、データコンバート処理、データ送信処理を実行する。
【００６９】
尚、このフローチャートでは、Ｓ１２０７で印刷終了と判定した後、印刷処理を終了しているが、印刷処理を終了するのではなくＳ１２０１の次の印刷ジョブ待ちに移行しても良い。
【００７０】
図１３は、実施形態１に係る情報処理装置１０１の仮想デバイスサービス１０６による処理の一例を説明するフローチャートである。尚、この処理は、情報処理装置１０１のＣＰＵ４０１がＨＤＤ４０５に記憶されているプログラムをＲＡＭ４０２に展開して実行することにより達成される。実施形態１では、画像形成装置１０８に対応する仮想デバイス３０１の場合で説明する。
【００７１】
先ずＳ１３０１でＣＰＵ４０１は仮想デバイス３０１の受信部３２０として機能し、受信ポートからデータを入力する。より具体的には、受信部３２０は、Ｗｉｎｄｏｗｓネットワーク機能のポートからデータを入力する。次にＳ１３０２に進みＣＰＵ４０１は、処理が必要なデータ（印刷ジョブ）が入力されたかどうかを判定し、そうであればＳ１３０３に進み、その入力データを仮想デバイススプーラ３２２のキューに格納する。ここで不図示ではあるが、データの入力は一度に受け取れない場合もあり、その場合には分割して受信しながら、その都度、そのデータをキューに格納する処理の中断、継続が行われ、最終的にキューに格納する処理は完了する。
【００７２】
次にＳ１３０４に進みＣＰＵ４０１は、そのキューに処理すべきデータがあるかどうか判定し、処理すべきデータが無ければＳ１３０１のポートからのデータ入力処理に戻る。Ｓ１３０４でＣＰＵ４０１は、キューに処理すべきデータが存在すると判定するとＳ１３０５に進み、ＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能してキューからデータを取り出し、画像形成装置１０８に対して印刷ジョブの送信を開始する。まずＳ１３０６でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、画像形成装置１０８からステータス情報を取得する。次にＳ１３０７に進みＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、画像形成装置１０８のエンジンモニタと通信する。そしてＳ１３０８に進みＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、画像形成装置１０８のステータス情報を利用して、更に、画像形成装置１０８のエンジン状態に合わせた画像データの送信を行う。その後Ｓ１３０９に進み、画像データの送信が終了したかを調べ、画像データの送信が終了していないときはＳ１３０６に進んで、前述の処理を実行する。そして最終的に印刷が終了するとＳ１３０１へ戻る。
【００７３】
一方、Ｓ１３０２でＣＰＵ４０１は、受信部３２０からの、処理が必要なデータを受信していない、即ち、印刷ジョブを受信していないと判定するとＳ１３１１へ進む。Ｓ１３１１でＣＰＵ４０１は、Ｖ４ドライバ１０３からの画像形成装置１０８を制御するコマンド、即ち、画像形成装置１０８の画像パラメータの取得コマンドを受信したかどうか判定する。ここで画像パラメータの取得コマンドの受信でないと判定するとＳ１３１５へ進むが、Ｓ１３１１でパラメータの取得コマンドを取得したと判定するとＳ１３１２へ進む。Ｓ１３１２でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、画像形成装置１０８に対して画像パラメータの取得のコマンドを送信する。そしてＳ１３１３でその応答を待ち、応答を受信するとＳ１３１４に進み、その応答をＶ４ドライバ１０３へ転送してＳ１３１５へ進む。
【００７４】
Ｓ１３１５でＣＰＵ４０１は、ステータスウィンドウ１０５等からの画像形成装置１０８を制御するコマンドを受信したかどうか判定する。そうであればＳ１３１６に進むがそうでないときはＳ１３１９に進む。Ｓ１３１６でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、その制御コマンド内容を解析し、その解析結果に対応する制御コマンドを画像形成装置１０８に送信する。そしてＳ１３１７に進んで、そのコマンドに対する画像形成装置１０８からの応答を待つ。そして応答を受信するとＳ１３１８に進み、その内容をステータスウィンドウ１０５等へ送信してＳ１３１９に進む。
【００７５】
Ｓ１３１９でＣＰＵ４０１は、他に画像形成装置１０８へ送信すべきコマンドがあるか否か判定し、あればＳ１３２０へ進み、なければＳ１３２３へ進む。Ｓ１３２０でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、制御コマンドを画像形成装置１０８へ送信し、Ｓ１３２１でその制御コマンドに対する画像形成装置１０８からの応答を待つ。そして応答を受信するとＳ１３２２に進みＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、その応答を仮想デバイスサービス１０６で反映させてＳ１３０１へ戻る。尚、Ｓ１３２３でＣＰＵ４０１は、処理すべき制御コマンドではないが、なんらかのデータが到着していれば、そのデータを読み捨ててＳ１３０１へ戻る。
【００７６】
このように実施形態１に係る仮想デバイスサービスは、Ｖ４ドライバから受け取った印刷ジョブを画像形成装置（プリンタ）の状態に合わせて送信して印刷させることができる。またＶ４ドライバから画像形成装置のパラメータ取得コマンドを受け取ると、その画像形成装置のパラメータを取得してＶ４ドライバに返信できる。更には、ステータスウインドウからの要求に応じて画像形成装置のステータスを取得することができる。
【００７７】
図１４〜図１６は、実施形態１に係る情報処理装置１０１における、Ｖ４ドライバ１０３、ステータスウィンドウ１０５、仮想デバイス３０１、画像形成装置１０８の接続に関するエラー処理を説明するフローチャートである。
【００７８】
図１４は、実施形態１に係る情報処理装置１０１が、仮想デバイス３０１と画像形成装置１０８との接続に問題がないか否かを判定する処理を説明するフローチャートである。尚、この処理は、情報処理装置１０１のＣＰＵ４０１がＨＤＤ４０５に記憶されているプログラムをＲＡＭ４０２に展開して実行することにより達成される。この処理は、仮想デバイス３０１と画像形成装置１０８とが接続したときに開始される。
【００７９】
先ずＳ１４０１でＣＰＵ４０１は仮想デバイスランゲージモニタ３１３として機能し、画像形成装置１０８から機種情報を取得する。この実施形態１では、機種情報は製品名とする。次にＳ１４０２に進みＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、その取得した機種情報と、仮想デバイス３０１が持つ機種情報とを比較する。ここで、それらが同じであればＳ１４０３へ進み、異なる場合はＳ１４０４へ処理を進める。Ｓ１４０３でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、その接続に問題は無いと判定して、この処理を終了する。一方、Ｓ１４０４でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、画像形成装置１０８との接続に問題があるため、エラー状態になったと判定して、この処理を終了する。尚、Ｓ１４０４でエラー状態になったと判定した状況で、仮想デバイスランゲージモニタ３２３が状態情報を取得する命令を受け付けた場合は、接続に関するエラー状態と機種情報を返信する。
【００８０】
図１５は、実施形態１に係る情報処理装置１０１が、ステータスウィンドウ１０５と仮想デバイス３０１との接続に関するエラーを表示するかどうかを判定する処理を説明するフローチャートである。尚、この処理は、情報処理装置１０１のＣＰＵ４０１がＨＤＤ４０５に記憶されているプログラムをＲＡＭ４０２に展開して実行することにより達成される。この処理は、ステータスウィンドウ１０５が仮想デバイス３０１に対して状態情報の取得を命令することにより開始される。
【００８１】
Ｓ１５０１でＣＰＵ４０１はステータスウィンドウ１０５として機能し、仮想デバイス３０１に対して行った状態情報の取得命令の返信として、指定した画像形成装置の状態情報と機種情報を取得する。次にＳ１５０２に進みＣＰＵ４０１はステータスウィンドウ１０５として機能し、その取得した機種情報とステータスウィンドウ１０５が持つ機種情報とを比較する。そして、これらが同じであればＳ１５０４へ進み、そうでないときはＳ１５０３へ処理を進める。Ｓ１５０３でＣＰＵ４０１はステータスウィンドウ１０５として機能し、その取得した状態情報と、接続に関するエラー状態との重要度を比較する。実施形態１では、ステータスウィンドウ１０５は、接続に関するエラー状態を含む全ての状態の重要度を保持しており、これを参照して判定する。そしてＳ１５０３で、接続に関するエラー状態の方が重要度が高いと判定するとＳ１５０５へ進み、そうでなければＳ１５０４へ処理を進める。Ｓ１５０４でＣＰＵ４０１はステータスウィンドウ１０５として機能し、その取得した状態情報に基づいた表示を行って、この処理を終了する。一方、Ｓ１５０５でＣＰＵ４０１はステータスウィンドウ１０５として機能し、例えば図１７に示すような接続に関するエラー状態を表示して、この処理を終了する。
【００８２】
図１７は、実施形態１に係る情報処理装置１０１で、ステータスウィンドウ１０５と仮想デバイス３０１との接続に関するエラーが発生した場合に表示部４１０に表示するステータスウィンドウＴＯＰ画面８０１の一例を示す図である。
【００８３】
メインメッセージ部１７０２及び補助メッセージ部１７０４に、ステータスウィンドウ１０５の持つ機種情報と、仮想デバイス３００から取得した機種情報とが一致しないことを示すメッセージが表示されている。また、図には示していないが、付属情報として印刷ジョブを投入した場合、印刷できないため自動で削除される旨を表示するようにしても良い。ステータス画面部１７０３には、エラーが発生していることを示すマークを付与した画像形成装置のイメージが表示されている。
【００８４】
図１６は、実施形態１に係る情報処理装置１０１が、Ｖ４ドライバ１０３と仮想デバイス３０１の接続に問題がないかどうかを判定する処理を説明するフローチャートである。尚、この処理は、情報処理装置１０１のＣＰＵ４０１がＨＤＤ４０５に記憶されているプログラムをＲＡＭ４０２に展開して実行することにより達成される。この処理は、仮想デバイスランゲージモニタ３２３が印刷ジョブを受信したときに開始される。
【００８５】
まずＳ１６０１でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、受信した印刷ジョブが持つ機種情報と、仮想デバイス３０１の機種情報とを比較する。そして、これらが同じであると判定するとＳ１６０２へ進み、そうでないときはＳ１６０３へ処理を進める。Ｓ１６０２でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、Ｖ４ドライバ１０３と仮想デバイス３０１とが正常に接続されていると判定し、受信した印刷ジョブの印刷処理を継続する。一方、Ｓ１６０３でＣＰＵ４０１は仮想デバイスランゲージモニタ３２３として機能し、Ｖ４ドライバ１０３と仮想デバイス３０１の接続が正しくないと判定し、受信した印刷ジョブの処理を停止して、この処理を終了する。尚、実施形態１では、Ｓ１６０３で仮想デバイスランゲージモニタ３２３は、受信した印刷ジョブを削除することによって、印刷処理を停止する。
【００８６】
図１８は、実施形態１に係る情報処理装置１０１で、ステータスウィンドウ１０５が仮想デバイスサービス１０６と通信できなかった場合（以下、仮想デバイス通信エラー）に表示するステータスウィンドウＴＯＰ画面８０１の一例を示す図である。
【００８７】
ステータススウィンドウ１０５は、ＲＰＣ通信を用いて仮想デバイスサービス１０６と通信する。画像形成装置１０７，１０８の電源のＯＦＦ／ＯＮに関わらず、仮想デバイスサービス１０６とのＲＰＣ通信に失敗した場合、仮想デバイス通信エラーを表示する。
【００８８】
メインメッセージ部１８０２及び補助メッセージ部１８０４には、仮想デバイスサービス１０６との通信ができない旨を示すメッセージが表示されている。またステータス画面部１８０３には、エラーが発生していることを示すマークを付与した画像形成装置のイメージが表示されている。
【００８９】
以上説明したように実施形態１によれば、情報処理装置がＶ４ドライバをインストールしている環境であっても、そのＶ４ドライバを利用してホストベース型印刷システムに対応した画像形成装置でＶ３ドライバと同等に印刷ができるという効果がある。
【００９０】
［実施形態２］
次に、本発明に係る実施形態２について説明する。
【００９１】
図１９は、本発明の実施形態２に係る印刷システムの概略構成を示すブロック図である。図中の太い実線の矢印は、印刷ジョブのやり取りを示し、細い点線の矢印は、印刷ジョブ以外のデータのやり取りを示している。
【００９２】
この印刷システムの構成は、前述の実施形態１に係る図１の構成に、２台の情報処理装置１９０１，１９１１をネットワーク経由で接続している。２台の情報処理装置１９０１，１９１１はそれぞれクライアントとして機能し、サーバとして機能する情報処理装置１０１を経由して、画像形成装置１０７，１０８に印刷を実行させることができる。
【００９３】
クライアントとして機能する情報処理装置１９０１，１９１１はそれぞれ、アプリケーション１９０２，１９１２、Ｖ４ドライバ１９０３，１９１３、Ｗｉｎｄｏｗｓ標準スプーラ１９０４，１９１４、ステータスウィンドウ１９０５，１９１５を有している。
【００９４】
これらについての説明は実施形態１と同様である。本実施形態２と実施形態１のシステム構成では、以下のような構成の違いがある。
【００９５】
Ｗｉｎｄｏｗｓ標準スプーラ１９０４，１９１４は、サーバとして機能する情報処理装置１０１の仮想デバイスサービス１０６に対して、それぞれの送信先ポートに登録された画像形成装置への印刷ジョブを、ネットワークを介して送信する。ステータスウィンドウ１９０５，１９１５は、ＲＰＣを用いて、サーバとして機能する情報処理装置１０１の仮想デバイスサービス１０６と通信を行う。尚、この実施形態２に係る印刷システムで実行される処理は、基本的に前述の実施形態１の場合と同様である。
【００９６】
以上説明したように実施形態２によれば、サーバクライアント接続されたクライアントからも、サーバの仮想デバイスサービスを経由して画像形成装置に印刷ジョブを送信して印刷させることができる。
【００９７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９８】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００９９】
１０１…情報処理装置、１０３…Ｖ４ドライバ、１０４…Ｗｉｎｄｏｗｓ標準スプーラ、１０５…ステータスウィンドウ、１０６…仮想デバイスサービス、１０７，１０８…画像形成装置、１０９…設定アプリケーション
【図１】
0006609140.tif 000002
【図２】
0006609140.tif 000003
【図３】
0006609140.tif 000004
【図４】
0006609140.tif 000005
【図５】
0006609140.tif 000006
【図６】
0006609140.tif 000007
【図７】
0006609140.tif 000008
【図８】
0006609140.tif 000009
【図９】
0006609140.tif 000010
【図１０】
0006609140.tif 000011
【図１１】
0006609140.tif 000012
【図１２】
0006609140.tif 000013
【図１３】
0006609140.tif 000014
【図１４】
0006609140.tif 000015
【図１５】
0006609140.tif 000016
【図１６】
0006609140.tif 000017
【図１７】
0006609140.tif 000018
【図１８】
0006609140.tif 000019
【図１９】
0006609140.tif 000020