(57)【要約】【課題】  組み込み機器のように使用するコンピュータの資源に制約のある情報処理装置において、ＯＳの構成変更やドライバをインストールしなくても汎用Ｉ／Ｆを介して接続、分離する各種外部デバイスを容易に利用できるようにし、利便性の向上を図る。【解決手段】  クラスモジュール３７１に対応する外部デバイス５００に係る情報をそれぞれのモジュールに関連付けて保持する通知条件リスト３６１を予め登録しておき、汎用Ｉ／Ｆ３５０を介して外部デバイスが接続されたときに、通知条件リストを参照し、パラメータの一致度の高低により、接続された外部デバイスに利用できる最適クラスモジュール（アプリ）を判定し、このアプリを起動することによって多様な外部デバイスにアクセスするエントリーを可能とする汎用ドライバを排他利用する。【選択図】  図３
2010020609.tif 000002
【特許請求の範囲】
【請求項１】
接続／分離が可能な外部デバイスを接続するための汎用インターフェースと、
前記汎用インターフェースを介して接続される各外部デバイスにアクセスしてサービスを提供するためにプラグインで対応する複数種類のクラスモジュールと、
前記外部デバイスの接続／分離イベントを検出する接続／分離検出モジュールを有する情報処理装置であって、
前記クラスモジュールに対応する前記外部デバイスに係る情報をモジュールごとに関連付けて保持する外部デバイス関連情報リスト及び該外部デバイス関連情報リストへの情報の登録を随時受付けるリスト登録手段を備え、
前記接続／分離検出モジュールは、接続された外部デバイスを特定するための情報を取得する外部デバイス情報取得手段と、
外部デバイスの接続／分離イベントを検出したときに、該接続／分離イベントの通知先としてのクラスモジュールを、前記外部デバイス情報取得手段により取得された情報と前記外部デバイス関連情報リストに記載された情報に基づいて判断する通知先判断手段と、
前記通知先判断手段により判断されたクラスモジュールが対応する外部デバイスの情報を該クラスモジュールに通知するデバイス情報通知手段を有したことを特徴とする情報処理装置。
【請求項２】
請求項１に記載された情報処理装置において、
前記接続／分離検出モジュールは、前記通知先判断手段により通知先が判断できないときに、ユーザインターフェースを通じて外部デバイスの使用ができない旨を知らせるための手段を有したことを特徴とする情報処理装置。
【請求項３】
請求項１又は２に記載された情報処理装置において、
前記デバイス情報通知手段は、プログラムを起動する手段を有したことを特徴とする情報処理装置。
【請求項４】
請求項１又は２に記載された情報処理装置において、
前記デバイス情報通知手段は、常駐するプロセスへ通知する手段を有したことを特徴とする情報処理装置。
【請求項５】
請求項１乃至４のいずれかに記載された情報処理装置において、
前記通知先判断手段は、当該情報処理装置の起動後、一定時間経過後に処理を開始するようにしたことを特徴とする情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載された情報処理装置において、
前記外部デバイス関連情報リストにおける前記クラスモジュールに対応する外部デバイスに係る情報が、デバイスを一意に示すパラメータ及びデバイスの機能を示すパラメータであり、かつ該パラメータごとに予め重みを付与しておき、
前記通知先判断手段は、前記パラメータごとに予め付与した重みに従い前記通知先としてのクラスモジュールを判断することを特徴とする情報処理装置。
【請求項７】
請求項１乃至５のいずれかに記載された情報処理装置において、
前記外部デバイス関連情報リストにおける各クラスモジュールにプライオリティ情報を付与し、
前記通知先判断手段は、前記プライオリティ情報を判断に加えることを特徴とする情報処理装置。
【請求項８】
請求項６に記載された情報処理装置において、
前記パラメータごとに予め付与した重みのうち、大きい重みの情報の上書き禁止情報を静的に保持することを特徴とする情報処理装置。
【請求項９】
汎用インターフェースを介して分離可能に接続される各種外部デバイスにアクセスしてサービスを提供するためにプラグインで対応する複数種類のクラスモジュールを有する情報処理装置におけるクラスモジュール起動制御方法であって、
前記クラスモジュールに対応する前記外部デバイスに係る情報をモジュールごとに関連付けて保持する外部デバイス関連情報リストへの情報の登録を随時受付けるリスト登録工程と、
外部デバイスの接続／分離イベントを検出する接続／分離イベント検出工程と、
接続された外部デバイスを特定するための情報を取得する外部デバイス情報取得工程と、
前記接続／分離イベント検出工程外部でデバイスの接続／分離イベントを検出したときに、該接続／分離イベントの通知先としてのクラスモジュールを、前記外部デバイス情報取得工程により取得された情報と前記リスト登録工程で外部デバイス関連情報リストに記載された情報に基づいて判断する通知先判断工程と、
前記通知先判断工程で判断されたクラスモジュールが対応する外部デバイスの情報を該クラスモジュールに通知するデバイス情報通知工程と、
を有したことを特徴とするクラスモジュール起動制御方法。
【請求項１０】
請求項９に記載されたクラスモジュール起動制御方法において、
前記通知先判断工程で通知先が判断できないときに、ユーザインターフェースを通じて外部デバイスの使用ができない旨を知らせる工程を有したことを特徴とするクラスモジュール起動制御方法。
【請求項１１】
請求項９又は１０に記載されたクラスモジュール起動制御方法において、
前記デバイス情報通知工程は、プログラムを起動するための指令を通知する工程であることを特徴とするクラスモジュール起動制御方法。
【請求項１２】
請求項９又は１０に記載されたクラスモジュール起動制御方法において、
前記デバイス情報通知工程は、常駐するプロセスへ通知する工程であることを特徴とするクラスモジュール起動制御方法。
【請求項１３】
請求項９乃至１２のいずれかに記載されたクラスモジュール起動制御方法において、
前記通知先判断工程は、当該情報処理装置の起動後、一定時間経過後に処理を開始するようにしたことを特徴とするクラスモジュール起動制御方法。
【請求項１４】
請求項９乃至１３のいずれかに記載されたクラスモジュール起動制御方法において、
前記リスト登録工程で登録する外部デバイス関連情報リストにおける前記クラスモジュールに対応する外部デバイスに係る情報が、デバイスを一意に示すパラメータ及びデバイスの機能を示すパラメータ、並びに該パラメータごとに付与される重みであり、
前記通知先判断工程は、前記パラメータごとに付与した重みに従い前記通知先としてのクラスモジュールを判断する工程であることを特徴とするクラスモジュール起動制御方法。
【請求項１５】
請求項９乃至１３のいずれかに記載されたクラスモジュール起動制御方法において、
前記リスト登録工程で登録する外部デバイス関連情報リストにおける各クラスモジュールにプライオリティ情報を付与し、
前記通知先判断工程は、前記プライオリティ情報を判断に加える工程であることを特徴とするクラスモジュール起動制御方法。
【請求項１６】
請求項１４に記載されたクラスモジュール起動制御方法において、
前記パラメータごとに予め付与した重みのうち、大きい重みの情報の上書き禁止情報を静的に保持することを特徴とするクラスモジュール起動制御方法。
【請求項１７】
請求項９乃至１６のいずれかに記載されたクラスモジュール起動制御方法の各工程をコンピュータに行わせるためのプログラム。
【請求項１８】
請求項１７に記載されたプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、挿抜（接続／分離）可能に接続される外部デバイスに汎用インターフェースを介してアクセスしサービスを提供する、例えばプリンタ、複合機（ＭＦＰ）等の組み込み機器としての構成を有する情報処理装置に関し、より詳しくは、接続される諸種の外部デバイスへのアクセスを可能にするために、複数種類のクラスモジュールをプラグインで適応できるようにした情報処理装置、クラスモジュール起動制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ＰＣ（Personal computer）では、外部機器を接続するインターフェースとして、例えば、ＵＳＢ（Universal Serial Bus）のような汎用インターフェースを装備することが一般的で、多様なデバイスを外部機器として接続して利用可能としている。
また、このような汎用インターフェースは、例えばプリンタ、複合機（ＭＦＰ）等の組み込み機器としての構成を有する情報処理装置においても採用され始めており、外部デバイスとの間で画像情報をはじめ様々な情報の交換が可能になってきている。なお、上記組み込み機器は、産業、事務、家電等の機器において特定の機能や限定された性能を実現するため、通常安価なＣＰＵと少ない容量のメモリからなるコンピュータを組み込んだ機器を指す。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ただ、組み込み機器の場合、ＯＳ（Operating System）といったシステムプログラムは、ＲＯＭ（Read Only Memory）に格納されるのが一般的であり、システムの構成変更を容易に行なうことができないため、汎用インターフェースを装備していても、ＯＳ等の構成を変更できず、所定のＯＳ上で動作する外部デバイスのドライバが搭載できない場合があり、また、メモリ容量の関係から、搭載できるドライバが制限されてしまう。この点、ＰＣでは、採用されるＯＳは汎用性があり、このＯＳに適合し得るように多くのドライバが用意され、また搭載するために十分のメモリ容量を持っているので、新しいデバイスに対しては、通常どんなデバイスでもドライバをインストールし、使用できるようになり、組み込み機器に起きる上記の問題は生じない。
【０００４】
このように、組み込み機器では、汎用インターフェースに接続し使用できる外部デバイスが制限されてしまうことから、特定のデバイス専用のインターフェースとしての用い方となってしまっており、汎用性を有効に利用していないという状況になっている。
また、従来の組み込み機器では、外部デバイスを接続する汎用インターフェースにおいて、装着されたデバイスが利用できない場合に、利用不可能であることを組み込み機器のユーザに示す手段を有していなかったためにユーザを戸惑わせることがあり、不便であった。
本発明は、上記の従来技術の問題に鑑みてなされたものであり、その目的は、組み込み機器などにおけるように、使用するコンピュータの資源に制約のある情報処理装置において、ＯＳの構成変更やドライバをインストールしなくても汎用インターフェースを介して接続、分離する各種外部デバイスを容易に利用できるようにし、利便性の向上を図ることにある。
【課題を解決するための手段】
【０００５】
本発明は、接続／分離が可能な外部デバイスを接続するための汎用インターフェースと、前記汎用インターフェースを介して接続される各外部デバイスにアクセスしてサービスを提供するためにプラグインで対応する複数種類のクラスモジュールと、前記外部デバイスの挿抜イベントを検出する挿抜検出モジュールを有する情報処理装置であって、前記クラスモジュールに対応する前記外部デバイスに係る情報をモジュールごとに関連付けて保持する外部デバイス関連情報リスト及び該外部デバイス関連情報リストへの情報の登録を随時受付けるリスト登録手段を備え、前記挿抜検出モジュールは、接続された外部デバイスを特定するための情報を取得する外部デバイス情報取得手段と、外部デバイスの挿抜イベントを検出したときに、該挿抜イベントの通知先としてのクラスモジュールを、前記外部デバイス情報取得手段により取得された情報と前記外部デバイス関連情報リストに記載された情報に基づいて判断する通知先判断手段と、前記通知先判断手段により判断されたクラスモジュールが対応する外部デバイスの情報を該クラスモジュールに通知するデバイス情報通知手段を有したことを特徴とする。
本発明は、汎用インターフェースを介して分離可能に接続される各種外部デバイスにアクセスしてサービスを提供するためにプラグインで対応する複数種類のクラスモジュールを有する情報処理装置におけるクラスモジュール起動制御方法であって、前記クラスモジュールに対応する前記外部デバイスに係る情報をモジュールごとに関連付けて保持する外部デバイス関連情報リストへの情報の登録を随時受付けるリスト登録工程と、外部デバイスの挿抜イベントを検出する挿抜イベント検出工程と、接続された外部デバイスを特定するための情報を取得する外部デバイス情報取得工程と、前記挿抜イベント検出工程外部でデバイスの挿抜イベントを検出したときに、該挿抜イベントの通知先としてのクラスモジュールを、前記外部デバイス情報取得工程により取得された情報と前記リスト登録工程で外部デバイス関連情報リストに記載された情報に基づいて判断する通知先判断工程と、前記通知先判断工程で判断されたクラスモジュールが対応する外部デバイスの情報を該クラスモジュールに通知するデバイス情報通知工程と、を有したことを特徴とする。
【発明の効果】
【０００６】
本発明によると、組み込み機器としての構成を持つ情報処理装置において、ＯＳの構成変更やドライバをインストールしなくても汎用インターフェースを介して接続、分離する各種外部デバイス（新規に追加されるデバイスを含む）の利用への対応が容易になり、利便性を向上することができる。
【発明を実施するための最良の形態】
【０００７】
以下に本発明の実施形態について、添付した図面を参照して説明する。
本発明の情報処理装置、クラスモジュール起動制御方法に係る以下の実施形態は、情報処理装置として複合機（ＭＦＰ）を例に実施した形態を示す。
複合機は、プリンタ、コピー、ドキュメントボックス（蓄積ドキュメントのデータ送信やプリント出力）、スキャナ、ファクシミリ等の機能を複合して備え、これらの機能を操作部からの指示によるほか、外部のクライアント（ホスト）機からの処理要求に応えて動作させる。
また、この複合機は、周辺機器としての外部機や外部デバイス（以下、これらをまとめて「外部デバイス」という）と接続するため各種のインターフェース（Ｉ／Ｆ）を備え、このＩ／Ｆを介して外部デバイスとの情報を交換することにより、機能の拡張を図ることができるようにしている。特に、本実施形態では、外部デバイスに接続するための手段として汎用Ｉ／Ｆを有し、この汎用Ｉ／Ｆに係る構成を特徴とする。
【０００８】
「複合機の概要」
図１は、本実施形態の複合機に係るハードウェア構成の概要を示す図である。
図１に示す複合機１００のコントローラ２００は、内蔵するＣＰＵ（Central Processing Unit）２３０が後述する各種メモリ等の記憶部を制御下におき、複合機１００全体を制御する制御システムを構成する。
この複合機１００におけるデータ入出力部について述べると、一つは原稿画像を光電読取りするスキャナ２２２で、ここでは処理対象の画像等のデータ入力を行う。
もう一つは、操作部（オペレーションパネル）２０１で、ここで行われるキー等の操作により動作・処理条件の設定や制御情報の入力や処理の開始を指示する入力を受け付ける。なお、操作部２０１は、ユーザＩ／Ｆとして機能するので、機器の動作状態や入力操作への応答をユーザに知らせる出力動作も行う。
もう一つは、ネットワーク或いは直接に外部デバイスと接続する通信Ｉ／Ｆ（詳細は後述）で、ここを通して、外部デバイス（例えば、ホストコンピュータ、ＦＡＸ機、ＩＣカード等）とのデータ交換を行う。なお、通信Ｉ／Ｆによって、入出力されるデータは、処理対象の画像や制御情報等のデータで、制御情報には機器間で行う通信動作に必要な情報が含まれる。
また、処理対象の画像等のデータのプリント出力は、プロッタ２２１で行う。
【０００９】
図１に示すハードウェア構成では、複合機１００は、コントローラ２００と、操作部（オペレーションパネル）２０１と、ファックス制御ユニット２０２と、エンジン群２０３を主なユニットとする。
コントローラ２００は、ＣＰＵ２３０と、ＡＳＩＣ（Application Specific Integrated Circuit：特定用途向け集積回路）２３２と、システムメモリ（ＭＥＭ−Ｐ）２３３と、ローカルメモリ（ＭＥＭ−Ｃ）２３４と、ＲＯＭ２３５と、ＨＤＤ（Hard Disk Drive）２３６と、ノースブリッジ（以下、ＮＢと記す）２３１と、シリアルバス２３７と、ＮＩＣ（Network Interface Card）２３８と、ＵＳＢ（Universal Serial Bus）Ｉ／Ｆ２３９と、ＩＥＥＥ８０２．１１ｂ Ｉ／Ｆ２４０と、ＩＥＥＥ１３９４ Ｉ／Ｆ２４１と、ＵＳＢホスト２４２と、メモリカード（登録商標）Ｉ／Ｆ２４３を有する。
外部デバイスとのＩ／Ｆである上記シリアルバス２３７、ＮＩＣ２３８、ＵＳＢＩ／Ｆ２３９、ＩＥＥＥ８０２．１１ｂ Ｉ／Ｆ２４０、ＩＥＥＥ１３９４ Ｉ／Ｆ２４１、ｗｉｒｅｌｅｓｓＵＳＢＩ／Ｆ２４２、ＵＳＢホスト２４３及びメモリカードＩ／Ｆ２４４は、ＮＢ２３１にＰＣＩバスで接続されている。
【００１０】
操作部２０１は、コントローラ２００のＡＳＩＣ２３２に接続される。
ファックス制御ユニット２０２及びエンジン群２０３は、ＡＳＩＣ２３２にＰＣＩ（Peripheral Component Interconnect）バスで接続される。
ここでは、ＡＳＩＣ２３２にローカルメモリ（ＭＥＭ−Ｃ）２３４、ＲＯＭ２３５、ＨＤＤ２３６等を接続すると共に、ＣＰＵ２３０とＡＳＩＣ２３２とをＣＰＵチップセットのＮＢ２３１を介して接続している。このように、ＮＢ２３１を介してＣＰＵ２３０とＡＳＩＣ２３２とを接続すれば、ＣＰＵ２３０のインターフェースが公開されていない場合にも対応できるようにするためである。
ＮＢ２３１は、ＣＰＵ２３０、システムメモリ（ＭＥＭ−Ｐ）２３３、ＡＳＩＣ２３２及びＰＣＩバスで繋がるシリアルバス２３７、ＮＩＣ２３８、ＵＳＢＩ／Ｆ２３９、ＩＥＥＥ８０２．１１ｂ Ｉ／Ｆ２４０、ＩＥＥＥ１３９４ Ｉ／Ｆ２４１、ｗｉｒｅｌｅｓｓＵＳＢＩ／Ｆ２４２、ＵＳＢホスト２４３並びにメモリカードＩ／Ｆ２４４を接続するためのブリッジである。
なお、ＣＰＵ２３０は、複合機１００の全体を制御するシステムを構成するが、このシステムのソフトウェア構成については、後記で図２を参照して説明する。
【００１１】
システムメモリ（ＭＥＭ−Ｐ）２３３は、複合機１００の描画用メモリ等として用いるメモリである。また、ローカルメモリ（ＭＥＭ−Ｃ）２３４は、スキャナ２２２からの入力データ、或いは外部ホスト機（不図示）から通信Ｉ／Ｆを介して受信した印刷データ等を格納する画像出力用バッファ、符号バッファ等として用いるメモリである。また、ＲＯＭ２３５は、プログラム、制御データ等を格納するためのメモリである。
ＨＤＤ２３６は、画像の蓄積、文書の蓄積、フォントデータの蓄積、フォームの蓄積等を行うためのストレージである。
ＡＳＩＣ２３２は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Integrated Circuit）である。
操作部２０１は、ユーザからの入力操作を受け付けるための所定のボタン・キー群を有し、更にユーザに向けた表示を行うモニタ画面等を有するオペレーションパネルである。なお、操作部２０１は、例えばタッチパネル等により構成されていてもよい。
【００１２】
シリアルバス２３７、ＮＩＣ２３８、ＵＳＢＩ／Ｆ２３９、ＩＥＥＥ８０２．１１ｂ Ｉ／Ｆ２４０、ＩＥＥＥ１３９４ Ｉ／Ｆ２４１、ｗｉｒｅｌｅｓｓＵＳＢＩ／Ｆ２４２、ＵＳＢホスト２４３及びメモリカードＩ／Ｆ２４４は、それぞれの規格を採用した外部デバイス（不図示）と当該規格に指示される方法に従って接続するためのインターフェースである。なお、ＵＳＢホスト２４３は、ＵＳＢメモリ２５１を接続し、また、メモリカードＩ／Ｆ２４３は、メモリカード２５２を接続するためのＩ／Ｆである。
図１に示す本実施形態の構成では、特に、汎用Ｉ／ＦとしてＵＳＢＩ／Ｆ２３９、ＩＥＥＥ１３９４ Ｉ／Ｆ２４１、ｗｉｒｅｌｅｓｓＵＳＢＩ／Ｆ２４２及びＵＳＢホスト２４２を装備しており、各Ｉ／Ｆにより多種類の外部デバイスを接続し、複合機１００と外部デバイスとの間で情報交換が可能になり、協働関係を築くことができる。
【００１３】
また、ＡＳＩＣ２３２の制御下におかれたＰＣＩバスには、ファックス制御ユニット２０２が接続されている。ファックス制御ユニット２０２は、Ｇ３規格対応ユニット２１１とＧ４規格対応ユニット２１２とを有する。
ＡＳＩＣ２３２の制御下におかれたＰＣＩバスには、エンジン群２０３が接続されており、ここでは、エンジン群２０３として、処理対象の画像データ等によるプリント出力を行うプロッタエンジン２２１と、原稿を読取り、画像データの入力を行うスキャナエンジン２２２と、複合機の処理や動作に必要なその他のハードウェアリソース２２３を備える。
【００１４】
次に、ＣＰＵ２３０が駆動するソフトウェアの構成について説明する。
図２は、本実施形態の複合機１００（図１）のソフトウェア構成をハードウェア資源と関係付けて示す図である。ＣＰＵ２３０は、図２に示すソフトウェアを駆動することによって、複合機１００全体を制御する制御システムを構築する。
図２に示す構成は、大別するとソフトウェア群１０１と、ハードウェア資源１０２よりなる。
ソフトウェア群１０１は、アプリケーション層１０３、アプリケーション層１０３からの処理要求を解釈して必要とするハードウェア資源１０２の獲得要求を発生するプラットフォーム層１０４とを有する。
【００１５】
アプリケーション層１０３は、コピー用のアプリケーションであるコピーアプリケーション１１１と、ファクス用のアプリケーションであるファクスアプリケーション１１２と、プリンタ用のアプリケーションであるプリンタアプリケーション１１３と、Ｗｅｂ用のアプリケーションであるＷｅｂアプリケーション１１４とを有している。
なお、Ｗｅｂアプリケーション１１４は、複合機１００に実装されたＨＴＴＰ（Hyper Text Transfer Protocol）プロトコルによるＷｅｂサービスを行うアプリケーション群であり、ブラウザを使って機器の状態を見ること、或いはネットワーク設定等の機器の各種設定を行えるようにする。
【００１６】
また、プラットフォーム層１０４は、アプリケーション層１０３の各アプリケーションからの処理要求を解釈してハードウェア資源１０２の獲得要求を発生し、獲得したハードウェア資源１０２の管理等を行う。
プラットフォーム層１０４には、システム制御サービス１３１と、ファクス制御サービス１３２と、エンジン制御サービス１３３と、メモリ制御サービス１３４と、操作部制御サービス１３５と、ネットワーク制御サービス１３６とを有している。システム制御サービス１３１は、アプリケーション管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、および割り込み制御等の複数の機能を有する。また、ネットワーク制御サービス１３６は、ネットワーク入出力を必要とするアプリケーションに対して共通に利用できるサービスを提供する。
なお、プラットフォーム層１０４は、予め定義された関数によりアプリケーション層１０３からの処理要求を受信可能とするＡＰＩ（Application Program Interface）１２１を有している。
【００１７】
ここに、ソフトウェア群１０１は、ＯＳ（ＬＰＵＸ）１４１上で起動され、各種処理が実行される。ＯＳ１４１は、アプリケーション層１０３及びプラットフォーム層１０４の各ソフトウェアをプロセスとして並列実行する。
また、エンジンＩ／Ｆ１５１は、ソフトウェア群１０１の各ソフトウェアにより予め定義されている関数等によりエンジン制御ボード１６１を介してハードウェア資源１０２に対する処理要求を送信可能とする。なお、エンジンＩ／Ｆ１５１及びエンジン制御ボード１６１は、ソフトウェア又はハードウェアを実現手段として適宜採用することによって実施し得る。
また、図２に示すハードウェア資源１０２には、プロッタエンジン１７１と、スキャナエンジン１７２と、その他のハードウェアリソース１７３を要素として示している。
【００１８】
「外部デバイスとの接続」
本実施形態の複合機１００は、上記したように、外部デバイスに接続するための手段として汎用Ｉ／Ｆを有し、この汎用Ｉ／Ｆによって各種の外部デバイスとの間で情報交換が可能になり、協働関係を築くことが可能である。
ただ、外部デバイスをコネクタや送受信機で物理的に接続されても、必要な通信手順に従った動作が行えないと、情報交換ができず、また、外部デバイスに対応するドライバを複合機１００にインストールしていないと、デバイスを動作させることができない。
従来、図１に示すような組み込み機器としての複合機１００は、ＯＳ（ＬＰＵＸ）をＲＯＭ（図１の例では、ＲＯＭ２３５）に格納しているために、必要な通信手順やデバイスドライバを用意することが容易ではなく、結果として、汎用Ｉ／Ｆを特定のデバイス専用のＩ／Ｆとしてしか用いていない、という状況となっていた（上記［発明が解決しようとする課題］の項の記載、参照）。
【００１９】
そこで、この実施形態では、コンピュータのＯＳやメモリといった資源に制約があっても汎用Ｉ／Ｆを介して接続、分離する各種外部デバイスへのアクセスを可能にすることを意図する。この意図を実現するために、デバイスを動作させるための複数種類のソフトウェアモジュールをプラグインで対応し得るように用意し、用意した中から接続したデバイスに適用するモジュールを判定し、判定したモジュールを使用する制御を行う制御システムを構成する。
複合機（情報処理装置）上に構成する以下に示す制御システムでは、プラグインで対応し得る複数種類のソフトウェアモジュールを汎用ドライバのクラスモジュールとする。即ち、汎用ドライバのクラスモジュールとすることにより、複数種類のソフトウェアモジュールの追加、削除を容易にできるようにする。
この実施形態では、クラスモジュールに対応する外部デバイスに係る情報をそれぞれのモジュールに関連付けて保持する外部デバイス関連情報リスト（後述する通知条件リスト）を予め登録しておき、汎用Ｉ／Ｆを介して外部デバイスが接続されたときに、このリストを参照することにより、接続された外部デバイスに適用するクラスモジュールを判定し、多様な外部デバイスに対し適正に対応できるクラスモジュールを選択してサービスプログラム間で外部デバイスにアクセスするエントリーである汎用ドライバを排他利用できるようにする。
【００２０】
「クラスモジュール選択制御システム」
図３は、外部デバイスへのアクセスを可能とするために複合機上に構成するクラスモジュール選択制御システムを示す図である。なお、同図中の矢印は、通知条件リストの登録、外部デバイス接続時に使用するクラスモジュールの選択及び外部デバイスへのアクセスというこのシステムが行う一連の動作における情報の流れを示す。
図３に示す制御システムは、複合機１００に接続（或いは装着）してくる外部デバイス５００に対し、当該デバイスのファンクションモジュール５０３が利用できる状態、即ちアクセスできる状態にするために用いるクラスモジュール３７０を選択するまでの手順を実行するための主な要素として、クラスモジュール３７０のほか、汎用Ｉ／Ｆ３５０及び挿抜検出モジュール３６０を有する。なお、図３に示す外部デバイス５００は、接続可能な多種類のデバイスの１つが接続状態にあることを示している。
【００２１】
汎用Ｉ／Ｆ３５０は、接続してくる多種類の外部デバイス５００の交信要求を受付けるＩ／Ｆである。この汎用Ｉ／Ｆ３５０としては、図１に示したように、例えばＵＳＢ、Ｗｉｒｅｌｅｓｓ ＵＳＢ、ＩＥＥＥ１３９４等の異なる規格に従うＩ／Ｆが適用できる。
クラスモジュール３７０は、汎用Ｉ／Ｆ３５０に接続された外部デバイス５００にアクセスしてサービスを提供するアプリケーションプログラム（以下「アプリ」ともいう）である。この実施形態では、クラスモジュール３７０が外部デバイス５００に係る機器情報等のデバイス情報５０１を収集し、収集した情報を後述する通知条件情報３７１として通知条件リスト３６１への登録処理を行うので、このためのプログラムが用意される。
クラスモジュール３７０は、例えば、外部デバイス５００がＩＣカードリーダである場合、汎用Ｉ／Ｆ３５０を介してＩＣカードリーダにアクセスすることができるので、カードに書き込まれた情報による認証を条件に出力処理を行う認証コピー（プリント）等を実現するサービスなどを提供することが可能となる。
【００２２】
挿抜検出モジュール３６０は、外部デバイス５００の汎用Ｉ／Ｆ３５０への挿抜（接続／分離）イベントを監視するモジュールであり、挿抜検出Ｉ／Ｆ３５１を介して挿抜の発生を監視し、挿抜を検出したときに挿抜イベント（挿抜イベントの種類）をクラスモジュール３７０へ通知する。
また、このときにクラスモジュール３７０に通知する情報には、接続された外部デバイス５００に用いることができる最適なクラスモジュール３７０の情報を指示する（下記の通知イベントの説明、参照）。
この最適なクラスモジュール３７０を選択するためには、複数種類のクラスモジュール３７０それぞれの情報（アプリ情報）と外部デバイス５００に係る情報を関連付ける外部デバイス関連情報をリスト等の形式で持つ必要がある。
ここでは、挿抜検出モジュール３６０が、この外部デバイス関連情報リストを通知条件リスト３６１として作成し、管理する。
【００２３】
図４は、通知条件リストのデータ構成の１例を示す図である。
通知条件リスト３６１に載せる情報は、図４に示すように、サービスを提供するクラスモジュール３７０のアプリ情報と、外部デバイスとしての周辺機器を特定するための情報からなる。この例では、外部デバイス５００を特定するための情報としてVendor、Product、Driver name、Class、Subclass、Protocolのパラメータを載せている。
挿抜検出モジュール３６０は、登録された通知条件リスト３６１を基に外部デバイス５００とクラスモジュール３７０の対応を判断して、最適なクラスモジュール３７０を判定する。即ち、接続イベントを発生させた外部デバイス５００からそのデバイスに係る情報としてVendor、 Product、Driver name、Class、Subclass、Protocolのパラメータを取得し、これらのパラメータを通知条件リスト３６１のパラメータと照合し、最も一致度の高い通知条件リストをとり上げ、このリストに示されているアプリ情報から最適なクラスモジュール３７０を決定する。
【００２４】
この外部デバイス情報の一致度による判定において、異なる通知条件リスト３６１で照合結果が同一となるケース、即ち、異なるクラスモジュール（アプリ）の通知条件リストに対して、外部デバイスに係る情報（Vendor、Product、Driver name、Class、Subclass、Protocol）の一致度が同じになるケースがある。この場合、より適切なアプリを選択するために、ここでは、意図的に一つのクラスモジュール（アプリ）を決定できるようにする方法を用いる。
この方法として、図４に示す通知条件リストにおけるパラメータの一つに優先度のパラメータを加え、このパラメータによって予め各リスト間に優先度を付与し、付与した優先度により一つのアプリに決定できるようにする。この優先度パラメータは、例えば、５０を基本値として０〜９９の数値により表し、外部デバイス情報の一致度が同一となった場合には、優先度の数値の比較により優先させるアプリをより大きな数値を持つアプリとして決定できるようにする。
【００２５】
また、外部デバイスに係るパラメータ（Vendor、Product、Driver name、Class、Subclass、Protocol）とクラスモジュール（アプリ）との関係を意図的に設定できるようにすることで、適切なクラスモジュールを選ぶことを可能にする。
このための方法として、図４に示す通知条件リストにおける各パラメータに予め重み付けを行い、外部デバイス情報の一致度の判定の際、一致したパラメータについて、付与された重みを加味して、最もポイントの高い通知条件リストのクラスモジュール（アプリ）を決定する。例えば、デバイスを一意に示すVendor及びProductの優先度を上げるために高く設定し、Driver name の優先度を中位に設定し、Class、Subclass、Protocolの優先度を低い数値で設定し、数値の比較により優先させるアプリを決めることでより適正な選択を可能にする設定とすることができる。
【００２６】
挿抜イベントを発生させた外部デバイス５００に適応するクラスモジュール（アプリ）３７０を決定するために用いる通知条件リスト３６１は、外部デバイス５００が接続された時点で最も新しい情報を保持していることが望ましい。そこで、複合機１００が稼動状態にある間、新規に接続されるデバイスに対応できるように通知条件データを更新する等、通知条件リスト３６１の管理をすることが求められる。このため、クラスモジュール３７０は、通知条件リスト３６１へ登録すべき通知条件情報３７１の入力を監視し、当該情報の入力を受け、随時に登録処理を行う。例えば、外部デバイス５００を使用するためのアプリがインストールされる際に、同時にクラスモジュール３７０は、インストールされたアプリについて、通知条件リスト３６１への登録処理を行う。アプリをインストールする方法は、操作部２０１からのユーザ操作等によってマニュアルで記憶メディアに書き込まれたアプリを取り込む方法やネットワーク或いはコネクタを介して接続された外部デバイス５００から自動でインストールする方法でもよい。
このように、本実施形態では、通知条件リストへのデータの登録は、クラスモジュール３７０によって動的に行われる。
また、電源オフ時には、そのときに保持している通知条件リストデータをストレージで保存し、次の電源オン時に保存した通知条件リストデータを再登録して使用できるようにする。
【００２７】
挿抜検出モジュール３６０は、上記のように管理される通知条件リスト３６１を用いて、接続された外部デバイス５００に適用するクラスモジュール（アプリ）３７０、或いは分離された外部デバイス５００に適用していたクラスモジュール（アプリ）３７０を決定する。
決定した結果は、挿抜検出モジュール３６０から当該クラスモジュール３７０へ通知される。ここでは、挿抜検出モジュール３６０が、通知イベントとして、挿抜イベントの種類、決定したアプリ、及び当該外部デバイス５００を動作させるために必要な情報を付与したイベントを発行し、クラスモジュール３７０に伝える。
図５は通知イベントのデータ構成の１例を示す図である。
図５に示す通知イベントにおいて、イベントタイプは、ATTACH又はDETACHといった発生した挿抜イベントの種類を示すものである。また、通知イベントには、通知条件リスト３６１をもとに決定したクラスモジュール（アプリ）が当該外部デバイス５００をアクセスし、協働関係を築くために必要な情報を記載し、この実施例では、bus、address、cookie及びdriver nameの各データを付加する。ここに、bus及びaddressは、外部デバイス５００のアドレスを特定するための情報である。cookieは外部デバイス５００を識別するために付与されたユニークなＩＤである。driver nameは、使用可能なデバイスドライバのエントリー情報を示す。
【００２８】
挿抜検出モジュール３６０は、接続された外部デバイス５００に適用するクラスモジュール（アプリ）を通知条件リスト３６１から得ることができず、外部デバイス５００が使用不可能であると判断した場合には、使用不可能であることを表す情報をユーザに伝える。
汎用Ｉ／Ｆ３５０がＵＳＢホスト２４３（図１）のように直接複合機１００に接続する形式であり、使用不可能な外部デバイス５００としてのＵＳＢメモリ２５１（図１）がこのＩ／Ｆへ接続された場合に、使用不可能である旨を知らせる情報は、ユーザＩ／Ｆ３８０の表示装置を通じてユーザへ示される。このユーザＩ／Ｆ３８０として、オペレーションパネル２０１のディスプレイやデータインターフェースランプ或いはこの旨を知らせる情報をプリントアウトするといった手段により実施することができる。なお、ネットワークを介して接続される外部デバイス５００に対しても、図３に示していないが、ネットワーク経由で使用不可能であることを表す情報を通知する。
【００２９】
「制御フロー」
次に、上記クラスモジュール選択制御システム（図３）の動作を図６に示す制御フローを参照して説明する。この制御フローは、複合機１００の電源ＯＮ後にクラスモジュール３７０が接続された外部デバイス５００へアクセス可能となるまでの手順を示すもので、接続された外部デバイス５００の分離にも適応するものである。なお、この制御フローの各ステップに関連する情報のフローについては、図３におけるこのシステムの構成図を参照する（図３中の(1)〜(8)を付した矢印が情報のフローを示す）。
まず、複合機１００の電源がＯＮされると、コントローラ２００が立ち上がり、クラスモジュール選択制御システム（図３）が起動し、このシステムの要素である挿抜検出モジュール３６０、クラスモジュール３７０等も起動される。
【００３０】
起動したクラスモジュール３７０は、通知条件リスト３６１に登録する通知条件情報の収集を開始し（ステップＳ１０１）、収集した通知条件情報の登録要求を挿抜検出モジュール３６０に対して行う（図３のフロー(1)、参照）ことにより、通知条件の登録処理が始まる（ステップＳ１０２）。なお、通知条件リスト３６１は、最新の通知条件情報を保持していることが望ましいので、アプリのインストール等によって、登録すべき通知条件情報３７１が入力されたときに、随時、通知条件リスト３６１への登録要求を行う。
次いで、挿抜検出モジュール３６０は、クラスモジュール３７０から受取った通知条件情報をもとに通知条件リスト３６１を作成し（ステップＳ１０３）、後段で接続した外部デバイス５００に用いるクラスモジュールを判断するための情報を提供できるように作成した通知条件リスト３６１を管理する。なお、電源ＯＮ時に行う初期化処理として、通知条件リスト３６１には、デフォルトデータ、例えば、ストレージに保存しておいた静的な上書き禁止情報を設定する。
【００３１】
ステップＳ１０３で通知条件リスト３６１を作成した後、複合機１００の電源ＯＮ時に必要なアプリを起動し、処理要求に応じた動作が可能な状態に立ち上った時点からの経過時間が予め設定した通知開始タイミングに達したか否かをタイマー３９０により確認する（図３のフロー(4)、参照）（ステップＳ１０４）。このタイマー確認を行うのは、新規に接続される外部デバイス５００の合、接続時に同時に当該外部デバイスの通知条件情報３７１が通知条件リスト３６１へ登録されることになり、この登録処理が遅れると、後段で行う通知先の選択が最適化できなくなるからである。ここでは、想定される登録処理の遅れを見込んだ所定の経過時間を設定して、タイマー確認を行う。
ステップＳ１０４で、経過時間が通知開始タイミングに達しない場合には（ステップＳ１０４-NO）、ステップ１０１の通知条件情報の収集に戻し、再びステップ１０４までのフローに従う処理を行い、この手順を通知開始タイミングに達するまで続ける。この手順を行うことにより、上記した登録処理の遅れにより生じる不具合を回避することが可能になる。
【００３２】
他方、経過時間が通知開始タイミングに達した場合には（ステップＳ１０４-YES）、挿抜検出モジュール３６０は、挿抜検出Ｉ／Ｆ３５１を介して外部デバイス５００の挿抜が検出できたか否かを確認する（ステップＳ１０５）。
ここで、外部デバイス５００の挿抜を検出できない場合（ステップＳ１０５-NO）、通知条件の登録処理を行うステップ１０２に戻し、挿抜が検出できるまでステップ１０２〜１０４の処理を繰り返す。
外部デバイス５００の挿抜が検出できれば（ステップＳ１０５-YES）、検出された外部デバイス５００のデバイス情報５０１を取得する（ステップＳ１０６）。ここでは、挿抜検出が装着の検出であった場合には、デバイス情報５０１を装着された外部デバイス５００から直接汎用Ｉ／Ｆ３５０を介して取得する（図３のフロー(2)、参照）。また、挿抜検出が分離の検出であった場合には、先の装着時に保存しておいた管理情報から当該外部デバイス５００のデバイス情報５０１を取得する。
次いで、挿抜検出モジュール３６０は、取得したデバイス情報５０１（Vendor、Product、Driver name、Class、Subclass、Protoco1等）のパラメータを各通知条件リスト３６１（図４、参照）のパラメータと照合し、最も一致度の高い通知条件リスト３６１を得、そこに示されているアプリ情報から検出された外部デバイス５００に最適なクラスモジュール（アプリ）３７０を判断し、判断されたクラスモジュール３７０を通知イベントの通知先として決定する（ステップＳ１０７）。
【００３３】
ただ、ステップＳ１０７では、検出された外部デバイス５００のデバイス情報５０１が各通知条件リスト３６１に登録された中に存在しない等の理由によって、通知先が決定できない、といった場合が起り得る。
そこで、本実施形態では、ステップＳ１０７の後、通知先が決定できたか否かを確認する（ステップＳ１０８）。
この確認で通知先が決定できた場合には（ステップＳ１０８-YES）、決定した通知先のクラスモジュール（アプリ）３７０が起動していることを確認する（ステッフＳ１０９）。なお、この起動の確認は、本実施形態の電源ＯＮ時の制御フローで新たに装着された外部デバイス５００に対しては、必要であるが、逆の場合である分離された外部デバイス５００に対しては、通常、通知先のクラスモンジュール３７０は既に起動しているので、この場合には、ステップＳ１０９を省くことができる。
【００３４】
この通知先のクラスモジュール（アプリ）３７０の起動は、後段で発行する通知イベントの通信手段と関係する。通常、常駐するプロセスがあるので、通知イベントは、常駐するプロセスで既に稼動しているクラスモジュール（アプリ）に伝えるプロセス間通信という方法によって行われ、この場合には新たにアプリを起動することはなく、クラスモジュール（アプリ）に通知イベントを伝えることができる。なお、常駐するプロセスをどのように起動するかは、クラスモジュールの追加時など、製品リリース後に変えることができる。
【００３５】
ただ、常駐するプロセスで起動しているアプリを通知イベントの通知先とすることによって最適な動作が得られるとは限らない。利用しようとするプロセスのアプリを通知先とし、最適な動作を得るために、搭載された全てのプロセスを常駐させ、プロセス間通信を用いることも可能であるか、搭載したコンピュータの資源を無駄に消費してしまう。
そこで、最適な通知先のアプリが、常駐するプロセスではなく稼動していない状態でも、プロセス起動によって、最適な動作が得られるようにする。このプロセス起動による実施形態の動作は、外部デバイス５００の接続の検出をトリガにプロセスを起動することができるため、クラスモジュール（アプリ）の自動起動が可能となり、デバイス未接続時に搭載したコンピュータの資源（ＣＰＵ、メモリなど）を節約することが可能となる。また、クラスモジュール（アプリ）を起動する仕組みを別途設けなくてよくなるため、モジュールの追加がより容易になる。
【００３６】
制御フローに戻ると、ステップＳ１０９で、通知先のクラスモジュール（アプリ）３７０が起動していない場合は（ステップＳ１０９-NO）、このクラスモジュール（アプリ）３７０に起動を掛け（ステップＳ１１０）、起動したことが確認できる（ステップＳ１０９-YES）まで、ステップＳ１０９⇔Ｓ１１０のループ処理を行う。なお、クラスモジュール（アプリ）３７０の起動は、実施形態によっては上記のようにプロセス起動の一環として行われる。
ステップＳ１０９で通知先のクラスモジュール（アプリ）３７０が起動していることを確認した（ステップＳ１０９-YES）後、挿抜検出モジュール３６０は、通知イベント（図５、参照）を発行する（ステップＳ１１１）。この通知イベントは、クラスモジュール（アプリ）３７０に通知される（図３のフロー(5)、参照）。
クラスモジュール（アプリ）３７０は、挿抜イベントの種類がATTACHである場合には、通知イベントに付与されている決定したアプリ（driver、name）及び当該外部デバイス５００にアクセスするために必要な情報（bus、address及びcookie等）を、外部デバイス５００にサービスを提供するための動作に用いる。
また、挿抜イベントの種類がDETACHである場合には、当該クラスモジュール（アプリ）３７０の動作を終了させることができる。
【００３７】
挿抜イベントの種類がATTACHである場合の具体的な手順として、クラスモジュール（アプリ）３７０は、挿抜検出モジュール３６０から受取った通知イベントに示されるDriver nameを、接続された外部デバイス５００をアクセスするためのエントリー情報として取得し（ステップＳ１１２）、このDriver nameをエントリーとして外部デバイス５００のドライバを駆動する。
クラスモジュール（アプリ）３７０が持つ外部デバイス５００のドライバは、通知イベントに示されるbus、address及びcookie等のアクセスに必要な情報を参照して、汎用Ｉ／Ｆ３５０のクラスＩ／Ｆ３５３を介して（図３のフロー(6)、参照）、外部デバイス５００のファンクションモジュール５０３へのアクセス（図３のフロー(7)、参照）を開始する（ステップＳ１１３）。
この後、この制御フローを終了する。
なお、挿抜イベントの種類がDETACHである場合には、ステップＳ１１２及びステップＳ１１３の手順は不用であるから、ステップＳ１１１で通知イベントを発行した後、この制御フローを終了する。
【００３８】
上記したステップＳ１０７で通知先の決定ステップの処理を行った後、通知先が決定できたか否かを確認し（ステップＳ１０８）、通知先が決定できない場合には（ステップＳ１０８-NO）、使用できない外部デバイス５００を検出したものとみなす。
この場合、挿抜検出モジュール３６０は、ユーザＩ／Ｆ３８０に当該外部デバイス５００の使用不可を示す旨の警告表示を指示し（図３のフロー(8)、参照）、この指示を受けるユーザＩ／Ｆ３８０は、操作部２０１のディスプレイに“外部デバイス使用不可”のメッセージを表示する等、ユーザに状況を通知する処理を行う（ステップＳ１２１）。ユーザＩ／Ｆ３８０を通じて外部デバイス５００の使用不可を警告することで、ユーザビリティを向上することができる。
【００３９】
上記のように組み込み機器としての構成を持つ情報処理装置のように、コンピュータのOＳやメモリといった資源に制約ある情報処理装置において、多様な外部デバイスにアクセスするエントリーを可能とする汎用ドライバをクラスモジュールにより排他利用することで、ＯＳの構成変更やドライバをインストールしなくても、汎用Ｉ／Ｆで接続、分離する各種外部デバイス（新規に追加されるデバイスを含む）の利用への対応が容易になり、利便性を向上することができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の情報処理装置の実施形態に係る複合機におけるハードウェア構成の概要を示す図である。
【図２】複合機（図１）のソフトウェア構成をハードウェア資源と関係付けて示す図である。
【図３】外部デバイスへのアクセスを可能とするために複合機上に構成する制御システムを示す図である。
【図４】通知条件リストのデータ構成の１例を示す図である。
【図５】通知イベントのデータ構成の１例を示す図である。
【図６】クラスモジュール選択制御システム（図３）の制御フローを示す図である。
【符号の説明】
【００４１】
１００・・情報処理装置（複合機）、２００・・コントローラ、２０１・・操作部、２０３・・エンジン群、２３０・・ＣＰＵ、２３２・・ＡＳＩＣ、２３２・・システムメモリ（ＭＥＭ−Ｐ）、２３４・・ローカルメモリ（ＭＥＭ−Ｃ）、２３５・・ＲＯＭ、２３６・・ＨＤＤ、２３９・・ＵＳＢＩ／Ｆ、２４１・・ＩＥＥＥ１３９４ Ｉ／Ｆ、２４２・・wireless ＵＳＢＩ／Ｆ、２４３・・ＵＳＢホスト、３５０・・汎用Ｉ／Ｆ、３６０・・挿抜検出モジュール、３７０・・クラスモジュール（アプリ）、５００・・外部デバイス（周辺機器）。
【図１】
2010020609.tif 000003
【図２】
2010020609.tif 000004
【図３】
2010020609.tif 000005
【図４】
2010020609.tif 000006
【図５】
2010020609.tif 000007
【図６】
2010020609.tif 000008