(57)【要約】【課題】  ネットワーク接続されたプリンタのステータス情報をリアルタイム性の高い状態で取得しユーザに通知することが可能な情報処理方法およびプリントシステムを提供する。【解決手段】  情報処理方法は、情報処理装置に投入されたジョブが、プリンタにプリント動作を行わせるためのプリントジョブであるか、プリント動作を行わせること無くステータス情報を取得するためのステータス取得ジョブであるか、を判断する判断工程を有する。また、判断工程において、情報処理装置に投入されたジョブがステータス取得ジョブであると判断された場合に、プリンタに処理不要のダミーデータを送信する送信工程を有する。【選択図】図７
2019070926.tif 000002
【特許請求の範囲】
【請求項１】
プリンタのステータス情報を情報処理装置が取得するための情報処理方法であって、
投入されたジョブが、前記プリンタにプリント動作を行わせるためのプリント用ジョブであるか、前記プリンタにプリント動作を行わせること無く前記ステータス情報を取得するためのステータス取得ジョブであるか、を判定する判定工程と、
前記判定工程において、投入されたジョブが前記ステータス取得ジョブであると判定された場合に、前記プリンタから応答を取得させるためのダミーデータを送信する送信工程と、
を有することを特徴とする情報処理方法。
【請求項２】
前記送信工程においてＯＳ（オペレーティングシステム）に前記ダミーデータを送信されることにより、前記ＯＳを介して前記ダミーデータが前記プリンタに送信され、
前記ステータス情報は、前記ＯＳにより取得されることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記ステータス情報は、前記情報処理装置のステータス情報格納部に保存され、
前記ステータス情報格納部に格納された前記ステータス情報に基づき、前記プリンタのステータスが表示されることを特徴とする請求項２に記載の情報処理方法。
【請求項４】
前記ＯＳと前記プリンタとの通信が行われているかを確認する確認工程を更に有し、
前記送信工程は、前記確認工程において前記通信が行われていることが確認されるまで繰り返されることを特徴とする請求項２又は３に記載の情報処理方法。
【請求項５】
前記判定工程、前記送信工程はプリンタドライバにより実行され、
前記ステータス情報の保存は、前記ＯＳが第１プリントプロトコルを用いて取得した情報に基づいて、前記ＯＳが前記ステータス情報を保存する第１の保存方法と、前記第１プリントプロトコルとは異なる第２プリントプロトコルを用いて前記ＯＳを介して前記プリンタドライバが取得した情報に基づいて、前記プリンタドライバが前記ステータス情報を保存する第２の保存方法、の少なくとも一方によって行われることを特徴とする請求項２から４のいずれか１項に記載の情報処理方法。
【請求項６】
前記プリンタドライバにより、前記ＯＳと前記プリンタとの通信が正常に行われているかを確認する確認工程を更に有し、
前記確認工程において前記通信が正常に行われていることが確認された場合、前記ステータス情報の保存処理は前記第２の保存方法で行われ、
前記確認工程において前記通信が正常に行われていないことが確認された場合、前記ステータス情報の保存は前記第１の保存方法で行われることを特徴とする請求項５に記載の情報処理方法。
【請求項７】
前記プリンタが前記第２プリントプロトコルをサポートしているか判定する第２判定工程と、
ステータス情報格納部に格納されている前記ステータス情報の有効又は無効を設定する設定工程と、
を更に備え、
前記第２判定工程により前記第２プリントプロトコルをサポートしていると判定された場合、前記ステータス情報格納部に格納されている前記ステータス情報を無効に設定し、
前記確認工程により前記第２プリントプロトコルによる通信が正常に行われていないと確認された場合、前記無効に設定された前記ステータス情報を有効に書き換え、
前記ステータス情報が有効に書き換えられた後、前記第１の保存方法による前記ステータス情報の保存処理が実行されることを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記プリンタが前記第２プリントプロトコルをサポートしているか判定する第２判定工程と、
ステータス情報格納部に格納されている前記ステータス情報の有効又は無効を設定する設定工程と、
前記ステータス情報格納部に格納されている情報の取得を行う工程と、
を更に備え、
前記第２判定工程により前記第２プリントプロトコルをサポートしていると判定された場合、前記ステータス情報格納部に格納されている前記ステータス情報を有効に設定し、
前記ステータス情報格納部から前記ステータス情報が取得された場合、前記有効に設定された前記ステータス情報を無効に書き換え、
前記ステータス情報が無効に書き換えられた後、前記第２の保存方法による前記ステータス情報の保存処理が実行されることを特徴とする請求項５に記載の情報処理方法。
【請求項９】
前記第１の保存方法による前記ステータス情報の保存が行われた後に、前記第２の保存方法による前記ステータス情報の保存が更に行われ、
前記第１の保存方法によって前記ステータス情報格納部に格納された前記ステータス情報の表示、前記第２の保存方法によって前記ステータス情報格納部に格納された前記ステータス情報の表示と、が行われることを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記第１プリントプロトコルはＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）であり、前記第２プリントプロトコルはＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）であることを特徴とする請求項５から９のいずれか１項に記載の情報処理方法。
【請求項１１】
前記判定工程において、前記情報処理装置に投入されたジョブが前記プリント用ジョブであると判定された場合に、プリントデータを生成する工程
を更に有することを特徴とする請求項２から１０のいずれか１項に記載の情報処理方法。
【請求項１２】
前記プリンタの応答を取得するためのデータはＮＵＬＬデータであることを特徴とする請求項１から１１のいずれか１項に記載の情報処理方法。
【請求項１３】
前記ステータス情報は前記プリンタが搭載しているインクタンクのインク残量情報であることを特徴とする請求項１から１２のいずれか１項に記載の情報処理方法。
【請求項１４】
プリンタのステータス情報を情報処理装置が取得するための情報処理方法を実行させるためのプログラムであって、前記情報処理方法は、
投入されたジョブが、前記プリンタにプリント動作を行わせるためのプリント用ジョブであるか、前記プリンタにプリント動作を行わせること無く前記ステータス情報を取得するためのステータス取得ジョブであるか、を判定する判定工程と、
前記判定工程において、投入されたジョブが前記ステータス取得ジョブであると判定された場合に、前記プリンタから応答を取得させるためのダミーデータを送信する送信工程と、
を有することを特徴とするプログラム。
【請求項１５】
前記送信工程においてＯＳに前記ダミーデータを送信されることにより、前記ＯＳを介して前記ダミーデータが前記プリンタに送信され、
前記ステータス情報は、前記ＯＳにより取得されることを特徴とする請求項１４に記載のプログラム。
【請求項１６】
前記ステータス情報は、前記情報処理装置のステータス情報格納部に保存され、
前記ステータス情報格納部に格納された前記ステータス情報に基づき、前記プリンタのステータスが表示されることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記ＯＳと前記プリンタとの通信が行われているかを確認する確認工程を更に有し、
前記送信工程は、前記確認工程において前記通信が行われていることが確認されるまで繰り返されることを特徴とする請求項１５又は１６に記載のプログラム。
【請求項１８】
前記判定工程、前記送信工程はプリンタドライバにより実行され、
前記ステータス情報の保存は、前記ＯＳが第１プリントプロトコルを用いて取得した情報に基づいて、前記ＯＳが前記ステータス情報を保存する第１の保存方法と、前記第１プリントプロトコルとは異なる第２プリントプロトコルを用いて前記ＯＳを介して前記プリンタドライバが取得した情報に基づいて、前記プリンタドライバが前記ステータス情報を保存する第２の保存方法、の少なくとも一方によって行われることを特徴とする請求項１５から１７のいずれか１項に記載のプログラム。
【請求項１９】
前記プリンタドライバにより、前記ＯＳと前記プリンタとの通信が正常に行われているかを確認する確認工程を更に有し、
前記確認工程において前記通信が正常に行われていることが確認された場合、前記ステータス情報の保存処理は前記第２の保存方法で行われ、
前記確認工程において前記通信が正常に行われていないことが確認された場合、前記ステータス情報の保存は前記第１の保存方法で行われることを特徴とする請求項１８に記載のプログラム。
【請求項２０】
前記プリンタが前記第２プリントプロトコルをサポートしているか判定する第２判定工程と、
ステータス情報格納部に格納されている前記ステータス情報の有効又は無効を設定する設定工程と、
を更に備え、
前記第２判定工程により前記第２プリントプロトコルをサポートしていると判定された場合、前記ステータス情報格納部に格納されている前記ステータス情報を無効に設定し、
前記確認工程により前記第２プリントプロトコルによる通信が正常に行われていないと確認された場合、前記無効に設定された前記ステータス情報を有効に書き換え、
前記ステータス情報が有効に書き換えられた後、前記第１の保存方法による前記ステータス情報の保存処理が実行されることを特徴とする請求項１９に記載のプログラム。
【請求項２１】
前記プリンタが前記第２プリントプロトコルをサポートしているか判定する第２判定工程と、
ステータス情報格納部に格納されている前記ステータス情報の有効又は無効を設定する設定工程と、
前記ステータス情報格納部に格納されている情報の取得を行う工程と、
を更に備え、
前記第２判定工程により前記第２プリントプロトコルをサポートしていると判定された場合、前記ステータス情報格納部に格納されている前記ステータス情報を有効に設定し、
前記ステータス情報格納部から前記ステータス情報が取得された場合、前記有効に設定された前記ステータス情報を無効に書き換え、
前記ステータス情報が無効に書き換えられた後、前記第２の保存方法による前記ステータス情報の保存処理が実行されることを特徴とする請求項１８に記載のプログラム。
【請求項２２】
前記第１の保存方法による前記ステータス情報の保存が行われた後に、前記第２の保存方法による前記ステータス情報の保存が更に行われ、
前記第１の保存方法によって前記ステータス情報格納部に格納された前記ステータス情報の表示、前記第２の保存方法によって前記ステータス情報格納部に格納された前記ステータス情報の表示と、が行われることを特徴とする請求項２１に記載のプログラム。
【請求項２３】
前記第１プリントプロトコルはＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）であり、前記第２プリントプロトコルはＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）であることを特徴とする請求項１８から２２のいずれか１項に記載のプログラム。
【請求項２４】
前記判定工程において、前記情報処理装置に投入されたジョブが前記プリント用ジョブであると判定された場合に、プリントデータを生成する工程
を更に有することを特徴とする請求項１９から２３のいずれか１項に記載のプログラム。
【請求項２５】
前記プリンタの応答を取得するためのデータはＮＵＬＬデータであることを特徴とする請求項１４から２４のいずれか１項に記載のプログラム。
【請求項２６】
前記ステータス情報は前記プリンタが搭載しているインクタンクのインク残量情報であることを特徴とする請求項１４から２５のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプリントシステムにおいてプリンタのステータス情報を取得する方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）に組み込み可能なオペレーティングシステム（以下、ＯＳと称す）としてＡｐｐｌｅ社のｍａｃＯＳ（登録商標）が知られている。ｍａｃＯＳでは、所定のユーティリティを用いて、有線または無線で接続されたプリンタのステータスを取得したり、プリンタが搭載するインクタンクのインク残量などの情報を画面上に表示したりすることができる。
【０００３】
この際、ユーティリティは、プリンタのサポートする通信プロトコルやＰＣとプリンタの接続環境に応じて、プリンタベンダーが提供するベンダーモジュール又はＯＳの提供するＯＳ標準モジュールを動作させることができる。ベンダーモジュール又はＯＳ標準モジュールは、特定のタイミングでプリンタのステータス情報を取得し、ユーティリティが参照可能な共有領域にこれを保存する。ユーティリティは、共有領域に保存された情報から必要な情報を読み取ってＰＣの画面上に表示する。
【０００４】
特許文献１には、印刷プロトコルを識別し、印刷プロトコルに応じてＰＣとプリンタの双方向通信のための設定を行うことにより、ユーザが印刷プロトコルを意識しなくても、最適なプリントシステム環境が自動的に構築される方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−３２６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ｍａｃＯＳ環境において、ベンダーモジュール（プリンタドライバ）は、ＵＳＢバックエンドやＩＰＰバックエンドのようなＯＳ標準モジュールを介してしか、接続されたプリンタとの間で双方向通信を行うことはできない。その上、ＩＰＰバックエンドにおいては、プリンタのステータス情報などは、プリンタに対しプリントデータを送信したときしか取得できない状況であった。
【０００７】
このため、従来では、ユーザがプリンタのインク残量などを確認しようとＰＣのユーティリティにアクセスした場合、ユーティリティは前回のプリント動作時に取得され保存された情報に基づいて画面表示を行っていた。すなわち、ユーザは、インク残量などのプリンタのステータスについて、リアルタイム性の高い情報を確認することが困難な状況であった。
【０００８】
本発明は上記問題点を解消するためになされたものである。よってその目的とするところは、ネットワーク接続されたプリンタのステータス情報をリアルタイム性の高い状態で取得しユーザに通知することが可能な情報処理方法およびプリントシステムを提供することである。
【課題を解決するための手段】
【０００９】
そのために本発明は、プリンタのステータス情報を情報処理装置が取得するための情報処理方法であって、投入されたジョブが、前記プリンタにプリント動作を行わせるためのプリント用ジョブであるか、前記プリンタにプリント動作を行わせること無く前記ステータス情報を取得するためのステータス取得ジョブであるか、を判定する判定工程と、前記判定工程において、投入されたジョブが前記ステータス取得ジョブであると判定された場合に、前記プリンタから応答を取得させるためのダミーデータを送信する送信工程と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ネットワーク接続されたプリンタのステータス情報をリアルタイム性の高い状態で取得しユーザに通知することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明で使用可能なプリントシステムのハード構成を示す図
【図２】プリントシステムのソフトウェア構成を示す図
【図３】ディスプレイに表示されるインク残量表示画面を示す図
【図４】ステータス情報を確認する場合にユーティリティが実行するフローチャート
【図５】ドライバが起動された時のフローチャート
【図６】ＵＳＢ接続用ステータス情報取得処理を説明するためのフローチャート
【図７】ＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャート
【図８】ＰＰＤファイルに記憶されている具体的なパラメータ内容を示す図
【図９】ＵＳＢバックエンドが起動された時のフローチャート
【図１０】ＩＰＰバックエンドが起動された時のフローチャート
【図１１】ＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャート
【図１２】ＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャート
【図１３】ステータス情報を確認する場合にユーティリティが実行するフローチャート
【図１４】ＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャート
【図１５】ディスプレイに表示されるインク残量表示画面を示す図
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。
【００１３】
（第１の実施形態）
図１は、本実施形態で使用するプリントシステムのハード構成を示す図である。図では、本発明の情報処理装置であるＰＣ０１に対し、プリンタＡ４０、プリンタＢ５０、プリンタＣ６０の３つのプリンタが接続されている。プリンタＡ４０は通信インタフェース２０によって有線接続されている。ここでは、通信インタフェースとしてはＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）を使用しているものとする。プリンタＢ５０およびプリンタＣ６０はネットワーク３０を介して接続されている。ネットワークとしては、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを使用することができる。ネットワークの接続形態としては有線無線を問わず、またこれらが混在していても構わない。
【００１４】
ＰＣ０１は、ＣＰＵ１００、ＲＯＭ１０１、ハードディスク１０３、ＲＡＭ１０２、ディスクコントローラ１０４、ディスプレイＩ／Ｆ１０５、キーボード／マウスＩ／Ｆ１０６、通信制御部１０７などを備え、これらはバス１０８によって相互接続されている。ＣＰＵ１００は、ＲＯＭ１０１やハードディスク１０３に記憶されているプログラムに従い、ＲＡＭ１０２をワークエリアとして用いながら、ＰＣ０１に含まれるデバイス全体を制御する。例えば、ＯＳやアプリケーションソフトウェアも、所定のプログラムがＲＯＭ１０１やハードディスク１０３から読み出されＲＡＭ１０２にロードされた後、ＣＰＵ１００がそのプログラムに従って各種処理を実行することによって実現される。後に説明するフローチャートについても、ＣＰＵ１００がプログラムに従ってＲＡＭ１０２をワークエリアとしながら実行する処理である。
【００１５】
図２は、上記プリントシステムのソフトウェア構成を示す図である。本実施形態ではＯＳプリントシステムとしてｍａｃＯＳに含まれるＣＵＰＳ（Ｃｏｍｍｏｎ  ＵＮＩＸ（登録商標）  Ｐｒｉｎｔｉｎｇ  Ｓｙｓｔｅｍ）を想定している。
【００１６】
図１でも説明したように、ＰＣ０１とプリンタＡ４０は、ＵＳＢケーブルで接続されている。ＰＣ０１とプリンタＢ５０およびプリンタＣ６０は、ネットワーク接続されている。プリンタＢ５０とプリンタＣ６０は、プリントプロトコルとしてＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）をサポートしている。プリンタＣ６０については、更にＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）もサポートしている。以下、夫々のプリンタの制御構成について簡単に説明する。
【００１７】
プリンタＡ４０は、ＵＳＢ  Ｉ／Ｆ４１、プリント制御部４２、プリント部４３を含んでいる。ＵＳＢ  Ｉ／Ｆ４１は、ＰＣ０１との間でデータの相互通信を行うためのインタフェースである。プリント制御部４２は、ＵＳＢ  Ｉ／Ｆ４１より受信したプリントデータや各種コマンド、更に装置内に予め記憶されているプログラムに従って、プリント部４３を制御する。プリント部４３には、プリントヘッドやこれにインクを供給するインクタンク、プリント用紙の搬送系など実際にプリント動作を実行する機構が含まれている。プリントすべきプリントデータを、ＵＳＢ  Ｉ／Ｆ４１を介して受信すると、プリント制御部４２は、受信したプリントデータに従ってプリント部４３を制御し、プリント用紙に画像をプリントする。また、ＵＳＢ  Ｉ／Ｆ４１を介してステータス要求コマンドを受信すると、プリント制御部４２は、要求されたステータス情報をＵＳＢ  Ｉ／Ｆ４１を介して発信する。
【００１８】
プリンタＢ５０は、ネットワークＩ／Ｆ５１、ＩＰＰ制御部５２、プリント制御部５３、プリント部５４を含んでいる。ネットワークＩ／Ｆ５１、プリント制御部５３、プリント部５４についてはプリンタＡ４０と同じ機能を有する。ＩＰＰ制御部５２は、ネットワーク  Ｉ／Ｆ５１がＩＰＰプロトコルで受信したプリントデータや各種コマンドを、プリント制御部５３が対応可能な形式にして提供する。また、プリンタのステータス要求コマンドが受信されたときは、装置のステータス情報をＩＰＰプロトコルでネットワーク  Ｉ／Ｆ５１に提供する。
【００１９】
プリンタＣ６０は、ネットワーク  Ｉ／Ｆ６１、ＩＰＰ制御部６２、プリント制御部６３、プリント部６４およびＳＮＭＰ制御部６５を含んでいる。ネットワーク  Ｉ／Ｆ６１、ＩＰＰ制御部６２、プリント制御部６３、プリント部６４についてはプリンタＢ５０と同じ機能を有する。ＳＮＭＰ制御部６５は、ネットワーク  Ｉ／Ｆ６１よりＳＮＭＰプロトコルでメッセージを受信したとき、これを解釈して応答する。
【００２０】
次に、ＰＣ０１側のソフトウェア構成について説明する。アプリケーション０２は、ユーザの指示の下で画像データ（アプリケーションデータ）を生成するソフトウェアである。ユーザが画像のプリントを指示すると、アプリケーション０２は、生成した画像データをプリンタの種類やプリント品位などを指定するパラメータとともにＯＳプリントシステム０５に提供する。
【００２１】
ユーティリティ０３は、プリント動作とは別に、ＰＣ０１と各種プリンタとの間で情報のやり取りを行うためのソフトウェアである。例えばユーザは、ユーティリティ０３を介して、プリンタＡ４０、Ｂ５０、Ｃ６０のそれぞれに搭載されているインクの残量を確認することができる。
【００２２】
ドライバ０４はプリンタベンダーが提供する個々のプリンタに対応づけられたソフトウェアモジュール（プリンタドライバ）であり、プリンタが処理可能なプリントデータを生成する。ユーティリティがプリンタのステータス情報を表示する際は、対応するドライバがプリンタのステータス情報を取得し、ユーティリティがユーザに対し詳細且つ丁寧に表示できるように情報の体裁を整えて、共有領域に保存するのが一般である。
【００２３】
ＯＳプリントシステム０５は、アプリケーション０２やユーティリティ０３と、ドライバ０４と、各種プリンタとの間を仲介し、ユーザからのコマンドを適切に処理して個々のプリンタに対応したジョブを生成したり、プリンタから取得した情報を管理したりする。ベンダーモジュールであるドライバ０４もＯＳプリントシステム０５によって起動され、ＯＳプリントシステム０５を介してアプリケーション０２やユーティリティ０３からの指示を受けたり情報を提供したりする。
【００２４】
ＯＳプリントシステム０５には、各種プリンタと相互通信するための通信部としてのバックエンドが、通信形態ごとに用意されている。本実施形態においては、ＯＳ標準として、ＵＳＢバックエンド０６とＩＰＰバックエンド０７が用意されているものとする。ＵＳＢで接続されているプリンタＡ４０と接続するとき、ＯＳプリントシステム０５は、ドライバ０４とＵＳＢバックエンド０６を起動する。その後ドライバ０４は、ＵＳＢバックエンド０６を介してプリンタＡ４０との相互通信を行う。一方、ネットワーク接続されているプリンタＢ５０またはプリンタＣ６０と接続するとき、ＯＳプリントシステム０５は、ドライバ０４とＩＰＰバックエンド０７を起動する。その後ドライバ０４は、ＩＰＰバックエンド０７を利用してプリンタＡ４０との相互通信を行う。この際、プリンタＣ６０については、ＳＮＭＰをサポートしているので、ＩＰＰバックエンド０７はＳＮＭＰでの相互通信も行う。
【００２５】
ＯＳプリントシステム０５には、各種プリンタのステータス情報を記憶しておくためのステータス情報格納部１１が用意されている。本実施形態では、主としてインク残量情報の格納部として利用している。ステータス情報格納部１１には、ＵＳＢバックエンド０６やＩＰＰバックエンド０７が夫々のプリンタから取得した情報を直接書き込むこともできる。また、ステータス情報格納部１１には、ドライバ０４がＵＳＢバックエンド０６やＩＰＰバックエンド０７から取得した情報に所定の処理を加えた後に書き込むこともできる。
【００２６】
ＰＰＤファイル１０は、プリンタベンダーが提供するファイル（ＰｏｓｔＳｃｒｉｐｔ Ｐｒｉｎｔｅｒ Ｄｅｓｃｒｉｐｔｉｏｎ）であり、接続されているプリンタごとに管理されている。ＰＰＤファイル１０には、解像度や対応可能な用紙サイズなど、個々のプリンタの仕様や通信方法などが記述されている。ＯＳプリントシステム０５およびドライバ０４は、ＰＰＤファイル１０に記憶されている対応するプリンタの情報に基づいて、そのプリンタに送信するためのプリントデータを生成したりプリント動作を制御したりする。
【００２７】
また、ＰＰＤファイル１０には、ＩＰＰバックエンド０７によるインク残量情報のステータス情報格納部１１への書き込みを有効とするか無効とするかを示すインク残量保存パラメータ１２も、プリンタごとに管理されている。ドライバ０４やＩＰＰバックエンド０７は、ＯＳプリントシステム０５を介してＰＰＤファイル１０のインク残量保存パラメータ１２を参照し、その内容に応じてプリンタのインク残量情報を取得し、得られた残量情報をステータス情報格納部１１に保存する。詳細については後述する。
【００２８】
以上の構成のもと、ユーザがアプリケーション０２で作成した画像のプリントコマンドが発信されると、アプリケーション０２により作成された画像データに、プリンタの種類やプリントモード、プリント枚数などのパラメータを付随したデータが生成される。そして、ＯＳプリントシステム０５はこれをドライバ０４に送る。ドライバ０４は、受け取ったデータをプリント用ジョブとして解析し、付随情報に従って画像データに所定の画像処理を施し、指定されたプリンタがプリント可能なプリントデータに変換した上で、そのデータをＯＳプリントシステム０５に提供する。ＯＳプリントシステム０５は、対応するバックエンドを起動して、バックエンドを介してプリントデータをプリンタへ送信する。
【００２９】
すなわち、プリンタＡ４０でのプリントが指定されたコマンドであれば、ＯＳプリントシステム０５は、ＵＳＢバックエンド０６を起動し、ＵＳＢ  Ｉ／Ｆ０８を介して、プリントデータをプリンタＡ４０に送信する。プリンタＢ５０またはプリンタＣ６０でのプリントが指定されたコマンドであれば、ＯＳプリントシステム０５は、ＩＰＰバックエンド０７を起動し、ネットワーク  Ｉ／Ｆ０９を介して、プリントデータをプリンタＢ５０またはプリンタＣ６０に送信する。
【００３０】
一方、ユーザは、プリント動作とは別に、ユーティリティ０３を用いてインク残量など、プリンタのステータスを確認することができる。図３は、ユーザがインク残量を確認する場合に、ユーティリティ０３がディスプレイに表示するインク残量表示画面７０の例である。インク残量表示画面７０には、プリンタ選択ポップアップメニュー７１と、インクタンク名称７２と、夫々のインクタンクに対応する残量表示バー７３と、表示ボタン７４とが表示されている。
【００３１】
プリンタ選択ポップアップメニュー７１は、ユーザがインク残量を確認したいプリンタを指定するためのメニューであり、上下の矢印をクリックすることによってプリンタの種類を変更することができる。図では、「プリンタＡ」を指定した場合を示している。インク残量を確認したいプリンタをポップアップメニュー７１で指定した後、表示ボタン７４をクリックすると、指定されたプリンタに搭載されているインクタンク名称７２と、個々のインクタンクに対応する残量表示バー７３が表示される。図では、「プリンタＡ」がブラック（Ｂｌａｃｋ）、シアン（Ｃｙａｎ）、マゼンタ（Ｍａｇｅｎｔａ）、イエロー（Ｙｅｌｌｏｗ）の４種類のインクタンクを搭載している場合を示している。そして、残量表示バー７３における塗りつぶしの領域が多いほど、対応するインクタンクに収容されているインク残量が多いことを意味している。
【００３２】
なお、プリンタによって、搭載可能なインクタンクの種類や数は様々である。例えばモノクロプリンタの場合は、ブラックインクを収容するタンクが１つだけ搭載され、インク残量表示画面７０には、インクタンク名称７２と対応する残量表示バー７３が１つずつ表示される。また、ライトシアン、ライトマゼンタ、グレーのようなライトインクや、レッド、グリーン、ブルーのような特色インクを搭載するプリンタであれば、これら全てのインクに対応するインクタンク名称７２と残量表示バー７３が、互いに対応づけた状態で表示される。いずれにしても、ユーザがプリンタ選択ポップアップメニュー７１でプリンタを指定し、その状態で表示ボタン７４をクリックすれば、指定されたプリンタに搭載されているインクタンクの名称と対応するインク残量が表示されるようになっている。
【００３３】
以下、ユーザが、ユーティリティ０３を用いてプリンタのインク残量を確認するコマンドを発生させた場合に、個々のソフトウェアモジュールが実行する処理について具体的に説明する。なお、以下では、図２で示した個々のソフトウェアモジュールが実行するものとして幾つかのフローチャートを説明するが、ハードウェア的には、図１のＣＰＵ１００がＲＯＭ１０１またはハードディスク１０３に記憶されたプログラムに従って実行することになる。
【００３４】
図４は、ユーザがユーティリティ０３を用いて、プリンタのステータス情報を確認する場合に、ユーティリティ０３が実行する工程を説明するためのフローチャートである。ここではプリンタのステータス情報の一例としてインク残量情報を取得する場合を例に説明するが、プリンタに関する他の情報であっても、ユーティリティ０３は以下のフローに従って処理することができる。
【００３５】
本処理は、図３に示すインク残量表示画面７０において、ユーザが表示ボタン７４をクリックすることにより開始される。本処理が開始されると、ユーティリティ０３は、ステップＳ１１において、インク残量取得ジョブをＯＳプリントシステム０５に投入する。この際、インク残量取得ジョブには、インク残量表示画面７０のプリンタ選択ポップアップメニュー７１で選択されたプリンタ名も含まれている。
【００３６】
次にユーティリティ０３は、ＯＳプリントシステム０５にアクセスし、ステップＳ１１で発信したインク残量取得ジョブの処理状態を取得し（ステップＳ１２）、インク残量取得ジョブの処理が完了したか否かを判定する（ステップＳ１３）。ステップＳ１３でジョブは完了したと判定できるまで、ユーティリティ０３はステップＳ１２およびＳ１３の処理を繰り返す。
【００３７】
ステップＳ１３でジョブが完了したと判定すると、ユーティリティ０３はステップＳ１４に進み、ＯＳプリントシステム０５のステータス情報格納部１１に保存されているインク残量情報を取得する。
【００３８】
更にステップＳ１５において、ユーティリティ０３はステップＳ１４で取得したインク残量情報に基づいて、インク残量表示画面７０を表示する。すなわち、図３に示すように、取得したインク残量情報を、インクタンク名称７２と残量表示バー７３を対応づけて表示する。以上で本処理は終了する。
【００３９】
図５は、ドライバ０４が起動された場合に、ドライバ０４が実行する処理の工程を説明するためのフローチャートである。本処理は、ＯＳプリントシステム０５が、アプリケーション０２よりプリント用ジョブを受信したり、ユーティリティ０３よりステータス情報取得ジョブを受信したりした場合に、ドライバ０４を起動することによって開始される。
【００４０】
本処理が開始されると、ドライバ０４は、まず、ステップＳ２１において、受信したジョブがプリント用ジョブであるか、ステータス情報取得ジョブであるかを判定する。プリント用ジョブである場合、ステップＳ２２に進み、ドライバ０４は受信したプリント用ジョブに含まれる画像データに所定の画像処理を施し、プリント用ジョブに指定されるプリンタが処理可能なプリントデータを生成する。その後、ステップＳ２３に進み、ドライバ０４は、ステップＳ２２で生成したプリントデータを、ＯＳプリントシステム０５の指定されたプリンタに対応するバックエンドを介して、当該プリンタに送信する。
【００４１】
一方、ステップＳ２１で、受信したジョブがステータス情報取得ジョブであると判定した場合、ドライバ０４はステップＳ２４に進み、ジョブで指定されているプリンタとの接続形態がＩＰＰ接続であるか否かを判定する。そして、ＩＰＰ接続ではないと判定した場合、ドライバ０４はステップＳ２５に進み、ＵＳＢ接続用のステータス情報取得処理を実行する。一方、ＩＰＰ接続と判定した場合は、ステップＳ２６に進み、ＩＰＰ接続用のステータス情報取得処理を実行する。以上で本処理を終了する。
【００４２】
図６は、ステータス情報取得処理としてインク残量取得ジョブが投入された場合に、図５のステップＳ２５でドライバ０４が実行するＵＳＢ接続用ステータス情報取得処理を説明するためのフローチャートである。本処理が開始されると、ドライバ０４は、ステップＳ３１において、ＯＳプリントシステムのＵＳＢバックエンド０６を介して、指定されたプリンタ（本実施形態の場合はプリンタＡ４０）のステータス情報を取得する。
【００４３】
ステップＳ３２において、ドライバ０４は、ステップＳ３１で取得したステータス情報にインク残量情報が含まれているか否かを判定する。ステップＳ３１におけるステータス情報の取得処理とステップＳ３２における判定処理は、インク残量情報が含まれていると判定できるまで繰り返す。
【００４４】
ステップＳ３２でインク残量情報が含まれていると判定すると、ドライバ０４はステップＳ３３に進み、ドライバ０４は、ステータス情報の中からインク残量情報を取り出してこれをＯＳプリントシステム０５のステータス情報格納部１１に保存する。以上で本処理を終了する。
【００４５】
なお、ここでは、インク残量取得ジョブが投入された場合を前提としているため、ステータス情報の中からインク残量情報のみを抽出し保存する内容で説明しているが、ドライバ０４が取得の対象とする情報は、他のステータス情報とすることもできる。この場合、ドライバ０４は、図６で説明した工程と同様の工程でその情報を取得し、ステータス情報格納部１１の所定の場所にその情報を保存すれば良い。
【００４６】
図７は、ステータス情報取得処理としてインク残量取得ジョブが投入された場合に、図５のステップＳ２６でドライバ０４が実行するＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャートである。本処理が開始されると、ドライバ０４は、まずステップＳ４１において、ＯＳプリントシステム０５を介してＰＰＤファイル１０にアクセスし、対応するプリンタのインク残量保存パラメータ１２を参照する。
【００４７】
図８（ａ）〜（ｃ）は、ＰＰＤファイル１０に記憶されている具体的なパラメータ内容を示す図である。図８（ａ）はプリンタＡ４０のＰＰＤファイル、図８（ｂ）はプリンタＢ５０のＰＰＤファイル、図８（ｃ）はプリンタＣ６０のＰＰＤファイルの一部をそれぞれ示している。それぞれのＰＰＤファイルには、プリンタの製品名を示すＫｅｙ「＊ＭｏｄｅｌＮａｍｅ」と、そのプリンタのインク残量保存パラメータを示すＶａｌｕｅ「＊ｃｕｐｓＩＰＰＳｕｐｐｌｉｅｓ」が互いに対応づけられて記憶されている。
【００４８】
Ｋｅｙとなる「＊ＭｏｄｅｌＮａｍｅ」については、「Ｐｒｉｎｔｅｒ  Ａ」、「Ｐｒｉｎｔｅｒ  Ｂ」、「Ｐｒｉｎｔｅｒ  Ｃ」のような名称が記載されている。Ｖａｌｕｅとなる「＊ｃｕｐｓＩＰＰＳｕｐｐｌｉｅｓ」については、「Ｔｒｕｅ」または「Ｆａｌｓｅ」のいずれかが記載されている。ここで、「Ｔｒｕｅ」は、対応するプリンタのインク残量情報の、ＩＰＰバックエンド０７による保存を「有効」とすることを意味している。一方、「Ｆａｌｓｅ」は、対応するプリンタのインク残量情報の、ＩＰＰバックエンド０７による保存を「無効」とすることを意味している。ドライバ０４やＩＰＰバックエンド０７は、Ｋｅｙ「＊ＭｏｄｅｌＮａｍｅ」を指定してＯＳプリントシステム０５に問い合わせることにより、指定したＫｅｙに対応づけられたＶａｌｕｅを認識することができる。
【００４９】
図８（ａ）〜（ｃ）によれば、ＵＳＢ接続されているプリンタＡ４０と、インターネット接続であるがＳＮＭＰをサポートしているプリンタＣ６０については「Ｆａｌｓｅ」が設定されている。これは、プリンタＡ４０とプリンタＣ６０については、インク残量情報の保存を、ＩＰＰバックエンド０７ではなくドライバ０４に行わせることを意味している。一方、インターネット接続であり、且つＳＮＭＰをサポートしていないプリンタＢ５０については「Ｔｒｕｅ」が設定されている。これは、プリンタＢ５０については、インク残量情報の保存をＩＰＰバックエンド０７に行わせることを意味している。
【００５０】
図７のフローチャートに戻る。ステップＳ４１でインク残量保存パラメータを参照すると、ドライバ０４はステップＳ４２に進み、設定内容が「Ｔｒｕｅ」であるか「Ｆａｌｓｅ」であるかを判定する。「Ｔｒｕｅ」である場合、ドライバ０４はＩＰＰバックエンド０７に対し１バイト分のＮＵＬＬデータを送信し（ステップＳ４３）、本処理を終了する。
【００５１】
一方、ステップＳ４２で設定内容が「Ｆａｌｓｅ」である場合、ドライバ０４はステップＳ４４でＩＰＰバックエンド０７に対しＳＮＭＰ応答要求を送信する。そして、ステップＳ４５でドライバ０４はＩＰＰバックエンド０７に対しＮＵＬＬデータを送信し、更にステップＳ４６でＳＮＭＰ応答を受信する。
【００５２】
ステップＳ４７で、ドライバ０４は、ステップＳ４６で受信した情報の中にインク残量情報が含まれているか否かを判定する。そして、ステップＳ４７で受信した情報の中にインク残量情報が含まれていると判定できるまで、上記ステップＳ４４〜Ｓ４７の工程を繰り返す。
【００５３】
ステップＳ４７でインク残量情報が含まれていると判定すると、ドライバ０４はステップＳ４８に進み、ステータス情報の中からインク残量情報を取り出してこれをＯＳプリントシステム０５のステータス情報格納部１１に保存する。以上で本処理を終了する。
【００５４】
なお、ステップＳ４３やＳ４５で、ドライバ０４が、１バイト分のＮＵＬＬデータをＩＰＰバックエンド０７に送信するのは、以下の理由によるものである。すなわち、ｍａｃＯＳが提供する標準モジュールであるＩＰＰバックエンド０７が、何らかのプリントデータを受信しないと、プリンタの応答を取得しないためである。つまり、本実施形態では、インク残量の確認などユーティリティ０３からプリント動作を伴わないジョブがＯＳプリントシステム０５に投入された場合であっても、ＩＰＰバックエンド０７にプリンタの応答を取得させるために、ＮＵＬＬデータを利用している。そして、このＮＵＬＬデータは、プリンタにとって処理不要なダミーデータである。このような、プリンタからの応答を取得するためのダミーとしての役割を果せるのであれば、ステップＳ４３やＳ４５でドライバ０５が送信するデータは必ずしもＮＵＬＬデータでなくても良い。プリンタの起動コマンドやプリンタが読み捨てる空文字とすることもできる。
【００５５】
図９は、ＵＳＢバックエンド０６がＯＳプリントシステム０５によって起動された際にＵＳＢバックエンド０６が実行する処理を説明するためのフローチャートである。本処理が開始されると、ＵＳＢバックエンド０６は、ステップＳ６１において、ＵＳＢ接続されたプリンタに対しステータス取得スレッドを発動する。すなわちＵＳＢバックエンド０６は、プリント用ジョブによって起動された場合であっても、プリント用ジョブに従ったプリントデータの送信と、ステータス取得ジョブに従ったプリンタのステータス情報の取得とを、並行して行う。
【００５６】
ステップＳ６１でステータス取得スレッドを発動した後、ＵＳＢバックエンド０６はステップＳ６２に進み、ドライバ０４よりプリントデータを受信しているか否かを判定する。プリントデータの受信が確認された場合はステップＳ６３に進み、ドライバ０４よりプリントデータを受信し、それをＵＳＢ  Ｉ／Ｆ０８を介してプリンタ（本例の場合はプリンタＡ４０）に送信する。プリントデータを受け取ったプリンタＡ４０は、受け取ったプリントデータに従って画像をプリントする。
【００５７】
ステップＳ６４でのデータ送信が完了すると、ＵＳＢバックエンド０６は再びステップＳ６２に戻り、新たなプリントデータの受信の有無を確認する。このような、ステップＳ６３におけるプリントデータの受信とステップＳ６４におけるプリントデータの送信は、ステップＳ６２で新たなプリントデータの受信は無いと判定されるまで繰り返す。
【００５８】
ステップＳ６２で新たなプリントデータの受信は無いと判定すると、ＵＳＢバックエンド０６はステップＳ６５に進み、ドライバ０４が処理を終了しているか否かを判定する。処理を終了していない場合は、更なるプリントデータが発生している可能性があるので、ＵＳＢバックエンド０６は次のプリントデータの受信の有無を確認するためにステップＳ６２に戻る。一方、ステップＳ６５で、ドライバ０４が処理を終了したと判定した場合は、ステップＳ６６に進み、ステップＳ６１で発動したステータス取得スレッドの停止を要求した後、本処理を終了する。
【００５９】
一方、ステップＳ６１でステータス取得スレッドが発動された以降、ステータス取得ジョブは、ステップＳ６６でステータス取得スレッドの停止が発動されるまで、上述したプリント用ジョブと並行に行われる。以下、ステータス取得ジョブについて説明する。
【００６０】
ステップＳ６１でステータス取得スレッドが発動されると、ＵＳＢバックエンド０６は、ステータス取得コマンドをプリンタに送信することにより、ステータス取得ジョブを開始する（ステップＳ７０）。その後、ステップＳ７３でデータ取得スレッド停止要求が確認されるまで、プリンタからのステータス情報の取得（ステップＳ７１）と、取得したステータス情報のドライバ０４への送信（ステップＳ７２）を繰り返す。この際のステータス情報としては、インク残量のほか、例えばプリント動作の進行状況などを含むこともできる。ステップＳ７３でデータ取得スレッド停止要求が確認されると、本処理は終了する。
【００６１】
図１０は、ＩＰＰバックエンド０７がＯＳプリントシステム０５によって起動された際に、ＩＰＰバックエンド０７が実行する処理を説明するためのフローチャートである。本処理が開始されると、ＩＰＰバックエンド０７は、まずステップＳ８１において、ドライバ０４よりデータを受信しているか否かを判定し、データの受信が確認されるまで待機する。
【００６２】
ステップＳ８１でデータの受信が確認されるとステップＳ８２に進み、データを受信する。ＯＳプリントシステム０５がアプリケーション０２よりプリント用ジョブを受けてＩＰＰバックエンド０７を起動した場合、ＩＰＰバックエンド０７がステップＳ８２で受信するデータは、図５のステップＳ２３でドライバ０４が送信するプリントデータとなる。一方、ＯＳプリントシステム０５がユーティリティ０３よりステータス情報取得ジョブを受信してＩＰＰバックエンド０７を起動した場合、ステップＳ８２で受信するデータは、図７のステップＳ４３かＳ４５でドライバより送信されるＮＵＬＬデータとなる。いずれにしても、何らかのデータを受信すると、ＩＰＰバックエンド０７はステップＳ８３に進み、指定されたプリンタとの接続を開始する。
【００６３】
ステップＳ８４でＩＰＰバックエンド０７は、ＩＰＰ接続されたプリンタに対しＩＰＰ応答モニタスレッドを起動する。以後、ＩＰＰバックエンド０７は、データの送信と、ＩＰＰ応答モニタスレッドに従ったプリンタのステータス情報の取得とを、並行に行う。
【００６４】
ステップＳ８５で、ＩＰＰバックエンド０７は、ステップＳ８２で受信したデータをプリンタに送信する。この際、データが、ＮＵＬＬデータではない実データ（プリントデータ）であれば、プリンタは当該プリントデータに従ってプリント動作を開始する。一方、受信したデータがＮＵＬＬデータの場合、プリンタは当該データを無視することになる。
【００６５】
続くステップＳ８６において、ＩＰＰバックエンド０７は、新たなデータがドライバ０４より受信されているか否かを判定する。そして、新たなデータが受信されている場合はステップＳ８７に進みそのデータを受信した後、更にステップＳ８８に進み当該データをプリンタに送信する。このデータがＮＵＬＬデータでなければ、プリンタはプリントデータに従ったプリント動作を継続する。データがＮＵＬＬデータであれば、当該ＮＵＬＬデータはこれ以降で行うＳＮＭＰ応答を行うためのトリガーとなる。
【００６６】
ステップＳ８９において、ＩＰＰバックエンド０７は、ドライバ０４よりＳＮＭＰ応答要求があるか否かを判定する。ＳＮＭＰ応答要求は、対象とするプリンタがＳＮＭＰをサポートしている場合のみ、すなわちＩＰＰ接続され且つインク残量保存パラメータの値が「Ｆａｌｓｅ」である場合のみ、図７のステップＳ４４でドライバ０４より送信される要求である。よって、ステップＳ８９でＳＮＭＰ応答要求が確認されると、対象とするプリンタはＳＮＭＰをサポートしているため、ＩＰＰバックエンド０７はステップＳ９０でＳＮＭＰ応答をプリンタから取得し、ステップＳ９１でこれをドライバ０４に返信する。返信した情報にインク残量情報が含まれていれば、その情報は図７のステップＳ４８において、ドライバ０４によってステータス情報格納部１１に保存されることになる。
【００６７】
その後、ＩＰＰバックエンド０７は、新たな受信データを確認するためにステップＳ８６に戻る。このように、ＳＮＭＰを介して双方向通信を行う場合、ＩＰＰバックエンド０７はＮＵＬＬデータの送信とＳＮＭＰの応答取得およびその送信を、繰り返すことになる。一方、ステップＳ８９でＳＮＭＰ応答要求がないと判定した場合も、ＩＰＰバックエンド０７は新たな受信データを確認するためにステップＳ８６に戻る。
【００６８】
ステップＳ８６において、新たな受信データは存在しないと判定した場合、ＩＰＰバックエンド０７はステップＳ９２に進み、ドライバ０４が処理を終了したか否かを判定する。処理を終了していない場合は、更なるプリントデータを受信している可能性があるので、ＩＰＰバックエンド０７は次のプリントデータの有無を確認するために再びステップＳ８６に戻る。ステップＳ９２で、ドライバ０４が処理を終了したと判定した場合は、本処理を終了する。
【００６９】
一方、ステップＳ８４でＩＰＰ応答モニタスレッドが起動された以降、ＩＰＰ応答モニタジョブは、ドライバ０４の処理の完了が確認されるまで、上述したプリント用ジョブと並行に行われる。以下、ＩＰＰ応答モニタスレッドについて説明する。
【００７０】
ステップＳ８４でＩＰＰ応答モニタスレッドが起動されると、ＩＰＰバックエンド０７は、ステータス取得コマンドをプリンタに送信することにより、ステータス取得スレッドを開始する（ステップＳ１００）。まず、ステップＳ１０１で、ＩＰＰバックエンド０７はＩＰＰ応答をプリンタから取得し、ステップＳ１０２では取得したＩＰＰ応答に基づき、ＯＳプリントシステム０５にプリンタの状態を通知する。
【００７１】
ステップＳ１０３で、ＩＰＰバックエンド０７は、ＯＳプリントシステム０５を介してＰＰＤファイル１０のインク残量保存パラメータ１２を参照し、ステップＳ１０４で設定が「Ｔｒｕｅ」か「Ｆａｌｓｅ」か、を判定する。「Ｔｒｕｅ」である場合、ＩＰＰバックエンド０７はステップＳ１０５に進み、ステップＳ１０１で自らが取得したＩＰＰ応答に基づいたインク残量情報を、ＯＳプリントシステム０５のステータス情報格納部１１に保存した後、ステップＳ１０６に進む。一方、ステップＳ１０４でインク残量保存パラメータ１２の設定が「Ｆａｌｓｅ」である場合、ＩＰＰバックエンド０７はインク残量情報の保存は行わず、そのままステップＳ１０６に進む。
【００７２】
ステップＳ１０６において、ＩＰＰバックエンド０７はドライバ０４の処理が終了しているか否かを判定する。終了している場合は本処理を終了する。ドライバ０４の処理がまだ終了していない場合は、ステップＳ１０１に戻り、ＩＰＰ応答モニタを継続する。以上で本処理が終了する。
【００７３】
以上説明した本実施形態によれば、ユーティリティ０３は、ＵＳＢ接続されたプリンタＡ４０のインク残量情報については、図７のステップＳ４８でドライバ０４がステータス情報格納部１１に保存した情報に従って、表示することになる。ネットワーク接続され且つＳＮＭＰをサポートしているプリンタＣ６０のインク残量情報についても、図７のステップＳ４８でドライバ０４がステータス情報格納部１１に保存した情報に従って、表示することになる。一方、ネットワーク接続され且つＳＮＭＰをサポートしていないプリンタＣ６０については、ユーティリティ０３は、図１０のステップＳ１０５でＩＰＰバックエンド０７がステータス情報格納部１１に保存した情報に従って、インク残量表示を行うことになる。そして、いずれの情報も、ユーザが図３に示すユーティリティの表示画面７０において、表示ボタン７４をクリックした時に取得された情報である。
【００７４】
このように本実施形態によれば、ｍａｃＯＳ環境のもとでネットワーク接続されたプリンタであっても、ドライバ０４がＩＰＰバックエンド０７に対しＮＵＬＬデータを適宜送信することにより、プリンタのステータス情報を保存することができる。これにより、ユーザは、インク残量などのステータス情報を、プリンタ動作とは無関係にリアルタイム性の高い状態で適宜確認することが可能となる。
【００７５】
（第２の実施形態）
本実施形態においても、第１の実施形態と同様、図１および図２で示したプリントシステムを用いる。また、図７で説明したＩＰＰ接続用ステータス情報取得処理のフローチャート以外は、第１の実施形態と同様、図４〜６、９および１０で説明したフローチャートに従う。
【００７６】
第１の実施形態では、図７に示すＩＰＰ接続用ステータス情報保存処理において、ドライバ０４は、ＳＮＭＰをサポートしていないプリンタに対し、ステップＳ４３でＮＵＬＬデータを送信し処理を終了している。一方、図１０のフローチャートに示すように、ステップＳ８４で起動されるＩＰＰ応答モニタスレッドは、ステップＳ１０６でドライバ０４の処理完了が確認されると終了するようになっている。この場合、ドライバ０４の処理が、ＩＰＰ応答モニタスレッドの開始よりも早期に終了してしまうと、ＩＰＰ応答モニタスレッドにおけるステップＳ１０１〜Ｓ１０５の処理が正常に行われないおそれがある。このため、本実施形態では、ドライバ０４にＩＰＰバックエンド０７の動作を確認させる工程を設け、ＩＰＰバックエンド０７がプリンタとの通信を開始したことを確認した後に、ドライバ０４の処理を終了させるようにする。
【００７７】
図１１は、インク残量取得ジョブが発生された場合に、本実施形態のドライバ０４が、図５のステップＳ２６で実行するＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャートである。第１の実施形態で説明した図７のフローチャートと異なる点は、ステップＳ５０とステップＳ５１が追加されていることである。よって、以下は、これら工程についてのみ説明する。
【００７８】
ステップＳ４３でＩＰＰバックエンド０７にＮＵＬＬデータを送信した後、ステップＳ５０において、ドライバ０４はＩＰＰバックエンド０７の通信状況を取得する。ＩＰＰバックエンド０７はプリンタとの通信を開始すると、その旨をＯＳプリントシステム０５に通知するようになっている。このため、ステップＳ５０において、ドライバ０４はＯＳプリントシステム０５にアクセスすることにより、ＩＰＰバックエンド０７の通信状況を取得することができる。
【００７９】
次に、ドライバ０４はステップＳ５１に進み、取得した通信状況よりＩＰＰバックエンド０７がプリンタとの間で通信を開始したか否かを判定する。ＩＰＰバックエンド０７がまだ通信を開始していないと判定した場合、ドライバ０４はステップＳ４３に戻り、再度ＮＵＬＬデータを送信する。そして、ステップＳ５１でＩＰＰバックエンド０７が通信を開始したことを確認できるまで、ステップＳ４３〜Ｓ５１を繰り返す。ステップＳ５１でＩＰＰバックエンド０７が通信を開始したことを確認できると、ドライバ０４は本処理（ＩＰＰ接続用ステータス情報取得処理）を終了する。
【００８０】
以上説明した本実施形態によれば、プリンタのステータス情報の取得や取得した情報の保存を、ドライバ０４がＩＰＰバックエンド０７に任せた場合であっても、ドライバ０４は、ＩＰＰバックエンド０７の通信開始を確認してから自身の処理を終了する。よって、ＩＰＰ応答モニタスレッドの処理、ひいてはＩＰＰバックエンド０７によるインク残量情報の保存をより確実に行うことができる。
【００８１】
なお、本実施形態において、ドライバ０４は、ＩＰＰバックエンド０７の通信開始を検知しているが、本実施形態はこれに限定されるものではない。ドライバは、例えばＩＰＰバックエンド０７がＯＳプリントシステム０５にプリンタの状態を通知したことを検知しても良いし、ステータス情報格納部１１にインク残量情報などを保存したことを検知してもよい。いずれにしても、ＩＰＰバックエンド０７が双方向通信を行っていることが確認できれば、本実施形態の効果を得ることはできる。
【００８２】
（第３の実施形態）
本実施形態においても、第１の実施形態と同様、図１および図２で示したプリントシステムを用いる。また、図７で説明したＩＰＰ接続用ステータス情報取得処理のフローチャート以外は、第１の実施形態と同様、図４〜６、９および１０で説明したフローチャートに従う。
【００８３】
第１、第２の実施形態では、ドライバは、ＯＳのＩＰＰバックエンド０７へＮＵＬＬデータを送信した。そして、ＩＰＰバックエンド０７は、このＮＵＬＬデータに基づきプリンタからＩＰＰ応答を取得することによりＩＰＰバックエンド０７がインク残量情報を取得し保存していた。また、プリンタがＳＮＭＰをサポートしている場合は、このＳＮＭＰプロトコルを利用していた。つまり、ドライバはＩＰＰバックエンド０７へＮＵＬＬデータを送信し、ＩＰＰバックエンド０７は、このＮＵＬＬデータに基づきプリンタからＳＮＭＰ応答を取得した。そして、ＩＰＰバックエンド０７は、このＳＮＭＰ応答をドライバに送信することにより、ドライバがＳＮＭＰ応答からインク残量情報を取得し、ステータス情報格納部１１に保存していた。これは、ドライバがＳＮＭＰを用いて取得し保存するステータス情報のほうが、ＩＰＰバックエンド０７がＩＰＰ応答から独自に保存するステータス情報よりも、ユーザにとって都合が良いからである。具体的には、プリンタやインクタンクの名称などが詳細であり、ユーザに対しより丁寧な情報を提示することができるからである。
【００８４】
しかしながら、ＳＮＭＰを用いた通信は、ネットワーク環境やその通信状況によっては、応答速度が遅く通信に時間がかかってしまったり、結果的に情報を取得できなかったりする場合がある。よって、本実施形態では、ＳＮＭＰをサポートするプリンタの場合は、ＳＮＭＰの通信状態をドライバ０４に確認させる。そして、正常な通信状態が確認できない場合は、ＳＮＭＰをサポートするプリンタであっても、ＯＳプリントシステム０５のＩＰＰバックエンド０７に通信と保存を任せるようにする。ドライバを介さなければ、ＩＰＰバックエンド０７はより高速に、確実な通信および保存処理を行うことができる。
【００８５】
そして、以上の機能を実現させるため、本実施形態では、ステータス情報格納部１１に保存されているインク残量保存パラメータ１２の内容（Ｖａｌｕｅ）をドライバ０４が書き換え可能とする。また、書き換え前の初期値に対応する情報すなわちプリンタがＳＮＭＰをサポートしているか否かを示す情報については、ドライバ０４自身のメモリに予め格納しておく。
【００８６】
図１２は、インク残量取得ジョブが投入された場合に、本実施形態のドライバ０４が、図５のステップＳ２６で実行するＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャートである。
【００８７】
本処理が開始されると、ドライバ０４は、まずステップＳ３００において、ドライバ０４自身のメモリに格納されているＳＮＭＰサポート情報を取得する。ステップＳ３０１において、ドライバ０４は、取得した情報に基づいて、通信対象のプリンタがＳＮＭＰをサポートしているか否かを判定する。
【００８８】
ステップＳ３０１で、ＳＮＭＰをサポートしていないと判定した場合、ドライバ０４はステップＳ３０２に進み、ＩＰＰバックエンド０７にＮＵＬＬデータを送信した後、本処理を終了する。ステップＳ３０２におけるＮＵＬＬデータの送信に伴い、ＩＰＰバックエンド０７では、ＩＰＰ応答モニタスレッドが起動される。つまり、ＩＰＰバックエンド０７では、図１０のＳ８４以降の処理と同様に、ＩＰＰ応答の取得と、インク残量情報の取得及び保存が実行される。
【００８９】
一方、ステップＳ３０１でＳＮＭＰをサポートしていると判定した場合、ドライバ０４はステップＳ３０３に進み、ＰＰＤファイル１０に保存されているインク残量保存パラメータを「Ｆａｌｓｅ」に設定する。また、ステップＳ３０４で、ドライバ０４は、ＳＮＭＰの応答状況を判定するためのタイマのカウント値Ｃを初期化する（Ｃ＝０）。
【００９０】
続くステップＳ３０５〜ステップＳ３０７の工程は、第１の実施形態で説明した図７のステップＳ４４〜ステップＳ４６の処理と同等である。すなわち、ドライバ０４は、ステップＳ３０５でＩＰＰバックエンド０７に対しＳＮＭＰ応答要求を送信し、ステップＳ３０６でＮＵＬＬデータを送信し、更にステップＳ３０７でＳＮＭＰ応答を受信する。
【００９１】
ステップＳ３０８において、ドライバ０４は、ステップＳ３０７で受信したＳＮＭＰ応答結果が正常か否かを判定する。応答結果が正常ではない即ちエラーであると判定した場合はステップＳ３１３に進み、ドライバ０４は、ＰＰＤファイル１０のインク残量保存パラメータ１２を「Ｔｒｕｅ」に書き換えて、本処理を終了する。ＩＰＰバックエンド０７に対しては、既にステップＳ３０６でＮＵＬＬデータが送信されているので、ＩＰＰバックエンド０７ではＩＰＰ応答モニタスレッドが起動されている。つまり、ＩＰＰバックエンド０７では、図１０のＳ８４以降の処理と同様に、ＩＰＰ応答の取得と、インク残量情報の取得及び保存が実行される。
【００９２】
一方、ステップＳ３０８で応答結果が正常であると判定した場合、ドライバ０４はステップＳ３０９でタイマのカウント値Ｃを取得し、ステップＳ３１０で取得したカウント値Ｃが閾値Ｔを超えているか否かを判定する。ステップＳ３０９において、Ｃ＞Ｔと判定した場合、ドライバ０４はステップＳ３１３に進み、ＰＰＤファイル１０のインク残量保存パラメータ１２を「Ｔｒｕｅ」に書き換えて、本処理を終了する。ＩＰＰバックエンド０７に対しては、既にステップＳ３０６でＮＵＬＬデータが送信されているので、ＩＰＰバックエンド０７ではＩＰＰ応答モニタスレッドが起動されている。つまり、ＩＰＰバックエンド０７では、図１０のＳ８４以降の処理と同様に、ＩＰＰ応答の取得と、インク残量情報の取得及び保存が実行される。
【００９３】
ステップＳ３１０においてＣ≦Ｔと判定した場合、ドライバ０４はステップＳ３１１に進み、ステップＳ３０７で受信した応答にインク残量情報が含まれているか否かを判定する。インク残量情報が含まれていないと判定した場合、ドライバ０４はステップＳ３０５に戻り、ＳＮＭＰを用いた通信を継続する。
【００９４】
一方、ステップＳ３１１においてインク残量情報が含まれていると判定した場合、ドライバ０４はステップＳ３１２に進み、取得した情報の中からインク残量情報を取り出してこれをＯＳプリントシステム０５のステータス情報格納部１１に保存する。以上で、本処理を終了する。
【００９５】
本実施形態において、ステップＳ３１０でタイマのカウント値Ｃと比較するための閾値Ｔは、ＳＮＭＰ通信によってインク残量情報を取得するために許容できる最大の時間に設定されている。このような閾値は特に限定されるものではないが、例えば１０秒程度に設定しておくことができる。すなわち、Ｔ＝１０秒の場合、ＳＮＭＰを用いた通信を開始してからの時間Ｃが１０秒を超えた場合は、ＳＮＭＰを用いての通信は時間がかかりすぎると判定し、ドライバ０４は、より高速で確実なＩＰＰバックエンド０７による単独処理に切り替える。すなわち、Ｓ３１３により通信が正常に行われていないと判定し、インク残量パラメータ１２が「Ｔｒｕｅ」に書き換えられる。そして、ＩＰＰ応答によりＩＰＰバックエンド０７はステータス情報を取得し、保存を行う。
【００９６】
なお、ステップＳ３１３によってインク残量保存パラメータ１２が「Ｔｒｕｅ」に書き換えられても、次に図１２の処理を行う際は、再びステップＳ３０３でインク残量保存パラメータ１２は「Ｆａｌｓｅ」に書き換えられ、ＳＮＭＰを用いた通信が開始される。すなわち、ネットワークの状況によってＳＮＭＰを用いた通信の速度が安定しないような場合であっても、ＳＮＭＰを用いた通信が正常に行える場合にはこれを優先し、ユーザに対しインク残量の状況を詳細且つ丁寧に表示することができる。
【００９７】
以上説明したように、本実施形態によれば、ＳＮＭＰを用いた通信を前提としながらも、その通信が正常に行われていない場合は、より高速で確実なＩＰＰバックエンド０７による単独通信に通信方法を切り替える。通信が正常に行われていない場合とは、例えば通信にエラーが発生した場合または通信時間がかかりすぎる場合である。これにより、ユーザは、ネットワーク接続されたプリンタのインク残量情報を、ＳＮＭＰ通信の状況に関わらず、高速且つ確実に確認することができる。
【００９８】
（第４の実施形態）
既に説明したように、ｍａｃＯＳ環境下でネットワーク接続されたプリンタがＳＮＭＰをサポートしている場合、プリンタからステータス情報を取得する方法としては、以下の二つがある。すなわち、ＩＰＰバックエンドがドライバの介入を受けずにＩＰＰ応答を用いて行う方法と、ドライバがＳＮＭＰを用いて行う方法とがある。前者の場合、プリンタのステータス情報は高速且つ確実に取得できるが、ドライバによるサポートが無いため、インクの型番や名称などのローカライズ情報をユーティリティ画面で表示することが難しい。一方、後者の場合は、ドライバが介入し、ＩＰＰバックエンドが取得した情報に処理を加えることによって、ユーティリティ画面で詳細且つ丁寧な表示を行うことができるが、通信自体に時間がかかってしまうという課題がある。
【００９９】
以上のことを踏まえ、本実施形態ではドライバが介入しない状態でＩＰＰバックエンドにステータス情報を取得させ残量情報を即時に表示する工程と、ステータス情報を取得した後にドライバを介入させて、表示画面を整える工程とを用意する。また、以上の機能を実現させるため、本実施形態においても第３の実施形態と同様、ステータス情報格納部１１に保存されているインク残量保存パラメータ１２の内容（Ｖａｌｕｅ）をドライバ０４が書き換え可能とする。また、書き換え前の初期値に対応する情報すなわちプリンタがＳＮＭＰをサポートしているか否かを示す情報については、ドライバ０４自身のメモリに予め格納しておく。なお、本実施形態においても、第１の実施形態と同様、図１および図２で示したプリントシステムを用いるものとする。また、図４で説明したユーティリティの処理と、図７で説明したＩＰＰ接続用ステータス情報取得処理のフローチャート以外は、第１の実施形態と同様、図５〜６、９および１０で説明したフローチャートに従う。
【０１００】
図１３は、ユーザがインク残量を確認する場合に、本実施形態のユーティリティ０３が実行する工程を示すフローチャートである。本処理は、図３に示すインク残量表示画面７０において、ユーザが表示ボタン７４をクリックすることにより開始される。
【０１０１】
本処理が開始されると、ユーティリティ０３は、ステップＳ４１１において、インク残量取得ジョブをＯＳプリントシステム０５に送信する。ステップＳ４２０において、ユーティリティ０３は、ＯＳプリントシステム０５のステータス情報格納部１１に保存されているインク残量情報を取得する。そして、ステップＳ４２１において、ユーティリティ０３はステップＳ４２０で取得したインク残量情報に基づいて、インク残量表示画面７０を表示する。
【０１０２】
次に、ステップＳ４２２において、ユーティリティ０３はＯＳプリントシステム０５をアクセスしてインク残量取得ジョブの処理状態を取得し、更にステップＳ４２３に進みインク残量取得ジョブの処理は完了したか否かを判定する。ここで、インク残量取得ジョブはまだ完了していないと判定した場合は、ステップＳ４２０に戻り、再びステータス情報格納部１１にアクセスしてインク残量情報を取得する。一方、ステップＳ４２２においてインク残量取得ジョブは完了したと判定した場合、本処理は終了する。
【０１０３】
このように、本実施形態のユーティリティ０３は、ステータス情報格納部１１に保存されている情報を取得する工程と、その情報を表示する工程とを、ステップＳ４２３でインク残量取得ジョブの処理が完了したと判定するまで繰り返す。すなわち、ユーティリティ０３によって表示されるインク残量表示画面７０は、インク残量取得ジョブの処理が完了したと判定されるまで、複数回更新される。
【０１０４】
図１４は、インク残量取得ジョブが投入された場合に、本実施形態のドライバ０４が、図５のステップＳ２６で実行するＩＰＰ接続用ステータス情報取得処理を説明するためのフローチャートである。
【０１０５】
本処理が開始されると、ドライバ０４は、まずステップＳ４００において、ＯＳプリントシステム０５のステータス情報格納部１１をアクセスし、ここに記憶されているインク残量情報を削除する。次に、ドライバ０４はステップＳ４０１に進み、ドライバ０４自身のメモリに格納されているＳＮＭＰサポート情報を取得し、更にステップＳ４０２で、取得した情報に基づいて通信対象のプリンタがＳＮＭＰをサポートしているか否かを判定する。
【０１０６】
ステップＳ４０２で、ＳＮＭＰをサポートしていないと判定した場合、ドライバ０４はステップＳ４０３に進み、ＩＰＰバックエンド０７にＮＵＬＬデータを送信した後、本処理を終了する。ステップＳ４０３におけるＮＵＬＬデータの送信に伴い、ＩＰＰバックエンド０７ではＩＰＰ応答モニタスレッドが起動される。
【０１０７】
一方、ステップＳ４０２で通信対象のプリンタがＳＮＭＰをサポートしていないと判定した場合、ドライバ０４はステップＳ４０４に進み、ＰＰＤファイル１０に保存されているインク残量保存パラメータを「Ｔｒｕｅ」に設定する。更にステップＳ４０５に進み、ＮＵＬＬデータを送信する。
【０１０８】
ステップＳ４０６において、ドライバ０４はステータス情報格納部１１をアクセスして、インク残量情報を読み出す。この際、ステップＳ４０５におけるＮＵＬＬデータの送信によってＩＰＰ応答モニタスレッドは起動されている。よって、ステップＳ４０６の段階で、既にＩＰＰバックエンド０７がインク残量情報をステータス情報格納部１１に保存していれば、ドライバ０４はその情報を取得することになる。ＩＰＰバックエンド０７がインク残量情報をまだ保存していなければ、ドライバ０４はヌル情報を取得することになる。
【０１０９】
続くステップＳ４０７において、ドライバ０４は、ステップＳ４０６で取得したインク残量情報を確認する。そして、当該情報がＩＰＰバックエンド０７によって保存された情報でなければ即ちヌル情報であれば、ステップＳ４０６に戻り、再びステータス情報格納部１１に保存されているインク残量情報の読み出しを行う。
【０１１０】
ステップＳ４０７でＩＰＰバックエンド０７によって保存されたインク残量情報が確認されると、ドライバ０４はステップＳ４０８に進み、ステータス情報格納部１１に保存されているインク残量保存パラメータ１２を「Ｔｒｕｅ」から「Ｆａｌｓｅ」に変更する。この工程により、ステータス情報格納部１１への書き込みは、以後ドライバ０４が実行することになる。
【０１１１】
続くステップＳ４０９〜ステップＳ４１１の工程は、第１の実施形態で説明した図７のステップＳ４４〜ステップＳ４６の処理と同等である。すなわち、ドライバ０４は、ステップＳ４０９でＩＰＰバックエンド０７に対しＳＮＭＰ応答要求を送信し、ステップＳ４１０でＮＵＬＬデータを送信し、更にステップＳ４１１でＳＮＭＰ応答を受信する。
【０１１２】
ステップＳ４１２において、ドライバ０４は、ステップＳ４１１で受信した応答にインク残量情報が含まれているか否かを判定する。インク残量情報が含まれていないと判定した場合、ドライバ０４はステップＳ４０９に戻り、ＳＮＭＰを用いた通信を継続する。
【０１１３】
一方、ステップＳ４１２においてインク残量情報が含まれていると判断した場合、ドライバ０４はステップＳ４１３に進み、取得した情報の中からインク残量情報を取り出してこれをＯＳプリントシステム０５のステータス情報格納部１１に保存しする。ステップＳ４１３におけるインク残量情報の保存により、ステップＳ４０８でインク残量保存パラメータを「Ｆａｌｓｅ」に書き換える前にＩＰＰバックエンドが保存していた情報は、Ｓ４１２で取得したインク残量情報に上書きされる。以上で、本処理を終了する。  
再度図１３を参照する。本実施形態のユーティリティ０３は、ユーザが表示ボタン７４をクリックした時から、ステータス情報格納部１１からのインク残量情報の読み出しとインク残量表示画面７０での表示を、ステップＳ４２３でインク残量取得ジョブが完了したと判断するまで繰り返す。このため、ユーティリティ０３が読み出し（ステップＳ４２０）を行った時が、ＩＰＰ応答モニタスレッドによるインク残量情報が保存された後で、且つＳＮＭＰを介してのインク残量情報が上書き保存される前であれば、前者のインク残量情報が表示される。
【０１１４】
ネットワーク接続されたプリンタにおいては、例えば個々のインクタンクの名称は（Ｃｙａｎ、Ｍａｇｅｎｔａ、Ｙｅｌｌｏｗ、Ｂｌａｃｋ）のように英語で管理されていることが多い。よって、ＩＰＰバックエンド０７が、ステータス情報格納部１１に直接保存したインク残量情報は、（Ｃｙａｎ、Ｍａｇｅｎｔａ、Ｙｅｌｌｏｗ、Ｂｌａｃｋ）と夫々のインク残量の関係が対応づけられた情報である。よって、ユーティリティ０３がステップＳ４２１で表示する画面は、既に説明した図３のようになる。
【０１１５】
但し、ＩＰＰバックエンド０７が取得した情報の保存処理にドライバ０４が介入すれば、ドライバ０４はＯＳがサポートする日本語表記にタンクの名称を書き換えることができる。すなわち、ドライバ０４は、Ｃｙａｎをシアンに、Ｍａｇｅｎｔａをマゼンタに、Ｙｅｌｌｏｗをイエローに、Ｂｌａｃｋをブラックにそれぞれ変換した状態で、ステータス情報格納部１１にインク残量情報を保存することができる。よって、ユーティリティ０３は、ステップＳ４２１において、図１５に示す画面を表示できるようになる。
【０１１６】
ここでは、簡単のために４色のインクタンクの名称を例に説明したが、類似したインクの種類が更に多い場合には、手元のインクタンクに表示されている名称と、インク残量表示画面７０で表示されている名称が異なっていると、ユーザの混乱を招く恐れがある。よって、ユーザに対しては、ドライバ０４を介して詳細且つ丁寧な表示を行うことが好ましい。その一方で、高速で確実な情報表示も望まれる。
【０１１７】
本実施形態によれば、インク残量情報取得コマンドに対し迅速且つ正確に応答しておきながら、当該情報を段階的に詳細で丁寧な表示に調整していくことができる。
【０１１８】
（その他の実施形態）
以上では、ユーザが比較的頻繁に確認する項目としてインクタンクのインク残量を例に挙げ、ステータス情報取得ジョブではこれを検出し通知する場合について説明してきた。しかし、本発明はこのような形態に限定されるものではない。ステータス情報取得ジョブにおいて、検出し通知する項目としては、例えば、廃インクタンクの廃インク収容量や、バッテリー駆動するプリンタのバッテリー残量などとすることもできる。いずれにしても、ネットワーク接続されたプリンタのステータスに関わる情報の検出および通知が必要とされる環境であれば、その情報の内容によらず、本発明は効果的に機能させることができる。
【０１１９】
また、以上では、ｍａｃＯＳがインストールされたＰＣと、ネットワーク接続されたプリンタを例に双方向通信を行う場合を例に説明してきたが、本発明はこのような形態に限定されるものではない。例えば、上記実施形態で使用したＰＣに相当するホストデバイスとプリンタデバイスとが一体的に構成されたプリント装置とすることもできる。  
また、本発明は、上述の実施形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０１２０】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０１２１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれてもよい。そしてその後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明に含まれることは言うまでもない。
【符号の説明】
【０１２２】
０１    ＰＣ（情報処理装置）
０３    ユーティリティ
０４    ドライバ
０５    ＯＳプリントシステム
０７    ＩＰＰバックエンド
１１    ステータス情報格納部
５０    プリンタＢ
６０    プリンタＣ
【図１】
2019070926.tif 000003
【図２】
2019070926.tif 000004
【図３】
2019070926.tif 000005
【図４】
2019070926.tif 000006
【図５】
2019070926.tif 000007
【図６】
2019070926.tif 000008
【図７】
2019070926.tif 000009
【図８】
2019070926.tif 000010
【図９】
2019070926.tif 000011
【図１０】
2019070926.tif 000012
【図１１】
2019070926.tif 000013
【図１２】
2019070926.tif 000014
【図１３】
2019070926.tif 000015
【図１４】
2019070926.tif 000016
【図１５】
2019070926.tif 000017