(57)【要約】【課題】外部機器の使用可否の判定を動的に行う。【解決手段】複数の種類のＵＳＢデバイスと接続され得るＵＳＢポート２６と、カードスロット２７に挿入されたカード３１に記録されているデジタルカメラ印刷アプリケーションプログラムを起動する拡張プログラム起動部、ＵＳＢデバイスの接続を検出するＵＳＢホストコントローラドライバ、ＵＳＢホストドライバ、ＵＳＢデバイスのディスクリプタ情報及びデジタルカメラ印刷アプリケーションプログラムによって利用可能となるＵＳＢデバイスのディスクリプタ情報を取得し、ＵＳＢデバイスの利用の可否を判定するＵＳＢ機器監視部、ＵＳＢデバイスの利用が不可能であると判定された場合にその旨をユーザに通知するオペレーションパネル制御部を含むシステムプログラムを記録したＲＯＭ２４と、を備える。【選択図】図１１
2010186239.tif 000002
【特許請求の範囲】
【請求項１】
外部記録媒体と接続され得る外部記録媒体接続手段と、
複数の種類の外部機器と所定のインタフェースで接続され得る外部機器接続手段と、
前記外部記録媒体接続手段に接続された外部記録媒体に記録されているプログラムを起動するプログラム起動手段と、
前記外部機器接続手段への外部機器の接続を検出する外部機器接続検出手段と、
前記外部機器接続検出手段が前記外部機器接続手段への外部機器の接続を検出した場合に、前記外部機器接続手段に接続された外部機器に関する第１の情報を取得する第１の情報取得手段と、
前記プログラムの実行によって利用可能となる外部機器に関する第２の情報を取得する第２の情報取得手段と、
前記第１の情報と前記第２の情報とを比較することにより、前記外部機器接続手段に接続された外部機器の利用の可否を判定する判定手段と、
前記判定手段が前記外部機器接続手段に接続された外部機器の利用が可能であると判定した場合に、前記外部機器接続手段に接続された外部機器を制御する制御手段と、
前記判定手段が前記外部機器接続手段に接続された外部機器の利用が不可能であると判定した場合に、前記外部機器が利用不可能であることをユーザに通知する通知手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記所定のインタフェースが、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）であり、前記第１及び第２の情報が、ＵＳＢの仕様で定められているディスクリプタ情報の一部又は全部であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
外部記録媒体接続手段に接続された外部記録媒体に記録されているプログラムを起動するプログラム起動ステップと、
複数の種類の外部機器と所定のインタフェースで接続され得る外部機器接続手段への外部機器の接続を検出する外部機器接続検出ステップと、
前記外部機器接続検出ステップによって前記外部機器接続手段への外部機器の接続が検出された場合に、前記外部機器接続手段に接続された外部機器に関する第１の情報を取得する第１の情報取得ステップと、
前記プログラムの実行によって利用可能となる外部機器に関する第２の情報を取得する第２の情報取得ステップと、
前記第１の情報と前記第２の情報とを比較することにより、前記外部機器接続手段に接続された外部機器の利用の可否を判定する判定ステップと、
前記判定ステップによって前記外部機器接続手段に接続された外部機器の利用が可能であると判定された場合に、前記外部機器接続手段に接続された外部機器を制御する制御ステップと、
前記判定ステップによって前記外部機器接続手段に接続された外部機器の利用が不可能であると判定された場合に、前記外部機器が利用不可能であることをユーザに通知する通知ステップと、
を有することを特徴とするプログラム制御方法。
【請求項４】
前記所定のインタフェースが、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）であり、前記第１及び第２の情報が、ＵＳＢの仕様で定められているディスクリプタ情報の一部又は全部であることを特徴とする請求項３に記載のプログラム制御方法。
【請求項５】
前記判定ステップは、
前記第１の情報取得ステップによって前記第１の情報が取得されたときに前記第２の情報取得ステップによって前記第２の情報が取得されていない場合には所定の時間待機し、前記所定の時間が経過するまでに前記第２の情報取得ステップによって前記第２の情報が取得された場合に前記第１の情報と前記第２の情報とを比較することにより前記外部機器接続手段に接続された外部機器の利用の可否を判定し、前記所定の時間の経過時に前記第２の情報取得ステップによって前記第２の情報が取得されていない場合に前記外部機器が利用不可能であると判定すること
を特徴とする請求項３又は４に記載のプログラム制御方法。
【請求項６】
前記プログラム起動ステップによって起動された前記プログラムの初期化が完了したときにその旨を前記判定ステップに通知する初期化チェックステップを更に有し、
前記判定ステップは、
前記第１の情報取得ステップによって前記第１の情報が取得されたときに前記第２の情報取得ステップによって前記第２の情報が取得されていない場合には前記初期化チェックステップからの通知を待ち、前記初期化チェックステップからの通知があるまでに前記第２の情報取得ステップによって前記第２の情報が取得された場合に前記第１の情報と前記第２の情報とを比較することにより前記外部機器接続手段に接続された外部機器の利用の可否を判定し、前記初期化チェックステップからの通知があったときに前記第２の情報取得ステップによって前記第２の情報が取得されていない場合に前記外部機器が利用不可能であると判定すること
を特徴とする請求項３又は４に記載のプログラム制御方法。
【請求項７】
請求項３乃至６のいずれか１つに記載されたプログラム制御方法をコンピュータに実行させるためのプログラム制御プログラム。
【請求項８】
請求項７に記載されたプログラム制御プログラムを格納したコンピュータの読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム制御方法、プログラム制御プログラム及び記録媒体に関するものである。
【背景技術】
【０００２】
近年、汎用インタフェースを用いて各種デバイスを動的に接続できるような構成が一般的になってきている。そのような汎用インタフェースの典型例として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が挙げられる。現在、ＵＳＢの仕様の策定、管理等は、ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ，  Ｉｎｃ．（ＵＳＢ−ＩＦ）によって行われており、ＵＳＢの仕様の詳細は、下記の非特許文献１として広く知られている。このＵＳＢ仕様に準拠した様々なＵＳＢデバイス（例えば、ＵＳＢキーボード／マウス等の入力機器、プリンタ等の出力機器、ハードディスクやＵＳＢメモリ等の記憶装置）が、パーソナルコンピュータの分野を中心に広く普及している。
【０００３】
ＵＳＢデバイスとして、上記に例示したように様々な種類の機能を持ったデバイスが存在しており、ＵＳＢデバイスを制御するＵＳＢホスト（ＰＣ等）は、新規の機能を有するＵＳＢデバイスの接続を検出した場合には、システムプログラム（システムソフトウエア）に機能固有又は当該ＵＳＢデバイス固有のドライバ等の制御プログラム（制御ソフトウエア）をインストールする。これにより、ＵＳＢホストにおいて当該ＵＳＢデバイスが利用可能となるのが一般的である。
【０００４】
ＵＳＢデバイスを利用可能とするためには、上記のように制御プログラムをインストールする必要があり、インストールに必要なデータ（制御プログラム）を取得する手間等がかかるのが問題となっていた。このような問題に関連する技術として、下記の特許文献１〜３に記載された技術が知られている。
【０００５】
特許文献１には、ＵＳＢ機器（デバイス）内にＵＳＢ機器ドライバ（制御プログラム）を保持することにより、インストールに必要なＵＳＢ機器ドライバをＵＳＢ機器から直接取得することによりこの手間を省くことができる技術が掲載されている。
【０００６】
特許文献２に掲載された技術は、特許文献１に掲載された技術とほぼ同等の技術であり、ＵＳＢデバイス内にドライバ（制御プログラム）を保持し、ＰＣ（ＵＳＢホスト）側にてドライバのインストール状態を示すインストールフラグを保持することにより、ドライバのインストールが必要な場合にはＵＳＢデバイス内のドライバをインストールするものである。
【０００７】
特許文献３に掲載された技術も、特許文献１、２に掲載された技術とほぼ同等の技術であり、ＵＳＢデバイスに制御用ソフト（ドライバ、ユーティリティなど）を予め格納させ、ＵＳＢデバイスからホストへ制御用ソフトを転送させるものである。
【０００８】
特許文献１〜３に掲載された技術は、ＵＳＢホスト（ＰＣ等）のシステムプログラム（システムソフトウエア）に制御プログラム（制御ソフトウエア）を追加する（インストールする）ことが可能な場合には、有効な技術となり得る。しかしながら、近年、ＵＳＢ等の汎用インタフェースは、ＰＣの分野に限らず、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）やＬＰ（Ｌａｓｅｒ  Ｐｒｉｎｔｅｒ）をはじめとする組込み機器にも普及してきている。このような組込み機器において、システムプログラムは、書換え／追記が不可能なＲＯＭ上に記憶されている場合が多い。そのため、このような組込み機器においては、制御プログラムを追加する（インストールする）ことは不可能であるので、特許文献１〜３に掲載された技術は有効ではない。そして、このような組込み機器にＵＳＢデバイスを接続した場合、当該ＵＳＢデバイスの機能固有又は当該ＵＳＢデバイス固有の制御プログラムが事前に組込み機器に組み込まれていた場合にのみ、当該ＵＳＢデバイスを使用することが可能であり、制御プログラムが事前に組込み機器に組み込まれていなかった場合には、当該ＵＳＢデバイスを使用することができない。
【０００９】
上記のような事情から、ＵＳＢ等の汎用的なインタフェースを用いた機器においては、接続されたデバイスが利用可能か否かをユーザに対して通知することが望ましい。また、下記の非特許文献２においても、接続されたデバイスが利用可能か否かをユーザに対して通知する「Ｎｏ  Ｓｉｌｅｎｔ  Ｆａｉｌｕｒｅ」機能を組込み機器に搭載することが規定されている。この機能を実現するためには、組込み機器が、接続されたＵＳＢデバイスが使用可能か否かを一意に決定した上で、ユーザに対する通知要否を判断する必要がある。
【００１０】
一方で、ＭＦＰ／ＬＰ等のシステムプログラムの書換え／追記が不可能な機器においても、機能拡張プログラムを容易に追加することができる技術が提案されている。下記の特許文献４には、ＳＤカード（登録商標）等の挿抜可能な外部記憶装置に機能拡張プログラムを保持し、その外部記憶装置の挿抜を検出して自動的に機能拡張プログラムを起動する技術が掲載されている。特許文献４掲載の技術を用いることにより、従来はＭＦＰ／ＬＰ等の機器では使用不可能であった外部接続機器が使用可能になる場合がある。例えば、従来は、デジタルカメラをＭＦＰ／ＬＰ等の機器に接続しても、何ら使用することができなかった。しかしながら、特許文献４掲載の技術をＭＦＰ／ＬＰ等の機器に適用することにより、機能拡張プログラムとして非特許文献３に掲載されている「ＰｉｃｔＢｒｉｄｇｅ」に関するプログラムをＭＦＰ／ＬＰ等の機器に追加することができる。これにより、デジタルカメラからのダイレクト印刷が可能になるという場合がある。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記した特許文献４記載の技術を適用することで拡張プログラム（拡張ソフトウエア）の追加が可能となった組込み機器に関して更に検討すると、汎用インタフェースに接続された外部接続デバイスの使用可否を判断することができない場合があるという問題がある。
【００１２】
ＰＣ等においては、システムプログラム（システムソフトウエア）の変更／追加が可能であり、ＨＤＤ等の記録媒体上のシステムファイル（例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）においては、「レジストリ」と総称されるファイル群）を書き換えること等により、外部接続デバイスの使用可否情報を保持することが可能である。しかしながら、システムプログラムの書換え／追加が困難な組込み機器では、ＰＣのように外部接続デバイスの使用可否情報を保持することができない。また、拡張プログラムの有無はシステムプログラムが起動されるまで知ることができない。例えば、前述のようにして「ＰｉｃｔＢｒｉｄｇｅ」プログラムを一度追加したとしても、その「ＰｉｃｔＢｒｉｄｇｅ」プログラムが保持されている外部記憶装置がその後取り除かれた場合には、組込み機器は、再度デジタルカメラを使用不可と判断する必要がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、システムプログラムの書換え／追加が困難であっても、外部接続デバイスの使用可否の判定を動的に行うことが可能な情報処理装置、プログラム制御方法、プログラム制御プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明にかかる情報処理装置は、外部記録媒体と接続され得る外部記録媒体接続手段と、複数の種類の外部機器と所定のインタフェースで接続され得る外部機器接続手段と、前記外部記録媒体接続手段に接続された外部記録媒体に記録されているプログラムを起動するプログラム起動手段と、前記外部機器接続手段への外部機器の接続を検出する外部機器接続検出手段と、前記外部機器接続検出手段が前記外部機器接続手段への外部機器の接続を検出した場合に、前記外部機器接続手段に接続された外部機器に関する第１の情報を取得する第１の情報取得手段と、前記プログラムの実行によって利用可能となる外部機器に関する第２の情報を取得する第２の情報取得手段と、前記第１の情報と前記第２の情報とを比較することにより、前記外部機器接続手段に接続された外部機器の利用の可否を判定する判定手段と、前記判定手段が前記外部機器接続手段に接続された外部機器の利用が可能であると判定した場合に、前記外部機器接続手段に接続された外部機器を制御する制御手段と、前記判定手段が前記外部機器接続手段に接続された外部機器の利用が不可能であると判定した場合に、前記外部機器が利用不可能であることをユーザに通知する通知手段と、を備えたことを特徴とする。
【００１５】
また、本発明にかかるプログラム制御方法は、外部記録媒体接続手段に接続された外部記録媒体に記録されているプログラムを起動するプログラム起動ステップと、複数の種類の外部機器と所定のインタフェースで接続され得る外部機器接続手段への外部機器の接続を検出する外部機器接続検出ステップと、前記外部機器接続検出ステップによって前記外部機器接続手段への外部機器の接続が検出された場合に、前記外部機器接続手段に接続された外部機器に関する第１の情報を取得する第１の情報取得ステップと、前記プログラムの実行によって利用可能となる外部機器に関する第２の情報を取得する第２の情報取得ステップと、前記第１の情報と前記第２の情報とを比較することにより、前記外部機器接続手段に接続された外部機器の利用の可否を判定する判定ステップと、前記判定ステップによって前記外部機器接続手段に接続された外部機器の利用が可能であると判定された場合に、前記外部機器接続手段に接続された外部機器を制御する制御ステップと、前記判定ステップによって前記外部機器接続手段に接続された外部機器の利用が不可能であると判定された場合に、前記外部機器が利用不可能であることをユーザに通知する通知ステップと、を有することを特徴とする。
【００１６】
また、本発明にかかるプログラム制御プログラムは、請求項３乃至６のいずれか一つに記載されたプログラム制御方法をコンピュータに実行させることを特徴とする。
【００１７】
また、本発明にかかる記録媒体は、請求項７に記載されたプログラム制御プログラムを格納したコンピュータの読み取り可能な記録媒体であることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、システムプログラムの書換え／追加が困難であっても、外部機器の使用可否の判定を動的に行うことが可能となるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の第１の実施の形態にかかる画像形成装置（ＭＦＰ）の構成を示すブロック図である。
【図２】図２は、図１のＲＯＭ２４内に記憶されるプログラムのモジュール構成例を示す図である。
【図３】図３は、図１のカードスロット２７に挿入されるカード３１内に記憶されている拡張プログラムのモジュール構成例を示す図である。
【図４−１】図４−１は、図１のＵＳＢポート２６に接続され得るＵＳＢデバイスの例を示す図である。
【図４−２】図４−２は、図１のＵＳＢポート２６に接続され得るＵＳＢデバイスの例を示す図である。
【図４−３】図４−３は、図１のＵＳＢポート２６に接続され得るＵＳＢデバイスの例を示す図である。
【図５】図５は、本発明の第１の実施の形態にかかる画像形成装置におけるプログラムモジュール間の連携関係の概要を示す図である。
【図６】図６は、本発明の第１の実施の形態にかかる画像形成装置の起動時の各プログラムモジュールの処理シーケンスの概要を示す図である。
【図７】図７は、図５のＵＳＢ機器監視部内のテーブルに登録された登録情報の例を示す図である。
【図８】図８は、本発明の第１の実施の形態にかかる画像形成装置におけるプログラムモジュールの処理シーケンスの概要を示す図である。
【図９】図９は、図１のＵＳＢポート２６にＵＳＢデバイスが接続される際のＵＳＢ機器監視部の処理の概要を示す図である。
【図１０】図１０は、本発明の第１の実施の形態にかかる画像形成装置におけるプログラムモジュールの処理シーケンスの概要を示す図である。
【図１１】図１１は、本発明の第１の実施の形態にかかる画像形成装置におけるプログラムモジュールの処理シーケンスの概要を示す図である。
【図１２】図１２は、本発明の第１の実施の形態にかかる画像形成装置におけるプログラムモジュールの処理シーケンスの概要を示す図である。
【図１３】図１３は、図５のＵＳＢ機器監視部内のテーブルに登録された登録情報の例を示す図である。
【図１４】図１４は、本発明の第２の実施の形態にかかる画像形成装置におけるプログラムモジュールの処理シーケンスの概要を示す図である。
【図１５】図１５は、本発明の第３の実施の形態にかかる画像形成装置におけるプログラムモジュール間の連携関係の概要を示す図である。
【図１６】図１６は、本発明の第３の実施の形態にかかる画像形成装置の起動時の各プログラムモジュールの処理シーケンスの概要を示す図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して、この発明にかかる情報処理装置、プログラム制御方法、プログラム制御プログラム及び記録媒体の実施の形態を詳細に説明する。なお、同一の構成要素には同一の符号を付してその説明を省略している。
【００２１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかる画像形成装置（ＭＦＰ）の構成を示すブロック図である。本実施の形態は、本発明にかかる情報処理装置を画像形成装置に適用したものである。
【００２２】
この画像形成装置１は、コントローラ２と、作像エンジン３と、オペレーションパネル４と、を含んでいる。コントローラ２は、複合機全体の制御と描画、通信、オペレーションパネル４からの入力を制御するコントローラである。
【００２３】
作像エンジン３は、プリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、この作像エンジン３には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【００２４】
コントローラ２は、ＣＰＵ２１と、システムメモリ２２と、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）２３と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２４と、ＵＳＢホストコントローラ２５と、ＵＳＢポート２６と、カードスロット２７と、を含んでいる。
【００２５】
ＣＰＵ２１は、複合機の全体制御を行うものであり、ＡＳＩＣ２３を介して他の機器と接続される。
【００２６】
ＡＳＩＣ２３は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、作像エンジン３、オペレーションパネル４、ＣＰＵ２１、システムメモリ２２、ＲＯＭ２４、ＵＳＢホストコントローラ２５およびカードスロット２７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ２３は、システムメモリ２２を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などを行う複数のＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）と、作像エンジン３等との間でＰＣＩバスを介したデータ転送等を行うＰＣＩユニットを含む。このＡＳＩＣ２３には、ＰＣＩバスを介して作像エンジン３、ＲＯＭ２４、ＵＳＢホストコントローラ２５およびカードスロット２７が接続される。オペレーションパネル４はＡＳＩＣ２３に直接接続されている。
【００２７】
システムメモリ２２は、プログラム（ソフトウエア）やデータの展開用メモリ、プリンタの描画用メモリなどとして用いるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。
【００２８】
ＲＯＭ２４は、画像形成装置１のシステムプログラム（ソフトウエア）やデータの格納用メモリとして用いる読み出し専用のメモリである。画像形成装置１の起動時には、ＣＰＵ２１が、ＲＯＭ２４内のプログラムをシステムメモリ２２内にロードし、システムメモリ２２内にロードされたプログラムを実行する。
【００２９】
カードスロット２７には、拡張プログラム（拡張ソフトウエア）が記憶された外部記録媒体（例えば、ＳＤカード（登録商標）等。以下、単に「カード」とも言う。）が挿入される。拡張プログラムが記憶されたカードがカードスロット２７に装着されると、システムプログラムを実行しているＣＰＵ２１は、カード内の拡張プログラムを自動的に実行（起動）する。なお、カード内の拡張プログラムの実行（起動）方法、手順については、本発明の本質ではないので説明を省略する。カード内の拡張プログラムの実行（起動）方法の一例として、例えば、特許文献４に掲載されている技術を利用することができるが、これに限られるものではない。また、カードスロットは例示であり、拡張プログラムを記憶する記録媒体の接続、装着等が可能であれば、これに限られるものではない。
【００３０】
オペレーションパネル４は、画像形成装置１とユーザ（使用者）とのインタフェースを行う部分であり、ＬＣＤ（液晶表示装置）とキースイッチを含んで構成され、画像形成装置１の各種状態や操作方法をＬＣＤに表示し、ユーザからのキースイッチ入力を受け付ける。ＵＳＢポート２６に接続される外部接続デバイスが使用不可能な場合には、その旨がオペレーションパネル４によってユーザに通知される。なお、オペレーションパネルは例示であり、ユーザに対する通知が可能であれば、これに限られるものではない。
【００３１】
ＵＳＢポート（レセプタクル）２６には、ＵＳＢ仕様で規定されているコネクタ（プラグ）を有する様々な種類のＵＳＢデバイスが接続される。ＵＳＢホストコントローラ２５は、ＵＳＢポート２６に接続されるＵＳＢデバイスとの間で、ＵＳＢ仕様で規定されているデータ転送を行うためのホストコントローラであり、一般的に知られているＥＨＣＩ（Ｅｎｈａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ）の仕様を満たすハードウェアである。
【００３２】
図２は、ＲＯＭ２４内に記憶され、ＣＰＵ２１によって実行されるプログラム（ソフトウエア）のモジュール構成例を示す図である。図２に示すように、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）内に、ＵＳＢホストコントローラドライバ、ＵＳＢホストドライバ、オペレーションパネルドライバ等が含まれている。ＣＰＵ２１は、これらのドライバプログラムを実行することにより、ＵＳＢホストコントローラ２５、オペレーションパネル４等のハードウェアの制御を行うことができる。
【００３３】
ＳＣＳ、ＮＣＳ、ＯＣＳ、ＭＣＳ、ＦＣＳは、サービスコントロールモジュールであり、システムやネットワーク等のサービス制御をそれぞれ行うためのプログラムである。また、プリンタアプリケーションプログラム、スキャナアプリケーションプログラム、コピーアプリケーションプログラム、ファックスアプリケーションプログラムは、画像形成装置１における各機能（コピー等）をそれぞれ実現するためのアプリケーションプログラムモジュールである。これらのプログラムモジュールは、ＲＯＭ２４（図１参照）内に記憶されている。
【００３４】
図３は、カードスロット２７に挿入されるカード内に記憶されている拡張プログラムのモジュール構成の例を示す図である。図３に示すように、このカード３１内には、デジタルカメラ印刷アプリケーションプログラムが記憶されている。このデジタルカメラ印刷アプリケーションプログラムは、画像形成装置１のＵＳＢポート２６にデジタルカメラが接続されている場合に、当該デジタルカメラ内に記憶されている画像を画像形成装置１に印刷させるためのアプリケーションプログラムである。カード３１がカードスロット２７に挿入されると、システムプログラムを実行しているＣＰＵ２１により、デジタルカメラ印刷アプリケーションプログラムが自動的に実行（起動）される。このデジタルカメラ印刷アプリケーションプログラムは、図２に示すプログラムモジュール構成におけるアプリケーションプログラムモジュール（コピーアプリケーションプログラム、プリンタアプリケーションプログラム等）と同列のプログラムモジュールである。
【００３５】
図４−１〜図４−３は、ＵＳＢポート２６に接続され得るＵＳＢデバイスの例を示す図である。ＵＳＢデバイスとして様々な種類のデバイスが存在しており、ＵＳＢデバイスの例として、図４−１はデジタルカメラ４１を、図４−２はＵＳＢメモリ４２を、図４−３はＵＳＢキーボード４３を、それぞれ示している。全てのＵＳＢデバイスは、ＵＳＢ仕様で定義されているディスクリプタ情報を記憶（保持）している。ディスクリプタ情報には、デバイスの製造メーカの識別子である「ベンダＩＤ（ｉｄＶｅｎｄｏｒ）」、製品の識別子である「プロダクトＩＤ（ｉｄＰｒｏｄｕｃｔ）」というデータや、デバイスの種別（機能）を表す「Ｃｌａｓｓ」、「ＳｕｂＣｌａｓｓ」、「Ｐｒｏｔｏｃｏｌ」というデータが含まれている。ＵＳＢデバイスに記憶（保持）されるディスクリプタ情報は、当該ＵＳＢデバイス固有の条件（具備している機能等）により決定される。「Ｃｌａｓｓ」、「ＳｕｂＣｌａｓｓ」、「Ｐｒｏｔｏｃｏｌ」は、ＵＳＢ仕様で定義されている標準デバイス・ディスクリプタの「ｂＤｅｖｉｃｅＣｌａｓｓ」、「ｂＤｅｖｉｃｅＳｕｂＣｌａｓｓ」、「ｂＤｅｖｉｃｅＰｒｏｔｏｃｏｌ」、あるいはＵＳＢ仕様で定義されている標準インタフェース・ディスクリプタの「ｂＩｎｔｅｒｆａｃｅＣｌａｓｓ」、「ｂＩｎｔｅｒｆａｃｅＳｕｂＣｌａｓｓ」、「ｂＩｎｔｅｒｆａｃｅＰｒｏｔｏｃｏｌ」によって決まる。また、ＵＳＢホストがＵＳＢデバイスからディスクリプタ情報を取得する手順は、ＵＳＢ仕様において規定されている。
【００３６】
図５は、本実施の形態におけるプログラムモジュール間の連携関係の概要を示す図である。ＵＳＢ機器監視部は、画像形成装置１のＵＳＢポート２６へのＵＳＢデバイスの挿抜を監視しているモジュールであり、図２に示すＮＣＳの一部として含まれる形で実装される。
【００３７】
オペレーションパネル制御部は、オペレーションパネルドライバを介して、オペレーションパネル４に表示するメッセージ内容やオペレーションパネル４からの入力の意味解釈を行うモジュールであり、図２に示すＯＣＳの一部として含まれる形で実装される。
【００３８】
拡張プログラム（拡張ソフトウエア）起動部は、カード３１に記憶されている拡張プログラム（本実施の形態においては、デジタルカメラ印刷アプリケーションプログラム）を起動するモジュールであり、図２に示すＳＣＳの一部として含まれる形で実装される。
【００３９】
スキャナアプリケーションプログラムは、ＵＳＢメモリに対する処理を行うプログラムモジュールであり、デジタルカメラ印刷アプリケーションプログラムは、デジタルカメラに対する処理を行うプログラムモジュールである。
【００４０】
図６は、画像形成装置１の起動時の各プログラムモジュールの処理シーケンスの概要を示す図である。システムプログラムに含まれる各モジュール（ドライバ群、オペレーションパネル制御部、ＵＳＢ機器監視部、拡張プログラム起動部、スキャナアプリケーションプログラム等）は、システムプログラムの立ち上がり時（起動時）においてＣＰＵ２１により実行（起動）される。
【００４１】
拡張プログラム起動部は、カード３１内に記憶されているデジタルカメラ印刷アプリケーションプログラムの存在を検出し、デジタルカメラ印刷アプリケーションプログラムを起動する（ステップＳ１１）。ＵＳＢホストコントローラドライバは、ハードウェア（ＵＳＢホストコントローラ２５）に必要な初期化処理を実施する（ステップＳ１２）。
【００４２】
スキャナアプリケーションプログラムは、制御可能なＵＳＢデバイスの条件をＵＳＢ機器監視部に対して登録する（ステップＳ１３）。本実施の形態においては、スキャナアプリケーションプログラムは、ＵＳＢメモリを制御することができるものとし、ＵＳＢメモリに合致する条件（ここでは、Ｃｌａｓｓ＝０ｘ０８、ＳｕｂＣｌａｓｓ＝０ｘ０６、およびＰｒｏｔｏｃｏｌ＝０ｘ８０とする。）をＵＳＢ機器監視部に対して通知（登録）する。
【００４３】
同様に、デジタルカメラ印刷アプリケーションプログラムは、制御可能なＵＳＢデバイスの条件をＵＳＢ機器監視部に対して登録する（ステップＳ１４）。本実施の形態においては、デジタルカメラ印刷アプリケーションプログラムは、イメージデバイスとして規定されるデジタルカメラを制御することができるものとし、イメージデバイスに合致する条件（ここでは、Ｃｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１とする。）をＵＳＢ機器監視部に対して通知する。
【００４４】
図７は、ステップＳ１３、Ｓ１４においてＵＳＢ機器監視部内のテーブルに登録された登録情報の例を示す図である。図７に示すテーブルの第１のエントリは、ステップＳ１３においてスキャナアプリケーションプログラムにより登録されたＵＳＢデバイス（ＵＳＢメモリ）に関する情報を含むエントリであり、第２のエントリは、ステップＳ１４においてデジタルカメラ印刷アプリケーションプログラムにより登録されたＵＳＢデバイス（デジタルカメラ）に関する情報を含むエントリである。
【００４５】
再び図６を参照すると、ＵＳＢ機器監視部は、ＵＳＢホストドライバ（及びＵＳＢホストコントローラドライバ）を介して、ＵＳＢポート２６へのＵＳＢデバイスの接続の監視を開始する（ステップＳ１５）。
【００４６】
以上が、画像形成装置１の起動時の各プログラムモジュールの処理シーケンスの概要である。次に、ＵＳＢポート２６へＵＳＢデバイスが接続された場合の各プログラムモジュールの処理について、ＵＳＢポート２６へデジタルカメラ４１（本実施の形態において使用可能なＵＳＢデバイスの例）が接続された場合と、ＵＳＢポート２６へＵＳＢキーボード４３（本実施の形態において使用不可能なＵＳＢデバイスの例）が接続された場合と、を例に挙げて説明する。
【００４７】
まず、ＵＳＢポート２６へデジタルカメラ４１が接続された場合の各プログラムモジュールの処理について説明する。図８は、ＵＳＢポート２６へデジタルカメラ４１が接続された場合の各プログラムモジュールの処理シーケンスの概要を示す図である。
【００４８】
ＵＳＢポート２６へのＵＳＢデバイス（本例では、デジタルカメラ４１）の接続は、ＵＳＢホストコントローラ２５により検出されてＵＳＢホストコントローラドライバに通知され（ステップＳ２１）、更に、ＵＳＢホストドライバを介してＵＳＢ機器監視部に通知される。ＵＳＢホストコントローラ２５は、ＵＳＢデバイスが記憶しているディスクリプタ情報を取得するため、ＳＥＴ＿ＡＤＤＲＥＳＳ、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲというデバイス・リクエストをＵＳＢデバイスに送信する（ステップＳ２２、Ｓ２３）。これらのデバイス・リクエストは、ＵＳＢ仕様において規定されている一般的な標準デバイス・リクエストである。
【００４９】
ＵＳＢデバイスは、これらのデバイス・リクエストへの応答として、ディスクリプタ情報（本例では、Ｃｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む。）をＵＳＢホストコントローラ２５に送信し、ＵＳＢホストコントローラ２５は、ディスクリプタ情報をＵＳＢホストコントローラドライバに送信する（ステップＳ２４）。ＵＳＢホストコントローラドライバは、ディスクリプタ情報をＵＳＢホストドライバに送信し（ステップＳ２５）、ＵＳＢホストドライバは、ディスクリプタ情報（デバイス固有情報）をＵＳＢ機器監視部に送信する（ステップＳ２６）。
【００５０】
図９は、ＵＳＢポート２６にＵＳＢデバイスが接続される際のＵＳＢ機器監視部におけるステップＳ２７の処理の概要を示す図である。ＵＳＢ機器監視部は、ＵＳＢデバイスの接続が検出された旨が通知されることを待機しており（ステップＳ３１）、ＵＳＢデバイスの接続が検出された旨が通知されなければ（ステップＳ３２：Ｎｏ）、待機を継続する。
【００５１】
ＵＳＢ機器監視部は、ＵＳＢデバイスの接続が検出された旨が通知されると（ステップＳ３２：Ｙｅｓ）、ＵＳＢホストドライバ、ＵＳＢホストコントローラドライバを介して、ＵＳＢデバイスのディスクリプタ情報を受信する（ステップＳ３３）。
【００５２】
そして、ＵＳＢ機器監視部は、受信したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとテーブル（図７参照）内の各エントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとを比較し（ステップＳ３４）、受信したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌがテーブル内のいずれかのエントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌと一致した場合には（ステップＳ３５：Ｙｅｓ）、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用可能であると判定する（ステップＳ３６）。
【００５３】
また、ＵＳＢ機器監視部は、受信したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌがテーブル内のいずれのエントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとも一致しなかった場合には（ステップＳ３５：Ｎｏ）、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能であると判定する（ステップＳ３７）。
【００５４】
本例では、ＵＳＢ機器監視部は、ディスクリプタ情報としてＣｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む情報を受信する。そして、このディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌは、テーブル（図７参照）内の第２のエントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌと一致する。そのため、ＵＳＢ機器監視部は、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、デジタルカメラ４１）はデジタルカメラ印刷アプリケーションプログラムにより使用可能であると判定する。
【００５５】
再び図８を参照すると、ＵＳＢ機器監視部は、ＵＳＢポート２６にデジタルカメラ４１が接続された旨をデジタルカメラ印刷アプリケーションプログラムに通知する（ステップＳ２８）。これにより、以後、デジタルカメラ印刷アプリケーションプログラムは、デジタルカメラ４１の制御を行い（ステップＳ２９）、デジタルカメラ４１に記憶されている画像を画像形成装置１で印刷することができる。
【００５６】
次に、ＵＳＢポート２６へＵＳＢキーボード４３が接続された場合の各プログラムモジュールの処理について説明する。図１０は、ＵＳＢポート２６へＵＳＢキーボード４３が接続された場合の各プログラムモジュールの処理シーケンスの概要を示す図である。
【００５７】
ＵＳＢポート２６へのＵＳＢデバイス（本例では、ＵＳＢキーボード４３）の接続は、ＵＳＢホストコントローラ２５により検出されてＵＳＢホストコントローラドライバに通知され（ステップＳ４１）、更に、ＵＳＢホストドライバを介してＵＳＢ機器監視部に通知される。ＵＳＢホストコントローラ２５は、ＵＳＢデバイスが記憶しているディスクリプタ情報を取得するため、ＳＥＴ＿ＡＤＤＲＥＳＳ、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲというデバイス・リクエストをＵＳＢデバイスに送信する（ステップＳ４２、Ｓ４３）。
【００５８】
ＵＳＢデバイスは、これらのデバイス・リクエストへの応答として、ディスクリプタ情報（本例では、Ｃｌａｓｓ＝０ｘ０３、ＳｕｂＣｌａｓｓ＝０ｘ００、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む。）をＵＳＢホストコントローラ２５に送信し、ＵＳＢホストコントローラ２５は、ディスクリプタ情報をＵＳＢホストコントローラドライバに送信する（ステップＳ４４）。ＵＳＢホストコントローラドライバは、ディスクリプタ情報をＵＳＢホストドライバに送信し（ステップＳ４５）、ＵＳＢホストドライバは、ディスクリプタ情報（デバイス固有情報）をＵＳＢ機器監視部に送信する（ステップＳ４６）。
【００５９】
再び図９を参照すると、ＵＳＢ機器監視部は、ＵＳＢデバイスの接続が検出された旨が通知されることを待機しており（ステップＳ３１）、ＵＳＢデバイスの接続が検出された旨が通知されなければ（ステップＳ３２：Ｎｏ）、待機を継続する。
【００６０】
ＵＳＢ機器監視部は、ＵＳＢデバイスの接続が検出された旨が通知されると（ステップＳ３２：Ｙｅｓ）、ＵＳＢホストドライバ、ＵＳＢホストコントローラドライバを介して、ＵＳＢデバイスのディスクリプタ情報を受信する（ステップＳ３３）。
【００６１】
そして、ＵＳＢ機器監視部は、受信したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとテーブル（図７参照）内の各エントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとを比較し（ステップＳ３４）、受信したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌがテーブル内のいずれかのエントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌと一致した場合には（ステップＳ３５：Ｙｅｓ）、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用可能であると判定する（ステップＳ３６）。
【００６２】
また、ＵＳＢ機器監視部は、受信したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌがテーブル内のいずれのエントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとも一致しなかった場合には（ステップＳ３５：Ｎｏ）、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能であると判定する（ステップＳ３７）。
【００６３】
本例では、ＵＳＢ機器監視部は、ディスクリプタ情報としてＣｌａｓｓ＝０ｘ０３、ＳｕｂＣｌａｓｓ＝０ｘ００、Ｐｒｏｔｏｃｏｌ＝０ｘ０１を含む情報を受信する。そして、このディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌは、テーブル（図７参照）内のいずれのエントリのＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌとも一致しない。そのため、ＵＳＢ機器監視部は、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、ＵＳＢキーボード４３）を使用するアプリケーションプログラムが存在せず、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能であると判定する。
【００６４】
再び図１０を参照すると、ＵＳＢ機器監視部は、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、ＵＳＢキーボード４３）は使用不可能である旨のメッセージを表示することをオペレーションパネル制御部に要求する（ステップＳ４７）。オペレーションパネル制御部は、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能である旨のメッセージを表示するようにオペレーションパネルドライバを制御する（ステップＳ４８）。これにより、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能である旨のメッセージがオペレーションパネル４に表示され、ユーザは、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能であることを知ることができる。
【００６５】
次に、カード３１がカードスロット２７に挿入されており且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理と、カード３１がカードスロット２７に挿入されておらず且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理について説明する。
【００６６】
まず、カード３１がカードスロット２７に挿入されており且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理について説明する。
【００６７】
図１１は、カード３１がカードスロット２７に挿入されており且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理シーケンスの概要を示す図である。図１１は、先に説明した図６と図８を結合したものとなっており、その内容は、図６及び図８に関して説明した通りである。
【００６８】
次に、カード３１がカードスロット２７に挿入されておらず且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理について説明する。
【００６９】
図１２は、カード３１がカードスロット２７に挿入されておらず且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理シーケンスの概要を示す図である。カード３１がカードスロット２７に挿入されていない場合には、デジタルカメラ印刷アプリケーションプログラムは実行（起動）されないことになる。
【００７０】
図１２を参照すると、ＵＳＢホストコントローラドライバは、ハードウェア（ＵＳＢホストコントローラ２５）に必要な初期化処理を実施する（ステップＳ１２）。スキャナアプリケーションプログラムは、制御可能なＵＳＢデバイスの条件をＵＳＢ機器監視部に対して登録する（ステップＳ１３）。本実施の形態においては、スキャナアプリケーションプログラムは、ＵＳＢメモリに合致する条件（Ｃｌａｓｓ＝０ｘ０８、ＳｕｂＣｌａｓｓ＝０ｘ０６、およびＰｒｏｔｏｃｏｌ＝０ｘ８０とする。）をＵＳＢ機器監視部に対して通知（登録）する。
【００７１】
ＵＳＢ機器監視部は、ＵＳＢホストドライバ（及びＵＳＢホストコントローラドライバ）を介して、ＵＳＢポート２６へのＵＳＢデバイスの接続の監視を開始する（ステップＳ１５）。
【００７２】
ＵＳＢポート２６へのＵＳＢデバイス（本例では、デジタルカメラ４１）の接続は、ＵＳＢホストコントローラ２５により検出されてＵＳＢホストコントローラドライバに通知され（ステップＳ２１）、更に、ＵＳＢホストドライバを介してＵＳＢ機器監視部に通知される。ＵＳＢホストコントローラ２５は、ＵＳＢデバイスが記憶しているディスクリプタ情報を取得するため、ＳＥＴ＿ＡＤＤＲＥＳＳ、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲというデバイス・リクエストをＵＳＢデバイスに送信する（ステップＳ２２、Ｓ２３）。
【００７３】
ＵＳＢデバイスは、これらのデバイス・リクエストへの応答として、ディスクリプタ情報（本例では、Ｃｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む。）をＵＳＢホストコントローラ２５に送信し、ＵＳＢホストコントローラ２５は、ディスクリプタ情報をＵＳＢホストコントローラドライバに送信する（ステップＳ２４）。ＵＳＢホストコントローラドライバは、ディスクリプタ情報をＵＳＢホストドライバに送信し（ステップＳ２５）、ＵＳＢホストドライバは、ディスクリプタ情報（デバイス固有情報）をＵＳＢ機器監視部に送信する（ステップＳ２６）。
【００７４】
ＵＳＢ機器監視部は、先に説明した図９に示す処理を実行し（ステップＳ２７）、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、デジタルカメラ４１）は使用不可能であると判定する。
【００７５】
そして、ＵＳＢ機器監視部は、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、デジタルカメラ４１）は使用不可能である旨のメッセージを表示することをオペレーションパネル制御部に要求する（ステップＳ４７）。オペレーションパネル制御部は、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能である旨のメッセージを表示するようにオペレーションパネルドライバを制御する（ステップＳ４８）。これにより、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能である旨のメッセージがオペレーションパネル４に表示され、ユーザは、ＵＳＢポート２６に接続されたＵＳＢデバイスは使用不可能であることを知ることができる。
【００７６】
以上説明したように、本実施の形態によれば、拡張プログラム（本実施の形態においては、デジタルカメラ印刷アプリケーションプログラム）が記録されたカード３１が容易に挿抜可能であっても、汎用インタフェース（本実施の形態においては、ＵＳＢ）で接続された外部拡張機器（本実施の形態においては、ＵＳＢデバイス）の使用の可否の判定を容易に実施することができ、機器の拡張性および使用性を両立した画像形成装置を実現することが可能になる。
【００７７】
また、本実施の形態によれば、システムプログラム（システムソフトウエア）の書換え／追加を行うことなく、カード３１の有無に応じて、ＵＳＢデバイスの使用可否の判定を動的に行うことが可能である。
【００７８】
なお、本実施の形態においては、スキャナアプリケーションプログラムおよびデジタルカメラ印刷アプリケーションプログラムが、Ｃｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌをＵＳＢ機器監視部のテーブル（図７参照）に登録し、ＵＳＢ機器監視部が、ＵＳＢデバイスから取得したディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌをテーブルに登録されているＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌと比較するようにしているが、Ｃｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌに代えて、他の情報を利用するようにしても良い。先に説明したように、ＵＳＢの標準デバイス・ディスクリプタには、ＵＳＢデバイスの製造メーカの識別子であるベンダＩＤ（ｉｄＶｅｎｄｏｒ）、およびＵＳＢデバイスの製品の識別子であるプロダクトＩＤ（ｉｄＰｒｏｄｕｃｔ）が含まれている。そこで、スキャナアプリケーションプログラムおよびデジタルカメラ印刷アプリケーションプログラムが、ベンダＩＤ（ｉｄＶｅｎｄｏｒ）、およびプロダクトＩＤ（ｉｄＰｒｏｄｕｃｔ）をＵＳＢ機器監視部のテーブルに登録するようにしても良い。図１３は、Ｃｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌに代えて、ベンダＩＤ（ｉｄＶｅｎｄｏｒ）、およびプロダクトＩＤ（ｉｄＰｒｏｄｕｃｔ）を登録したテーブルの一例を示す図である。この場合、ＵＳＢ機器監視部は、ＵＳＢデバイスから取得したディスクリプタ情報のベンダＩＤ（ｉｄＶｅｎｄｏｒ）、およびプロダクトＩＤ（ｉｄＰｒｏｄｕｃｔ）をテーブルに登録されているベンダＩＤ（ｉｄＶｅｎｄｏｒ）、およびプロダクトＩＤ（ｉｄＰｒｏｄｕｃｔ）と比較する。
【００７９】
これにより、拡張プログラムが記録されたカード３１が容易に挿抜可能であっても、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）で接続された外部拡張機器（ＵＳＢデバイス）の使用の可否の判定を容易に実施することができ、機器の拡張性および使用性を両立した画像形成装置を実現することが可能になる。
【００８０】
また、本実施の形態においては、外部機器を接続する汎用インタフェースとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）を利用している。しかしながら、本発明において、外部機器を接続するインタフェースはＵＳＢに限られない。ＵＳＢデバイスは、ＵＳＢ仕様で定められたディスクリプタ情報を保持しており、本実施の形態においては、そのディスクリプタ情報の一部（または全部でも良い。）を外部機器の固有の機能情報として利用している。これと同様のインタフェースの一例として、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）が挙げられる。ＰＣＩデバイスは、ＰＣＩ仕様で定められたレジスタ空間上にデバイス種別に関する情報を保持している。このレジスタ情報を外部機器（ＰＣＩデバイス）の固有の機能情報として利用することにより、ＰＣＩバスを介して接続されたＰＣＩデバイスに対しても、上述したＵＳＢデバイスと同様に制御することが可能となる。
【００８１】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。本実施の形態にかかる画像形成装置のブロック構成、プログラムモジュール構成は、先に説明した第１の実施の形態にかかる画像形成装置１のブロック構成（図１参照）、プログラムモジュール構成（図２、図３、図５参照）と同様であるので、説明を省略する。
【００８２】
図１４は、カード３１がカードスロット２７に挿入されており且つデジタルカメラ４１がＵＳＢポート２６に接続される場合の各プログラムモジュールの処理シーケンスの概要を示す図である。
【００８３】
図１４を参照すると、システムプログラムに含まれる各モジュール（ドライバ、ＵＳＢ機器監視部、拡張プログラム起動部、スキャナアプリケーションプログラム等）は、システムプログラムの立ち上がり時（起動時）においてＣＰＵ２１により実行（起動）される。
【００８４】
ＵＳＢホストコントローラドライバは、ハードウェア（ＵＳＢホストコントローラ２５）に必要な初期化処理を実施する（ステップＳ１２）。
【００８５】
スキャナアプリケーションプログラムは、制御可能なＵＳＢデバイスの条件をＵＳＢ機器監視部に対して登録する（ステップＳ１３）。本実施の形態においては、スキャナアプリケーションプログラムは、ＵＳＢメモリを制御することができるものとし、ＵＳＢメモリに合致する条件（ここでは、Ｃｌａｓｓ＝０ｘ０８、ＳｕｂＣｌａｓｓ＝０ｘ０６、およびＰｒｏｔｏｃｏｌ＝０ｘ８０とする。）をＵＳＢ機器監視部に対して通知（登録）する。
【００８６】
ＵＳＢ機器監視部は、ＵＳＢホストドライバ（及びＵＳＢホストコントローラドライバ）を介して、ＵＳＢポート２６へのＵＳＢデバイスの接続の監視を開始する（ステップＳ１５）。
【００８７】
ＵＳＢポート２６へのＵＳＢデバイス（本例では、デジタルカメラ４１）の接続は、ＵＳＢホストコントローラ２５により検出されてＵＳＢホストコントローラドライバに通知され（ステップＳ２１）、更に、ＵＳＢホストドライバを介してＵＳＢ機器監視部に通知される。ＵＳＢホストコントローラ２５は、ＵＳＢデバイスが記憶しているディスクリプタ情報を取得するため、ＳＥＴ＿ＡＤＤＲＥＳＳ、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲというデバイス・リクエストをＵＳＢデバイスに送信する（ステップＳ２２、Ｓ２３）。
【００８８】
ＵＳＢデバイスは、これらのデバイス・リクエストへの応答として、ディスクリプタ情報（本例では、Ｃｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む。）をＵＳＢホストコントローラ２５に送信し、ＵＳＢホストコントローラ２５は、ディスクリプタ情報をＵＳＢホストコントローラドライバに送信する（ステップＳ２４）。ＵＳＢホストコントローラドライバは、ディスクリプタ情報をＵＳＢホストドライバに送信し（ステップＳ２５）、ＵＳＢホストドライバは、ディスクリプタ情報（デバイス固有情報）をＵＳＢ機器監視部に送信する（ステップＳ２６）。
【００８９】
ＵＳＢ機器監視部は、ディスクリプタ情報としてＣｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む情報を受信する（ステップＳ２７）。但し、この時点においては、デジタルカメラ印刷アプリケーションプログラムが制御可能なＵＳＢデバイス（デジタルカメラ４１）の条件がＵＳＢ機器監視部に登録されていない。そこで、ＵＳＢ機器監視部は、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、デジタルカメラ４１）は使用不可能であると直ちに判定せずに、所定の時間（例えば、１分間等）待機する。
【００９０】
その後、カード３１内に記憶されているデジタルカメラ印刷アプリケーションプログラムが拡張プログラム起動部によって起動されると（ステップＳ１１）、デジタルカメラ印刷アプリケーションプログラムは、制御可能なＵＳＢデバイスの条件をＵＳＢ機器監視部に対して登録する（ステップＳ１４）。本実施の形態においては、デジタルカメラ印刷アプリケーションプログラムは、イメージデバイスとして規定されるデジタルカメラを制御することができるものとし、イメージデバイスに合致する条件（ここでは、Ｃｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１とする。）をＵＳＢ機器監視部に対して通知（登録）する。
【００９１】
ＵＳＢ機器監視部は、ＵＳＢホストドライバからディスクリプタ情報としてＣｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、およびＰｒｏｔｏｃｏｌ＝０ｘ０１を含む情報を受信している（ステップＳ２６）。そして、このディスクリプタ情報のＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌは、デジタルカメラ印刷アプリケーションプログラムによって登録されたＣｌａｓｓ、ＳｕｂＣｌａｓｓ、およびＰｒｏｔｏｃｏｌと一致する。そこで、ＵＳＢ機器監視部は、ＵＳＢポート２６に接続されたＵＳＢデバイス（本例では、デジタルカメラ４１）はデジタルカメラ印刷アプリケーションプログラムにより使用可能であると判定し、ＵＳＢポート２６にデジタルカメラ４１が接続された旨をデジタルカメラ印刷アプリケーションプログラムに通知する（ステップＳ２８）。
【００９２】
以上説明したように、本実施の形態によれば、デジタルカメラ印刷アプリケーションプログラムによって制御可能なデジタルカメラ４１の条件が登録される前にデジタルカメラ４１が接続された旨の通知およびデジタルカメラ４１のディスクリプタ情報を受信しても、デジタルカメラ４１が使用不可能である旨のユーザへの通知を直ちに行うことなく、所定の時間待機し、その後、デジタルカメラ印刷アプリケーションプログラムによって制御可能なデジタルカメラ４１の条件が登録されると、デジタルカメラ４１が接続された旨をデジタルカメラ印刷アプリケーションプログラムに通知する。これにより、機器立ち上がり時（初期化処理時）において誤った通知（デジタルカメラ４１が使用不可能である旨の通知）が行なわれることを防止することができ、ユーザに誤解を与えることをなくすことができる。
【００９３】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明する。本実施の形態にかかる画像形成装置のブロック構成は、先に説明した第１の実施の形態にかかる画像形成装置１のブロック構成（図１参照）と同様であるので、説明を省略する。
【００９４】
図１５は、本実施の形態におけるプログラムモジュール間の連携関係の概要を示す図である。本実施の形態においては、先に説明した第１の実施の形態（図５参照）と比較して、拡張プログラム（拡張ソフトウエア）初期化チェック部が追加されている。拡張プログラム（拡張ソフトウエア）初期化チェック部は、図２に示すＳＣＳの一部として含まれる形で実装される。
【００９５】
拡張プログラム初期化チェック部は、カードスロット２７（図１参照）等の外部記録媒体接続スロットの全てをチェックし、全ての拡張プログラムの初期化処理が完了した場合に、ＵＳＢ機器監視部に対して全ての拡張プログラムの初期化処理が完了したことを通知する。
【００９６】
図１６は、本実施の形態の起動時の各プログラムモジュールの処理シーケンスの概要を示す図である。ここでは、ＵＳＢデバイスとしてＵＳＢキーボード４３がＵＳＢポート２６（図１参照）に接続される。
【００９７】
図１６に示すように、拡張プログラム（ここでは、デジタルカメラ印刷アプリケーションプログラム）は、拡張プログラム起動部によって起動されると（ステップＳ１１）、起動時の初期化処理の一環として、使用可能なＵＳＢデバイスの条件（本例では、Ｃｌａｓｓ＝０ｘ０６、ＳｕｂＣｌａｓｓ＝０ｘ０１、Ｐｒｏｔｏｃｏｌ＝０ｘ０１）をＵＳＢ機器監視部に対して登録し（ステップＳ１４）、さらに初期化処理が完了すると、初期化処理が完了した旨を拡張プログラム初期化チェック部に対して通知する（ステップＳ５１）。拡張プログラム初期化チェック部は、全ての外部スロットの全ての拡張プログラムの初期化処理が完了したことを確認すると、全ての拡張プログラムの初期化処理が完了した旨をＵＳＢ機器監視部に通知する（ステップＳ５２）。
【００９８】
ＵＳＢ機器監視部は、全ての拡張プログラムの初期化処理が完了した旨の通知を拡張プログラム初期化チェック部から受け取ったときに、ＵＳＢデバイス（本例では、ＵＳＢキーボード４３）が使用不可能であると判定した場合には、その旨を通知するメッセージの表示要求をオペレーションパネル制御部に対して行う（図１５参照）。これにより、ＵＳＢキーボード４３が使用不可能である旨がオペレーションパネル４によってユーザに通知される。
【００９９】
一方、ＵＳＢ機器監視部は、全ての拡張プログラムの初期化処理が完了した旨の通知を拡張プログラム初期化チェック部から受け取ったときに、ＵＳＢデバイスが使用可能であると判定した場合には、当該ＵＳＢデバイスが接続されている旨を当該ＵＳＢデバイスを使用可能なアプリケーションプログラムに対して通知する。これにより、当該アプリケーションプログラムは、当該ＵＳＢデバイスを使用することができるようになる。
【０１００】
先に説明した第２の実施の形態においては、ＵＳＢ機器監視部が、所定の時間（例えば、１分間等）待機することとしている。そのため、第２の実施の形態においては、ＵＳＢ機器監視部は、全ての拡張プログラムの初期化処理が所定の時間内に完了した場合であっても、所定の時間待機することになる。
【０１０１】
一方、本実施の形態においては、ＵＳＢ機器監視部が、全ての拡張プログラムの初期化処理が完了した旨の通知を受け取ったときに、ＵＳＢデバイスが使用不可能であると判定した場合には、その旨をユーザに通知するメッセージの表示要求を行い、ＵＳＢデバイスが使用可能であると判定した場合には、当該ＵＳＢデバイスが接続されている旨を当該ＵＳＢデバイスを使用可能なアプリケーションプログラムに対して通知する。従って、不要な待ち時間を省くことができ、必要最低限の期間が終わると（全ての拡張プログラムの初期化処理が完了すると）、ＵＳＢデバイスが使用不可能である旨のユーザに対する通知を行い又はＵＳＢデバイスの接続をアプリケーションプログラムに通知することができる。これにより、システムの応答性を高めることが可能となる。
【０１０２】
なお、本発明の実施の形態の画像形成装置で実行されるプログラム制御プログラムは、ＲＯＭ２４等に予め組み込まれて提供される。
【０１０３】
本発明の実施の形態の画像形成装置で実行されるプログラム制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１０４】
さらに、本発明の実施の形態の画像形成装置で実行されるプログラム制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本発明の実施の形態の画像形成装置で実行されるプログラム制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１０５】
本発明の実施の形態の画像形成装置で実行されるプログラム制御プログラムは、上述した各部（ＯＳ（ドライバ群を含む）、サービス群（ＵＳＢ機器監視部、オペレーションパネル制御部、拡張プログラム起動部、拡張プログラム初期化チェック部を含む）、プリンタアプリケーションプログラム、スキャナアプリケーションプログラム、コピーアプリケーションプログラム、ファックスアプリケーションプログラム）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからプログラム制御プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、ＯＳ（ドライバ群を含む）、サービス群（ＵＳＢ機器監視部、オペレーションパネル制御部、拡張プログラム起動部、拡張プログラム初期化チェック部を含む）、プリンタアプリケーションプログラム、スキャナアプリケーションプログラム、コピーアプリケーションプログラム、ファックスアプリケーションプログラムが主記憶装置上に生成されるようになっている。
【０１０６】
なお、本発明の実施の形態では、本発明の画像形成装置を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明したが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【産業上の利用可能性】
【０１０７】
以上のように、本発明にかかる情報処理装置、プログラム制御方法、プログラム制御プログラム及び記録媒体は、外部機器の使用可否の判定を動的に行う技術に有用である。
【符号の説明】
【０１０８】
１  画像形成装置
２  コントローラ
３  作像エンジン
４  オペレーションパネル
２１  ＣＰＵ
２２  システムメモリ
２３  ＡＳＩＣ
２４  ＲＯＭ
２５  ＵＳＢホストコントローラ
２６  ＵＳＢポート
２７  カードスロット
３１  カード
４１  デジタルカメラ
４２  ＵＳＢメモリ
４３  ＵＳＢキーボード
【先行技術文献】
【特許文献】
【０１０９】
【特許文献１】特開２００２−３７３１４４号公報
【特許文献２】特開２００８−１３９９１６号公報
【特許文献３】特開２０００−１９４６４５号公報
【特許文献４】特開２００４−０４６８０４号公報
【非特許文献】
【０１１０】
【非特許文献１】”Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  ２．０”、［ｏｎｌｉｎｅ］、ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ，  Ｉｎｃ．、［平成２１年１月９日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｕｓｂ．ｏｒｇ／ｄｅｖｅｌｏｐｅｒｓ／ｄｏｃｓ／ｕｓｂ＿２０＿１２２２０８．ｚｉｐ〉
【非特許文献２】”ＵＳＢ−ＩＦ  Ｅｍｂｅｄｄｅｄ  Ｈｏｓｔ  Ｃｏｍｐｌｉａｎｃｅ  Ｐｌａｎ，  Ｒｅｖｉｓｉｏｎ  １．０，  Ａｕｇｕｓｔ  ２００６”、［ｏｎｌｉｎｅ］、ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ，  Ｉｎｃ．、［平成２１年１月９日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｕｓｂ．ｏｒｇ／ｄｅｖｅｌｏｐｅｒｓ／ｄｏｃｓ／ＥＨ＿Ｃｏｍｐｌｉａｎｃｅ＿ｖ１＿０．ｐｄｆ〉
【非特許文献３】”ＰｉｃｔＢｒｉｄｇｅ−ＣＩＰＡ”、［ｏｎｌｉｎｅ］、有限責任中間法人  カメラ映像機器工業会、［平成２１年１月９日検索］、インターネット〈ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｃｉｐａ．ｊｐ／ｐｉｃｔｂｒｉｄｇｅ／ｉｎｄｅｘ＿ｊ．ｈｔｍｌ〉
【図１】
2010186239.tif 000003
【図２】
2010186239.tif 000004
【図３】
2010186239.tif 000005
【図４−１】
2010186239.tif 000006
【図４−２】
2010186239.tif 000007
【図４−３】
2010186239.tif 000008
【図５】
2010186239.tif 000009
【図６】
2010186239.tif 000010
【図７】
2010186239.tif 000011
【図８】
2010186239.tif 000012
【図９】
2010186239.tif 000013
【図１０】
2010186239.tif 000014
【図１１】
2010186239.tif 000015
【図１２】
2010186239.tif 000016
【図１３】
2010186239.tif 000017
【図１４】
2010186239.tif 000018
【図１５】
2010186239.tif 000019
【図１６】
2010186239.tif 000020