(57)【要約】【課題】印刷ジョブの送信中に省電力状態に移行した場合でも、画像形成装置で余分な印刷が行われることを抑制する情報処理装置を提供する。【解決手段】本発明の情報処理装置は、プリンタドライバで生成された印刷ジョブをスプールするスプーラから前記印刷ジョブを受信し、前記印刷ジョブを制御して画像形成装置に送信する仮想デバイスを備える情報処理装置である。前記仮想デバイスは、前記情報処理装置が省電力状態に移行する場合、前記印刷ジョブのうち受信済のデータの処理を一時停止する一時停止手段と、前記情報処理装置が前記省電力状態から復帰した後、前記印刷ジョブのうち未受信のデータを受信する受信手段と、前記受信手段によって受信された前記データに、前記印刷ジョブの末尾を示す情報が含まれない場合、前記印刷ジョブを削除する削除手段と、を備える。【選択図】図１０
2018037019.tif 000002
【特許請求の範囲】
【請求項１】
プリンタドライバで生成された印刷ジョブをスプールするスプーラから前記印刷ジョブを受信し、前記印刷ジョブを制御して画像形成装置に送信する仮想デバイスを備える情報処理装置であって、
前記仮想デバイスは、
前記情報処理装置が省電力状態に移行する場合、前記印刷ジョブのうち受信済のデータの処理を一時停止する一時停止手段と、
前記情報処理装置が前記省電力状態から復帰した後、前記印刷ジョブのうち未受信のデータを受信する受信手段と、
前記受信手段によって受信された前記データに、前記印刷ジョブの末尾を示す情報が含まれない場合、前記印刷ジョブを削除する削除手段と、を備える
ことを特徴とする情報処理装置。
【請求項２】
前記受信手段によって受信された前記データに、前記印刷ジョブの末尾を示す情報が含まれる場合、前記印刷ジョブの処理を再開する制御手段をさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記仮想デバイスは、
前記プリンタドライバによる前記画像形成装置の状態情報の取得を仲介し、
前記プリンタドライバは、前記仮想デバイスを介して取得した前記画像形成装置の状態情報を用いて前記印刷ジョブを生成する
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記仮想デバイスは、
表示制御手段による前記画像形成装置の状態情報の取得を仲介し、
前記表示制御手段は、前記仮想デバイスを介して取得した前記画像形成装置の状態情報を表示手段に表示する
ことを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記仮想デバイスは、
前記スプーラから受信した前記印刷ジョブをスプールする仮想デバイススプーラと、
前記仮想デバイススプーラから前記印刷ジョブを受信し、前記印刷ジョブを制御して前記画像形成装置に送信する仮想デバイスランゲージモニタと、を含む
ことを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記仮想デバイスランゲージモニタは、
前記仮想デバイススプーラから受信した前記印刷ジョブを保持する保持手段と、
前記仮想デバイススプーラにスプールされる前記印刷ジョブの状態情報と前記画像形成装置の状態情報とを取得する取得手段と、
前記取得手段によって取得された前記印刷ジョブの状態情報と前記画像形成装置の状態情報とに基づいて、前記保持手段によって前記仮想デバイスランゲージモニタに保持される前記印刷ジョブを制御する制御手段と、を備える
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記仮想デバイスランゲージモニタは、
前記仮想デバイススプーラにスプールされる前記印刷ジョブと、前記保持手段によって前記仮想デバイスランゲージモニタに保持される前記印刷ジョブとを対応付けて管理し、
前記仮想デバイススプーラにスプールされる印刷ジョブの状態が変化することに応じて、当該状態の変化に応じた処理を、前記保持手段によって前記仮想デバイスランゲージモニタに保持される前記印刷ジョブに対して行う
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記省電力状態は、作業中のデータがメモリに保存されるスリープ状態であるか、または作業中のデータがディスクに保存される休止状態である
ことを特徴とする請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
情報処理装置で動作する仮想デバイスであって、プリンタドライバで生成された印刷ジョブをスプールするスプーラから印刷ジョブを受信し、前記印刷ジョブを制御して画像形成装置に送信する仮想デバイスの制御方法であって、
前記情報処理装置が省電力状態に移行する場合、前記印刷ジョブのうち受信済のデータの処理を一時停止する一時停止ステップと、
前記情報処理装置が前記省電力状態から復帰した後、前記印刷ジョブのうち未受信のデータを受信する受信ステップと、
前記受信ステップにおいて受信された前記データに、前記印刷ジョブの末尾を示す情報が含まれない場合、前記印刷ジョブを削除する削除ステップと、を備える
ことを特徴とする制御方法。
【請求項１０】
コンピュータを、請求項１から請求項８のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想デバイスを備える情報処理装置、仮想デバイスの制御方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、情報処理装置から画像形成装置を利用する際、プリンタドライバと共にＯＳに組み込まれる「ランゲージモニタ」と呼ばれるモジュールが用いられることが知られている。ランゲージモニタは、スプーラと画像形成装置との間の通信を制御する通信制御モジュールであり、例えばスプーラから印刷ジョブを受信し、印刷ジョブを制御して画像形成装置に送信する。
【０００３】
ランゲージモニタには、スプーラにスプールされる印刷ジョブの状態と、画像形成装置の状態とを取得することにより、本来画像形成装置で管理される印刷ジョブを、情報処理装置で管理する機能を備えるものがある。特許文献１には、スプーラにスプールされる印刷ジョブがキャンセルされることに応じて、対応する印刷ジョブを情報処理装置側で破棄するランゲージモニタについて記載されている。
【０００４】
ところで、近年Ｖｅｒｓｉｏｎ４ドライバ（以下「Ｖ４ドライバ」と記す）と呼ばれるプリンタドライバが普及している。Ｖ４ドライバを使用する印刷システムでは、ランゲージモニタをスプーラの出力先として組み込むことができない仕様となっている。そのため、Ｖ４ドライバ環境においてランゲージモニタによる機能を利用したい場合、スプーラから印刷ジョブを受信し、印刷ジョブを制御して画像形成装置に送信する仮想デバイスを用いる方法がある。仮想デバイスにランゲージモニタ機能を持たせることにより、Ｖ４ドライバ環境においても、情報処理装置で印刷ジョブを管理することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２２２０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、仮想デバイスにおけるランゲージモニタ（以下「仮想デバイスランゲージモニタ」と記す）は、ＯＳが提供するスプーラとの通信を直接行うことができないため、スプーラにスプールされる印刷ジョブの状態変化に応じた対処ができなかった。より詳細には、情報処理装置が省電力状態に移行することにより、スプーラから送信中の印刷ジョブがキャンセルされた場合、仮想デバイスランゲージモニタは、スプーラから送信中の印刷ジョブがキャンセルされたことを認識することができなかった。キャンセルされるまでに送信された印刷ジョブは、情報処理装置が省電力状態から復帰した後にも、仮想デバイスおよび画像形成装置が受信可能な状態で残っているため、画像形成装置で余分な印刷が行われてしまっていた。
【０００７】
本発明は上記課題を解決するためになされたものであり、情報処理装置が印刷ジョブの送信中に省電力状態に移行した場合でも、画像形成装置で余分な印刷が行われることを抑制することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、プリンタドライバで生成された印刷ジョブをスプールするスプーラから前記印刷ジョブを受信し、前記印刷ジョブを制御して画像形成装置に送信する仮想デバイスを備える情報処理装置であって、前記仮想デバイスは、前記情報処理装置が省電力状態に移行する場合、前記印刷ジョブのうち受信済のデータの処理を一時停止する一時停止手段と、前記情報処理装置が前記省電力状態から復帰した後、前記印刷ジョブのうち未受信のデータを受信する受信手段と、前記受信手段によって受信された前記データに、前記印刷ジョブの末尾を示す情報が含まれない場合、前記印刷ジョブを削除する削除手段と、を備える。
【発明の効果】
【０００９】
本発明の情報処理装置は、印刷ジョブの送信中に省電力状態に移行した場合でも、画像形成装置で余分な印刷が行われることを抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】従来技術の情報処理装置において、プリンタドライバと共に使用されるモジュール群を示す模式図である。
【図２】従来技術の情報処理装置において、ランゲージモニタが印刷ジョブを制御する処理手順を示すフローチャートである。
【図３】実施形態における印刷システムの概略構成を示すブロック図である。
【図４】実施形態におけるＶ４ドライバのソフトウェア機能構成を示すブロック図である。
【図５】実施形態における仮想デバイスサービスのソフトウェア機能構成を示すブロック図である。
【図６】実施形態における情報処理装置および画像形成装置のハードウェア構成を示すブロック図である。
【図７】実施形態において、ハイバネーション移行時に仮想デバイススプーラが実行する処理手順を示すフローチャートである。
【図８】実施形態において、ハイバネーション復帰時に仮想デバイススプーラが実行する処理手順を示すフローチャートである。
【図９】実施形態において、ハイバネーション復帰時に仮想デバイスランゲージモニタが実行する処理手順を示すフローチャートである。
【図１０】実施形態の印刷システムにおいて、印刷ジョブの状態遷移を示す図である。
【図１１】実施形態の印刷システムにおいて、印刷ジョブの状態遷移を示す図である。
【図１２】従来技術の印刷システムにおいて、印刷ジョブの状態遷移を示す図である。
【発明を実施するための形態】
【００１１】
本実施形態における情報処理装置の構成を説明する前に、従来技術における情報処理装置の構成について、図１を参照して説明する。図１は、従来技術の情報処理装置１００が備える印刷システムにおいて、プリンタドライバと共に使用されるモジュール群を示す模式図である。
【００１２】
情報処理装置１００では、Ｍｉｃｒｏｓｏｆｔ（登録商標）社が提供するＷｉｎｄｏｗｓ（登録商標）ＯＳが動作し、同じくＭｉｃｒｏｓｏｆｔ社が提供するＶｅｒｓｉｏｎ３ドライバ（以下「Ｖ３ドライバ」と記す）がＯＳに組み込まれている。アプリケーション１０１から印刷を指示するコマンドを受信すると、Ｖ３ドライバ１０２は、印刷ジョブを生成する。Ｖ３ドライバ１０２は、Ｗｉｎｄｏｗｓ標準スプーラ１０３、ランゲージモニタ１０４を経由して印刷ジョブを画像形成装置２００に送信する。従来技術において、ランゲージモニタ１０４はＶ３ドライバ１０２と共にＯＳに組み込まれ、Ｗｉｎｄｏｗｓ標準スプーラ１０３と画像形成装置２００に接続される出力ポートとの間の通信経路に介在させることができる。
【００１３】
ランゲージモニタ１０４は、Ｗｉｎｄｏｗｓ標準スプーラ１０３から受信した印刷ジョブを画像形成装置２００に送信するだけではなく、情報処理装置１００で印刷ジョブを管理可能とすることができる。具体的には、ランゲージモニタ１０４は、Ｗｉｎｄｏｗｓ標準スプーラ１０３から受信した印刷ジョブを、Ｗｉｎｄｏｗｓ標準スプーラ１０３にスプールされる印刷ジョブと対応付けて管理する。そして、ランゲージモニタ１０４は、Ｗｉｎｄｏｗｓ標準スプーラ１０３にスプールされる印刷ジョブの状態が変化することに応じて、その状態の変化に応じた処理を、自身が管理する対応する印刷ジョブに対して行う。
【００１４】
ランゲージモニタ１０４による印刷ジョブの制御の一例を、図２のフローチャートを参照して説明する。図２は、ランゲージモニタ１０４のスプーラ監視の処理手順を示すフローチャートである。図２の処理は、情報処理装置１００内部の不図示の記憶部に記憶されているプログラムを、不図示のＣＰＵが読み出して実行することにより実現される。なお、以降で記す記号Ｓは、フローチャートにおけるステップであることを意味する。図３以降のフローチャートにおいても同様である。
【００１５】
Ｓ２０１において、ランゲージモニタ１０４は、ＯＳが提供するＩ／Ｆを介してＷｉｎｄｏｗｓ標準スプーラ１０３にスプールされる印刷ジョブの状態を確認する。
【００１６】
Ｓ２０２において、ランゲージモニタ１０４は、Ｗｉｎｄｏｗｓ標準スプーラ１０３にスプールされる印刷ジョブ群のうち、キャンセルされた印刷ジョブがあるか否かを判定する。キャンセルされた印刷ジョブがある場合（Ｓ２０２：ＹＥＳ）、Ｓ２０３において、ランゲージモニタ１０４は、ランゲージモニタ１０４が管理し、キャンセルされた印刷ジョブに対応する印刷ジョブをキャンセルする。Ｓ２０３が終了すると、本フローチャートによる処理を終了する。一方、キャンセルされた印刷ジョブがない場合（Ｓ２０２：ＮＯ）、再びＳ２０１の処理に戻る。
【００１７】
Ｗｉｎｄｏｗｓ標準スプーラ１０３に保持される印刷ジョブは、ディスプレイに表示されるユーザインターフェース（ＵＩ）からの指示によってキャンセルされる他、情報処理装置１００が省電力状態に移行することに応じてキャンセルされる場合がある。省電力状態は、作業中のデータがメモリ（ＲＡＭ）に保持されるスリープ状態や、作業中のデータがディスク（ＨＤＤ）に保存される休止状態などがあるが、以下、情報処理装置がハイバネーションによる休止状態に移行／復帰する場合を例に説明する。
【００１８】
情報処理装置１００がハイバネーションによる休止状態に移行した場合、Ｗｉｎｄｏｗｓ標準スプーラ１０３は、休止状態からの復帰後に、送信が中断された印刷ジョブをキャンセルし、印刷ジョブを最初から送信し直す。図２のフローチャートで説明した通り、ランゲージモニタ１０４は、Ｗｉｎｄｏｗｓ標準スプーラ１０３に保持される印刷ジョブのキャンセルに応じて、ランゲージモニタ１０４自身が管理し、キャンセルされた印刷ジョブに対応する印刷ジョブをキャンセルする。
【００１９】
このように、Ｖ３ドライバ１０２と共に使用されるランゲージモニタ１０４は、スプーラにスプールされる印刷ジョブの状態が変化することに応じて、その状態の変化に応じた処理を、自身が管理する対応する印刷ジョブに対して行うことができる。この結果、ハイバネーションによる休止状態から復帰した後、ランゲージモニタ１０４は、送信が中断された印刷ジョブをキャンセルすることにより、画像形成装置２００で余分な印刷が行われることを抑制することができる。
【００２０】
近年Ｖｅｒｓｉｏｎ４ドライバ（以下「Ｖ４ドライバ」と記す）と呼ばれるプリンタドライバが普及している。Ｖ４ドライバを使用する印刷システムでは、ランゲージモニタをスプーラの出力先として組み込むことができない仕様となっている。そのため、Ｖ４ドライバ環境においてランゲージモニタによる機能を利用したい場合、スプーラから印刷ジョブを受信し、印刷ジョブを制御して画像形成装置に送信する仮想デバイスを用いる方法がある。仮想デバイスにランゲージモニタ機能を持たせることにより、Ｖ４ドライバ環境においても、情報処理装置で印刷ジョブを管理することができる。
【００２１】
しかしながら、仮想デバイスランゲージモニタは、ＯＳが提供するスプーラとの通信を直接行うことができないため、スプーラにスプールされる印刷ジョブの状態変化に応じた対処ができなかった。より詳細には、情報処理装置が省電力状態に移行することにより、スプーラから送信中の印刷ジョブがキャンセルされた場合、仮想デバイスランゲージモニタは、スプーラから送信中の印刷ジョブがキャンセルされたことを認識することができなかった。キャンセルされるまでに送信された印刷ジョブは、情報処理装置が省電力状態から復帰した後にも、仮想デバイスサービスおよび画像形成装置が受信可能な状態で残っているため、画像形成装置で余分な印刷が行われてしまっていた。
【００２２】
以上説明した通り、情報処理装置が印刷ジョブの送信中に省電力状態に移行した場合、Ｖ４ドライバを使用する印刷システムにおいては、画像形成装置で余分な印刷が行われてしまうという課題が生じていた。上記課題を解決するための手法について、以下の実施形態で説明する。
【００２３】
以下、本発明を実施するための形態について図面を参照して説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらに限定する趣旨のものではない。
【００２４】
［実施形態］
図３は、本実施形態に係る印刷システム１の概略構成を示すブロック図である。印刷システム１は、Ｖ４ドライバを使用する印刷環境である。図３において実線で表される矢印は、印刷ジョブがやり取りされることを示している。図３において点線で表される矢印は、印刷ジョブ以外のデータがやり取りされることを示している。アプリケーション３０１、Ｗｉｎｄｏｗｓ標準スプーラ３０２、ステータスウィンドウ３０３、Ｖ４ドライバ４００、仮想デバイスサービス５００は、情報処理装置３００のＯＳ上で動作するモジュール群を構成する。
【００２５】
アプリケーション３０１は、情報処理装置３００のＯＳにインストールされ、ユーザが目的に応じて利用するソフトウェアである。ユーザはアプリケーション３０１を用いて印刷を指示することができる。
【００２６】
Ｖ４ドライバ４００は、アプリケーション３０１から印刷を指示するコマンドを受信すると、印刷を指示するコマンドに従い印刷ジョブを生成するソフトウェアである。
【００２７】
Ｗｉｎｄｏｗｓ標準スプーラ３０２は、ＰＣ(Personal Computer)などの情報処理装置３００にインストールされているＯＳ（本実施形態ではＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓとする）の印刷用スプーラである。本実施形態において、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、受信した印刷ジョブを一時的に保持しておき、それらを受信した順番に一つずつ仮想デバイスサービス５００に送信する。具体的には、ループバック方式の通信を用いて、仮想デバイスサービス５００に印刷ジョブが送信される。本実施形態のＷｉｎｄｏｗｓ標準スプーラ３０２は、いかなる印刷ジョブも仮想デバイスサービス５００へ送信する。また、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、印刷ジョブの送信中にハイバネーションが発生し印刷ジョブの送信が中断された場合、ハイバネーション復帰後に、送信が中断された印刷ジョブをキャンセルし、印刷ジョブを最初から送信し直す。
【００２８】
ステータスウィンドウ３０３は、画像形成装置６００、７００の状態（ステータス）の表示や、設定の受付などを可能とするソフトウェアである。ステータスウィンドウ３０３は、ＲＰＣ(Remote Procedure Call)クライアント機能を有しており、ＲＰＣを用いて仮想デバイスサービス５００との通信を行う。ステータスウィンドウ３０３は、仮想デバイスサービス５００に対して画像形成装置の状態情報の取得を命令し、仮想デバイスサービス５００から取得した状態情報に基づいて情報処理装置３００のディスプレイ（不図示）にステータスの表示を行う。さらに、ステータスウィンドウ３０３は、仮想デバイスサービス５００に対して画像形成装置６００，７００の機種情報の取得を命令し、仮想デバイスサービス５００から取得した機種の表示を行う。本実施形態では、機種情報は製品名とする。このように、仮想デバイスサービス５００に画像形成装置６００、７００の状態情報などの取得を命令し、取得した状態情報を情報処理装置３００のディスプレイに表示するステータスウィンドウ３０３は、表示制御手段として機能すると言える。
【００２９】
仮想デバイスサービス５００は、Ｖ４ドライバ４００、Ｗｉｎｄｏｗｓ標準スプーラ３０２、ステータスウィンドウ３０３に対して物理的な画像形成装置であるかのように動作するエミュレーターソフトウェアである。Ｖ４ドライバ４００、Ｗｉｎｄｏｗｓ標準スプーラ３０２、ステータスウィンドウ３０３と、仮想デバイスサービス５００との通信は、情報処理装置３００に組み込まれたＷｉｎｄｏｗｓのネットワーク機能を利用する。
【００３０】
画像形成装置６００、７００は、受信した印刷ジョブに基づいて、用紙などの記録媒体に印刷を行う。画像形成装置６００、７００は機種情報を保持する。本実施形態では、機種情報は製品名とする。
【００３１】
図４は、本実施形態において、Ｖ４ドライバ４００のソフトウェア機能構成を示すブロック図である。
【００３２】
従来、情報処理装置のＯＳ上で動作するＶ３ドライバは、Ｗｉｎ３２と呼ばれるアプリケーションプログラミングインターフェース（以下「ＡＰＩ」と記す）を介してアプリケーション１０１からＯＳ（プリンタドライバを含む）の機能を呼び出していた。そして、Ｖ３ドライバは、Ｄｅｖｍｏｄｅと呼ばれるバイナリデータを印刷設定用のデータとして使用していた。Ｗｉｎ３２ＡＰＩを利用するアプリケーションは、ＧＤＩ(Graphic Device Interface)を呼び出して、描画を行っていた。Ｖ４ドライバが、Ｖ３ドライバと同等のＵＩを使用するためには、Printer Extensionと呼ばれるソフトウェアが情報処理装置３００にインストールされる必要がある。ＵＩ制御部４０１は、ユーザがアプリケーション３０１を用いて印刷を行う場合、Printer ExtensionがインストールされていればPrinter ExtensionのＵＩを表示し、そうでなければＯＳ標準のＵＩを表示する。
【００３３】
印刷設定管理部４０２は、Printer ExtensionのＵＩやＯＳ標準のＵＩにおいて表示される印刷設定項目と、各項目におけるデフォルト値と、ＵＩに入力された値と、をそれぞれ管理する。Ｖ４ドライバにおいて、印刷設定は、Print Ticketと呼ばれる、ＸＭＬ(eXtensible Markup Language)をベースとした新しい印刷設定フォーマットによって管理される。Ｖ４ドライバにおけるＸＭＬは、Ｖ３ドライバにおけるＤＥＶＭＯＤＥ構造体をベースにする印刷設定に代わって登場したものである。
【００３４】
デバイス情報取得部４０３は、印刷ジョブ生成部４０４が印刷ジョブを生成するために必要な画像形成装置の情報を取得する。本実施形態の場合、デバイス情報取得部４０３は、仮想デバイスサービス５００の仲介により画像形成装置６００、７００の情報を取得する。デバイス情報取得部４０３はＲＰＣクライアント機能を有し、仮想デバイスサービス５００と通信を行うことにより、それぞれ画像形成装置６００、７００の情報を取得することができる。
【００３５】
印刷ジョブ生成部４０４は、デバイス情報取得部４０３から取得した画像形成装置の情報と、アプリケーション３０１から送信された印刷設定と、印刷設定管理部４０２が管理する印刷設定項目の値とに応じてレンダリング等を行う。レンダリング後の画像データと、アプリケーション３０１から送信された印刷設定とから印刷ジョブが生成される。印刷ジョブ生成部４０４は、レンダリング後の画像データに加えて、印刷設定項目の値や、印刷ジョブの先頭／末尾を示す情報など、印刷ジョブに関する各種情報を印刷ジョブの中に埋め込むことができる。印刷ジョブ生成部４０４が受信するデータ形式は、ＸＰＳ(XML Paper Specification)である。Ｗｉｎ３２ＡＰＩを利用するアプリケーションが、ＧＤＩを呼び出すとＯＳ内部で自動的にＸＰＳに変換され、ＸＰＳドライバ（本実施形態ではＶ４ドライバ４００）が呼び出される。ＷＰＦ(Windows Presentation Foundation)アプリケーションから印刷を行う場合、そのままＸＰＳドライバが呼び出される。
【００３６】
ＰＤＬ変換部４０５は、印刷ジョブ生成部４０４によって生成された印刷ジョブを、送信先の画像形成装置が対応するＰＤＬ(Page Description Language)形式に変換する。
【００３７】
デバイスＩＦ部４０６は、Ｗｉｎｄｏｗｓ標準スプーラ３０２に印刷ジョブを送信する。
【００３８】
図５は、本実施形態において、仮想デバイスサービス５００のソフトウェア機能構成を示すブロック図である。仮想デバイスサービス５００は、少なくとも１つ以上の仮想デバイスを有する。本実施形態の仮想デバイスサービス５００は、画像形成装置６００、７００にそれぞれ接続される仮想デバイス５１０、５２０を有する。仮想デバイスサービス５００は、仮想デバイスの登録／削除を受け付ける機能を備える。仮想デバイスサービス５００は、不図示のインストーラによって情報処理装置３００にインストールされる際に、情報処理装置３００が有する受信ポート番号の指定を必要とする。仮想デバイスサービス５００は、指定された受信ポート番号と仮想デバイス５１０、５２０とをそれぞれ対応付けて管理する。仮想デバイスサービス５００は、登録された仮想デバイスを実行する機能を備える。仮想デバイスの実行は、仮想デバイスサービス５００が実行された時、または仮想デバイスが新たに登録されたときに行われる。仮想デバイス５１０は、受信部５１１、ＲＰＣサーバ５１２、仮想デバイススプーラ５１３、仮想デバイスランゲージモニタ５１４、ポートモニタ５１５から構成される。また、仮想デバイス５１０は、機種情報を有する。本実施形態において機種情報は製品名であり、仮想デバイス５１０の仮想デバイススプーラ５１３に保持される。
【００３９】
受信部５１１は、仮想デバイス５１０と対応付けられた受信ポート番号を介してＷｉｎｄｏｗｓ標準スプーラ３０２から受信した印刷ジョブを、仮想デバイススプーラ５１３に渡す。
【００４０】
ＲＰＣサーバ５１２は、ＲＰＣ通信によりステータスウィンドウ３０３やデバイス情報取得部４０３などのＲＰＣクライアント機能を有する外部モジュールと仮想デバイススプーラ５１３との通信を仲介する。
【００４１】
仮想デバイススプーラ５１３は、受信部５１１から渡された印刷ジョブを格納するキューを有し、格納した印刷ジョブの管理と、仮想デバイスランゲージモニタ５１４への送信を行う。なお、本実施形態では、仮想デバイススプーラ５１３は、一時停止やキャンセルなどの印刷ジョブの状態情報や、印刷ジョブを最後まで受信したか否かを示す印刷ジョブ終了フラグなどの、印刷ジョブに付随する情報を用いて印刷ジョブの管理を行う。また、仮想デバイススプーラ５１３は、管理下にある印刷ジョブに対して、印刷ジョブに付随する情報の取得や、印刷ジョブの削除要求など、印刷ジョブを制御するためのアクセス手段を提供する。このようなアクセス手段は、仮想デバイスランゲージモニタ５１４などによって利用される。また、仮想デバイススプーラ５１３は、ＲＰＣサーバ５１２を介して送信された各種命令の受信、および各種命令への応答を行う。また、仮想デバイススプーラ５１３は、仮想デバイスランゲージモニタ５１４への各種命令の送信、および各種命令への応答受付を行う。本実施形態の仮想デバイススプーラ５１３は、自身が所属している仮想デバイス５１０の機種情報として、製品名を保持するものとする。さらに、仮想デバイススプーラ５１３は、ＯＳからのメッセージを受信して、メッセージの種類に応じた動作を行う機能も有する。
【００４２】
仮想デバイスランゲージモニタ５１４は、印刷ジョブの制御、および、各種情報の管理を行うモジュールであり、仮想デバイススプーラ５１３から受信した印刷ジョブを、ポートモニタ５１５を介して画像形成装置６００へ送信する。仮想デバイスランゲージモニタ５１４は、仮想デバイススプーラ５１３から受信した印刷ジョブを、仮想デバイススプーラ５１３に保持されている印刷ジョブと対応付けて管理することができる。仮想デバイスランゲージモニタ５１４は、仮想デバイススプーラ５１３の印刷ジョブの状態を監視し、仮想デバイススプーラ５１３における状態の変化に応じて、自身が管理する対応する印刷ジョブの制御を行う。例えば、仮想デバイススプーラ５１３における印刷ジョブがキャンセルされた場合、仮想デバイスランゲージモニタ５１４が管理する対応する印刷ジョブについても印刷ジョブのキャンセルが行われる。仮想デバイスランゲージモニタ５１４は、Ｖ４ドライバ４００およびステータスウィンドウ３０３からの命令に応じて、ポートモニタ５１５を介して、画像形成装置６００への各種命令の送信、および、画像形成装置６００から情報を取得する。本実施形態において、仮想デバイスランゲージモニタ５１４は、画像形成装置６００の印刷状況、状態情報、設定情報、およびエラー情報などを取得する。また、画像形成装置６００と接続された際に、仮想デバイスランゲージモニタ５１４は、画像形成装置６００の製品名を取得することもできる。仮想デバイスランゲージモニタ５１４は、自身が保持する情報と、画像形成装置６００から取得した情報とに基づいて、印刷可否を判定することができる。そして、仮想デバイスランゲージモニタ５１４は、画像形成装置６００がエラー状態であると判断した場合、印刷処理を停止するなどのエラー処理を行う。また、仮想デバイスランゲージモニタ５１４は、画像形成装置６００がエラー状態から復帰したと判断した場合、印刷ジョブの処理を再開することができる。
【００４３】
また、仮想デバイスランゲージモニタ５１４は、仮想デバイススプーラ５１３から各種命令を受信し、受信した各種命令に対する応答を行う。例えば、ステータスウィンドウ３０３から仮想デバイススプーラ５１３を介して画像形成装置６００の状態情報を取得する命令を受信した場合、仮想デバイスランゲージモニタ５１４は、上記画像形成装置６００の状態情報を応答する。
【００４４】
さらに、仮想デバイスランゲージモニタ５１４は、受信した印刷ジョブを解析することにより、印刷ジョブに関する各種情報を取得することができる。印刷ジョブに関する情報は、例えば印刷時のページ設定（２つ切りなど）や、印刷ジョブを構成するページのページ数などである。
【００４５】
ポートモニタ５１５は、仮想デバイスランゲージモニタ５１４と、画像形成装置６００との通信の仲介を行う。画像形成装置６００は機種ごとに取り扱える通信方式（例えば、ＬＡＮまたはＵＳＢなど）が異なる場合があり、画像形成装置６００に特化した通信処理を行う。仮想デバイス５２０は、情報処理装置３００が使用可能なポートの内、仮想デバイス５１０と通信を行うポートとは別のポートを介して画像形成装置７００と接続されている。仮想デバイス５２０も仮想デバイス５１０と同様の動作を行うことができる。仮想デバイス５２０のソフトウェア機能構成は、仮想デバイス５１０のものと同じであるため説明を省略する。
【００４６】
図６は、本実施形態における情報処理装置および画像形成装置のハードウェア構成を示すブロック図である。図６の情報処理装置３００は、ＣＰＵ３１１、ＲＡＭ３１２、ＲＯＭ３１３、記憶部３１４、外部接続Ｉ／Ｆ３１５、Ｉ／Ｆ制御部３１６とを含んで構成される。さらに、各構成部はバス３１７を介して通信可能に接続されている。ＣＰＵ３１１は演算回路からなり、情報処理装置を統括制御する。ＣＰＵ３１１はＲＯＭ３１３または記憶部３１４に記憶されたプログラムをＲＡＭ３１２に読み出し、種々の処理を実行する。ＲＯＭ３１３は記憶領域としての機能を有し、種々のプログラムが記憶される。記憶部３１４は例えばＨＤＤ(Hard Disk Drive)、ＳＳＤ(Solid State Drive)等により構成されるディスクであり、記憶領域としての機能を有する。外部接続Ｉ／Ｆ３１５は、情報処理装置に種々の機器を接続するためのものである。例えば、外部接続Ｉ／Ｆ３１５を介して、ディスプレイ、キーボード、マウス等を接続することができる。Ｉ／Ｆ制御部３１６は、ＣＰＵ３１１の制御に基づいてＬＡＮと情報処理装置とのデータの入出力を制御する。なお、Ｉ／Ｆ制御部３１６とＬＡＮとの接続においては、有線による接続および無線による接続のいずれの形態であってもよい。
【００４７】
図６では、有線ＬＡＮ(Local Area Network)に接続された画像形成装置６００を例に説明する。ＣＰＵ６０１は、画像形成装置６００の全体の動作を制御する。ＲＡＭ６０２は、ＣＰＵ６０１の主メモリ、ワークエリア等として機能するとともに、各種データの格納領域としても用いられる。またこのＲＡＭ６０２は、ＮＶＲＡＭ（Non-Volatile RAM：不揮発性ＲＡＭ）領域も備えており、不図示の増設用ソケットにオプションＲＡＭを増設することにより、メモリ容量が拡張される。ＲＯＭ６０３は、各種フォントを記憶するフォントＲＯＭ６０３ａ、ＣＰＵ６０１により実行される制御プログラム等を記憶するプログラムＲＯＭ６０３ｂ、および各種データを記憶するデータＲＯＭ６０３ｃを備える。Ｉ／Ｆ制御部６０４は、情報処理装置３００との間でデータの送受信を行なうインターフェース（Ｉ／Ｆ）である。本実施形態では、情報処理装置３００とＩ／Ｆ制御部６０４とが、有線ＬＡＮによる送受信を行う例について説明するが、ネットワークの接続形態は有線であっても無線であっても構わない。
【００４８】
印刷部Ｉ／Ｆ６０５は、プリンタエンジンである印刷部６０６との画像データの送受信を制御する。外部メモリ６０９は、外部メモリＩ／Ｆ６０８を介してアクセスが提供されており、オプションとして接続されるハードディスクドライブ（ＨＤＤ）、Ｓｏｌｉｄ Ｓｔａｔｅ Ｄｉｓｋ（ＳＳＤ）等によって構成される。外部メモリ６０９は、フォントデータ、フォームデータ等を記憶する。さらに、画像形成装置６００で一時的に作成したり、画像形成装置６００の外部とやり取りを行うためのファイル６１０を記憶することもできる。なお、ハードディスク等の外部メモリ６０９が接続されていない場合には、ＲＯＭ６０３のデータＲＯＭ６０３ｃに、情報処理装置３００で利用される情報等を記憶することになる。また、この外部メモリ６０９は、複数備えられていてもよい。例えば、内蔵フォントに加えてオプションフォントデータや、言語系の異なるプリンタ制御言語を解釈するために用いられるプログラム等を格納した外部メモリを、画像形成装置６００の内部・外部バスに複数接続可能に構成されていてもよい。
【００４９】
操作部６０７には、ユーザによる操作を受け付け可能な操作パネルが設けられ、操作パネルにはスイッチおよびＬＥＤ表示器等が配置されている（不図示）。また、操作部６０７は、不図示のＮＶＲＡＭを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。ＣＰＵ６０１は、プログラムＲＯＭ６０３ｂに記憶された制御プログラム等に基づき、印刷部Ｉ／Ｆ６０５を介して有線ＬＡＮ経由で印刷部６０６に画像データを出力する。また、ＣＰＵ６０１は、Ｉ／Ｆ制御部６０４を介して情報処理装置３００と相互に通信を行うことが可能となっている。そして、画像形成装置６００は、情報処理装置３００から送信される印刷ジョブを受信すると共に、画像形成装置６００の情報を情報処理装置３００に通知することができる。すなわち、画像形成装置６００と、情報処理装置３００との間には、双方向通信経路が構成されている。なお、画像形成装置７００は、ＵＳＢＩ／Ｆ経由で情報処理装置３００と接続される点以外は、画像形成装置６００と同じ構成で実現可能である。実施形態はＩ／Ｆの種類を問わないため、画像形成装置７００の詳細な説明は省略する。
【００５０】
図７は、本実施形態において、ハイバネーションにより情報処理装置３００が休止状態に移行（以後「ハイバネーション移行」とも記す）するときに、仮想デバイススプーラ５１３が実行する処理手順を示すフローチャートである。図７のフローチャートによる処理は、情報処理装置１００のＲＯＭ３１３や記憶部３１４に記憶されているプログラムを、ＣＰＵ３１１が読み出して実行することにより実現される。以下の図８、図９のフローチャートにおいても同様である。また、図７のフローチャートによる処理は、仮想デバイススプーラ５１３が、ハイバネーションを予告するメッセージを、ＯＳから受信部５１１を介して受信した後に開始される。
【００５１】
Ｓ７０１において、仮想デバイススプーラ５１３は、受信部５１１を介して受信中の印刷ジョブが存在するか否かを判定する。受信中の印刷ジョブが存在しない場合（Ｓ７０１：ＮＯ）、Ｓ７０２をスキップして本フローチャートによる処理を終了する。受信中の印刷ジョブが存在する場合（Ｓ７０１：ＹＥＳ）、Ｓ７０２に移行する。
【００５２】
Ｓ７０２において、仮想デバイススプーラ５１３は、受信中の印刷ジョブのうち未受信のデータの処理を一時停止する。Ｓ７０２において、受信中の印刷ジョブのうち未受信のデータの処理が一時停止されると、本フローチャートによる処理を終了する。
【００５３】
ハイバネーション移行前の処理の具体例を、図１０（ａ）を参照して説明する。図１０（ａ）はハイバネーション移行時における印刷ジョブの状態の一例を示している。図１０（ａ）では、Ｖ４ドライバ４００によって１０ページ分のページデータからなる印刷ジョブが生成され、仮想デバイスサービス５００、ＬＡＮを経由して送信された印刷ジョブが、画像形成装置６００によって出力される例が示される。
【００５４】
図１０（ａ）に示される通り、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、９ページ分のページデータを送信済みであり、９ページ目のページデータは、仮想デバイススプーラ５１３に送信中である。仮想デバイススプーラ５１３は、Ｗｉｎｄｏｗｓ標準スプーラ３０２から８ページ分のページデータを受信済みであり、６ページ分のページデータを仮想デバイスランゲージモニタ５１４に送信済みである。このとき、仮想デバイススプーラ５１３は、受信中の印刷ジョブが存在すると判定し（Ｓ７０１）、受信中の印刷ジョブのうち未受信のデータの処理を一時停止する（Ｓ７０２）。例えば、仮想デバイススプーラ５１３は、７ページ目以降のページデータを仮想デバイスランゲージモニタ５１４に送信する処理を一時停止する。
【００５５】
前述の通り、仮想デバイスランゲージモニタ５１４は、仮想デバイススプーラ５１３の印刷ジョブの状態を監視し、仮想デバイススプーラ５１３における状態の変化に応じて、自身が管理する印刷ジョブを制御する。具体的には、仮想デバイススプーラ５１３が印刷ジョブの処理を一時停止したことに応じて、仮想デバイスランゲージモニタ５１４も、自身が管理する印刷ジョブの処理を一時停止する。図１０（ａ）に示される通り、仮想デバイスランゲージモニタ５１４は、５ページ分のページデータを画像形成装置６００に送信済みである。このとき、仮想デバイスランゲージモニタ５１４は、６ページ以降のページデータを画像形成装置６００に送信する処理を一時停止する。
【００５６】
図１１（ａ）もハイバネーション移行時における印刷ジョブの状態の一例を示している。図１１（ａ）に示される通り、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、１０ページ分のページデータを送信済みであり、１０ページ目のページデータは、仮想デバイススプーラ５１３に送信中である。仮想デバイススプーラ５１３は、Ｗｉｎｄｏｗｓ標準スプーラ３０２から９ページ分のページデータを受信済みであり、７ページ分のページデータを仮想デバイスランゲージモニタ５１４に送信済みである。さらに、仮想デバイスランゲージモニタ５１４は６ページ分のページデータを画像形成装置６００に送信済みである。つまり、図１１（ａ）は、Ｗｉｎｄｏｗｓ標準スプーラ３０２が、印刷ジョブの送信を完了した直後にハイバネーションが発生した場合における印刷ジョブの状態を示している。このときも、仮想デバイススプーラ５１３は、受信中の印刷ジョブが存在すると判定し（Ｓ７０１）、受信中の印刷ジョブのうち未受信のデータの処理を一時停止する（Ｓ７０２）。すなわち、仮想デバイススプーラ５１３は、８ページ目以降のページデータを仮想デバイスランゲージモニタ５１４に送信する処理を一時停止する。
【００５７】
図８は、本実施形態において、ハイバネーションにより情報処理装置３００が休止状態から復帰（以後「ハイバネーション復帰」とも記す）するときに、仮想デバイススプーラ５１３が実行する処理手順を示すフローチャートである。
【００５８】
Ｓ８０１において、仮想デバイススプーラ５１３は、ハイバネーション移行時に、受信中の印刷ジョブが存在していたか否かを判定する。受信中の印刷ジョブが存在していた場合（Ｓ８０１：ＹＥＳ）Ｓ８０２に移行し、受信中の印刷ジョブが存在していなかった場合（Ｓ８０１：ＮＯ）、Ｓ８０２〜Ｓ８０６をスキップし本フローチャートによる処理を終了する。
【００５９】
Ｓ８０２において、仮想デバイススプーラ５１３は、受信が中断された印刷ジョブのうち、未受信のデータを受信する。本実施形態において、Ｗｉｎｄｏｗｓ標準スプーラ３０２と、仮想デバイススプーラ５１３とのデータの送受信は、情報処理装置３００内において、Ｗｉｎｄｏｗｓネットワーク機能を用いて仮想的に行われる。９ページ目のページデータ（図１０（ａ））のように、Ｗｉｎｄｏｗｓネットワーク機能により送信中のデータは情報処理装置３００の記憶部３１４に退避されるため、ハイバネーション復帰が行われてもロストしない。
【００６０】
Ｓ８０３において、仮想デバイススプーラ５１３は、Ｓ８０２で受信したデータを解析する。
【００６１】
Ｓ８０４において、仮想デバイススプーラ５１３は、Ｓ８０３における解析結果に基づき、受信したデータ内に印刷ジョブの末尾を示す情報が含まれているか否かを判定する。本実施形態では、印刷ジョブの末尾を示す情報として、印刷ジョブの末尾を示すコードである「ＪＣ＿ＪＯＢ＿ＥＮＤ」などが用いられる。印刷ジョブの末尾を示すコードが含まれている場合、仮想デバイススプーラ５１３は、ハイバネーションによって受信が中断された印刷ジョブについて、印刷ジョブを構成する全てのデータを受信したと認識することができる。受信したデータ内に印刷ジョブの末尾を示す情報が含まれている場合（Ｓ８０４：ＹＥＳ）、Ｓ８０５に移行する。
【００６２】
Ｓ８０５において、仮想デバイススプーラ５１３は、印刷ジョブの処理の一時停止を解除し、Ｓ８０２で受信が完了した印刷ジョブの処理を再開する。Ｓ８０５の処理を終了すると、本フローチャートによる処理を終了する。
【００６３】
一方、印刷ジョブの末尾を示すコードが含まれていない場合、仮想デバイススプーラ５１３は、ハイバネーションによって受信が中断された印刷ジョブについて、印刷ジョブを構成する全てのデータを受信していないと認識することができる。受信したデータ内に印刷ジョブの末尾を示す情報が含まれていない場合（Ｓ８０４：ＮＯ）、Ｓ８０６に移行する。
【００６４】
Ｓ８０６において、仮想デバイススプーラ５１３は、印刷ジョブをキャンセルする。例えば、仮想デバイススプーラ５１３は、ハイバネーション移行前にスプールしていた印刷ジョブを削除する。Ｓ８０６の処理を終了すると、本フローチャートによる処理を終了する。
【００６５】
図９は、本実施形態において、ハイバネーションにより情報処理装置３００が休止状態から復帰するときに、仮想デバイスランゲージモニタ５１４が実行する処理手順を示すフローチャートである。
【００６６】
Ｓ９０１において、仮想デバイスランゲージモニタ５１４は、仮想デバイススプーラ５１３の印刷ジョブの処理の状態を取得する。本実施形態では、印刷ジョブの処理の状態として、仮想デバイススプーラ５１３が印刷ジョブの処理を一時停止しているか否かを示す情報や、仮想デバイススプーラ５１３が印刷ジョブをキャンセルしたか否かを示す情報などが取得される。
【００６７】
Ｓ９０２において、仮想デバイスランゲージモニタ５１４は、情報処理装置３００および画像形成装置の状態を取得する。本実施形態では、情報処理装置３００の状態として、例えばハイバネーション復帰前の休止状態であるか否かの情報や、画像形成装置との通信状態を示す情報などが取得される。同様に、画像形成装置の状態として、例えば印刷ジョブの処理状態を示す情報や、情報処理装置３００との通信状態を示す情報などが取得される。
【００６８】
Ｓ９０３において、仮想デバイスランゲージモニタ５１４は、Ｓ９０２で取得した情報処理装置３００および画像形成装置の情報に基づき、情報処理装置３００と画像形成装置との接続が回復したか否かを判定する。接続が回復したと判定された場合（Ｓ９０３：ＹＥＳ）、Ｓ９０４に移行し、接続が回復していないと判定された場合（Ｓ９０３：ＮＯ）、再びＳ９０１に戻る。
【００６９】
Ｓ９０４において、仮想デバイスランゲージモニタ５１４は、Ｓ９０１で取得した印刷ジョブの処理の状態に基づき、仮想デバイススプーラ５１３の印刷ジョブがキャンセルされたか否かを判定する。仮想デバイススプーラ５１３の印刷ジョブがキャンセルされている場合（Ｓ９０４：ＹＥＳ）、Ｓ９０７に移行する。一方、仮想デバイススプーラ５１３の印刷ジョブがキャンセルされていない場合（Ｓ９０４：ＮＯ）、Ｓ９０５に移行する。
【００７０】
Ｓ９０７において、仮想デバイスランゲージモニタ５１４は、自身が管理する印刷ジョブをキャンセルする。すなわち、仮想デバイススプーラ５１３が印刷ジョブを削除することに応じて、仮想デバイスランゲージモニタ５１４も、自身が管理する印刷ジョブを削除する。Ｓ９０７の処理を終了すると、本フローチャートによる処理を終了する。
【００７１】
Ｓ９０５において、仮想デバイスランゲージモニタ５１４は、Ｓ９０１で取得した印刷ジョブの処理の状態に基づき、仮想デバイススプーラ５１３の印刷ジョブの処理が再開されたか否かを判定する。仮想デバイススプーラ５１３によって印刷ジョブの処理が再開されている場合（Ｓ９０５：ＹＥＳ）、Ｓ９０６に移行し、再開されていない場合（Ｓ９０５：ＮＯ）、再びＳ９０１に戻る。
【００７２】
Ｓ９０６において、仮想デバイスランゲージモニタ５１４は、自身が管理する印刷ジョブの処理を再開する。すなわち、仮想デバイススプーラ５１３が印刷ジョブの処理の一時停止を解除することに応じて、仮想デバイスランゲージモニタ５１４も、自身が管理する印刷ジョブの処理の一時停止を解除する。Ｓ９０６の処理を終了すると、本フローチャートによる処理を終了する。
【００７３】
ハイバネーション復帰後の処理の具体例を、図１０（ｂ）を参照して説明する。図１０（ｂ）はハイバネーション復帰時における印刷ジョブの状態の一例を示している。図１０（ｂ）に示される通り、ハイバネーション復帰後、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、１０ページ目のページデータの送信をキャンセルし、１０ページ分のページデータを最初から送信し直す。一方、仮想デバイススプーラ５１３は、受信が中断された９ページ目のデータを受信する（Ｓ８０２）。しかしながら、９ページ目のページデータには印刷ジョブの末尾を示す情報が含まれていない（Ｓ８０４：ＮＯ）。そのため、仮想デバイススプーラ５１３は、スプールしていた８ページ分のページデータと、Ｓ８０２で受信した９ページ目のページデータとを削除し、印刷ジョブをキャンセルする（Ｓ８０６）。
【００７４】
このとき、仮想デバイススプーラ５１３が印刷ジョブを削除することに応じて、仮想デバイスランゲージモニタ５１４も、自身が管理する６ページ分のページデータを削除する（Ｓ９０７）。この結果、仮想デバイスランゲージモニタ５１４からハイバネーション移行前に送信された５ページ分のページデータと、Ｗｉｎｄｏｗｓ標準スプーラ３０２から復帰後に再送信される１０ページ分のページデータとに基づく印刷が画像形成装置６００で行われる。図１０（ａ）（ｂ）の実施例においては、合計１５ページ分の印刷物が出力されることになる。
【００７５】
図１１（ｂ）もハイバネーション復帰時における印刷ジョブの状態の一例を示している。図１１（ｂ）に示される通り、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、ハイバネーション移行前に１０ページ分のページデータの送信を完了しているため、印刷ジョブの再送信を行わない。一方、仮想デバイススプーラ５１３は、受信が中断された１０ページ目のデータを受信する（Ｓ８０２）。本実施例では、１０ページ目のページデータには印刷ジョブの末尾を示す情報が含まれている（Ｓ８０４：ＹＥＳ）。そのため、仮想デバイススプーラ５１３は、スプールしていた９ページ分のページデータと、Ｓ８０２で受信した１０ページ目のページデータとを含む印刷ジョブの処理を再開する（Ｓ８０５）。
【００７６】
このとき、仮想デバイススプーラ５１３が印刷ジョブの処理を再開することに応じて、仮想デバイスランゲージモニタ５１４も、ハイバネーション復帰後に受信する８ページ目以降と合わせて、１０ページ分のページデータの処理を再開する（Ｓ９０６）。この結果、ハイバネーションにより受信が中断された印刷ジョブがキャンセルされず、情報処理装置３００から送信された１０ページ分のページデータに基づいて、１０ページ分の印刷が画像形成装置６００で行われる。図１１（ａ）（ｂ）の実施例においては、１０ページ分の印刷物が出力されることになる。
【００７７】
次に、本実施形態の情報処理装置３００によってもたらされる効果を、図１２（ａ）（ｂ）を参照して説明する。図１２（ａ）（ｂ）は従来技術における印刷ジョブの状態遷移の一例を示す図である。
【００７８】
図１２（ａ）はハイバネーション移行時における印刷ジョブの状態の一例を示し、各印刷ジョブの状態は、図１０（ａ）と同じである。すなわち、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、９ページ分のページデータを送信済みであり、９ページ目のページデータは、仮想デバイススプーラ５１３に送信中である。仮想デバイススプーラ５１３は、Ｗｉｎｄｏｗｓ標準スプーラ３０２から８ページ分のページデータを受信済みであり、６ページ分のページデータを仮想デバイスランゲージモニタ５１４に送信済みである。仮想デバイスランゲージモニタ５１４は、５ページ分のページデータを画像形成装置６００に送信済みである。
【００７９】
図１２（ｂ）はハイバネーション復帰時における印刷ジョブの状態を示す図である。図１２（ｂ）に示される通り、ハイバネーション復帰後、Ｗｉｎｄｏｗｓ標準スプーラ３０２は、１０ページ目のページデータの送信をキャンセルし、１０ページ分のページデータを最初から送信し直す。従来技術においては、印刷ジョブを構成する全てのデータを受信したか否かの判定（Ｓ８０４）、および、受信が中断された印刷ジョブのキャンセル（Ｓ８０６、Ｓ９０７）が行われない。そのため、仮想デバイススプーラ５１３は、スプールしていた８ページ分のページデータと、ハイバネーション移行後に受信した９ページ目のページデータとを含む印刷ジョブの処理を再開する。
【００８０】
このとき、仮想デバイススプーラ５１３が印刷ジョブの処理を再開することに応じて、仮想デバイスランゲージモニタ５１４も、ハイバネーション復帰後に受信する７ページ目以降と合わせて、９ページ分のページデータの処理を再開する。この結果、Ｗｉｎｄｏｗｓ標準スプーラ３０２からハイバネーション移行前に送信された９ページ分のページデータと、ハイバネーション復帰後に再送信される１０ページ分のページデータとに基づく印刷が画像形成装置６００で行われる。図１２（ａ）（ｂ）の実施例においては、合計１９ページ分の印刷物が出力されることになり、本実施形態（図１０（ａ）（ｂ））と比較して４ページ分の印刷物が余分に出力されてしまう。
【００８１】
以上説明した通り、本実施形態の仮想デバイスサービスは、情報処理装置が省電力状態に移行する場合、印刷ジョブのうち受信済のデータの処理を一時停止する。仮想デバイスサービスは、情報処理装置が省電力状態から復帰した後、印刷ジョブのうち未受信のデータに印刷ジョブの末尾を示す情報が含まれない場合、印刷ジョブを削除する。係る構成により、本実施形態の情報処理装置は、印刷ジョブの送信中に省電力状態に移行した場合でも、画像形成装置で余分な印刷が行われることを抑制することができる。
【００８２】
また、上述の実施形態においては、省電力状態は、所定のイベントをトリガとして作業中のデータがディスク（ＨＤＤなど）に保存される休止状態である場合を例に説明したが、実施形態はこれに限られない。例えば、別実施形態においては、作業中のデータがメモリ（ＲＡＭ）に保持されるスリープ状態であっても、上述の実施形態を適用することができる。
【００８３】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2018037019.tif 000003
【図２】
2018037019.tif 000004
【図３】
2018037019.tif 000005
【図４】
2018037019.tif 000006
【図５】
2018037019.tif 000007
【図６】
2018037019.tif 000008
【図７】
2018037019.tif 000009
【図８】
2018037019.tif 000010
【図９】
2018037019.tif 000011
【図１０】
2018037019.tif 000012
【図１１】
2018037019.tif 000013
【図１２】
2018037019.tif 000014