JP2010277293A - コントローラーの制御方法およびコントローラー - Google Patents

コントローラーの制御方法およびコントローラー Download PDF

Info

Publication number
JP2010277293A
JP2010277293A JP2009128441A JP2009128441A JP2010277293A JP 2010277293 A JP2010277293 A JP 2010277293A JP 2009128441 A JP2009128441 A JP 2009128441A JP 2009128441 A JP2009128441 A JP 2009128441A JP 2010277293 A JP2010277293 A JP 2010277293A
Authority
JP
Japan
Prior art keywords
request
device driver
initialization
processing
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009128441A
Other languages
English (en)
Other versions
JP5229112B2 (ja
Inventor
Nobuhiko Nishimura
信彦 西村
Toshihiro Hagiwara
敏浩 萩原
Eiji Ito
英二 伊東
Atsushi Sakai
淳 酒井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2009128441A priority Critical patent/JP5229112B2/ja
Priority to US12/789,392 priority patent/US8468392B2/en
Publication of JP2010277293A publication Critical patent/JP2010277293A/ja
Priority to US13/888,285 priority patent/US8726096B2/en
Application granted granted Critical
Publication of JP5229112B2 publication Critical patent/JP5229112B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】アプリケーションの開発を簡素化でき、且つデバイス制御にかかる処理パフォーマンスの向上を図ることができるコントローラーの制御方法およびコントローラーを提供する。
【解決手段】アプリケーション1から処理要求を受信するステップと、受信した処理要求が初期化要求の場合、その要求がアプリケーション1起動後の最初の初期化要求か否かを判別するステップと、最初の初期化要求である場合、当該要求をデバイスドライバー3へ送信するステップと、デバイスドライバー3の初期化処理後の状態を示す初期化設定情報を記憶するステップと、デバイスドライバー3の状態を検出するステップと、デバイスドライバー3でエラーが発生した場合、その状態に基づく復帰処理をするステップと、デバイスドライバー3が復帰した場合、デバイスドライバー3の状態を、初期化設定情報に基づく状態に設定するための要求を行うステップと、を備える。
【選択図】図3

Description

本発明は、アプリケーションとデバイスドライバーとの間に介在し、デバイスドライバーを制御するためのソフトウェアモジュールとして機能するコントローラーの制御方法およびコントローラーに関するものである。
従来、コンピューターに接続されたデバイス(例えば、プリンター等)を制御する場合、そのデバイスに対応するデバイスドライバーを用いて制御を行う(例えば、特許文献1参照)。一般的に、このようなデバイスドライバーは、対応するデバイスを制御するための数多くのインターフェイスを提供しており、アプリケーションプログラム(以下、アプリケーション)を開発する場合、このデバイスドライバーが提供するインターフェイスを利用してプログラムを作成することで、デバイスの基本的な動作制御をはじめ、デバイスの状態に応じた繊細なエラー処理を実行することができる。
特開平11−265267号公報
しかしながら、上記のようにデバイスを制御する場合、一般的には、当該デバイスを制御するために非常に多数の関数と、デバイスに起因する多種類のエラー処理等が定義されているため、デバイスドライバーを利用して繊細なエラー処理を行う場合、アプリケーションの処理フローが複雑になるという問題がある。このため、アプリケーション開発にかかるコストが高くなる問題がある。
一方、アプリケーションの処理フローが複雑になることを避けるため一括処理等を行うようにし、エラーが発生した場合は、そのエラーの原因やデバイスドライバーの状態を無視し、常にデバイスドライバーを完全に初期化するというエラー処理を行う場合がある。しかしながら、一般的にデバイスドライバーの初期化処理には時間がかかるため、エラー処理として毎回初期化処理を行うことによりデバイスドライバーの処理パフォーマンスの低下を招くという問題がある。
本発明は、上記の問題に鑑み、アプリケーションの開発を簡素化でき、且つデバイスを制御するための処理パフォーマンスの向上を図ることができるコントローラーの制御方法およびコントローラーを提供することを目的とする。
本発明のコントローラーの制御方法は、アプリケーションとデバイスドライバーとの間に介在し、アプリケーションからの処理要求をデバイスドライバーに転送すると共に、デバイスドライバーからの処理要求に対する応答をアプリケーションに転送するためのソフトウェアモジュールであるコントローラーの制御方法であって、アプリケーションから処理要求を受信する処理要求受信ステップと、受信した処理要求が初期化要求である場合、当該初期化要求がアプリケーションの起動後における最初の初期化要求か否かを判別する初期化要求判別ステップと、初期化要求判別ステップにおける判別の結果、初期化要求が最初の初期化要求である場合、デバイスドライバーへ当該最初の初期化要求を送信する初期化要求送信ステップと、最初の初期化要求に基づくデバイスドライバーの初期化処理後の状態を示す初期化設定情報をデバイスドライバーから取得し、当該初期化設定情報を記憶する初期化設定情報記憶ステップと、デバイスドライバーの状態を検出する状態検出ステップと、状態検出ステップにおいて、デバイスドライバーでエラーが発生したことを検出した場合、当該デバイスドライバーの状態に基づく復帰処理を実行する復帰処理ステップと、復帰処理によりデバイスドライバーがエラーから復帰した場合、デバイスドライバーの状態を、記憶した初期化設定情報に基づく状態に設定するための要求をデバイスドライバーに送信する初期化設定要求ステップと、を備えたことを特徴とする。
また、本発明のコントローラーは、アプリケーションとデバイスドライバーとの間に介在し、アプリケーションからの処理要求をデバイスドライバーに転送すると共に、デバイスドライバーからの処理要求に対する応答をアプリケーションに転送するためのソフトウェアモジュールであるコントローラーであって、アプリケーションから処理要求を受信する処理要求受信手段と、受信した処理要求が初期化要求である場合、当該初期化要求がアプリケーションの起動後における最初の初期化要求か否かを判別する初期化要求判別手段と、初期化要求判別手段における判別の結果、初期化要求が最初の初期化要求である場合、デバイスドライバーへ当該最初の初期化要求を送信する初期化要求処理手段と、最初の初期化要求に基づくデバイスドライバーの初期化処理後の状態を示す初期化設定情報をデバイスドライバーから取得する初期化設定情報取得手段と、取得した初期化設定情報を記憶する初期化設定情報記憶手段と、デバイスドライバーの状態を検出する状態検出手段と、状態検出手段において、デバイスドライバーでエラーが発生したことを検出した場合、当該デバイスドライバーの状態に基づく復帰処理を実行する復帰処理手段と、復帰処理によりデバイスドライバーがエラーから復帰した場合、デバイスドライバーの状態を、記憶した初期化設定情報に基づく状態に設定するための要求をデバイスドライバーに送信する初期化設定要求手段と、を備えたことを特徴とする。
これらの構成によれば、デバイスドライバーにエラーが発生した場合は、コントローラーにより、そのデバイスドライバーの状態に応じた(エラー内容に応じた)適切な復帰処理(エラー処理)を実行することができる。これにより、アプリケーション側では、繊細なエラー処理を行う必要がなくなるため、アプリケーションの処理フローを簡素化することができ、アプリケーション開発にかかるコストを低減させることができる。
また、コントローラー側で、最初の初期化処理後のデバイスドライバーの状態(初期化設定情報)を記憶しておき、デバイスドライバーがエラーから復帰した後、この初期化設定情報に基づいてデバイスドライバーの状態を初期化処理後と同等の状態にすることができる。これにより、通信やインスタンスの初期化など長時間を要する初期化処理を不要とすることができ、例えば、エラー処理で初期化処理を行うようなアプリケーションに本発明のコントローラーを導入することで処理パフォーマンスを向上することができる。
本発明のコントローラーの制御方法において、初期化要求判別ステップにおける判別の結果、受信した初期化要求が最初の初期化要求ではない場合、当該初期化要求をデバイスドライバーに送信せず、デバイスドライバーの状態に応じて、アプリケーションに初期化要求に対する応答を返すことが好ましい。
また、本発明のコントローラーにおいて、初期化要求処理手段は、初期化要求判別手段における判別の結果、受信した初期化要求が最初の初期化要求ではない場合、当該初期化要求をデバイスドライバーに送信せず、デバイスドライバーの状態に応じて、アプリケーションに初期化要求に対する応答を返すことが好ましい。
これらの構成によれば、コントローラーは、アプリケーションからの初期化要求をデバイスドライバーにブリッジせず、自身で当該初期化要求に対する応答を返す。つまり、デバイスドライバーが提供する初期化処理(通信やインスタンスを実際に初期化する処理)を実行しない。これにより、例えば、毎回同様のデバイス制御処理を実行するために所定のタイミングで初期化処理を要求するようなアプリケーションや、エラー処理で初期化処理を行うアプリケーションに対し、本発明のコントローラーを導入することで、処理パフォーマンスを向上させることができる。
本発明のコントローラーにおいて、コントローラーの入出力インターフェイスは、デバイスドライバーの入出力インターフェイスと同一の仕様、およびデバイスドライバーの入出力インターフェイスを拡張した仕様のいずれかであることが好ましい。
この構成によれば、コントローラーは、デバイスドライバーの入出力インターフェイスと同一仕様、あるいは拡張した仕様の入出力インターフェイスを提供する。これにより、アプリケーション開発者は、新たな仕様の入出力インターフェイスを覚える必要がなく、従来からあるデバイスドライバーにより提供されている入出力インターフェイスを利用するのと同様の感覚で開発を行うことができるため、アプリケーションの開発効率を低下させることない。
本発明のコントローラーにおいて、処理要求は、複数の処理要求をまとめて定義したものであることが好ましい。
また、本発明のコントローラーにおいて、複数の処理要求は、マークアップ言語で定義されていることが好ましい。
これらの構成によれば、例えば、XML(Extensible Markup Language)で複数の処理要求をまとめて定義し、一括処理するアプリケーションのように、エラー処理(エラーハンドリング)を繊細に行うことができないアプリケーションでも、本発明のコントローラーを導入することで適切なエラー処理を行うことができるため、このような一括処理を行うアプリケーションの実現が容易になる。
本実施形態にかかるコンポーネントモデルの構成を示すブロック図である。 コントローラーの機能ブロック図である。 大まかなエラー処理を行うアプリケーションを対象とした場合のコントローラーの処理の一例を説明するシーケンス図である。 エラー処理を行わないアプリケーションを対象とした場合のコントローラーの処理の一例を説明するシーケンス図である。 一定の処理毎にデバイスドライバーの初期化を行うアプリケーションを対象とした場合のコントローラーの処理の一例を説明するシーケンス図である。
以下、添付の図面を参照して、本発明のコントローラーを含むコンポーネントモデルについて説明する。図1は本実施形態のコンポーネントモデルCMの構成を示すブロック図である。同図に示すように、コンポーネントモデルCMは、アプリケーション1と、コントローラー2と、デバイスドライバー3とにより構成されている。なお、これらアプリケーション1、コントローラー2およびデバイスドライバー3は、コンピューターに搭載されたOS(Operating System)上で動作するソフトウェアモジュール(プログラム)として実現される。
アプリケーション1は、コンピューターに接続されたデバイス(例えば、プリンター等,図示省略)に所定の動作を実行させるための処理要求や、デバイスドライバー3の処理でエラーが発生した場合のエラー処理に関する処理要求などを行うプログラムである。これら処理要求は、コントローラー2が提供する入出力インターフェイス(第1入出力インターフェイス11)を用いて定義されており、アプリケーション1は、コントローラー2に対して各処理要求を送信すると共に、コントローラー2から当該各処理要求に対する応答(処理の成功/失敗等)を受信する。
コントローラー2は、アプリケーション1とデバイスドライバー3との間に介在するソフトウェアモジュールであり、アプリケーション1からの処理要求をデバイスドライバー3に転送する(ブリッジする)と共に、デバイスドライバー3からの処理要求に対する応答をアプリケーション1に転送する(ブリッジする)ものである。具体的には、コントローラー2は、アプリケーション1に対して上記の第1入出力インターフェイス11を提供しており、この第1入出力インターフェイス11を利用することで、アプリケーション1からの処理要求の受信、およびアプリケーション1への処理要求に対する応答を行なう。また、コントローラー2は、デバイスドライバー3が提供する入出力インターフェイス(第2入出力インターフェイス12)を用いて、アプリケーション1からの処理要求をデバイスドライバー3に転送、およびデバイスドライバー3から処理要求に対する応答を受信する。
デバイスドライバー3は、対象となるデバイスを制御するためのプログラムであり、各デバイスの仕様に基づいて作成される。デバイスドライバー3は、コントローラー2に対して、上記の第2入出力インターフェイス12を提供しており、この第2入出力インターフェイス12を利用して、コントローラー2からの処理要求を受信すると共に、コントローラー2に対して当該処理要求に対する応答を行う。
なお、コントローラー2が提供する第1入出力インターフェイス11の仕様は、デバイスドライバー3が提供する第2入出力インターフェイス12の仕様と同一、あるいは第2入出力インターフェイス12を拡張した仕様(例えば、XMLに対応するように拡張した仕様)であることが好ましい。これにより、アプリケーション開発者は、新たな入出力インターフェイスの仕様を覚える必要がなく、従来からあるデバイスドライバー3により提供されている入出力インターフェイスを利用するのと同様の感覚で開発を行うことができるため、アプリケーション1の開発効率を低下させることない。
次に、図2の機能ブロック図を参照して、コントローラー2の機能構成について説明する。コントローラー2は、処理要求受信手段21、要求処理手段22、応答処理手段23、初期化設定情報取得手段24、初期化設定情報記憶手段25、状態検出手段26、復帰処理手段27、および初期化設定要求手段28を有している。
処理要求受信手段21は、アプリケーション1から処理要求を受信する手段として機能する。要求処理手段22は、アプリケーション1から受信した処理要求の内容およびデバイスドライバー3の状態に基づいて、適切な処理を行う手段として機能する。具体的には、アプリケーション1からの処理要求が初期化要求であった場合、当該初期化要求がアプリケーション1起動後の最初の初期化要求か否かを判別する(初期化要求判別手段)。この判別の結果、最初の初期化要求である場合、当該最初の初期化要求をデバイスドライバー3に送信する(初期化要求処理手段)。一方、最初の初期化要求で無い場合、当該初期化要求をデバイスドライバー3にブリッジ(送信)せず、デバイスドライバー3の状態に応じてアプリケーション1に初期化要求に対する応答を返す(初期化要求処理手段)。
また、処理要求が一連の処理を終了するための終了処理要求である場合、当該終了処理要求をデバイスドライバー3にブリッジせず、アプリケーション1に対して処理の成功を示す応答を返す。さらに、処理要求が上記初期化要求および終了処理要求以外のもの(以下、「通常処理要求」と称す。)の場合であって、デバイスドライバー3が正常動作している場合は、当該通常処理要求をデバイスドライバー3にブリッジし、デバイスドライバー3にエラーが発生している場合は、当該通常処理要求をデバイスドライバー3にブリッジせず、アプリケーション1に対して通常処理要求の失敗を示す応答を返す。
応答処理手段23は、デバイスドライバー3から処理要求に対する応答を受信し、これをアプリケーション1に送信する手段として機能する。つまり、デバイスドライバー3からの応答をアプリケーション1にブリッジする手段として機能する。
初期化設定情報取得手段24は、デバイスドライバー3から初期化設定情報を取得する手段として機能する。この初期化設定情報は、デバイスドライバー3がアプリケーション1からの最初の初期化要求により初期化処理(実際に通信やインスタンスの初期化をする処理)を実行した後の状態(以下、この状態を「初期化状態」と称す。)を示す情報である。初期化設定情報記憶手段25は、取得した初期化設定情報を記憶(保存)する手段として機能する。
状態検出手段26は、デバイスドライバー3の状態を検出する手段として機能するものであり、デバイスドライバー3からの処理要求に対する応答に基づいて自身(コントローラー2)の状態を設定し、この状態を確認することで、間接的にデバイスドライバー3の状態を検出する。具体的には、デバイスドライバー3からの処理要求に対する応答が処理の成功を示す応答であれば、自身の状態を正常状態に設定し、この状態(正常状態)を確認することでデバイスドライバー3は正常な状態であると検出する。一方、処理の失敗を示す応答であれば、自身の状態をエラー復帰待ち状態に設定し、この状態(エラー復帰待ち状態)を確認することでデバイスドライバー3にエラーが発生したことを検出する。
復帰処理手段27は、上記の状態検出手段26によりデバイスドライバー3にエラーが発生したことを検出した場合、デバイスドライバー3の状態(エラーの内容)に基づいて、適切な復帰処理(例えば、エラーを修復するためのコマンドを送る等)を行う手段として機能する。
初期化設定要求手段28は、復帰処理手段27によりデバイスドライバー3がエラーから復帰した場合、デバイスドライバー3の状態を、記憶した初期化設定情報に基づく状態に設定するための手段として機能する。これにより、実際に通信やインスタンスの初期化処理を行うことなく、デバイスドライバー3の状態を初期化状態(初期化処理後と同様の状態)に設定することができる。
ここで、図3ないし図5のシーケンス図を参照して、コントローラー2の処理について具体例を挙げて説明する。図3は、大まかなエラー処理を行うアプリケーション1を対象とした場合のコントローラー2の処理について説明するシーケンスの一例である。なお、大まかなエラー処理とは、デバイスドライバー3でエラーが発生した場合、アプリケーション1はエラーの内容やデバイスドライバー3の状態に関係なく終了処理要求および初期化要求を行う処理を言う。
まず、アプリケーション1は、コントローラー2に対して、デバイスドライバー3を初期化するための初期化要求を行う(S01)。コントローラー2は、この初期化要求が、アプリケーション1起動後の最初の初期化要求か否か(つまり、アプリケーション1から受けた最初の初期化要求か否か)を判別する。ここでは、最初の初期化要求であるため、コントローラー2は、当該初期化要求をデバイスドライバー3へブリッジする(S02)。初期化要求を受けたデバイスドライバー3は、当該初期化要求に基づいて初期化処理(通信やインスタンスの初期化)を実行し(S03)、初期化処理が成功した旨を示す応答(以下、「成功応答」と称す。)をコントローラー2に返す(S04)。
続いて、初期化要求に対する成功応答を受けたコントローラー2は、デバイスドライバー3の現在の状態、つまり初期化処理直後の状態を取得し、初期化設定情報として記憶する(S05)。そして、コントローラー2は、デバイスドライバー3からの初期化要求に対する成功応答を、アプリケーション1にブリッジする(S06)。
続いて、アプリケーション1は、コントローラー2に対して、デバイスドライバー3に所定の処理Aを実行させるための処理要求(処理要求A)を行う(S07)。処理要求Aを受けたコントローラー2は、自身の状態(正常状態かエラー復帰待ち状態か)を確認する。つまり、デバイスドライバー3にエラーが発生しているか否かを確認する。ここでは、自身の状態は正常状態であるため(つまり、デバイスドライバー3は正常動作しているため)、コントローラー2は、当該処理要求Aをデバイスドライバー3にブリッジする(S08)。
処理要求Aを受けたデバイスドライバー3は、当該処理要求Aに基づいて処理Aを実行し(S09)、処理Aが成功した旨を示す成功応答をコントローラー2に返す(S10)。そして、コントローラー2は、デバイスドライバー3からの処理要求Aに対する成功応答を、アプリケーション1にブリッジする(S11)。
続いて、アプリケーション1は、デバイスドライバー3に所定の処理Bを実行させるための処理要求(処理要求B)を行う(S12)。処理要求Bを受けたコントローラー2は、自身の状態(正常状態かエラー復帰待ち状態か)を確認する。ここでは、自身の状態は正常状態であるため(つまり、デバイスドライバー3は正常動作しているため)、コントローラー2は、当該処理要求Bをデバイスドライバー3にブリッジする(S13)。
処理要求Bを受けたデバイスドライバー3は、処理要求Bに基づいて処理Bを実行する(S14)。この時、処理Bが失敗すると、デバイスドライバー3は、処理Bが失敗した旨を示す応答(以下、「失敗応答」と称す。)をコントローラー2に返す(S15)。コントローラー2は、デバイスドライバー3から処理要求Bに対する失敗応答を受けると、これをトリガーとしてデバイスドライバー3でエラーが発生したことを検出すると共に、自身の状態をエラー復帰待ち状態に遷移する(S16)。そして、コントローラー2は、処理要求Bに対する失敗応答をアプリケーション1にブリッジする(S17)。
次に、コントローラー2は、デバイスドライバー3の状態(エラー内容)を確認し、この状態に基づいた復帰処理を実行する(例えば、デバイスドライバー3のエラー内容に応じた所定の復帰命令を出す;S18)。
ここで、処理要求Bに対する失敗応答を受けたアプリケーション1が、エラー処理を行うべく、コントローラー2に対して、一連の処理を終了するための処理要求(終了処理要求)を行うと(S19)、コントローラー2は、当該処理終了要求をデバイスドライバー3にブリッジせず、アプリケーション1に対して終了処理要求が成功した旨を示す成功応答を返す(S20)。
続いて、S18の復帰処理により、デバイスドライバー3がエラーから復帰すると、デバイスドライバー3は、コントローラー2に対してその旨(エラーから復帰した旨)を通知(エラー復帰通知)する(S21)。エラー復帰通知を受けたコントローラー2は、デバイスドライバー3の状態を、記憶した初期化設定情報に基づく状態に設定するように要求する(S22)。これにより、デバイスドライバー3は、自身の状態を初期化状態(S03の初期化処理を実行した直後の状態と同様の状態)に設定する(S23)。そして、コントローラー2は、デバイスドライバー3から当該設定が成功した旨を示す成功応答を受け(S24)、自身の状態をエラー復帰待ち状態から正常状態に遷移する(S25)。
ここで、アプリケーション1からエラー処理の一環として初期化要求が行われると(S26)、コントローラー2は、当該初期化要求をデバイスドライバー3にブリッジすることなく、アプリケーション1に対して当該初期要求に対する成功応答を返す(S27)。つまり、アプリケーション1からの初期化要求があっても、実際にはデバイスドライバー3の初期化処理を実行しない。そして、初期化要求に対する成功応答を受けたアプリケーション1は、デバイスドライバー3のエラー処理が完了したと判断し、処理要求Aのリトライを行う(S28)。
処理要求Aを受けたコントローラー2は、自身の状態(正常状態かエラー復帰待ち状態か)を確認する。ここでは、自身の状態は正常状態であるため(つまり、デバイスドライバー3はエラーから復帰し、正常動作しているため)、コントローラー2は、当該処理要求Aをデバイスドライバー3にブリッジする(S29)。そして、処理要求Aを受けたデバイスドライバー3は、処理要求Aに基づいて処理Aを実行し(S30)、処理Aが成功した旨を示す成功応答をコントローラー2に返す(S31)。そして、コントローラー2は、デバイスドライバー3からの処理要求Aに対する成功応答を、アプリケーション1にブリッジする(S32)。以降、アプリケーション1は、処理要求Aに続く処理要求(処理要求B)を行う。
このように、エラー処理として、デバイスドライバー3の状態やエラー内容にかかわらず初期化処理(初期化要求)をするアプリケーション1に対して本発明のコントローラー2を導入することにより、アプリケーション1がエラー処理として行う初期化要求に対してデバイスドライバー3の初期化処理行わないため、処理全体のパフォーマンスの向上を図ることができる。
次に、図4について説明する。図4は、エラー処理を行わないアプリケーション1を対象とした場合のコントローラー2の処理について説明するシーケンスの一例である。この図4のシーケンスは、アプリケーション1が、デバイスドライバー3のエラー発生時にエラー処理を行わず、処理要求のリトライを行う点で図3のシーケンスと異なる。以下、異なる部分について説明する。
アプリケーション1は、S57の処理で、処理要求Bに対する失敗応答を受けると、コントローラー2に処理要求Aのリトライを行う(S59)。処理要求Aを受けたコントローラー2は、自身の状態(正常状態かエラー復帰待ち状態か)を確認する(S60)。ここでは、自身の状態はエラー復帰待ち状態であるため(つまり、デバイスドライバー3にエラーが発生しているため)、コントローラー2は、当該処理要求Aをデバイスドライバー3にブリッジせず、アプリケーション1に対して処理要求Bの失敗応答を返す(S61)。
つまり、コントローラー2は、S58の復帰処理によりデバイスドライバー3がエラーから復帰するまでは(デバイスドライバー3にエラーが発生している間は)、アプリケーション1からの処理要求をデバイスドライバー3にブリッジすることなく、アプリケーション1に対して失敗応答を返す処理を行う。このように、コントローラー2側でエラー処理を行うため、処理要求が失敗した場合、繊細なエラー処理を行なわずに処理要求をリトライするようなアプリケーション1にも対応することできる。
次に、図5について説明する。図5は、一定の処理毎にデバイスドライバー3の初期化を行うアプリケーション1を対象とした場合のコントローラー2の処理について説明するシーケンスの一例である。ここでは、処理要求A、処理要求B、終了処理要求および初期化要求を続けて行う処理を1セットとし、この処理セットを繰り返し行うアプリケーション1を例示する。なお、S81からS86までの処理は、図3のS01からS06までの処理と同様であるため、説明を省略する。
S81からS86の処理完了後、アプリケーション1は、コントローラー2に対して、デバイスドライバー3に所定の処理Aを実行させるための処理要求(処理要求A)を行う(S87)。処理要求Aを受けたコントローラー2は、デバイスドライバー3の状態を確認する。ここでは、デバイスドライバー3は正常動作しているため、コントローラー2は、処理要求Aをデバイスドライバー3にブリッジする(S88)。処理要求Aを受けたデバイスドライバー3は、当該処理要求Aに基づいて処理Aを実行し(S89)、処理Aが成功した旨を示す成功応答をコントローラー2に返す(S90)。そして、コントローラー2は、デバイスドライバー3からの処理要求Aに対する成功応答を、アプリケーション1にブリッジする(S91)。
続いて、アプリケーション1は、コントローラー2に対して、デバイスドライバー3に所定の処理Bを実行させるための処理要求(処理要求B)を行う(S92)。処理要求Bを受けたコントローラー2は、デバイスドライバー3の状態を確認する。ここでは、デバイスドライバー3は正常動作しているため、コントローラー2は、当該処理要求Bをデバイスドライバー3にブリッジする(S93)。処理要求Bを受けたデバイスドライバー3は、当該処理要求Bに基づいて処理Bを実行し(S94)、処理Bが成功した旨を示す成功応答をコントローラー2に返す(S95)。そして、コントローラー2は、デバイスドライバー3からの処理要求Bに対する成功応答を、アプリケーション1にブリッジする(S96)。
続いて、アプリケーション1は、コントローラー2に対して、一連の処理を終了するための処理要求(終了処理要求)を行うと(S97)、コントローラー2は、当該処理終了要求をデバイスドライバー3にブリッジせず、アプリケーション1に対して終了処理要求が成功した旨を示す成功応答を返す(S98)。続いて、アプリケーション1は、コントローラー2に対して初期化要求を行うと(S99)、コントローラー2は、当該初期化要求をデバイスドライバー3にブリッジせず、アプリケーション1に対して初期化要求が成功した旨を示す成功応答を返す(S100)。この後、アプリケーション1は、S87からS100までの処理(一点鎖線で囲った範囲の処理)を繰り返す。
このように、本発明のコントローラー2は、アプリケーション1が一定の処理毎に(所定のタイミングで)初期化処理を要求したとしても、デバイスドライバー3に初期化要求をブリッジしない。つまり、デバイスドライバー3の初期化処理を実行しない。これにより、一定の処理毎に初期化処理を要求するようなアプリケーション1に対し、本発明のコントローラー2を導入することで、処理パフォーマンスを向上させることができる。
以上のように、本実施形態によれば、デバイスドライバー3にエラーが発生した場合は、コントローラー2がそのデバイスドライバー3の状態に応じた(エラー内容に応じた)適切な復帰処理(エラー処理)を実行する。これにより、アプリケーション1では、繊細なエラー処理を行う必要がなくなるため、アプリケーション1の処理フローを簡素化することができ、アプリケーション開発にかかるコストを低減させることができる。
また、コントローラー2で、最初の初期化処理後のデバイスドライバー3の状態(初期化設定情報)を記憶しておき、デバイスドライバー3がエラーから復帰した後、この初期化設定情報に基づいてデバイスドライバー3の状態を初期化処理後と同等の状態にすることができる。これにより、通信やインスタンスの初期化など長時間を要する初期化処理を不要とすることができ、処理パフォーマンスを向上することができる。
なお、アプリケーション1は、コントローラー2が提供する第1入出力インターフェイス11を用いてデバイス制御を行うものであれば良く、例えば、処理要求毎にその処理が成功したか失敗したかを判断し、判断結果に基づいて次の処理要求を確定する逐次処理を行うものであっても良いし、複数の処理要求をまとめて実行した後、処理の成功/失敗を判断し、この判断結果に基づいて次の処理要求を確定する一括処理を行うものであっても良い。
後者の例として、例えば、マークアップ言語の一種であるXMLで複数の処理要求をまとめて定義し、一括処理するアプリケーション1が考えられる。このアプリケーション1のように、一括処理するがために、エラー処理(エラーハンドリング)を繊細に行うことができないアプリケーション1であっても、本発明のコントローラー2を導入することで適切なエラー処理を行うことができるため、このような一括処理を行うアプリケーション1の実現が容易になる。
また、本実施形態のコントローラー2は、UPOS(Unified POS)の規格に則った仕様を実現するデバイスドライバー3(UPOS準拠ドライバー)にも適用することができる。この場合、コントローラー2とUPOS準拠ドライバーとの間の入出力インターフェイス(第2入出力インターフェイス12)を、UPOSの仕様に準拠した入出力インターフェイスとすることで実現することができる。
1…アプリケーション 2…コントローラー 3…デバイスドライバー 21…処理要求受信手段 22…要求処理手段 23…応答処理手段 24…初期化設定情報取得手段 25…初期化設定情報記憶手段 26…状態検出手段 27…復帰処理手段 28…初期化設定要求手段 CM…コンポーネントモデル

Claims (7)

  1. アプリケーションとデバイスドライバーとの間に介在し、前記アプリケーションからの処理要求を前記デバイスドライバーに転送すると共に、前記デバイスドライバーからの前記処理要求に対する応答を前記アプリケーションに転送するためのソフトウェアモジュールであるコントローラーの制御方法であって、
    前記アプリケーションから前記処理要求を受信する処理要求受信ステップと、
    受信した前記処理要求が初期化要求である場合、当該初期化要求が前記アプリケーションの起動後における最初の初期化要求か否かを判別する初期化要求判別ステップと、
    前記初期化要求判別ステップにおける判別の結果、前記初期化要求が前記最初の初期化要求である場合、前記デバイスドライバーへ当該最初の初期化要求を送信する初期化要求送信ステップと、
    前記最初の初期化要求に基づく前記デバイスドライバーの初期化処理後の状態を示す初期化設定情報を前記デバイスドライバーから取得し、当該初期化設定情報を記憶する初期化設定情報記憶ステップと、
    前記デバイスドライバーの状態を検出する状態検出ステップと、
    前記状態検出ステップにおいて、前記デバイスドライバーでエラーが発生したことを検出した場合、当該デバイスドライバーの状態に基づく復帰処理を実行する復帰処理ステップと、
    前記復帰処理により前記デバイスドライバーがエラーから復帰した場合、前記デバイスドライバーの状態を、記憶した前記初期化設定情報に基づく状態に設定するための要求を前記デバイスドライバーに送信する初期化設定要求ステップと、を備えたことを特徴とするコントローラーの制御方法。
  2. 前記初期化要求判別ステップにおける判別の結果、受信した前記初期化要求が前記最初の初期化要求ではない場合、当該初期化要求を前記デバイスドライバーに送信せず、前記デバイスドライバーの状態に応じて、前記アプリケーションに前記初期化要求に対する応答を返すことを特徴とする請求項1に記載のコントローラーの制御方法。
  3. アプリケーションとデバイスドライバーとの間に介在し、前記アプリケーションからの処理要求を前記デバイスドライバーに転送すると共に、前記デバイスドライバーからの前記処理要求に対する応答を前記アプリケーションに転送するためのソフトウェアモジュールであるコントローラーであって、
    前記アプリケーションから前記処理要求を受信する処理要求受信手段と、
    受信した前記処理要求が初期化要求である場合、当該初期化要求が前記アプリケーションの起動後における最初の初期化要求か否かを判別する初期化要求判別手段と、
    前記初期化要求判別手段における判別の結果、前記初期化要求が前記最初の初期化要求である場合、前記デバイスドライバーへ当該最初の初期化要求を送信する初期化要求処理手段と、
    前記最初の初期化要求に基づく前記デバイスドライバーの初期化処理後の状態を示す初期化設定情報を前記デバイスドライバーから取得する初期化設定情報取得手段と、
    取得した前記初期化設定情報を記憶する初期化設定情報記憶手段と、
    前記デバイスドライバーの状態を検出する状態検出手段と、
    前記状態検出手段において、前記デバイスドライバーでエラーが発生したことを検出した場合、当該デバイスドライバーの状態に基づく復帰処理を実行する復帰処理手段と、
    前記復帰処理により前記デバイスドライバーがエラーから復帰した場合、前記デバイスドライバーの状態を、記憶した前記初期化設定情報に基づく状態に設定するための要求を前記デバイスドライバーに送信する初期化設定要求手段と、を備えたことを特徴とするコントローラー。
  4. 前記初期化要求処理手段は、
    前記初期化要求判別手段における判別の結果、受信した前記初期化要求が前記最初の初期化要求ではない場合、当該初期化要求を前記デバイスドライバーに送信せず、前記デバイスドライバーの状態に応じて、前記アプリケーションに前記初期化要求に対する応答を返すことを特徴とする請求項3に記載のコントローラー。
  5. 前記コントローラーの入出力インターフェイスは、前記デバイスドライバーの入出力インターフェイスと同一の仕様、および前記デバイスドライバーの入出力インターフェイスを拡張した仕様のいずれかであることを特徴とする請求項3または4に記載のコントローラー。
  6. 前記処理要求は、複数の処理要求をまとめて定義したものであることを特徴とする請求項3ないし5のいずれかに記載のコントローラー。
  7. 前記複数の処理要求は、マークアップ言語で定義されていることを特徴とする請求項6に記載のコントローラー。
JP2009128441A 2009-05-28 2009-05-28 コントローラーの制御方法およびコントローラー Active JP5229112B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009128441A JP5229112B2 (ja) 2009-05-28 2009-05-28 コントローラーの制御方法およびコントローラー
US12/789,392 US8468392B2 (en) 2009-05-28 2010-05-27 Controller and control method for a controller
US13/888,285 US8726096B2 (en) 2009-05-28 2013-05-06 Controller and control method for a controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009128441A JP5229112B2 (ja) 2009-05-28 2009-05-28 コントローラーの制御方法およびコントローラー

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013056523A Division JP5516782B2 (ja) 2013-03-19 2013-03-19 コントローラーの制御方法およびコントローラー

Publications (2)

Publication Number Publication Date
JP2010277293A true JP2010277293A (ja) 2010-12-09
JP5229112B2 JP5229112B2 (ja) 2013-07-03

Family

ID=43221646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009128441A Active JP5229112B2 (ja) 2009-05-28 2009-05-28 コントローラーの制御方法およびコントローラー

Country Status (2)

Country Link
US (2) US8468392B2 (ja)
JP (1) JP5229112B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101491290B1 (ko) 2013-07-31 2015-02-11 한양대학교 산학협력단 시그널을 사용한 디바이스 드라이버 오류 진단 방법
JP2015079283A (ja) * 2013-10-15 2015-04-23 コニカミノルタ株式会社 デバイスドライバ、情報処理装置および出力設定変換方法
JP2016126533A (ja) * 2014-12-29 2016-07-11 コニカミノルタ株式会社 情報送信装置、情報送信方法、および情報送信プログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874981B2 (en) * 2010-05-12 2014-10-28 Mediatek Inc. Method of creating target storage layout table referenced for partitioning storage space of storage device and related electronic device and machine-readable medium
TW201214263A (en) * 2010-09-29 2012-04-01 Hon Hai Prec Ind Co Ltd System and method for adding widget on Android
US9519600B2 (en) 2011-03-04 2016-12-13 Microsoft Technology Licensing, Llc Driver shimming
US9003363B2 (en) * 2011-03-21 2015-04-07 Microsoft Technology Licensing, Llc Device flags
CN106445510B (zh) * 2016-09-09 2019-11-15 广州视睿电子科技有限公司 一种应用程序的控制方法与装置
CN109254531B (zh) * 2017-11-29 2021-10-22 辽宁石油化工大学 具有时滞和干扰的多阶段间歇过程的最优成本控制方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869430A (ja) * 1994-08-29 1996-03-12 Nippon Telegr & Teleph Corp <Ntt> 入出力装置制御システムおよびその構成の変更処理方法
JPH08185287A (ja) * 1994-12-28 1996-07-16 Pfu Ltd プリンタ・システム
JPH11184657A (ja) * 1997-12-25 1999-07-09 Fuji Xerox Co Ltd 印刷システム及びそのデータ処理方法
JP2004070964A (ja) * 2002-08-08 2004-03-04 Samsung Electronics Co Ltd デバイスドライバ制御共通化方法
JP2005108082A (ja) * 2003-10-01 2005-04-21 Okuma Corp デバイスドライバのインターフェース方法
JP2006209430A (ja) * 2005-01-27 2006-08-10 Konica Minolta Business Technologies Inc 仮想プリンタドライバ、および仮想プリンタドライバプログラム
JP2010257040A (ja) * 2009-04-22 2010-11-11 Brother Ind Ltd プログラム、およびコンピュータ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3051043B2 (ja) 1995-03-31 2000-06-12 東芝テック株式会社 データ処理装置
JPH11265267A (ja) 1998-03-17 1999-09-28 Canon Inc データ処理装置およびデータ処理装置のドライバ切替方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
US6889380B1 (en) * 2000-06-30 2005-05-03 Intel Corporation Delaying loading of host-side drivers for cluster resources to avoid communication failures
JP4120469B2 (ja) 2003-05-22 2008-07-16 セイコーエプソン株式会社 Posシステムの印刷制御装置、イメージデータの登録方法、及びイメージデータの初期化方法
US7844956B2 (en) * 2004-11-24 2010-11-30 Rojer Alan S Object-oriented processing of markup
US7673174B2 (en) * 2005-04-06 2010-03-02 University Of Washington Recovering device drivers
US7428602B2 (en) * 2005-11-29 2008-09-23 International Business Machines Corporation Method for executing initialization code to configure connected devices and executing segments of configuration code from a failed segment
US20120167122A1 (en) * 2010-12-27 2012-06-28 Nokia Corporation Method and apparatus for pre-initializing application rendering processes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869430A (ja) * 1994-08-29 1996-03-12 Nippon Telegr & Teleph Corp <Ntt> 入出力装置制御システムおよびその構成の変更処理方法
JPH08185287A (ja) * 1994-12-28 1996-07-16 Pfu Ltd プリンタ・システム
JPH11184657A (ja) * 1997-12-25 1999-07-09 Fuji Xerox Co Ltd 印刷システム及びそのデータ処理方法
JP2004070964A (ja) * 2002-08-08 2004-03-04 Samsung Electronics Co Ltd デバイスドライバ制御共通化方法
JP2005108082A (ja) * 2003-10-01 2005-04-21 Okuma Corp デバイスドライバのインターフェース方法
JP2006209430A (ja) * 2005-01-27 2006-08-10 Konica Minolta Business Technologies Inc 仮想プリンタドライバ、および仮想プリンタドライバプログラム
JP2010257040A (ja) * 2009-04-22 2010-11-11 Brother Ind Ltd プログラム、およびコンピュータ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101491290B1 (ko) 2013-07-31 2015-02-11 한양대학교 산학협력단 시그널을 사용한 디바이스 드라이버 오류 진단 방법
JP2015079283A (ja) * 2013-10-15 2015-04-23 コニカミノルタ株式会社 デバイスドライバ、情報処理装置および出力設定変換方法
JP2016126533A (ja) * 2014-12-29 2016-07-11 コニカミノルタ株式会社 情報送信装置、情報送信方法、および情報送信プログラム

Also Published As

Publication number Publication date
US20100306584A1 (en) 2010-12-02
US8726096B2 (en) 2014-05-13
US8468392B2 (en) 2013-06-18
US20130246844A1 (en) 2013-09-19
JP5229112B2 (ja) 2013-07-03

Similar Documents

Publication Publication Date Title
JP5229112B2 (ja) コントローラーの制御方法およびコントローラー
US11256539B2 (en) Task processing method, apparatus, and system based on distributed system
US9983791B2 (en) System management controller and method of configuration file backup and recovery
US9152492B2 (en) Performing recovery of a headless computer
US8677177B2 (en) Apparatus, a recovery method and a program thereof
RU2614569C2 (ru) Стойка с функцией автоматического восстановления и способ автоматического восстановления для этой стойки
CN104395879A (zh) 在运行具有握手的客户端界面时的自动更新
JP4646859B2 (ja) Usb機器、およびusb接続システム
US9432545B2 (en) Information processing apparatus, method of controlling the same, and storage medium for controlling transition to a sleep mode and setting of an interrupt setting in accordance with reception of data
JP2002157137A (ja) 通信機能を備えたプログラム更新システム
JP2006235992A (ja) プリンタのファームウェア書き替えシステムおよびファームウェア書き替え方法並びにプリンタ
JP5954353B2 (ja) コントローラーの制御方法
CN107678891B (zh) 一种存储系统的双控方法、装置及可读存储介质
JP5516782B2 (ja) コントローラーの制御方法およびコントローラー
JP5674730B2 (ja) データカードとホストとの間の通信異常、及びデータカードの異常の回復のための方法
JP2006106914A (ja) ファームウェアで動作する処理装置およびファームウェア更新方法
CN114237722A (zh) 一种系统的启动方法、装置、设备及工程车辆
JP6221972B2 (ja) ファームウェアの更新システムおよび更新制御方法
JP2014107839A (ja) 画像形成装置、表示画面制御方法及び表示画面制御プログラム
JP2009521025A (ja) コンピュータに補助ユニットをインストールする方法
JP2006235909A (ja) 入出力実行時間監視方法
KR102433435B1 (ko) 랜섬웨어 피해 복원을 위한 p2p 디스크 복원 방법 및 장치
JP7131084B2 (ja) コンピュータプログラム、及び、制御方法
JP2017049874A (ja) 情報処理装置、情報処理システム、制御方法、および制御プログラム
KR101108679B1 (ko) 자가진단 및 복원기능을 갖는 초음파 진단 방법 및 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130304

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229112

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350