(57)【要約】【課題】デバイスのパフォーマンス低下を防止可能なコントローラーを提供する。【解決手段】アプリケーションプログラム１０とデバイスドライバー３０との間に介在するソフトウェアモジュールであるコントローラー２０の制御方法であって、前記アプリケーションプログラム１０から前記処理要求を受信する処理要求受信ステップＳ０１と、受信した前記処理要求を、前記デバイスドライバー３０へ送信する処理要求送信ステップＳ０３と、前記処理要求の処理が特定な処理の場合、前記処理要求送信ステップＳ０３の直後に、前記処理を非同期設定にする要求を送信する非同期設定要求ステップＳ０４と、前記デバイスドライバー３０から、非同期設定にされた前記処理に対して、前記処理要求の受信を完了したとの第１処理結果を受信する第１処理結果受信ステップＳ０８と、を備える。【選択図】図３
2014089559.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムとデバイスドライバーとの間に介在し、前記アプリケーションプログラムからの処理要求を前記デバイスドライバーに転送すると共に、前記デバイスドライバーからの前記処理要求に対する応答を前記アプリケーションプログラムに転送するためのソフトウェアモジュールであるコントローラーの制御方法であって、
前記アプリケーションプログラムから前記処理要求を受信する処理要求受信ステップと、
受信した前記処理要求を、前記デバイスドライバーへ送信する処理要求送信ステップと、
前記処理要求の処理が特定な処理の場合、前記処理を非同期設定にする要求を送信する非同期設定要求ステップと、
前記デバイスドライバーから、非同期設定にされた前記処理に対して、前記処理要求の受信を完了したとの第１処理結果を受信し応答する応答処理ステップと、を備えることを特徴とするコントローラーの制御方法。
【請求項２】
前記デバイスドライバーが制御するデバイスの状態を前記デバイスドライバー経由で検出する状態検出ステップと、
前記状態検出ステップで前記デバイスのエラー状態を検出した場合は、前記デバイスがエラーから復帰するまで、エラー復帰待ち状態に遷移させるエラー復帰待ち状態遷移ステップと、
前記状態検出ステップで前記デバイスがエラー状態から復帰したことを検出した場合は、エラー検出以前の前記処理要求を、前記デバイスドライバーへ再送信する復帰処理ステップと、を備えることを特徴とする請求項１に記載のコントローラーの制御方法。
【請求項３】
前記デバイスは、記録用紙に情報を記録するプリンターであることを特徴とする請求項１または２に記載のコントローラーの制御方法。
【請求項４】
前記処理要求は、印刷処理要求を含むことを特徴とする請求項１乃至３のいずれか一項に記載のコントローラーの制御方法。
【請求項５】
アプリケーションプログラムとデバイスドライバーとの間に介在し、前記アプリケーションプログラムからの処理要求を前記デバイスドライバーに転送すると共に、前記デバイスドライバーからの前記処理要求に対する応答を前記アプリケーションプログラムに転送するためのソフトウェアモジュールであるコントローラーであって、
前記アプリケーションプログラムから前記処理要求を受信する処理要求受信手段と、
受信した前記処理要求を、前記デバイスドライバーへ送信する処理要求送信手段と、
前記処理要求の処理が特定な処理の場合、前記処理を非同期設定にする要求を送信する非同期設定要求手段と、
前記デバイスドライバーから、非同期設定にされた前記処理に対して、前記処理要求の受信を完了したとの第１処理結果を受信し応答する応答処理手段と、を備えることを特徴とするコントローラー。
【請求項６】
前記デバイスドライバーが制御するデバイスの状態を前記デバイスドライバー経由で検出する状態検出手段と、
前記状態検出手段で前記デバイスのエラー状態を検出した場合は、前記デバイスがエラーから復帰するまで、エラー復帰待ち状態に遷移させるエラー復帰待ち状態遷移手段と、
前記状態検出手段で前記デバイスがエラー状態から復帰したことを検出した場合は、エラー検出以前の前記処理要求を、前記デバイスドライバーへ再送信する復帰処理手段と、を備えることを特徴とする請求項５に記載のコントローラー。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムとデバイスドライバーとの間に介在し、デバイスドライバーを制御するためのソフトウェアモジュールとして機能するコントローラーの制御方法、およびコントローラーに関するものである。
【背景技術】
【０００２】
従来、コンピューターに接続されていたデバイス（例えば、プリンター等）を制御する場合、そのデバイスに対応するデバイスドライバーを用いて制御を行っている。一般的に、このようなデバイスドライバーは、対応するデバイスを制御するための数多くのインターフェイスを提供しており、アプリケーションプログラムを開発する場合、このデバイスドライバーが提供するインターフェイスを利用してプログラムを作成する。このことで、デバイスの基本的な動作制御をはじめ、デバイスの状態に応じたエラー処理を実行している（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２６５２６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のようにデバイスの動作制御を行う場合、アプリケーションプログラムは、直前のデバイス制御用インターフェイス（処理要求）の結果が返って来ないと、次のデバイス制御用インターフェイス（処理要求）を利用することができない。そのため、待ち状態になり、パフォーマンス低下を引き起こすという問題がある。
【０００５】
エラーが発生した場合は、アプリケーションプログラムの処理フローが複雑になることを避けるため一括処理等を行うようにし、そのエラーの原因やデバイスドライバーの状態を無視し、常にデバイスドライバーを完全に初期化するというエラー処理を行う場合がある。または、ユーザーにエラーを通知し、エラー状態から復帰するまで復帰待ち状態となる場合もある。一般的にデバイスドライバーの初期化処理には時間がかかる。そのため、デバイスドライバーの処理パフォーマンスの低下を招いたり、無駄な待ち状態が続いたりしてパフォーマンスの低下を招くという問題がある。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【０００７】
（適用例１）アプリケーションプログラムとデバイスドライバーとの間に介在し、前記アプリケーションプログラムからの処理要求を前記デバイスドライバーに転送すると共に、前記デバイスドライバーからの前記処理要求に対する応答を前記アプリケーションプログラムに転送するためのソフトウェアモジュールであるコントローラーの制御方法であって、前記アプリケーションプログラムから前記処理要求を受信する処理要求受信ステップと、受信した前記処理要求を、前記デバイスドライバーへ送信する処理要求送信ステップと、前記処理要求の処理が特定な処理の場合、前記処理を非同期設定にする要求を送信する非同期設定要求ステップと、前記デバイスドライバーから、非同期設定にされた前記処理に対して、前記処理要求の受信を完了したとの第１処理結果を受信し応答する応答処理ステップと、を備えることを特徴とするコントローラーの制御方法。
【０００８】
この方法によれば、コントローラーは、デバイスを制御するデバイスドライバーに処理要求を送信し、その処理要求の処理が特定の処理の場合、その処理を非同期設定にすることができる。また、非同期設定にされた処理に対して、デバイスドライバーからその処理要求の受信を完了したとの第１処理結果を受信しアプリケーションプログラムに結果を送信することができる。そのため、コントローラーは、直前の処理要求の実処理が完了していなくても第１処理結果（処理要求の受信完了）を代用して次の処理要求を送信することができる。その結果、コントローラーは、デバイス制御のための待ち時間を低減することができ、パフォーマンスを向上させることができる。なお、非同期設定とは、前の処理が終わるまで次の処理を待つのではなく、自由に処理を実行することを言う。また、特定な処理とは、処理要求を継続して送信しデバイスがその処理をある程度継続して実施する処理をいう。例えば、デバイスを用いた書き込み、読み取り、印刷処理等が適応する。
【０００９】
（適用例２）前記デバイスドライバーが制御するデバイスの状態を前記デバイスドライバー経由で検出する状態検出ステップと、前記状態検出ステップで前記デバイスのエラー状態を検出した場合は、前記デバイスがエラーから復帰するまで、エラー復帰待ち状態に遷移させるエラー復帰待ち状態遷移ステップと、前記状態検出ステップで前記デバイスがエラー状態から復帰したことを検出した場合は、エラー検出以前の前記処理要求を、前記デバイスドライバーへ再送信する復帰処理ステップと、を備えることを特徴とする上記のコントローラーの制御方法。
【００１０】
この方法によれば、コントローラーは、状態検出ステップでデバイスの状態を検出することができる。デバイスでエラーが発生した場合は、デバイスがエラーから復帰するまでエラー復帰待ち状態に遷移する。デバイスがエラー状態から復帰したことを検出した場合は、処理要求再送信ステップで、直前の処理要求をデバイスドライバーへ再送信することができる。そのため、アプリケーションプログラムでは、独自にエラー処理を行う必要がなくなる。その結果、アプリケーションプログラムの処理フローを簡素化できる。また、エラー処理において、デバイスドライバーを初期化する必要がなくなり、初期化処理時間を低減できる。また、エラー状態からの復帰を検出することができるため、復帰待ち時間を短縮することができる。従って、アプリケーションプログラムやデバイスドライバーのパフォーマンスを向上させることができる。
【００１１】
（適用例３）前記デバイスは、記録用紙に情報を記録するプリンターであることを特徴とする上記のコントローラーの制御方法。
【００１２】
（適用例４）前記処理要求は、少なくとも印刷処理要求を含むことを特徴とする上記のコントローラーの制御方法。
【００１３】
これらの方法によれば、コントローラーは、デバイスとしてのプリンターが印刷処理中であっても印刷データを送信する等の次の処理要求を送信することができる。そのため、当該印刷データによる印刷処理終了まで待つ必要がなくなり、プリンターのパフォーマンスを向上させることができる。また、印刷や紙送り等に不具合が発生しエラー状態となったときに、そのエラーの回復を待って同一な処理を再度実施することができる。その結果、使い勝手のよい信頼性の高いプリンターの動作を実現することができる。
【００１４】
（適用例５）アプリケーションプログラムとデバイスドライバーとの間に介在し、前記アプリケーションプログラムからの処理要求を前記デバイスドライバーに転送すると共に、前記デバイスドライバーからの前記処理要求に対する応答を前記アプリケーションプログラムに転送するためのソフトウェアモジュールであるコントローラーであって、前記アプリケーションプログラムから前記処理要求を受信する処理要求受信手段と、受信した前記処理要求を、前記デバイスドライバーへ送信する処理要求送信手段と、前記処理要求の処理が特定な処理の場合、前記処理要求送信手段の処理要求の送信の直後に、前記処理を非同期設定にする要求を送信する非同期設定要求手段と、前記デバイスドライバーから、非同期設定にされた前記処理に対して、前記処理要求の受信を完了したとの第１処理結果を受信し応答する応答処理手段と、を備えることを特徴とするコントローラー。
【００１５】
この構成によれば、コントローラーは、デバイスを制御するデバイスドライバーに処理要求を送信し、その処理要求の処理が特定の処理の場合、その処理を非同期設定にすることができる。また、非同期設定にされた処理に対して、デバイスドライバーからその処理要求の受信を完了したとの第１処理結果を受信することができる。そのため、コントローラーは、直前の処理要求の実処理が完了していなくても第１処理結果（処理要求の受信完了）を代用して次の処理要求を送信することができる。その結果、コントローラーは、デバイス制御のための待ち時間を低減することができ、パフォーマンスを向上させることができる。
【００１６】
（適用例６）前記デバイスドライバーが制御するデバイスの状態を前記デバイスドライバー経由で検出する状態検出手段と、前記状態検出手段で前記デバイスのエラー状態を検出した場合は、前記デバイスがエラーから復帰するまで、エラー復帰待ち状態に遷移させるエラー復帰待ち状態遷移手段と、前記状態検出手段で前記デバイスがエラー状態から復帰したことを検出した場合は、エラー検出以前の前記処理要求を、前記デバイスドライバーへ再送信する復帰処理手段と、を備えることを特徴とする上記のコントローラー。
【００１７】
この構成によれば、コントローラーは、状態検出手段でデバイスの状態を検出することができる。デバイスでエラーが発生した場合は、デバイスがエラーから復帰するまでエラー復帰待ち状態に遷移する。デバイスがエラー状態から復帰した場合は、処理要求再送信手段で、直前の処理要求をデバイスドライバーへ再送信することができる。そのため、アプリケーションプログラムでは、独自にエラー処理を行う必要がなくなる。そのため、アプリケーションプログラムの処理フローを簡素化できる。また、エラー処理において、デバイスドライバーを初期化する必要がなくなり、初期化処理時間を低減できる。その結果、アプリケーションプログラムやデバイスドライバーの処理パフォーマンスを向上させることができる。
【図面の簡単な説明】
【００１８】
【図１】コンポーネントモデルの構成を示すブロック図。
【図２】コントローラーの機能構成を示す機能ブロック図。
【図３】コントローラーの処理の一例を説明するシーケンス図。
【図４】コントローラーの処理の他の例を説明するシーケンス図。
【発明を実施するための形態】
【００１９】
（コンポーネントモデルについて）
本発明のコントローラーを含むコンポーネントモデルについて、図１を参照して説明する。図１は、コンポーネントモデルの構成を示すブロック図である。以下、デバイスとして記録用紙に情報等を印刷するプリンターを適用した場合を例にとり説明する。
【００２０】
図１に示すように、コンポーネントモデルＣＭは、アプリケーションプログラム１０と、コントローラー２０と、デバイスドライバー３０と、デバイスとしてのプリンター４０とにより構成されている。なお、これらアプリケーションプログラム１０、コントローラー２０およびデバイスドライバー３０は、コンピューター（図示省略）に搭載されたＯＳ（Operating System）上で動作するソフトウェアモジュール（プログラム）として実現される。
【００２１】
アプリケーションプログラム１０は、コンピューターに接続されたプリンター４０に所定の動作を実行させるための処理要求や、デバイスドライバー３０の処理でエラーが発生した場合のエラー処理に関する処理要求等を行うプログラムである。これらの処理要求は、コントローラー２０が提供する入出力インターフェイス（第１入出力インターフェイス５２）を用いて定義されており、アプリケーションプログラム１０は、コントローラー２０に対して各処理要求を送信すると共に、コントローラー２０から当該各処理要求に対する応答（処理の成功／失敗等）を受信する。なお、処理として、印刷命令１１等が例示される。
【００２２】
コントローラー２０は、アプリケーションプログラム１０とデバイスドライバー３０との間に介在しデバイスやデバイスドライバーを制御するソフトウェアモジュールである。コントローラー２０は、アプリケーションプログラム１０からの処理要求をデバイスドライバー３０に転送する（ブリッジする）と共に、デバイスドライバー３０からの処理要求に対する応答をアプリケーションプログラム１０に転送する（ブリッジする）ものである。
【００２３】
コントローラー２０は、アプリケーションプログラム１０に対して上記の第１入出力インターフェイス５２を提供しており、この第１入出力インターフェイス５２を利用することで、アプリケーションプログラム１０からの処理要求の受信、およびアプリケーションプログラム１０への処理要求に対する応答を行う。また、コントローラー２０は、デバイスドライバー３０が提供する入出力インターフェイス（第２入出力インターフェイス５４）を用いて、アプリケーションプログラム１０からの処理要求をデバイスドライバー３０に転送、およびデバイスドライバー３０から処理要求に対する応答を受信する。コントローラー２０の詳細については後述する。
【００２４】
デバイスドライバー３０は、プリンター４０（デバイス）を制御するためのプログラムであり、プリンター４０（デバイス）の仕様に基づいて作成される。デバイスドライバー３０は、コントローラー２０に対して、上記の第２入出力インターフェイス５４を提供しており、この第２入出力インターフェイス５４を利用して、コントローラー２０からの処理要求を受信すると共に、コントローラー２０に対して当該処理要求に対する応答を行う。
【００２５】
プリンター４０は、少なくとも印刷手段４１と紙送り手段４２とを有している。プリンター４０は、デバイスドライバー３０からの処理要求に対応して、紙送り手段４２で記録用紙を搬送し、搬送される記録用紙に対して印刷手段４１を用い情報を印刷する。プリンター４０は、デバイスドライバー３０に対して、プリンター４０が提供する入出力インターフェイス（第３入出力インターフェイス５６）を用いて定義されており、デバイスドライバー３０は、プリンター４０に対して各処理要求を送信すると共に、プリンター４０から当該各処理要求に対する応答（処理の成功／失敗等）を受信する。
【００２６】
（コントローラーの機能構成について）
次いで、コントローラーの機能構成について図２を参照して説明する。図２は、コントローラーの機能構成を示す機能ブロック図である。
図２に示すように、コントローラー２０は、処理要求受信手段２１と、処理要求送信手段２２と、要求処理手段２３と、非同期設定要求手段２４と、応答処理手段２５と、状態検出手段２６と、エラー復帰待ち状態遷移手段２７と、復帰処理手段２８と、を有している。
【００２７】
処理要求受信手段２１は、アプリケーションプログラム１０から処理要求を受信する。処理要求送信手段２２は、デバイスドライバー３０へ処理要求を送信する。なお、処理要求とは、デバイスとしてのプリンターの動作を制御するための指令等を言い、例えばプリンターが記録用紙に情報等を印刷する印刷処理等を含む。
【００２８】
要求処理手段２３は、アプリケーションプログラム１０から受信した処理要求の内容およびデバイスドライバー３０の状態に基づいて、適切な処理を行う手段として機能する。また、デバイスドライバー３０へ送信する処理要求に対して、非同期処理設定を行うか否かを判断する手段としても機能する。なお、非同期設定とは、前の処理が終わるまで次の処理を待つのではなく、自由に処理を実行することを言う。
【００２９】
非同期設定要求手段２４は、デバイスドライバー３０に送信する処理要求が例えば印刷処理等の非同期可能処理であれば要求処理手段２３の判断に基づいて、非同期処理の設定要求をデバイスドライバー３０へ送信する。
【００３０】
応答処理手段２５は、デバイスドライバー３０から処理要求に対する応答を受信し、これをアプリケーションプログラム１０に送信する手段として機能する。つまり、デバイスドライバー３０からの応答をアプリケーションプログラム１０にブリッジする手段として機能する。例えば、先に送信した処理要求が、非同期処理が可能な処理であれば、デバイスドライバー３０から当該処理要求の受信を完了したとの応答（第１処理結果）を受信し処理する。すなわち、デバイスドライバー３０が非同期可能な処理要求を受信したとの応答を送信すると、プリンター４０の処理が終了していなくても、アプリケーションプログラム１０にブリッジして応答を送信する。
【００３１】
状態検出手段２６は、デバイスドライバー３０を介してデバイス（プリンター４０）の状態を検出する手段として機能するものである。デバイスドライバー３０は、デバイスドライバー３０が制御するプリンター４０に対して受信した処理要求を実行すべくプリンター４０を制御する。制御した結果、当該処理が成功裡に実行されたか否かを確認する。この確認は、例えばプリンター４０に設けられたエラー検出機構（図示省略）等を適用して実施する。
【００３２】
状態検出手段２６は、デバイスドライバー３０から送信される当該処理要求に対する応答に基づいて自身（コントローラー２０）の状態を設定し、この状態を確認することで、間接的にデバイスドライバー３０（プリンター４０）の状態を検出する。具体的には、デバイスドライバー３０からの処理要求に対する応答が処理の成功を示す応答であれば、自身の状態を正常状態に設定し、この状態（正常状態）を確認することでデバイスドライバー３０（プリンター４０）は正常な状態であると検出する。一方、処理の失敗を示す応答であれば、自身の状態を後述するエラー復帰待ち状態遷移手段２７によって、エラー復帰待ち状態に設定し、この状態（エラー復帰待ち状態）を確認することでデバイスドライバー３０（プリンター４０）にエラーが発生したことを検出する。
【００３３】
エラー復帰待ち状態遷移手段２７は、デバイスドライバー３０から送信される処理要求に対する応答に基づいてコントローラー２０の状態を設定する機能を有する。具体的には、処理の失敗を示す応答であれば、コントローラー２０をエラー復帰待ち状態に遷移する。
【００３４】
復帰処理手段２８は、上記の状態検出手段２６によりプリンター４０にエラーが発生したことを検出した場合、デバイスドライバー３０もしくはプリンター４０の状態（エラーの内容／エラーからの復帰）に基づいて、適切な復帰処理を行う手段として機能する。例えば、プリンター４０がエラー状態から復帰したことを、状態検出手段２６によって検出した場合は、直前の処理要求をデバイスドライバー３０に再送信する。
【００３５】
（コントローラーの通常処理について）
ここで、コントローラーの通常処理について図２および図３を参照して説明する。図３は、コントローラーの処理の一例を説明するシーケンス図であり、詳しくはデバイスでの処理が成功した場合を示す。以下、デバイスとしてプリンターを適用し、処理として記録用紙に情報を印刷する印刷処理を適用した場合を例にとり説明する。
【００３６】
図３に示すように、まず、アプリケーションプログラム１０はコントローラー２０に対して、プリンター４０を用いて記録用紙に情報を印刷するべく、処理要求としての印刷処理要求Ａを送信する。この印刷処理要求Ａは、図２に示す処理要求受信手段２１によって受信される（処理要求受信ステップＳ０１）。
【００３７】
次いで、コントローラー２０は、図２に示す要求処理手段２３によって、この印刷処理要求Ａの内容およびデバイスドライバー３０の状態に基づいてどのような処理を行うか判定する。例えば、印刷処理要求Ａが非同期設定可能な処理要求か否か等を判別する（Ｓ０２）。
【００３８】
コントローラー２０は、受信した印刷処理要求Ａをデバイスドライバー３０に送信する（処理要求送信ステップＳ０３）。また、図２に示す要求処理手段２３によって、この印刷処理要求Ａが非同期設定可能であると判別されると、印刷処理要求Ａを非同期設定にする要求をデバイスドライバー３０に送信する（非同期設定要求ステップＳ０４）。
【００３９】
処理要求送信ステップＳ０３で印刷処理要求Ａを受信したデバイスドライバー３０は、印刷処理要求Ａを、プリンター４０を動作させる印刷処理要求コマンドＡとしてプリンター４０に送信する（処理要求コマンド送信ステップＳ０５）。
【００４０】
印刷処理要求コマンドＡを受信したプリンター４０は、印刷処理要求コマンドＡに従って印刷動作を開始する。すなわち、記録用紙を図１に示す紙送り手段４２で紙送りしながら印刷手段４１を用いて情報（印刷データ）を記録用紙に印刷する（プリンター印刷ステップＳ０６）。
【００４１】
非同期設定要求ステップＳ０４で非同期設定要求を受信したデバイスドライバー３０は、印刷処理要求Ａを非同期設定にすると共に、当該印刷処理要求Ａの受信を完了したとの第１処理結果Ａをコントローラー２０に送信する。コントローラー２０は、第１処理結果Ａを受信して（Ｓ０７）、プリンター４０の印刷処理要求Ａに係る印刷が終了していなくても、アプリケーションプログラム１０にブリッジして第１処理結果Ａを送信する（応答処理ステップＳ０８）。
【００４２】
第１処理結果Ａを受信したアプリケーションプログラム１０は、先に送信した印刷処理要求Ａに係る印刷が成功裡に終了したと判断して、次の印刷処理要求Ｂをコントローラー２０に送信する。この印刷処理要求Ｂは、図２に示す処理要求受信手段２１によって受信される（処理要求受信ステップＳ０９）。印刷処理要求Ｂを受信したコントローラー２０は、この印刷処理要求Ｂをデバイスドライバー３０に送信する（処理要求送信ステップＳ１０）。
【００４３】
印刷処理要求Ｂを受信したデバイスドライバー３０は、印刷処理要求Ｂが先の印刷処理要求Ａと同一な形態であるため非同期設定にすると共に、当該印刷処理要求Ｂの受信を完了したとの第１処理結果Ｂをコントローラー２０に送信する。コントローラー２０は、第１処理結果Ｂを受信して（Ｓ１１）、プリンター４０の印刷処理要求Ｂに係る印刷が終了していなくても、アプリケーションプログラム１０にブリッジして第１処理結果Ｂを送信する（応答処理ステップＳ１２）。
【００４４】
第１処理結果Ｂを受信したアプリケーションプログラム１０は、先に送信した印刷処理要求Ｂに係るプリンター印刷（Ｓ０６）が終了したと見なして、次のステップに進む。なお、実際に、印刷処理要求Ａに基づく印刷が成功裡に終了したプリンター４０は、デバイスドライバー３０に成功応答を送信する（Ｓ１３）。デバイスドライバー３０は、その成功応答を受信してコントローラー２０にブリッジする（Ｓ１４）。
【００４５】
コントローラー２０は、デバイスドライバー３０からの処理要求に対する応答が処理の成功を示す応答であれば、自身の状態を正常状態に設定する。そのため、図２に示す状態検出手段２６は、デバイスドライバー３０およびプリンター４０が正常に機能したとの検出結果を得る（状態検出ステップＳ１５）。この検出結果は、コントローラー２０で破棄される（Ｓ１６）。
【００４６】
このようにして、コントローラー２０は、プリンター４０を制御するデバイスドライバー３０に印刷処理要求を送信し、その印刷処理要求を非同期設定にすることができる。また、非同期設定にされた印刷処理要求に対して、デバイスドライバー３０からその処理要求の受信を完了したとの第１処理結果を受信することができる。そのため、コントローラー２０は、直前の印刷処理要求の実処理が完了していなくても第１処理結果（処理要求の受信完了）を代用して次の処理要求を送信することができる。その結果、コントローラー２０は、プリンター４０の制御のための待ち時間を低減することができ、パフォーマンスを向上させることができる。
【００４７】
（エラー発生時のコントローラーの処理について）
次いで、エラーが発生したときのコントローラーの処理について図２および図４を参照して説明する。図４は、コントローラーの処理の一例を説明するシーケンス図であり、詳しくはデバイスでの処理が失敗した場合を示す。また、図４は、処理要求受信ステップＳ０１から応答処理ステップＳ１２までは、図３に示す通常処理と同様であり、プリンター印刷ステップＳ０６で何らかのエラーが発生した場合を示す。なお、通常処理と同様な構成および内容については、符号を等しくして説明を省略する。
【００４８】
図４に示すように、印刷処理要求Ａに基づくプリンター印刷ステップＳ０６でエラーが発生した場合、プリンター４０は、デバイスドライバー３０に失敗応答を送信する（Ｓ２０）。なお、このエラーは、記録用紙切れ、ヘッド異常、紙送り不良等が想定されるがこれに限定するものではない。印刷を阻害する何らかの不具合であり、プリンター４０に備えられた不具合検出器等で検出されるものを含む。デバイスドライバー３０は、その失敗応答を受信してコントローラー２０にブリッジする（Ｓ２１）。
【００４９】
コントローラー２０は、デバイスドライバー３０からの処理要求に対する応答が処理の失敗を示す失敗応答であれば、自身の状態を図２に示すエラー復帰待ち状態遷移手段２７によって、エラー復帰待ち状態に遷移する（エラー復帰待ち状態遷移ステップＳ２２）。コントローラー２０は、図２に示す状態検出手段２６を用いて自身（コントローラー２０）の状態を確認し、エラー復帰待ち状態であることを確認することでデバイスドライバー３０にエラーが発生したことを検出する（状態検出ステップＳ２３）。このエラー検出結果は、第２処理結果としてアプリケーションプログラム１０に送信される（Ｓ２４）。
【００５０】
プリンター４０の不具合が解消され正常な印刷が可能になったと判断されると、プリンター４０は、エラーが解消されたとの復帰応答をデバイスドライバー３０に送信する（Ｓ２５）。デバイスドライバー３０は、その復帰応答を受信してコントローラー２０にブリッジする（Ｓ２６）。
【００５１】
コントローラー２０は、復帰応答を受信すると、図２に示す状態検出手段２６を用いて自身（コントローラー２０）の状態を確認しデバイスドライバー３０（プリンター４０）は正常な状態であると検出する（Ｓ２７）。そして、エラー復帰待ち状態を解除する（復帰処理ステップＳ２８）。この結果は、第３処理結果としてアプリケーションプログラム１０に送信される（Ｓ２９）。コントローラー２０は、印刷処理要求Ａをデバイスドライバー３０に再送信する（Ｓ３０）。
【００５２】
印刷処理要求Ａを受信したデバイスドライバー３０は、印刷処理要求Ａを、プリンター４０を動作させる印刷処理要求コマンドＡとしてプリンター４０に再送信する（Ｓ３１）。そして、プリンター４０の印刷は再開される（Ｓ３２）。その後は、図３に示す成功応答送信Ｓ１３から検出結果破棄Ｓ１６まで通常処理と同様のステップを行う。
【００５３】
この実施形態によれば、コントローラー２０は、状態検出手段２６でプリンター４０の状態を検出することができる。プリンター４０で何らかのエラーが発生した場合は、コントローラー２０は、プリンター４０がエラーから復帰するまでエラー復帰待ち状態に遷移する。プリンター４０がエラー状態から復帰したことを検出した場合は、復帰処理ステップで、直前の処理要求をデバイスドライバー３０へ再送信することができる。そのため、アプリケーションプログラム１０では、独自にエラー処理を行う必要がなくなる。その結果、アプリケーションプログラム１０の処理フローを簡素化できる。また、エラー処理において、デバイスドライバー３０を初期化する必要がなくなり、初期化処理時間を低減できる。また、エラー状態からの復帰を検出することができるため、復帰待ち時間を短縮することができる。従って、パフォーマンスを向上させることができる。
【００５４】
以上、本発明の実施形態について説明したが、上記実施例に対しては、本発明の趣旨から逸脱しない範囲で様々な変形を加えることができる。例えば上記実施例以外の変形例は、以下の通りである。
【００５５】
上記実施形態では、デバイスとしてプリンター４０を採用した場合について説明したがこれに限定しない。デバイスは、一般にデバイスドライバー３０によって制御されるものであれば如何なるものでも適用可能である。例えば、磁気情報の読み取り書き込み装置、ロボット等のＦＡ機器であってもよい。また、処理として印刷処理を適用した場合について説明したがこれに限定しない。アプリケーションプログラム１０によってシーケンス制御されるものであればよい。また、コントローラー２０の処理手順は例示であって、処理順序等、これに限定されるものではない。
【符号の説明】
【００５６】
１０…アプリケーションプログラム、２０…コントローラー、２１…処理要求受信手段、２２…処理要求送信手段、２４…非同期設定要求手段、２６…状態検出手段、２７…エラー復帰待ち状態遷移手段、２８…復帰処理手段、３０…デバイスドライバー、４０…デバイスとしてのプリンター、４１…印刷手段、４２…紙送り手段、ＣＭ…コンポーネントモデル。
【図１】
2014089559.tif 000003
【図２】
2014089559.tif 000004
【図３】
2014089559.tif 000005
【図４】
2014089559.tif 000006