JP2011232948A - 情報処理装置、その制御方法及びプログラム - Google Patents

情報処理装置、その制御方法及びプログラム Download PDF

Info

Publication number
JP2011232948A
JP2011232948A JP2010102524A JP2010102524A JP2011232948A JP 2011232948 A JP2011232948 A JP 2011232948A JP 2010102524 A JP2010102524 A JP 2010102524A JP 2010102524 A JP2010102524 A JP 2010102524A JP 2011232948 A JP2011232948 A JP 2011232948A
Authority
JP
Japan
Prior art keywords
communication
program
scanner
programs
communication channel
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
JP2010102524A
Other languages
English (en)
Other versions
JP5473755B2 (ja
Inventor
Hideki Hanano
英樹 花野
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2010102524A priority Critical patent/JP5473755B2/ja
Priority to US13/093,580 priority patent/US9015732B2/en
Publication of JP2011232948A publication Critical patent/JP2011232948A/ja
Application granted granted Critical
Publication of JP5473755B2 publication Critical patent/JP5473755B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • 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/445Program loading or initiating

Abstract

【課題】 デバイスドライバの起動だけでは他のプログラムが使用している通信用チャネルをクローズさせることができない場合であっても適切に当該チャネルをクローズさせること。
【解決手段】 スキャナドライバ50が非TWAINモードで起動されるとき、USBポートを使用しているボタン監視プログラムをOS30が管理しているプロセス情報に基づき特定し、USBポートをクローズさせる。
【選択図】 図2

Description

本発明は、周辺装置を制御する情報処理装置、その制御方法およびプログラムに関する。
従来、周辺装置の一つとして画像読取装置(スキャナ専用機や、さらにプリンタ等を備えたマルチファンクションペリフェラルなど)が知られている。このような周辺装置としての画像読取装置は、コンピュータ等の情報処理装置にインストールされているスキャナドライバからの指示で画像の読み取りを行う。また、このような画像読取装置において、画像読取装置に設けた操作部から読み取りの指示を行って画像の読み取りを開始させ、情報処理装置に読取画像を転送する技術が知られている(特許文献1参照)。
このように画像読取装置の操作部からユーザが読取指示を行ったことを情報処理装置側で検知するために、情報処理装置においてスキャナ等の画像入力装置のボタンイベントを監視するボタン監視プログラムを用いるものがある。そして、ボタン監視プログラムが画像読取装置からの読取開始を指示するボタンが操作されたというイベントを検知すると、次のようにして画像の読み取りを実行させ、画像を読み取って得た画像データを情報処理装置において取得する。ボタン監視プログラムがイベントを検知すると、まず所定のアプリケーションを呼び出す。このアプリケーションはボタン押下時に起動するアプリケーションとして登録されているものである。そして、このアプリケーションが、例えばTWAIN(Tool Without An Interresting Name)規格に準拠したスキャナドライバ(TWAINドライバ)を呼び出して画像読取装置による画像の読み取りを実行させる。そして、このTWAINドライバによる読み取りによって得た画像データをアプリケーションが取得する。
この場合、画像読取装置と情報処理装置との間では、イベントの検知のための通信と画像データの通信とが行われる。ここで、情報処理装置のOS(Operating System)によっては、ボタン監視プログラムとスキャナドライバとが同時に通信用のチャネルを確保できる仕組みが提供されていない場合がある。そのため、このような場合はボタン監視プログラムとスキャナドライバとの間で通信用のチャネルを排他制御する必要がある。即ち、OSは、スキャナドライバが画像データの取得を行う前にボタン監視プログラムが使用している通信用チャネルをクローズさせてからスキャナドライバのための通信用チャネルをオープンさせることになる。このとき、OSは、所定の箇所に記録されている、ボタン監視プログラムに対応付けられた画像読取装置を特定する情報(デバイス情報)と、スキャナドライバに対応付けられたデバイス情報とを参照し、これらが一致した場合、このような排他制御を行う。なお、スキャナドライバは上記のようなボタン監視プログラムを経由させて起動されるほか、ユーザがスキャナドライバを直接操作して画像読取装置に画像の読み取りを実行させることもある。
特開平11−355481号公報
ところで、例えば、既にスキャナドライバとボタン監視プログラムとが存在している情報処理装置に新たにスキャナドライバをインストールし、この新たなスキャナドライバを起動させて画像読取装置に画像の読み取りを実行させることがある。そして、この新たなスキャナドライバを起動させて画像読取装置に画像の読み取りを実行させる場合、既に起動しているボタン監視プログラムが使用している通信用チャネルをクローズさせる必要がある。
しかしながら、例えば、新たなスキャナドライバが上記したようなTWAIN等の所定のAPI(Application Program Interface)規格に準拠していないなど、OSがデバイス情報を特定できない場合、上記排他制御が行えない。即ち、OSは、新たなスキャナドライバが起動されても、所定の箇所にデバイス情報が記録されていない場合には、既に起動しているボタン監視プログラムが使用している通信用チャネルをクローズさせない。従って、所定のAPIに準拠しない手順で起動されたスキャナドライバは読取処理を実行することができない。
また、1つの情報処理装置に複数のボタン監視プログラムが存在することがある。このような場合には、スキャナドライバを起動させる際、スキャナドライバが通信用チャネルをオープンしているボタン監視プログラムを指定して、クローズ要求を行う必要がある。
しかしながら、スキャナドライバがあるボタン監視プログラムを指定してクローズ要求を行っても、そのボタン監視プログラム以外が起動されていた場合にはクローズさせることができない。
このような課題は、画像読取装置以外の周辺装置でも生じ得る。即ち、複数のプログラムの間で使用する通信用のチャネルの排他制御が必要であり、デバイスドライバの起動によって他のプログラムが使用している通信用チャネルをクローズさせる術のない状況下では同様の課題が生じ得る。
本発明は、上記課題に鑑みなされたもので、デバイスドライバの起動だけでは他のプログラムが使用している通信用チャネルをクローズさせることができない場合であっても適切に当該チャネルをクローズさせる仕組みを提供するものである。
上記課題を解決するため、本発明の情報処理装置は、周辺装置と通信を行うための通信用チャネルを、複数のプログラム間で排他制御する情報処理装置であって、前記周辺装置と前記通信用チャネルを介して通信する、前記周辺装置用のデバイスドライバと、前記周辺装置と前記通信用チャネルを介して通信する複数の通信プログラムと、前記デバイスドライバが起動指示されたときに、前記複数の通信プログラムのうちのいずれが前記通信用チャネルを使用しているかを、OS(Operating System)が管理しているプロセス情報を取得することにより識別する識別手段と、前記識別手段により識別された通信プログラムに対し、前記通信用チャネルのクローズを要求し、前記デバイスドライバが前記通信用チャネルを使用可能にする制御手段とを有する。
本発明によれば、デバイスドライバを起動させるときに通信用チャネルを使用している通信プログラムを特定し、通信用チャネルをクローズさせることにより、デバイスドライバが通信用チャネルを使用できるようになる。
実施形態の画像読取システムを示すブロック図である。 コンピュータ20のソフトウェア構成を示すブロック図である。 スキャナドライバ50を用いた読取処理のシーケンスを示す図である。 クローズ対象のボタン監視プログラムを識別する処理を示すフローチャートである。 クローズ対象のボタン監視プログラムを識別する処理を示すフローチャートである。 クローズ対象のボタン監視プログラムを識別する処理を示すフローチャートである。
以下、本発明を実施するための形態について図面を用いて説明する。なお、この実施の形態で用いる装置の各構成要素の全てが本発明に必須のものではなく、また、各構成要素の種々の変形や応用も可能である。即ち、本発明は以下の実施形態の特定の構成に限定されるものではない。
図1は、本発明の一実施の形態に係る情報処理装置の一例であるコンピュータ20と、周辺装置の一例であるスキャナ10とを含む画像読取システムの構成を示すブロック図である。
スキャナ10は、ハードウェア資源として、USBインターフェース11、CPU12、ROM13、RAM14、スキャナエンジン15、操作パネル16を有する。USB(Universal Serial Bus)インターフェース11は、USBの規格に従ってコンピュータ20との間でデータの送受信を行う。CPU12は、ROM13に記憶されているスキャナ10の制御プログラムを、RAM14にロードし、それを実行することでスキャナ10の動作を制御する。ROM13は制御プログラムのほか、スキャナ10の動作に必要なパラメータ等も記憶する。RAM14はCPU12のワークエリアとして使用されるほか、スキャナ10の状態情報や画像データの一時記憶領域等としても使用される。
スキャナエンジン15は、原稿に光を照射する光源やその反射光を読み取り、光電変換するCCDカラーイメージセンサ等を含む。スキャナ10の原稿台に置かれた原稿上をスキャナエンジン15により走査させて原稿上の画像を読み取り、読み取られた画像に応じた画像データ(読取画像データ)が生成される。操作パネル16は、スキャナ10の状態やユーザによる作業のためのメニューを表示する表示部と、ユーザが読取開始指示を含む種々の操作を行うハードキーを含む。操作パネル16はタッチパネル等、他の形態としてもよい。
また、ここではスキャナ10を、スキャナ専用機を例に示したが、これにプリンタなど他の機能をさらに付加したマルチファンクション機としてもよい。また、原稿上の画像を読み取る際、原稿台上に原稿を置いて走査するものとしたが、原稿搬送機構を設け、スキャナエンジン15を固定させて、原稿の搬送により走査するようにしてもよい。また、スキャナ10からの読み取り開始のための操作としては、操作パネル16を用いるものに代え、読取対象の原稿がスキャナ10にセットされたことを検知した場合に、それをコンピュータ20に通知するものとしてもよい。また、スキャナ10は、CPU12を持たないものとし、コンピュータ20からの制御でスキャナエンジン15を動作させるものとしてもよい。またカラースキャナに代えて、モノクロスキャナとしてもよいし、フィルムを読み取るフィルムスキャナとしてもよい。
コンピュータ20は、ハードウェア資源として、USBインターフェース21、表示装置22、入力装置23、補助記憶装置24、CPU25、ROM26、RAM27を有する。コンピュータ20は、汎用的なパーソナルコンピュータを採用可能である。USBインターフェース21は、USB規格に従って周辺装置との間でデータの送受信を行う。表示装置22は、コンピュータ20にインストールされているソフトウェアに基づき、スキャナ10を操作するための各種ユーザインターフェース(UI)など種々の情報を表示する。入力装置23は、キーボード、ポインティングデバイス等で実現され、ユーザからの操作を示す情報を入力する。補助記憶装置24は、内蔵又は外付けのハードディスク等で実現され、スキャナ10の制御プログラムなどスキャナ10の動作に関わる各種情報を記憶する。CPU25は、補助記憶装置24やROM26に記憶されている各種プログラムを、RAM27にロードし、それを実行することでコンピュータ20の動作を制御する。ROM26はコンピュータ20を動作させるための各種プログラムや各種情報を記憶する。RAM27はCPU25のワークエリアとして使用されるほか、各種情報を記憶する。
次に、図2を用いて、図1に示したコンピュータ20においてソフトウェアによって実現される機能の構成を説明する。図2に示す各機能は、例えばCPU25がRAM27をワーク領域としてROM26や補助記憶装置24に記憶された(インストールされた)プログラムを読み込み実行することで実現される。
コンピュータ20の機能は、OS30、アプリケーション40、スキャナドライバ50、第1のボタン監視プログラム60、第2のボタン監視プログラム70、USBインターフェース制御部80に大きく分けられる。
OS30は、コンピュータ20の動作の基本的な部分を司り、表示装置22への出力や入力装置23からの入力の制御、補助記憶装置24などの各種メモリの管理機能などを含む。また、OS30は、TWAINデータソースマネージャ(TWAIN DSM)31、ボタン監視プログラム制御部32、アプリケーション起動部33を備えている。
TWAIN DSM31は、アプリケーション40、スキャナドライバ50を制御する。TWAIN DSM31は、TWAIN規格に従ってアプリケーション40とスキャナドライバ50との通信を実現するAPIである。TWAIN DSM31は、TWAIN規格に準拠したコマンドによりスキャナドライバ50の起動が指示されると、ボタン監視プログラム60にクローズ要求を行う。ボタン監視プログラム制御部32は、スキャナ10などの周辺装置が操作されたかどうかを監視する監視プログラムがコンピュータ20に存在する場合に、その監視プログラムの起動や終了を行う。アプリケーション起動部33は、指定したアプリケーションを起動する機能を提供するAPIにより実現される。
アプリケーション40は、入力された画像データを処理するソフトウェアである。アプリケーション40は、TWAIN DSM31を介してTWAIN規格に準拠したデータソース(スキャナドライバ)に指示して当該データソースから画像データを取得することが可能である。そして、取得した画像データを編集したり補正したりし、その結果を表示装置22に表示させたり、画像ファイルとして補助記憶装置24に記憶させたりする。また、アプリケーション40としては、入力された画像データに含まれる文字情報を認識してそれを文字コードに変換する文字認識ソフト等もある。
スキャナドライバ50は、スキャナ10を制御するためのコマンドの送信やスキャナ10からの画像データの受信等の制御を行うスキャナドライバである。スキャナドライバ50におけるコマンドの送信や画像データの受信は、USBインターフェース制御部80を介して行われる。スキャナドライバ50は、TWAIN規格に準拠した動作を行うTWAINモードと、TWAIN規格外の動作(例えば、RAWデータによる読取画像データの生成等)も可能な非TWAINモードとを有する。スキャナドライバ50は、画像読取装置を特定するためのデバイス情報と対応付けられるが、ここではスキャナ10を示すデバイス情報と対応付けられているものとする。このスキャナ10を示すデバイス情報はスキャナドライバ50と関連付けられた所定のファイルに記録される。ただし、このファイルは、スキャナドライバ50がTWAINモードで動作しTWAINドライバとして機能する際にはデバイス情報が記録されるが、非TWAINモードで動作する際には記録されない。従って、スキャナドライバ50がTWAINモードとして動作する場合には、OS30のTWAIN DSM31によるUSBポートの排他制御が行われるが、非TWAINモードとして動作する場合には、排他制御が行われない。また、スキャナドライバ50は、画像データ取得部51と、TWAIN通信制御部52と、起動プロセス識別部53と、イベント送信部54とを含む。
画像データ取得部51は、スキャナ10により読み取られた画像データを、USBインターフェース制御部80を介して取得する。画像データ取得部51により取得された画像データは、RAM27に記憶された後、TWAIN通信制御部52の制御に従いアプリケーション40に転送される。
TWAIN通信制御部52は、スキャナドライバ50とアプリケーション40のTWAIN規格に準拠したコマンド群の授受を行う。TWAIN通信制御部52は、アプリケーション40から読取解像度やカラーモード、原稿サイズ等の読取設定を受け付け、スキャナドライバ50に設定する。また、アプリケーション40からの画像転送要求に対して、スキャナ10が読み取った画像データがアプリケーション40に転送されるよう制御する。この読取設定の情報や画像データの転送はTWAIN DSM31を介して行われる。
起動プロセス識別部53は、OS30上で現在動作している(起動されている)種々のプログラムを特定する情報を、OS30が管理しているプロセス情報を参照することによって識別する。起動プロセス識別部53は、当該プロセス情報に含まれるいずれのプログラムがスキャナ10と通信するためのUSBポートをオープンしているかも識別可能である。
イベント送信部54は、所定のアプリケーションに対し、プロセス間通信(動作中のプログラム間での通信)を利用して予め定義しておいたイベント情報を送信する。
なお、スキャナドライバ50は、TWAIN対応のアプリケーションからの指示に従った起動だけではなく、ユーザによる直接の操作でスキャナドライバ50を起動させ、さらにユーザからの読み取り指示がなされた場合にも読み取り指示を行うことが可能である。ユーザによる直接の操作とは、ユーザが入力装置23を用いてスキャナドライバ50を起動させ、スキャナドライバ50が有するUI(ユーザインターフェース)画面を表示装置22に表示させ、その画面を介してユーザが読取指示行うことである。この直接の操作が行われた場合に、スキャナドライバ50を非TWAINモードで動作させることができる。
第1のボタン監視プログラム60、第2のボタン監視プログラム70は、スキャナ10を制御するためのコマンドの送信やスキャナ10の状態を表すデータの受信等を行う(以下、単にボタン監視プログラム60または70とする)。このコマンドの送信や状態を表すデータの受信は、USBインターフェース制御部80を介して行われる。また、ボタン監視プログラム60、70は周辺装置を特定するためのデバイス情報と対応付けられるが、ここではスキャナ10を示すデバイス情報と対応付けられているものとする。このスキャナ10を示すデバイス情報はボタン監視プログラム60、70とそれぞれ関連付けられた所定のファイルに記録される。なお、ここでのスキャナ10の状態は、「ボタン」の押下等に限定されるものではなく、ユーザによる何らかの操作があったことを取得できるものであればよい。また、本実施形態では、ボタン監視プログラム60はコンピュータ20(補助記憶装置24)内に複数同時に存在し得る。しかしながら、本実施形態のOS30は、USBインターフェース21を介して接続されたスキャナ10の状態を監視するボタン監視プログラムとしてはいずれか1つのボタン監視プログラムのみを起動させる。以下では、ボタン監視プログラム60、70は任意の1つのみが起動されるものとして説明する。
ボタン監視プログラム60は、ボタンイベント監視部61とイベント受信部62とを有する。なお、ボタン監視プログラム70もボタンイベント監視部71とイベント受信部72とを有するが、ボタンイベント監視部61とイベント受信部62とそれぞれ同様の機能を有するものであるので、以下では説明を省略する。
ボタンイベント監視部61は、スキャナ10の操作パネル16におけるユーザの操作によって発生したボタンイベントの有無を定期的に監視する。ここでは、監視対象のユーザによる操作を“ボタン”の押下として説明するが、上述したようにボタンの押下には限らず、ユーザによる原稿の読み取りを意図した操作であればどのような操作でも構わない。ボタンイベント監視部61は、操作パネル16における読み取り開始等のボタンイベントを検知した場合、OS30のアプリケーション起動部33を介して所定のアプリケーションを起動するよう指示する。ここで、例えば、予め用意しておいたスキャナ10の読取設定に関するファイルを、起動したアプリケーションに渡すことでボタンイベントの検知に連動させてスキャナドライバ50から所望の形式の画像データの取得を行うこともできる。
イベント受信部62は、所定のアプリケーションからプロセス間通信によって予め定義されているイベント情報を受信する。ボタン監視プログラム60は、イベント受信部62で受信したイベント情報がクローズ要求を示すものであると判断した場合、USBインターフェース制御部80を介してUSBポートをオープンする。
また、ボタン監視プログラム60、70は、スキャナ10がUSBインターフェース21を介して接続されたことをOS30が検知すると、所定の通信規格に準拠した手順でUSBポートをオープンする(プラグ&プレイ)。なお、ここでのUSBポートとは、USBインターフェース21を介して通信するための論理的なチャネルのことを指す。このUSBポートのオープンによりUSBインターフェース21を介して接続されているスキャナ10と情報をやり取りするための転送用のパイプが確保される。そして、ここではスキャナ10と通信を行うためのUSBポートは1つのスキャナドライバまたは1つのボタン監視プログラムによって排他的に使用される。ここではスキャナ10との接続開始時には、まずボタン監視プログラムが、スキャナ10からのボタンイベントの監視のためにUSBポートを使用する。もし、ボタン監視プログラムが複数存在していた場合、いずれか1つが所定の条件に従って選択され、起動される。また、ボタン監視プログラム60、70は、USBインターフェース21による接続が絶たれた場合、及びスキャナドライバ50が起動された場合、所定の通信規格に準拠した手順でUSBポートのクローズを行う。
次に、スキャナドライバ50を非TWAINモードで動作させてスキャナ10に読取処理を行わせる場合の処理の流れについて説明する。ここではスキャナドライバ50は、TWAIN規格に準拠したコマンドを用いずにスキャナ10に読取処理を実行させる。図3は、この場合のコンピュータ20における処理のシーケンスの流れを示す。以下のシーケンスは、コンピュータ20のCPU25がROM26、補助記憶装置24に記憶されているプログラムをRAM27にロードし、それを実行することにより行われる処理の流れを示す。
まず、スキャナ10がUSBインターフェース21を介して接続されると、OS30によって1つのボタン監視プログラム(ここではボタン監視プログラム60とする)が起動される。続いてボタン監視プログラム60はスキャナ10と通信を行うための論理的チャネルであるUSBポートをオープンし(A101)、スキャナ10におけるボタンイベントの発生を監視するためのポーリングを繰り返し行う。
ここでユーザからの指示によりスキャナドライバ50が起動されると、表示装置22に、スキャナドライバ50が提供する、読取指示を行うためのUI画面が表示される。このUI画面を介してユーザが読取指示を行うと、スキャナドライバ50は非TWAINモードで動作する。ここではボタン監視プログラム60がUSBポートを確保している間に、スキャナドライバ50が非TWAINモードで起動されたことになる。つまり、TWAIN規格に準拠しない要求に従ってスキャナドライバ50は起動指示がなされている。
ここでは、スキャナドライバ50は、TWAINドライバとして起動されないので、スキャナドライバ50が起動されただけでは、OS30(TWAIN DSM31)によるUSBポートの排他制御は行われない。これはスキャナドライバ50が非TWAINモードで動作する場合、上述したOS30の排他制御を可能とする所定のファイルにデバイス情報を記録しないためである。
そこで、ここでは、スキャナドライバ50が現在USBポートをオープンしている通信プログラム(ボタン監視プログラム)を識別し、そのプログラムに対し、プロセス間通信によりクローズ要求を示すイベントをイベント送信部54により送信する(A201)。USBポートをオープンしているボタン監視プログラムの識別の手順は後述する。
ボタン監視プログラム60のイベント受信部62がA201におけるクローズ要求を示すイベントを受信すると、自身が使用している既にオープンしているUSBポートをクローズする(A102)。そして、ボタン監視プログラム60は、A201におけるクローズ要求に対する応答として、成功を示す情報をスキャナドライバ50に送信する(A202)。
そして、スキャナドライバ50は、USBポートのクローズが成功したことを確認すると、自身がUSBポートを使用可能となり、自身が読取処理を行うため、USBポートをオープンする(A203)。そして、スキャナドライバ50のUI画面で指定された読取設定等に従って、スキャナ10による読取処理を実行させ、読取画像データを取得する。そして、スキャナ10からの読取画像データの取得が終了すると、USBポートをクローズする(A204)。そして、ユーザによる指定に従って、画像ファイルとして当該画像データを補助記憶装置24に保存するなどの処理を行う。なお、画像ファイルを生成して保存する処理は、USBポートをクローズさせる前に行ってもよい。また、画像データの処理としてはファイル保存には限らず、他の処理としてもよい。また、処理内容は予め指定してあった処理を行うようにしてもよいし、読取画像データを受け取った後にユーザからの指示で指定された処理を行うようにしてもよい。
そして、スキャナドライバ50は、読取処理(ここでは読取画像データの取得及びファイル保存)が終了すると、ボタン監視プログラム60に対してオープン要求のイベントを送信する(A205)。これを受けたボタン監視プログラム60はUSBポートをオープンする(A103)。そして、ボタン監視プログラム60によるUSBポートのオープンが成功すると、ボタン監視プログラム60は、オープン要求のイベント送信への応答として成功したことを示す情報を送信する(A206)。ボタン監視プログラム60がUSBポートをオープンし、自身が占有した状態になって以降は、スキャナ10におけるイベントを監視するためのポーリングを再開し、上記起動時の処理と同様の処理を行う。
以上のようなシーケンスにおいて、スキャナドライバ50が、A201におけるイベント送信先のプログラムを識別する処理の詳細について説明する。図4はこの場合の処理の第1の例の流れを示すフローチャートである。このフローチャートは、コンピュータ20のCPU25がROM26、補助記憶装置24に記憶されているプログラムをRAM27にロードし、それを実行することにより行われる処理の流れを示す。
スキャナドライバ50は、非TWAINモードで起動され、ユーザにより読取指示がなされると、S401において、OS30が管理しているプロセス情報の中から、現在起動しているボタン監視プログラム(起動プロセス)を確認する。この確認は、OS30が提供しているAPIを介して、現在起動中の複数のプログラムの中からUSBポートをオープンしているプログラムのIDを識別することにより行われる。もし、スキャナ10と通信するためにUSBポートをオープンする可能性のある通信プログラムがボタン監視プログラム60、70のいずれかしかないことが予めわかっている場合、いずれのプログラムが起動しているかを識別するだけでもよい。
そして、S402では、USBポートをオープンしていたプログラムがAであるかBであるかを判定する。ここでは、該当するプログラムがボタン監視プログラム60、70のいずれかなので、これらのいずれかがAまたはBに対応するが、ここではAがボタン監視プログラム60、Bがボタン監視プログラム70とする。
起動していたプログラムがボタン監視プログラム60であれば、S403において図3のA201におけるイベントの送信先としてボタン監視プログラム60を指定してクローズ要求のイベントを送信する。起動していたプログラムがボタン監視プログラム70であれば、S404において図3のA201におけるイベントの送信先としてボタン監視プログラム70を指定してクローズ要求のイベントを送信する。
そして、その後は図3のA102以降の処理が行われる。S405では、表示装置22に表示させたスキャナドライバ50のUI画面を介してのユーザからの読取指示を待ち、読取指示がなされればスキャナ10による画像の読み取り及び読取画像データの取得等を行われるが、ここでの説明は省略する。
そして、S406では、ユーザがスキャナドライバ50を終了させる処理を行うか、予め指定されていた読取処理が終了したかにより、スキャナドライバ50を終了させるべきか判断する。スキャナドライバ50を終了させるべきと判断された場合、まずスキャナドライバ50がオープンしたUSBポートをクローズさせる。その後、S407において、S403及びS407においてクローズ要求を行ったボタン監視プログラムに対し、オープン要求のイベントを送信し(図3のA205)、スキャナドライバ50を終了させる。
このように、コンピュータ20に複数のボタン監視プログラムが存在しても、起動中のプログラムを識別して、そのプログラムにUSBポートをクローズさせることができる。なお、USBポートを使用するプログラムが3つ以上存在するような環境であっても同様にそれぞれのプログラムのいずれかを識別して、USBポートのクローズを指示すればよい。
次に、スキャナドライバ50が、A201におけるイベント送信先のプログラムを識別する処理の第2の例について説明する。第2の例では、コンピュータ20がUSBインターフェース21を複数有し、それぞれのUSBインターフェースに異なるスキャナが接続可能な場合について説明する。ここでは、複数のスキャナが接続された場合、同時に複数のボタン監視プログラムが起動される。図5はこの場合の処理の流れを示すフローチャートであり、コンピュータ20のCPU25がROM26、補助記憶装置24に記憶されているプログラムをRAM27にロードし、それを実行することにより行われる処理の流れを示す。
S501では、S401と同様にUSBポートをオープンしているプログラムを確認する。なお、ここでは、ボタン監視プログラムが起動していることは確認できるが、いずれのプログラムが複数のUSBインターフェースのうちのいずれに対応したUSBポートをオープンしているかまでは確認できないものとする。ここでの確認結果(S502)は、図4の結果以外に、AとBの両方という結果となる可能性がある。AまたはBであった場合は、S503、S504において、S403、S404と同様の処理を行う。AとBの両方であった場合は、S505に進み、まず、ボタン監視プログラム60を送信先としてクローズ要求のイベント送信を行う。
そして、スキャナドライバ50は、S506において、自身が使用するスキャナを接続しているUSBインターフェースに対応するUSBポートの状態を確認する。この確認の結果、S507においてUSBポートがオープンされたままであったと判断された場合、S508に進み、S505のイベント送信からX秒(Xは予め決められた時間)経過したか判断する。ここでX秒が経過していなかった場合、S506以降の処理を繰り返す。X秒が経過してもUSBポートがオープンされたままであった場合はタイムアウトとし、S509におけるイベント送信先のボタン監視プログラムはスキャナドライバ50が使用しようとしているUSBポートをオープンしていなかったものと決定する。そしてS509に進み、ボタン監視プログラム70を送信先としてクローズ要求のイベント送信を行う。そして、S510においてS506と同様にUSBポートの状態を確認し、S511でUSBポートがクローズされたことを確認すると、S512に進む。また、先のS507でUSBポートがクローズされたことを確認した場合もS512に進む。
そして、S512における処理を行うに当たって図3のA102以降の処理が行われる。S512では、S405と同様にユーザからの読取指示を待ち、S513では、S406と同様にスキャナドライバ50を終了させるか判断する。
S514では、S407と同様に、まず、自身がオープンしていたUSBポートをクローズする。そして、S503、S504、S505、S509のUSBポートのクローズ要求に対しUSBポートをクローズしたボタン監視プログラムに対し、オープン要求を行う。S503でボタン監視プログラム60に対しクローズ要求を行っていた場合は、S514でボタン監視プログラム60に対しオープン要求を行う。S504でボタン監視プログラム70に対しクローズ要求を行っていた場合は、S514でボタン監視プログラム70に対しオープン要求を行う。S505でボタン監視プログラム60に対しクローズ要求を行った結果、S507で否定判定が行われた場合はS514でボタン監視プログラム60に対しオープン要求を行う。S509でボタン監視プログラム70に対しクローズ要求を行った結果、ボタン監視プログラム70がUSBポートをクローズさせた場合は、S514でボタン監視プログラム70に対しオープン要求を行う。そして、いずれかのボタン監視プログラムによるUSBポートのオープンに成功すると、スキャナドライバ50は終了する。
以上のように図5に示したような処理によれば、USBポートを使用するプログラムが複数起動し得る環境であっても適切に起動中のプログラムに対し、USBポートのクローズを指示することができる。なお、図5の例では、複数のボタン監視プログラムが起動されている場合、まずボタン監視プログラム60にクローズ要求を行うようにしたが、この順序はプログラム毎の優先順位等で決定するようにすればよく、種々の順序としてもよい。また、図5の例では、USBポートを使用し得るプログラムが2つの例で説明したが、3つ以上存在する場合でも起動中のプログラムの確認手順を追加して同様の処理とすればよい。
次に、図5で示した第2の例において、ボタン監視プログラムに対するイベント送信の処理にスレッドを用いる例について説明する。図6はこの場合の処理の流れを示すフローチャートであり、コンピュータ20のCPU25がROM26、補助記憶装置24に記憶されているプログラムをRAM27にロードし、それを実行することにより行われる処理の流れを示す。図6(A)は、メインの処理を示し、図6(B)、(C)はイベント送信用のスレッドによる処理を示す。
S601では、S501と同様にUSBポートをオープンしているプログラムを確認する。そして、S602において、起動中のボタン監視プログラムの確認結果を判断する。
この確認結果において、起動中のボタン監視プログラムが1つのみであれば、S603、またはS605でS503、S504と同様にそのボタン監視プログラムに対しクローズ要求のイベントを送信する。S604、S606ではイベント送信の結果、USBポートのクローズに成功したか否かを、イベント送信先のボタン監視プログラムと対応付けてRAM27に保存する。
S602における確認結果において、起動中のボタン監視プログラムが、ボタン監視プログラム60と70の両方であった場合、S607、S608においてそれぞれのボタン監視プログラムに対し、イベント送信を行うためのスレッドを作成する。ここでイベント送信用のスレッドが作成されると、それぞれのスレッドが並行して実行される。ボタン監視プログラム60に対するイベント送信の処理は図6(B)であり、ボタン監視プログラム70に対するイベント送信の処理は図6(C)である。S651、S661ではそれぞれのボタン監視プログラムに対し、USBポートのクローズを要求するイベントを送信する。S652、S662ではイベント送信の結果、USBポートのクローズに成功したか否かをボタン監視プログラムと対応付けてRAM27に保存する。
S609では、S607、S608におけるイベント送信用スレッドの作成から一定時間待機し、S610において、イベント送信用のスレッドによる処理が完了しているか(RAM27に結果が保存されているか)判断し、完了するまで待つ。
そして、S611では、RAM27に保存されているイベント送信の結果、USBポートのクローズに成功した方のボタン監視プログラムを識別する。この識別結果はRAM27に保存しておく。
そして、S612における処理を行うに当たって図3のA102以降の処理が行われる。S612では、S512と同様にユーザからの読取指示を待ち、S613では、S513と同様にスキャナドライバ50を終了させるか判断する。
S614では、スキャナドライバ50がオープンしていたUSBポートをクローズさせる。その後、S604、S606、S611においてRAM27に保存されたイベント送信の結果、USBポートをクローズさせることに成功したボタン監視プログラムに対し、オープン要求のイベントを送信する。そして、ボタン監視プログラムによるUSBポートのオープンに成功すると、スキャナドライバ50は終了する。
以上のように図6に示したような処理によれば、USBポートをオープンしているプログラムの識別を、複数のイベント送信を並行して行えるなど、図5の処理よりも効率的に行える。また、図6の例では、USBポートを使用し得るプログラムが2つの例で説明したが、3つ以上存在する場合でもイベント送信処理用のスレッドを追加して同様の処理とすればよい。
なお、以上の例において、スキャナドライバ50は、TWAINモードと非TWAINモードとを有するものとしたが、非TWAINモードでのみ動作可能なものとしてもよい。また、OS30が、TWAINモードでスキャナドライバが起動されるときにUSBポートの排他制御を行うものとしたが、このような排他制御機能を有さないOSとしてもよい。また、ボタン監視プログラムは、OS30による排他制御を可能とするための所定のファイルにデバイス情報を記録しないものであってもよい。
また、以上の例では、スキャナドライバ50が非TWAINモードで起動されたときに、図4〜6に示したようにボタン監視プログラムがオープンしているUSBポートをクローズさせるものとしたが、このタイミングには限らない。スキャナドライバ50が起動された後、スキャナドライバ50のUI画面を介して読取指示がなされた場合に、ボタン監視プログラムがオープンしているUSBポートをクローズさせるようにしてもよい。
また、以上の例では、USBポートをオープンしているボタン監視プログラムの識別、ボタン監視プログラムに対するクローズ要求を、スキャナドライバ50が行うものとしたが、これには限らない。スキャナドライバ50とは別に起動されるアプリケーションにおいて、非TWAINモードで動作するスキャナドライバの起動が指示されたことを判定し、図3〜図6を用いて説明した処理のうち、読取処理以外の処理を行うようにしてもよい。
また、以上の例では、スキャナとのインターフェースとしてUSBを用いる例について説明したが、通信用チャネルの排他制御を行う必要のあるものであれば、他のインターフェースとしてもよい。これは、ローカルインターフェース、ネットワークインターフェースのいずれでもよい。
また、スキャナとコンピュータとは外部接続されるものにも限らず、以上の例におけるスキャナに相当する機能とコンピュータに相当する機能とが内部的に接続され、一体化されたものとしてもよい。
また、周辺装置として、スキャナ以外のものを用いたものとしてもよい。例えば、周辺装置としてプリンタを用い、プリンタドライバが印刷用の画像データの通信を行う場合と、プリンタにおけるイベントを監視するプログラムがイベントの通信を行う場合とで通信用チャネルの排他制御を行うものであってもよい。即ち、周辺装置との間で画像データの通信を行うデバイスドライバと、周辺装置との間で行う通信を行う他の通信プログラムとの間での排他制御を行うものとすればよい。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータが連動して実行するようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。
また、本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(他の実施形態への応用、他の実施形態との組合せ等を含む)も可能である。

Claims (8)

  1. 周辺装置と通信を行うための通信用チャネルを、複数のプログラム間で排他制御する情報処理装置であって、
    前記周辺装置と前記通信用チャネルを介して通信する、前記周辺装置用のデバイスドライバと、
    前記周辺装置と前記通信用チャネルを介して通信する複数の通信プログラムと、
    前記デバイスドライバが起動指示されたときに、前記複数の通信プログラムのうちのいずれが前記通信用チャネルを使用しているかを、OS(Operating System)が管理しているプロセス情報を取得することにより識別する識別手段と、
    前記識別手段により識別された通信プログラムに対し、前記通信用チャネルのクローズを要求し、前記デバイスドライバが前記通信用チャネルを使用可能にする制御手段とを有することを特徴とする情報処理装置。
  2. 前記制御手段は、前記識別手段により識別された通信プログラムが複数あった場合、当該識別された複数の通信プログラムのうちの1つに対し、クローズ要求を行い、クローズできなかったときに前記識別された複数の通信プログラムのうちの他の1つに対し、クローズ要求を行うことを特徴とする請求項1に記載の情報処理装置。
  3. 前記制御手段は、前記識別手段により識別された通信プログラムが複数あった場合、当該識別された複数の通信プログラムのそれぞれに対し、クローズ要求を並行して行うことを特徴とする請求項1に記載の情報処理装置。
  4. 前記識別手段は、前記デバイスドライバが、所定のAPI(Application Program Interface)に準拠しない要求に従って起動指示されたときに、前記通信用チャネルを使用している通信プログラムを識別することを特徴とする請求項1〜3のいずれか1項に記載の情報処理装置。
  5. 前記所定のAPIは、TWAIN(Tool Without An Interresting Name)であることを特徴とする請求項1〜4のいずれか1項に記載の情報処理装置。
  6. 前記通信プログラムは、前記周辺装置における操作を監視するプログラムであることを特徴とする請求項1〜5のいずれか1項に記載の情報処理装置。
  7. 周辺装置と通信を行うための通信用チャネルを、前記周辺装置用のデバイスドライバ及び複数の通信プログラム間で排他制御する情報処理装置の制御方法であって、
    前記デバイスドライバが起動指示されたときに、前記複数の通信プログラムのうちのいずれが前記通信用チャネルを使用しているかを、OS(Operating System)が管理しているプロセス情報を取得することにより識別し、
    前記識別された通信プログラムに対し、前記通信用チャネルのクローズを要求し、前記デバイスドライバが前記通信用チャネルを使用可能にすることを特徴とする情報処理装置の制御方法。
  8. コンピュータを、請求項1〜6のいずれか1項に記載の情報処理装置として機能させる、または請求項7に記載の制御方法をコンピュータにより実現することを特徴とするプログラム。
JP2010102524A 2010-04-27 2010-04-27 情報処理装置、その制御方法及びプログラム Expired - Fee Related JP5473755B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010102524A JP5473755B2 (ja) 2010-04-27 2010-04-27 情報処理装置、その制御方法及びプログラム
US13/093,580 US9015732B2 (en) 2010-04-27 2011-04-25 Information processing apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010102524A JP5473755B2 (ja) 2010-04-27 2010-04-27 情報処理装置、その制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2011232948A true JP2011232948A (ja) 2011-11-17
JP5473755B2 JP5473755B2 (ja) 2014-04-16

Family

ID=44816892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010102524A Expired - Fee Related JP5473755B2 (ja) 2010-04-27 2010-04-27 情報処理装置、その制御方法及びプログラム

Country Status (2)

Country Link
US (1) US9015732B2 (ja)
JP (1) JP5473755B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015118567A (ja) * 2013-12-18 2015-06-25 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
WO2021100324A1 (ja) * 2019-11-19 2021-05-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6222899B2 (ja) * 2012-07-09 2017-11-01 キヤノン株式会社 情報処理装置、その制御方法およびプログラム
JP6768544B2 (ja) * 2017-01-31 2020-10-14 キヤノン株式会社 情報処理装置、制御方法およびプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11191089A (ja) * 1997-12-26 1999-07-13 Canon Inc データ処理装置のポート獲得解放処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JP2003308286A (ja) * 2002-04-18 2003-10-31 Sharp Corp 複合デバイスシステム
JP2006259888A (ja) * 2005-03-15 2006-09-28 Seiko Epson Corp 共有プリントサーバ制御プログラム及び共有プリントサーバ制御方法
JP2009187368A (ja) * 2008-02-07 2009-08-20 Hitachi Ltd Usbポートの共有制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3428435B2 (ja) 1998-06-03 2003-07-22 セイコーエプソン株式会社 画像読み取りシステムおよび記憶媒体
US7173723B1 (en) * 1999-07-09 2007-02-06 Seiko Epson Corporation Printer and print system capable of printing a read image without intervention of host in addition to printing of print data from host
US6938261B2 (en) * 2000-05-12 2005-08-30 Microsoft Corporation System and method employing script-based device drivers
RU2001132215A (ru) * 2001-11-29 2003-07-20 Самсунг Электроникс, Лтд. (Kr) Способ и система сетевого сканирования изображения

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11191089A (ja) * 1997-12-26 1999-07-13 Canon Inc データ処理装置のポート獲得解放処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JP2003308286A (ja) * 2002-04-18 2003-10-31 Sharp Corp 複合デバイスシステム
JP2006259888A (ja) * 2005-03-15 2006-09-28 Seiko Epson Corp 共有プリントサーバ制御プログラム及び共有プリントサーバ制御方法
JP2009187368A (ja) * 2008-02-07 2009-08-20 Hitachi Ltd Usbポートの共有制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015118567A (ja) * 2013-12-18 2015-06-25 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
WO2021100324A1 (ja) * 2019-11-19 2021-05-27 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
JPWO2021100324A1 (ja) * 2019-11-19 2021-05-27
JP7374210B2 (ja) 2019-11-19 2023-11-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置

Also Published As

Publication number Publication date
US20110265100A1 (en) 2011-10-27
US9015732B2 (en) 2015-04-21
JP5473755B2 (ja) 2014-04-16

Similar Documents

Publication Publication Date Title
US20190251406A1 (en) Method of processing data transmitted from information processing device to image output device
US9148543B2 (en) Image forming apparatus, image formation supporting system, and image formation supporting method which transfers a program from the image forming apparatus to a handheld device
JP5677047B2 (ja) 印刷システム、情報処理装置、印刷方法、及び、プログラム
JP6768291B2 (ja) 多機能周辺装置、多機能周辺装置の制御方法、モバイル端末、モバイル端末の制御方法、及びプログラム
US8988699B2 (en) Device, information processing apparatus, information processing system, control method, and program
JP6168039B2 (ja) 印刷システムおよびプログラム
JP5473755B2 (ja) 情報処理装置、その制御方法及びプログラム
US9560233B2 (en) Information processing apparatus that is capable of controlling scanner and that when an application is activated transmits device information indicating a device connected to the apparatus to the application, and control method for the same
US10554853B2 (en) Information processing device, information processing method, information processing system, and non-transitory recording medium
JP5473756B2 (ja) 情報処理装置、その制御方法及びプログラム
JP2014011582A (ja) 画像処理装置及びその制御方法とプログラム
US9930210B2 (en) Information processing apparatus, information processing method, and storage medium
JP6399915B2 (ja) 画像読取装置、情報処理方法及びプログラム
JP6244937B2 (ja) 画像形成装置、画像形成システムおよびプログラム
KR20140145051A (ko) 모바일 단말을 이용한 풀 프린팅 방법 및 장치
JP2005292259A (ja) 複合機及び複合機のパネル設定方法
JP5108571B2 (ja) 機器、データ転送システム、データ転送方法、プログラムおよび記録媒体
US9667813B2 (en) Facsimile apparatus that can store fax image data as transmission history information without storing cover sheet image, control method for facsimile apparatus, and storage medium
JP6322970B2 (ja) 遠隔操作システム、画像形成装置およびプログラム
JP2015022509A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2023026780A (ja) 情報処理装置、情報処理の制御方法、及びプログラム
JP2015049647A (ja) プリント管理サーバ、プリント管理サーバの制御方法、及びプログラム
JP2010278635A (ja) 画像処理システム
JP2007306396A (ja) ネットワークファクシミリ装置および画像フォーマット変換システム
JP2009071611A (ja) 画像形成装置、画像形成装置内のデータ処理方法、及びデータ処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130430

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131218

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140204

R151 Written notification of patent or utility model registration

Ref document number: 5473755

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees