(57)【要約】【課題】複数のアプリケーションが複合機を円滑に利用することが可能な情報処理装置を提供すること。【解決手段】複合機２０が接続されるホストとしての情報処理装置において、情報処理装置において実行され、複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第１のドライバ（ドライバ４１０，４２０）と、複合機との間で情報の授受を行う第２のドライバ（ドライバ３００）と、第１のドライバと、第２のドライバの間に設けられ、複数のアプリケーションプログラムと、複合機との間における情報の授受の制御を行う制御手段（サーバ４３０）と、を有する。【選択図】図５
2008250658.tif 000002
【特許請求の範囲】
【請求項１】
プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において、
上記情報処理装置において実行され、上記複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第１のドライバと、
上記複合機との間で情報の授受を行う第２のドライバと、
上記第１のドライバと、上記第２のドライバの間に設けられ、上記複数のアプリケーションプログラムと、上記複合機との間における情報の授受の制御を行う制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記複数のアプリケーションプログラムから前記複合機へのアクセス要求が輻輳した場合には、これらのアクセス要求に対する調停処理を実行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御手段は、前記複数のアプリケーションプログラムのいずれかにより第２のドライバが既にオープンされている場合には、他のアプリケーションプログラムからオープンの要求がなされた場合であってもオープン処理を実行せず、また、前記複数のアプリケーションプログラムのいずれかにより第２のドライバが使用されている場合には、他のアプリケーションプログラムからクローズの要求がなされた場合であってもクローズ処理を実行しないことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記アプリケーションプログラムと、前記制御手段とは、異なるプロセス領域において実行されることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記制御手段は、前記複合機から供給された所定の情報については、要求を行った複数のアプリケーションプログラムに対して並行して当該情報を供給することを特徴とする請求項１記載の情報処理装置。
【請求項６】
プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において実行される情報処理プログラムにおいて、
上記情報処理装置において実行され、上記複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第１のドライバモジュール、
上記複合機との間で情報の授受を行う第２のドライバモジュール、
上記第１のドライバモジュールと、上記第２のドライバモジュールの間に設けられ、上記複数のアプリケーションプログラムと、上記複合機との間における情報の授受の制御を行う制御モジュール、
としてコンピュータを機能させるコンピュータ読取可能な情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理プログラムに関する。
【背景技術】
【０００２】
例えば、米国では、商取引等において小切手を用いる習慣があるため、このような小切手を店舗等において利用するための小切手処理装置が存在する（特許文献１参照）。
【０００３】
また、米国等の銀行においては、小切手を電子的に読み取り、文字認識処理、磁気データ処理、および、手書き認識処理等を実行するスキャナが用いられているとともに、窓口業務に関する情報を印刷するプリンタが用いられている。
【０００４】
近年では、小切手を電子的に読み取るスキャナと、窓口業務に関する情報を印刷するプリンタとが同じ筐体に収められた複合機が流通している。このような複合機を利用することにより、設置スペースを削減するとともに、導入コストを削減することが可能になる。
【０００５】
【特許文献１】特開２００５−５６３３３号公報（要約書、請求項）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、小切手に関する処理を実行するアプリケーションと、窓口業務に関する処理を実行するアプリケーションとは、別々の独立したプログラムであるため、それぞれのアプリケーションは他のアプリケーションの状態については全く考慮せずに動作するようにプログラムされている。
【０００７】
複合機では、スキャナとプリンタとが１つのデバイスとして構成されているため、例えば、一方のアプリケーションプログラムが起動されると、当該アプリケーションプログラムは他のアプリケーションプログラムの状態については全く考慮せずに、デバイス（複合機）を専有してしまう。そのため、他のアプリケーションプログラムが複合機を使用できない状態が生じる場合があるという問題点がある。
【０００８】
本発明は、上記の事情に基づきなされたもので、その目的とするところは、複数のアプリケーションが複合機を円滑に利用することが可能な情報処理装置および情報処理プログラムを提供しよう、とするものである。
【課題を解決するための手段】
【０００９】
上述の目的を達成するため、本発明の情報処理装置は、プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において、情報処理装置において実行され、複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第１のドライバと、複合機との間で情報の授受を行う第２のドライバと、第１のドライバと、第２のドライバの間に設けられ、複数のアプリケーションプログラムと、複合機との間における情報の授受の制御を行う制御手段と、を有する。このため、複数のアプリケーションが複合機を円滑に利用することが可能な情報処理装置を提供できる。
【００１０】
また、他の発明の情報処理装置は、上述の発明に加えて、制御手段が、複数のアプリケーションプログラムから複合機へのアクセス要求が輻輳した場合には、これらのアクセス要求に対する調停処理を実行する。このため、複数のアプリケーションプログラムからの要求が輻輳した場合であっても、これを調停して、順次処理していくことができる。
【００１１】
また、他の発明の情報処理装置は、上述の発明に加えて、制御手段が、複数のアプリケーションプログラムのいずれかにより第２のドライバが既にオープンされている場合には、他のアプリケーションプログラムからオープンの要求がなされた場合であってもオープン処理を実行せず、また、複数のアプリケーションプログラムのいずれかにより第２のドライバが使用されている場合には、他のアプリケーションプログラムからクローズの要求がなされた場合であってもクローズ処理を実行しない。これにより、オープン処理を繰り返し実行したり、アプリケーションプログラムが複合機を使用中であるにも拘わらずクローズ処理を実行したりすることを防止できる。
【００１２】
また、他の発明の情報処理装置は、上述の発明に加えて、アプリケーションプログラムと、制御手段とは、異なるプロセス領域において実行される。これにより、制御手段が停止した場合であっても、アプリケーションプログラムが実行不能になることを防止できる。
【００１３】
また、他の発明の情報処理装置は、上述の発明に加えて、制御手段が、複合機から供給された所定の情報については、要求を行った複数のアプリケーションプログラムに対して並行して当該情報を供給する。これにより、複数のアプリケーションプログラムによって連携して同じ情報を処理することができる。
【００１４】
また、本発明の情報処理プログラムは、上述の発明に加えて、プリンタおよびスキャナとしての機能を少なくとも有する複合機が接続されるホストとしての情報処理装置において実行される情報処理プログラムにおいて、情報処理装置において実行され、複合機を利用する複数のアプリケーションプログラムのそれぞれに対応して設けられ、それぞれのアプリケーションプログラムとの間で情報の授受を行う第１のドライバモジュール、複合機との間で情報の授受を行う第２のドライバモジュール、第１のドライバモジュールと、第２のドライバモジュールの間に設けられ、複数のアプリケーションプログラムと、複合機との間における情報の授受の制御を行う制御モジュール、としてコンピュータを機能させる。このため、複数のアプリケーションが複合機を円滑に利用することが可能な情報処理プログラムを提供できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施の形態について、「１．実施の形態の構成例」、「２．実施の形態の動作の概要」、「３．実施の形態の動作の詳細」、「４．変形実施の形態」の順に説明する。
【００１６】
１．実施の形態の構成例
【００１７】
図１は、本発明の実施の形態に係る情報処理装置を含む情報処理システムの構成例を示す図である。この図に示すように、情報処理システムは、情報処理装置としてのホストコンピュータ１０と、複合機２０とを主要な構成要素とし、これらは、接続ケーブル３０によって接続されている。なお、以下において、本発明の情報処理プログラムについては、ホストコンピュータ１０の動作として説明する。
【００１８】
図２は、図１に示すホストコンピュータ１０の詳細な構成例を示すブロック図である。この図に示すように、ホストコンピュータ１０は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、ＨＤＤ（Hard Disk Drive）１４、画像処理部１５、Ｉ／Ｆ（Interface）１６、バス１７、表示装置１８、および、入力装置１９を主要な構成要素としており、Ｉ／Ｆ１６には接続ケーブル３０によって複合機２０が接続されている。
【００１９】
ここで、ＣＰＵ１１は、ＲＯＭ１２およびＨＤＤ１４に格納されているプログラムおよびデータに基づいて各種の演算処理を実行するとともに、装置の各部を制御する中央演算装置である。
【００２０】
ＲＯＭ１２は、ＣＰＵ１１が実行する基本的なプログラムおよびデータを格納する半導体記憶装置である。ＲＡＭ１３は、ＣＰＵ１１が実行する対象となるプログラムおよびデータを一時的に格納する半導体記憶装置である。
【００２１】
ＨＤＤ１４は、磁気ディスクとしてのハードディスクに情報を書き込むとともに、書き込まれている情報を読み出す磁気記憶装置である。なお、ＨＤＤ１４には、ＯＳ（Operating System）１４１、および、ＡＰ（Application）プログラム１４２が格納されている。ＯＳ１４１は、Ｉ／Ｆ１６に対する入出力制御を行うとともに、ＨＤＤ１４およびＲＡＭ１３等の管理を行う。また、ＯＳ１４１は、複数のアプリケーションプログラムから共通して利用される基本的な機能を提供し、装置全体を管理するソフトウエアである。ＡＰプログラム１４２は、例えば、銀行における種々の業務を行うためのプログラムであり、この例では、窓口業務に関する処理を行うためのアプリケーションプログラムＡ（以下、適宜「ａｐＡ」と略記する）１４２ａと、小切手に関する処理を行うためのアプリケーションプログラムＢ（以下、適宜「ａｐＢ」と略記する）１４２ｂとを有している。
【００２２】
画像処理部は、ＣＰＵ１１から供給された描画命令に基づいて描画処理を実行し、得られた画像データを映像信号に変換して表示装置１８に供給する。
【００２３】
Ｉ／Ｆ１６は、入力装置１９から供給された情報の表現形式を内部形式に変換して読み込むとともに、複合機２０との間で情報を授受する際に、同様にして表現形式を変換する処理を実行する。なお、複合機２０とＩ／Ｆ１６とは接続ケーブル３０によって接続されており、このような接続を行うインタフェースとしては、例えば、ＵＳＢ（Universal Serial Bus）を利用することができる。
【００２４】
バス１７は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＨＤＤ１４、画像処理部１５、および、Ｉ／Ｆ１６を相互に接続し、これらの間で情報の授受を可能とするための信号線群である。
【００２５】
表示装置１８は、例えば、ＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）モニタによって構成され、画像処理部１５から供給された映像信号に対応する映像を図示せぬ表示部に表示する。
【００２６】
入力装置１９は、例えば、キーボードまたはマウス等の入力デバイスであり、ユーザ（例えば、行員）の操作に応じた情報を生成して出力する。
【００２７】
図３は、図１に示す複合機２０の詳細な構成例を示すブロック図である。この図に示すように、複合機２０は、メイン制御部２１、入力部２２、出力部２３、プリント機構２４、および、スキャン機構２５を主要な構成要素としている。
【００２８】
ここで、メイン制御部２１は、入力部２２またはホストコンピュータ１０から供給された指令に基づいて、装置の各部を制御する制御部である。ここで、メイン制御部２１は、入出力制御部２１１、制御部２１２、メモリ２１３、画像処理部２１４、プリンタ制御部２１５、および、スキャナ制御部２１６を主要な構成要素としている。
【００２９】
入出力制御部２１１は、入力部２２および出力部２３との間で情報を授受する際の制御を行う。また、入出力制御部２１１は、ホストコンピュータ１０との間で情報の授受を行う際の制御を行う。制御部２１２は、メモリ２１３に格納されているプログラム２１３ａに基づいて、装置の各部を制御する。
【００３０】
メモリ２１３は、例えば、半導体記憶装置によって構成されており、制御部２１２が実行するプログラムおよびデータを格納している。図３の例では、メモリ２１３は、プログラム２１３ａを格納しており、制御部２１２は、プログラム２１３ａに基づいて装置の各部を制御する。
【００３１】
画像処理部２１４は、例えば、ホストコンピュータ１０から供給された画像データまたはスキャン機構２５から供給された画像データに対して所定の画像処理を実行するための処理部である。
【００３２】
プリンタ制御部２１５は、プリント機構２４を制御する制御部であり、制御部２１２から供給された印刷データに基づいて、記録ヘッド２４１、走査部２４２、および、用紙搬送部２４３を制御し、図示せぬ印刷用紙（例えば、ロール紙等）に対して印刷データを印刷する。
【００３３】
スキャナ制御部２１６は、スキャン機構２５を制御する制御部であり、制御部２１２からの指令に応じて、光源２５１、受光部２５２、および、走査部２５３を制御し、図示せぬ原稿（例えば、小切手）に印刷されている情報を光学的にスキャンして対応する画像データを取得する。
【００３４】
入力部２２は、装置のフロントパネルに設けられた操作ボタン等であり、ユーザの操作に応じて所定の情報を生成し、入出力制御部２１１に供給する。出力部２３は、例えば、フロントパネルに設けられたＬＣＤまたはＬＥＤ（Light Emitting Diode）等であり、装置の内部の状態等をユーザに対して表示する。
【００３５】
プリント機構２４は、記録ヘッド２４１、走査部２４２、および、用紙搬送部２４３を主要な構成要素としており、制御部２１２から供給された画像データを、図示せぬ印刷用紙に印刷する。ここで、記録ヘッド２４１は、例えば、ＣＭＹＫに対応する各色のインクを複数のノズルから適宜吐出し、印刷用紙に対応する画像を印刷する。走査部２４２は、記録ヘッド２４１を主走査方向（記録ヘッド２４１に設けられた各色のインク列に直交する方向）に移動させる。用紙搬送部２４３は、印刷用紙を副走査方向（主走査方向に直交する方向）に移動させる。
【００３６】
スキャン機構２５は、光源２５１、受光部２５２、および、走査部２５３を主要な構成要素としており、原稿（例えば、小切手）に印刷された画像を光学的に読み取って、対応する画像データを生成して出力する。ここで、光源２５１は、例えば、冷陰極管によって構成され、原稿の読み取ろうとする領域に対して白色光を照射する。受光部２５２は、光源２５１によって照射され、原稿によって反射された光を受光して対応する電気信号に変換するＣＣＤ（Charge Coupled Device）等によって構成される。走査部２５３は、受光部２５２を副走査方向（走査部２５３の長手方向に直交する方向）に移動させる。
【００３７】
つぎに、本発明の実施の形態の動作について説明する。以下では、まず、実施の形態の動作の概要を説明した後、詳細な動作について説明する。
【００３８】
２．実施の形態の動作の概要
【００３９】
図４（Ａ）は、従来において、プリンタ３０１ａとスキャナ３０１ｂとが独立した構成である場合の、アプリケーションプログラム１４２ａ，１４２ｂと、プリンタ３０１ａおよびスキャナ３０１ｂとの接続関係を示す図である。従来においては、プリンタ３０１ａと、スキャナ３０１ｂとは独立した構成（製品）として存在しており、それぞれを制御するためのドライバ３００ａおよびドライバ３００ｂも独立して存在している。アプリケーションプログラムＡおよびアプリケーションプログラムＢは、それぞれ専用のドライバ３００ａ，３００ｂを介してプリンタ３０１ａおよびスキャナ３０１ｂを制御する。このため、アプリケーションプログラムＡおよびアプリケーションプログラムＢは、他のアプリケーションプログラムの状態を考慮することなく、それぞれのデバイス（プリンタ３０１ａまたはスキャナ３０１ｂ）を任意に制御することができる。しかしながら、このような構成では、プリンタ３０１ａと、スキャナ３０１ｂとが独立した構成であり、それぞれが筐体と、電源部等とを有するので、大きな設置スペースが必要となるとともに、導入コストも高くつく。
【００４０】
図４（Ｂ）は、従来における、複合機２０とアプリケーションプログラムＡ，Ｂおよびドライバ３００の関係を示す図である。この図に示すように、プリンタおよびスキャナが複合機２０として単一のデバイスとして構成された場合、アプリケーションプログラムＡ，Ｂが同時に処理要求を行うと、エラーが発生してしまう場合がある。すなわち、アプリケーションプログラムＡ，Ｂは、前述したように、他のアプリケーションプログラムの状態を考慮することなく、所望のデバイスに対して処理要求を行う。この場合、例えば、一方のアプリケーションプログラムが複合機２０の使用を開始すると、当該アプリケーションプログラムは複合機２０を専有してしまうため、後から起動された他のアプリケーションプログラムは複合機２０を利用することができなくなってしまう。また、アプリケーションプログラムがドライバ３００を専有してしまう場合には、一方のアプリケーションプログラムを起動すると、他方のアプリケーションプログラムを起動できなくなる状況も発生していた。
【００４１】
図５は、本発明の実施の形態における構成例の概略を示す図である。この図に示すように、本実施の形態では、図４（Ｂ）に示すドライバ３００と、アプリケーションプログラムＡ，Ｂとの間に、新たなドライバ４１０，４２０と、サーバ４３０とが追加されている。
【００４２】
ここで、第１のドライバとしてのドライバ４１０，４２０は、アプリケーションプログラムＡ，Ｂからの処理要求を受け付ける働きをし、制御対象である複合機２０を制御する処理は実行しない、いわば、仮想的なドライバである。具体的には、ドライバ４１０は、アプリケーションプログラムＡからの要求を受け付け、サーバ４３０に伝える処理を主に実行する。また、ドライバ４２０は、アプリケーションプログラムＢからの要求を受け付け、サーバ４３０に伝える処理を主に実行する。なお、ドライバ４１０，４２０は、図４（Ｂ）のドライバ３００と同様のインタフェースを有している。
【００４３】
制御手段としてのサーバ４３０は、ドライバ４１０，４２０からの要求を受け付けるとともに、要求が輻輳した場合には調停処理を実行し、調停処理の結果に基づいて、当該要求に応じてドライバ３００を排他的に制御する。
【００４４】
第２のドライバとしてのドライバ３００は、図４（Ｂ）に示す従来のドライバ３００と同様のドライバであり、サーバ４３０からの要求に応じて、複合機２０を制御する。
【００４５】
本発明の実施の形態では、アプリケーションプログラムＡ，Ｂは、それぞれ専用のドライバ４１０，４２０を有している。また、これらのドライバ４１０，４２０は、それぞれのアプリケーションプログラムからの要求をサーバ４３０に伝えるだけで、デバイスを制御する処理はサーバ４３０等が行っている。したがって、アプリケーションプログラムＡ，Ｂの少なくとも一方がドライバを専有するプログラムであったとしても、専有しているドライバ４１０，４２０は仮想的なドライバであって、実際の制御処理はサーバ４３０以降が行うため、一方のアプリケーションプログラムを起動すると、他方を起動できないという事態を回避することができる。
【００４６】
また、アプリケーションプログラムＡ，Ｂが同時に処理要求を行った場合、それぞれの要求は、ドライバ４１０，４２０に対して供給される。このとき、ドライバ４１０，４２０は独立した構成とされているので、アプリケーションプログラムＡ，Ｂからの要求は相互に影響を与えることはない。そして、サーバ４３０は、ドライバ４１０，４２０を介してこれらの要求を受け付ける。このとき、要求が輻輳している場合には、サーバ４３０は、例えば、先着順にこれらの要求に対して優先順位を付与し、当該優先順位にしたがって、ドライバ３００を排他的に制御する。すなわち、アプリケーションプログラムＡ，Ｂは任意のタイミングで要求を行うことができる。
【００４７】
ドライバ３００は、サーバ４３０の制御に応じて、複合機２０のプリント機構２４またはスキャン機構２５を制御し、印刷用紙に対して情報を印刷したり、原稿に印刷されている情報を画像データとして読み取り、要求を行ったアプリケーションプログラムに対して供給したりする。これにより、アプリケーションプログラムＡ，Ｂが複合機２０に対して所定の処理を実行させることができる。
【００４８】
このように本発明の実施の形態では、ドライバ４１０，４２０およびサーバ４３０を新たに設け、ドライバ４１０，４２０によってアプリケーションプログラムＡ，Ｂからの要求を受け付けるとともに、サーバ４３０によってこれらの要求を調停するようにしたので、一方のアプリケーションプログラムがデバイスを専有して他方のアプリケーションプログラムが動作できなくなったり、エラーが生じたりすることを回避できる。これにより、２つのアプリケーションプログラムＡ，Ｂを並行して動作させることが可能になることから、作業の効率を向上させることができる。
【００４９】
また、ドライバ４１０，４２０のインタフェースは、ドライバ３００と同様のインタフェースを実装するようにしたので、アプリケーションプログラムＡ，Ｂに対して修正を加える必要がないため、新たな作業およびコストの発生を防止できる。
【００５０】
３．実施の形態の動作の詳細
【００５１】
つぎに、本発明の実施の形態の詳細な動作について説明する。
【００５２】
図６は、本発明の実施の形態の詳細な動作を説明するための機能ブロック図である。なお、この図の機能ブロックは、ホストコンピュータ１０に電源が投入され、ＨＤＤ１４に格納されているＯＳ１４１が起動された際に、ホストコンピュータ１０のＣＰＵ１１を初めとするハードウエア資源と、ソフトウエア資源としてのＯＳ１４１とが協働することにより実現される。
【００５３】
この図に示すように、ドライバ４１０は、ＡＰＩ（Application Program Interface）４１１およびスレッド４１２を有している。ＡＰＩは、種々の処理を行う関数群であり、例えば、ＤＬＬ（Dynamic Link Library）として提供される。スレッド４１２には、アプリケーションプログラムＡからの要求に応じて生成されるタスクの実行単位が登録されており、サーバ４３０からイベントシグナルが通知された場合には、コールバック関数によってアプリケーションプログラムＡを呼び出す。ドライバ４２０は、ドライバ４１０と同様の構成とされている。ドライバ４１０およびドライバ４２０のインタフェースは、図４（Ｂ）に示すドライバ３００と同様の構成を有している。
【００５４】
なお、ドライバ３００は、図４（Ｂ）に示すドライバ３００と同様の構成を有しており、また、ドライバ４１０，４２０と同様に、ＡＰＩ３０１およびスレッド３０２を有している。
【００５５】
つぎに、電源が投入された際のホストコンピュータ１０の動作について説明する。
【００５６】
電源が投入されると、図示せぬ電源部から装置の各部への電源電力の供給が開始される。ＣＰＵ１１は、ＲＯＭ１２に格納されている基本的なプログラムを実行して、各部の設定等を行った後、ＨＤＤ１４２に格納されているＯＳ１４１の起動を開始する。すなわち、ＣＰＵ１１は、ＯＳ１４１をＨＤＤ１４から読み出し、ＲＡＭ１３上に展開して実行する。このとき、図６に示す、サーバ４３０およびドライバ３００はＤＬＬとして、ＯＳ１４１に動的にリンクされる。これにより、サーバ４３０およびドライバ３００がＲＡＭ１３上に展開されて動作可能な状態となる。
【００５７】
つづいて、ユーザが、入力装置１９を操作して、アプリケーションプログラムＡを起動する指示を行ったとすると、ＣＰＵ１１はＨＤＤ１４からａｐＡ１４２ａを読み出し、ＲＡＭ１３上に展開して実行する。これにより、アプリケーションプログラムＡが起動されることになる。なお、このとき、ＣＰＵ１１は、ドライバ４１０をＤＬＬとして読み出し、アプリケーションプログラムＡに動的にリンクする。これにより、アプリケーションプログラムＡとドライバ４１０とが起動される。なお、アプリケーションプログラムＡとサーバ４３０とは異なるプロセス領域上において実行される。
【００５８】
このような状態において、ユーザが、入力装置１９を操作し、アプリケーションプログラムＡによって所定の処理を実行させた後、処理結果の情報を複合機２０のプリント機構２４によって印刷する指示を行ったとする。すると、アプリケーションプログラムＡからの印刷要求は、ドライバ４１０を介して、サーバ４３０に供給される。サーバ４３０は、ドライバ３００を制御し、複合機２０との接続ポートをオープンの状態とする。
【００５９】
つぎに、アプリケーションプログラムＡから出力された印刷データは、ドライバ４１０に供給される。ドライバ４１０は、通常のドライバと同様のインタフェースを有するとともに、ドライバの振りをするので、アプリケーションプログラムＡは、従来と同様の処理により、印刷データを出力することができる。
【００６０】
つづいて、ドライバ４１０は、アプリケーションプログラムＡから供給された印刷データを、サーバ４３０に供給する。サーバ４３０は、その時点では、アプリケーションプログラムＡだけが起動されているので、要求の調停を行う必要がないことから、ドライバ４１０から供給された印刷データを、ドライバ３００に供給する。ドライバ３００は、サーバ４３０から供給された印刷データに対して、所定の処理（例えば、マイクロウィーブ処理等）を施した後、複合機２０に送信する。複合機２０では、ホストコンピュータ１０から供給された印刷データを入出力制御部２１１が受信し、制御部２１２がプリンタ制御部２１５に供給する。プリンタ制御部２１５は、プリント機構２４を制御して、受信した印刷データを図示せぬ印刷用紙に印刷する。これにより、窓口業務に関する情報が印刷用紙に印刷されて出力される。そして、処理が終了すると、アプリケーションプログラムＡは印刷の終了を指示するので、サーバ４３０は、ドライバ３００を制御し、複合機２０との接続ポートをクローズの状態とする。
【００６１】
なお、以上は、アプリケーションプログラムＡが単独で実行された場合の動作の説明であるが、アプリケーションプログラムＢが単独で実行された場合も同様の処理により、複合機２０が制御される。
【００６２】
すなわち、アプリケーションプログラムＢが起動されると、ドライバ４２０が動的にリンクされて起動される。そして、アプリケーションプログラムＢから、例えば、小切手をスキャンする要求がなされた場合には、当該要求は、ドライバ４２０を介して、サーバ４３０に伝えられる。サーバ４３０は、アプリケーションプログラムＢだけが起動された状態で、要求の輻輳は生じていないことから、複合機２０との間の接続ポートをオープンの状態とする。また、このとき、スレッド４２２およびスレッド３０２には、スキャンが終了された場合にコールされるコールバック関数がそれぞれ登録される。
【００６３】
このような状態において、複合機２０のスキャン機構２５に対して小切手が載置され、当該小切手を読み取る指示が、入力部２２に対してなされたとすると、スキャナ制御部２１６は、スキャン機構２５を制御し、小切手の読み取りを実行する。読み取りが完了すると、ステータスが変化した旨が、ドライバ３００に通知される。ドライバ３００のスレッド３０２は、登録されているコールバック関数によってサーバ４３０を呼び出す。その結果、サーバ４３０は、イベントシグナルをドライバ４２０のスレッド４２２に通知する。スレッド４２２は、登録されているコールバック関数によってアプリケーションプログラムＢをコールバックする。この結果、アプリケーションプログラムＢは、ドライバ４２０、サーバ４３０、および、ドライバ３００を介して、複合機２０から読み取りデータを取得する。そして、処理が完了すると、アプリケーションプログラムＢはスキャンの終了を指示するので、サーバ４３０は、ドライバ３００を制御し、複合機２０との接続ポートをクローズの状態とする。
【００６４】
以上に説明したように、本実施の形態では、単一のアプリケーションプログラムが起動された場合には、従来と同様に、それぞれのアプリケーションプログラムが複合機２０を利用することができる。
【００６５】
つぎに、アプリケーションプログラムＡが起動された状態において、アプリケーションプログラムＢを起動する場合について説明する。すなわち、アプリケーションプログラムＡが起動された状態において、ユーザが入力装置１９を操作して、アプリケーションプログラムＢを起動する指示を行ったとすると、ＣＰＵ１１は、ＨＤＤ１４からａｐＢ１４２ｂを読み出して、ＲＡＭ１３上に展開して、実行する。なお、このとき、ＣＰＵ１１は、ドライバ４２０をＤＬＬとして読み出し、アプリケーションプログラムＢに動的にリンクさせる。これにより、アプリケーションプログラムＢとドライバ４２０とが起動される。
【００６６】
ところで、アプリケーションプログラムＡがドライバを専有するタイプのプログラムである場合、アプリケーションプログラムＡは、ドライバ４１０を専有することになる。しかしながら、ドライバ４１０は、仮想的なドライバであり、アプリケーションプログラムＡから受け取った情報をサーバ４３０に受け渡す処理のみを実行する。つまり、デバイスを制御する処理は、サーバ４３０およびドライバ３００が実行する。このため、アプリケーションプログラムＢは、サーバ４３０およびサーバ３００を利用することが可能であるので、アプリケーションプログラムＢを起動することができる。また、アプリケーションプログラムＢが同様にドライバを専有するプログラムである場合であっても、アプリケーションプログラムＢは、仮想的なドライバ４２０を専有できることから、アプリケーションプログラムＢを起動することができる。
【００６７】
さらに、アプリケーションプログラムＡおよびドライバ４１０と、アプリケーションプログラムＢおよびドライバ４２０と、サーバ４３０とはそれぞれ異なるプロセス領域上において実行されるため、これらは独立して動作することができる。すなわち、アプリケーションプログラムＡによってドライバ４１０が専有された状態であっても、サーバ４３０は独立して動作することができる。一方、アプリケーションプログラムＢについても同様であり、アプリケーションプログラムＢによってドライバ４２０が専有された状態であっても、サーバ４３０は独立して動作することができる。これにより、アプリケーションプログラムＡおよびアプリケーションプログラムＢの双方を同時に起動し、動作させることができる。
【００６８】
つぎに、２つのアプリケーションプログラムＡ，Ｂが起動されている状態において、これらのアプリケーションプログラムＡ，Ｂが複合機２０に対して、接続ポートのオープンまたはクローズの要求を行う場合の処理について説明する。
【００６９】
図７は、ホストコンピュータ１０において実行されている処理の一例を説明するフローチャートである。このフローチャートの処理が実行されると、以下のステップが実行される。
【００７０】
ステップＳ１０：サーバ４３０は、接続ポートに対するオープンの要求数をカウントするための変数Ｃｏｕｎｔｅｒに初期値として“０”を代入する。
【００７１】
ステップＳ１１：サーバ４３０は、複合機２０を制御するためのハンドルを格納する変数Ｈａｎｄｌｅに対して、Ｎｕｌｌ（空）を格納する。
【００７２】
ステップＳ１２：サーバ４３０は、アプリケーションプログラムＡまたはアプリケーションプログラムＢからオープン要求がなされたか否かを判定し、要求がなされた場合にはステップＳ１３に進み、それ以外の場合にはステップＳ１８に進む。
【００７３】
ステップＳ１３：サーバ４３０は、変数Ｃｏｕｎｔｅｒの値が、０より大きいか否かを判定し、大きい場合にはステップＳ１６に進み、それ以外の場合にはステップＳ１４に進む。変数Ｃｏｕｎｔｅｒには、現在受け付けられているオープン要求の数が格納されている。したがって、Ｃｏｕｎｔｅｒの値が０である場合には、初めてのオープン要求であるので、ステップＳ１４に進み、それ以外の場合にはステップＳ１６に進む。
【００７４】
ステップＳ１４：サーバ４３０は、ドライバ３００を制御して、複合機２０との接続ポートをオープンする処理を実行する。
【００７５】
ステップＳ１５：サーバ４３０は、ステップＳ１４において、接続ポートをオープンする際に使用したハンドルを変数Ｈａｎｄｌｅに格納する。
【００７６】
ステップＳ１６：サーバ４３０は、Ｃｏｕｎｔｅｒの値を１だけインクリメントする。
【００７７】
ステップＳ１７：サーバ４３０は、Ｈａｎｄｌｅに格納されているハンドルを、要求を行ったアプリケーションプログラムに対して返す。これにより、アプリケーションプログラムは、当該ハンドルを利用して、複合機２０の制御が可能になる。
【００７８】
ステップＳ１８：サーバ４３０は、アプリケーションプログラムＡまたはアプリケーションプログラムＢからクローズ要求がなされたか否かを判定し、要求がなされた場合にはステップＳ１９に進み、それ以外の場合にはステップＳ２４に進む。
【００７９】
ステップＳ１９：サーバ４３０は、変数Ｃｏｕｎｔｅｒの値を１だけデクリメントする。
【００８０】
ステップＳ２０：サーバ４３０は、変数Ｃｏｕｎｔｅｒの値が０より大きいか否かを判定し、大きい場合にはステップＳ２３に進み、それ以外の場合にはステップＳ２１に進む。前述のように、変数Ｃｏｕｎｔｅｒには、現在受け付けられているオープン要求の数が格納されている。したがって、Ｃｏｕｎｔｅｒの値が０より大きい場合には、複合機２０を利用しているアプリケーションプログラムが存在していることから、ステップＳ２３に進み、それ以外の場合にはステップＳ２１に進む。
【００８１】
ステップＳ２１：サーバ４３０は、ドライバ３００を制御して、複合機２０との接続ポートをクローズする処理を実行する。
【００８２】
ステップＳ２２：サーバ４３０は、変数ＨａｎｄｌｅをＮｕｌｌの状態にする。
【００８３】
ステップＳ２３：サーバ４３０は、要求を行ったアプリケーションプログラムに対して、クローズ要求の実行が終了したことを通知する。
【００８４】
ステップＳ２４：サーバ４３０は、処理を終了するか否かを判定し、終了しない場合にはステップＳ１２に戻って同様の処理を繰り返し、それ以外の場合には処理を終了する。
【００８５】
以上の処理によれば、複数のアプリケーションプログラムからサーバ４３０に対して、オープンの要求が重複してなされた場合、最初の要求に応じて接続ポートをオープンし、それ以降の要求に対してはオープン処理は実行しない。これにより、重複してオープン処理が実行されることを防止できる。また、クローズの要求が重複してなされた場合、利用中のアプリケーションプログラムが存在している場合にはクローズを実行せず、最後の１つのアプリケーションプログラムからの要求に応じて、クローズ処理を実行する。これにより、複合機２０を利用しているアプリケーションプログラムが存在しているにも拘わらず、接続ポートがクローズされることを防止できる。
【００８６】
つぎに、複数のアプリケーションプログラムから複合機２０を利用する場合の動作について説明する。
【００８７】
以上のようにして、複数のアプリケーションプログラムが起動され、また、複数のアプリケーションプログラムによって複合機２０との接続ポートがオープンされた状態になった後に、例えば、アプリケーションプログラムＡが複合機２０によって印刷データを印刷する要求を行うとともに、アプリケーションプログラムＢが複合機２０によって小切手を読み取る要求を行ったとする。
【００８８】
このような場合、サーバ４３０は、ドライバ４１０，４２０を介してアプリケーションプログラムＡ，Ｂからの要求を受け付ける。そして、サーバ４３０は、これらの要求を、例えば、受け付け順に優先順位を付与し、当該優先順位に従って、要求に対応する処理を実行する。例えば、アプリケーションプログラムＡからの印刷要求の方が先になされた場合には、アプリケーションプログラムＡの要求の優先順位を高く設定し、アプリケーションプログラムＢの要求の優先順位を低く設定する。そして、優先順位が高いアプリケーションプログラムＡの要求に応じて、印刷データを受信して、ドライバ３００を介して複合機２０に印刷データを供給する。複合機２０では、受信した印刷データをメモリ２１３に格納するとともに、印刷処理を実行する。全ての印刷データの受信が完了すると、アプリケーションプログラムＡは処理が終了したとして、クローズの要求を行い、処理を完了する。なお、このとき、アプリケーションプログラムＢが要求を行っていることから、接続ポートはクローズされない。
【００８９】
続いて、サーバ４３０は、次に優先順位が高いアプリケーションプログラムＢの要求を受け付け、複合機２０に対して、小切手に印刷された情報を読み込む処理を実行させる。その結果、アプリケーションプログラムＢは、複合機２０から読み取りデータを受信する。そして、受信が完了すると、アプリケーションプログラムＢはクローズの要求を行い、処理を完了する。なお、このとき、他に要求を行っているアプリケーションプログラムが存在していないことから、接続ポートはクローズされる。
【００９０】
以上に説明したように、本発明の実施の形態によれば、仮想的なドライバ４１０，４２０を設けるとともに、サーバ４３０を設けるようにしたので、複数のアプリケーションプログラムを同時に起動することが可能になる。
【００９１】
また、本発明の実施の形態によれば、複数のアプリケーションプログラムからオープンまたはクローズの要求がなされた場合には、これらの回数をカウントして、カウント結果に応じてオープンまたはクローズ処理を実行するようにしたので、オープン処理を重ねて行ったり、複合機２０を使用中のアプリケーションプログラムが存在するにも拘わらずクローズ処理を実行してしまったりすることを防止できる。
【００９２】
また、本発明の実施の形態によれば、サーバ４３０によって、複数のアプリケーションプログラムからの要求を調停するようにしたので、複数の要求が輻輳した場合であっても、複合機２０を正常に利用することができる。
【００９３】
また、本発明の実施の形態によれば、アプリケーションプログラムＡ，Ｂと、サーバ４３０とを異なるプロセス領域において実行するようにした。このため、サーバ４３０に不具合が生じた場合であっても、アプリケーションプログラムＡ，Ｂが影響を受けることを防止できる。すなわち、サーバ４３０が動作を停止した場合であっても、別プロセスであるアプリケーションプログラムＡ，Ｂが巻き込まれて停止することを防止できる。
【００９４】
４．変形実施の形態
【００９５】
なお、以上の実施の形態は、一例であって、これ以外にも種々の変形実施態様が存在する。例えば、以上の実施の形態では、２種類のアプリケーションプログラムＡ，Ｂの場合について説明したが、３種類以上のアプリケーションプログラムを利用することが可能である。
【００９６】
また、以上の実施の形態では、アプリケーションプログラムＡは複合機２０のプリンタを利用し、アプリケーションプログラムＢは複合機２０のスキャナを利用する設定としたが、これ以外の組み合わせであってもよい。具体的には、一例として、アプリケーションプログラムＡ，Ｂがプリンタとスキャナの双方を利用してもよい。そのような場合、例えば、アプリケーションプログラムＡ，Ｂから、プリンタの使用要求またはスキャナの使用要求が輻輳した場合には、これらの要求をサーバ４３０が調停するので、アプリケーションプログラムＡ，Ｂによってプリンタまたはスキャナを共用できる。
【００９７】
また、以上の実施の形態では、アプリケーションプログラムＡ，Ｂは独立して動作する構成としたが、例えば、これらが連携して動作するようにしてもよい。具体的には、例えば、いずれか一方のアプリケーションプログラムがスキャンの要求を行った場合、得られた読み取りデータを、双方のアプリケーションプログラムＡ，Ｂに並行して供給し、それぞれのアプリケーションプログラムＡ，Ｂにおいて所定の処理を実行するようにしてもよい。一例として、小切手を読み取って得られた読み取りデータを、アプリケーションプログラムＡによって偽造でないか否かの認証処理をし、アプリケーションプログラムＢによって登録処理するようにしてもよい。
【００９８】
また、以上の実施の形態では、複合機２０はスキャナとプリンタの機能を有するようにしたが、これ以外の機能（例えば、コピー機能、ＦＡＸ機能）を有するようにしてもよい。さらに、小切手に印刷されている磁気（ＭＩＣＲ：Magnetic Ink Character Recognition）を読み込む読取機能を具備するようにしてもよい。
【００９９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ホストコンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disk）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１００】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１０１】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【０１０２】
【図１】本発明の実施の形態の情報処理システムの構成例である。
【図２】図１に示すホストコンピュータの詳細な構成例を示す図である。
【図３】図１に示す複合機の詳細な構成例を示す図である。
【図４】従来の技術の動作の概略を説明するための図である。
【図５】本発明の実施の形態の動作の概略を説明するための図である。
【図６】本発明の実施の形態の詳細な動作を説明するための図である。
【図７】オープンおよびクローズ処理を説明するフローチャートである。
【符号の説明】
【０１０３】
１０  ホストコンピュータ（情報処理装置）、２０  複合機、３００  ドライバ（第２のドライバ、第２のドライバモジュール）、４１０，４２０  ドライバ（第１のドライバ、第１のドライバモジュール）、４３０  サーバ（制御手段、制御モジュール）
【図１】
2008250658.tif 000003
【図２】
2008250658.tif 000004
【図３】
2008250658.tif 000005
【図４】
2008250658.tif 000006
【図５】
2008250658.tif 000007
【図６】
2008250658.tif 000008
【図７】
2008250658.tif 000009