(57)【特許請求の範囲】
【請求項１】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置であって、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に一定時間が経過したことに応じて前記第１デバイスドライバをロードする制御手段を有することを特徴とする情報処理装置。
【請求項２】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置であって、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードするとともに前記第２デバイスドライバを削除して、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバを動作させる制御手段を有することを特徴とする情報処理装置。
【請求項３】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含み前記ハードウェアデバイスに関するデバイス情報を含まない第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まず前記デバイス情報を含む第２デバイスドライバとを有する情報処理装置であって、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードして、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバ及び前記第２デバイスドライバを動作させる制御手段を有することを特徴とする情報処理装置。
【請求項４】
前記第２デバイスドライバは、該第２デバイスドライバの動作状態を示すドライバ情報を含むことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御手段は、前記第１デバイスドライバ及び前記第２デバイスドライバを揮発性の記憶手段にロードすることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置の制御方法であって、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に一定時間が経過したことに応じて前記第１デバイスドライバをロードする制御工程を有することを特徴とする制御方法。
【請求項７】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置の制御方法であって、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードするとともに前記第２デバイスドライバを削除して、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバを動作させる制御工程を有することを特徴とする制御方法。
【請求項８】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含み前記ハードウェアデバイスに関するデバイス情報を含まない第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まず前記デバイス情報を含む第２デバイスドライバとを有する情報処理装置の制御方法であって、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードして、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバ及び前記第２デバイスドライバを動作させる制御工程を有することを特徴とする制御方法。
【請求項９】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置に、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に一定時間が経過したことに応じて前記第１デバイスドライバをロードする制御工程を実行させるためのプログラム。
【請求項１０】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置に、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードするとともに前記第２デバイスドライバを削除して、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバを動作させる制御工程を実行させるためのプログラム。
【請求項１１】
ハードウェアデバイスを接続し、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含み前記ハードウェアデバイスに関するデバイス情報を含まない第１デバイスドライバと、
前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まず前記デバイス情報を含む第２デバイスドライバとを有する情報処理装置に、
前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードして、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバ及び前記第２デバイスドライバを動作させる制御工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来から、ハードウェアデバイスを有する情報処理装置において、情報処理装置上で動作するオペレーティングシステム（以下、ＯＳ）により、ハードウェアデバイス（以下、デバイス）を制御する技術が知られている。
【０００３】
そして、ＯＳ上で動作するアプリケーションプログラムは、デバイスドライバを介してハードウェアデバイスを制御するのが一般的である。それは、ＯＳ上で動作するアプリケーションプログラムが、ハードウェアデバイスを直接制御することができるようにすると、複数のアプリケーションプログラムから同一のハードウェアデバイスに対して要求があった場合に矛盾が生じないようにするためである。
【０００４】
そして、情報処理装置上で動作するＯＳは、情報処理装置の起動にあたってデバイスドライバを不揮発性記憶手段（ハードディスク等）から揮発性記憶手段（ＤＲＡＭ等）にロードし、ハードウェアデバイスを制御できるようにする（例えば、特許文献１参照。）。
【特許文献１】特開２００１−３４４８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ハードウェアデバイスを有する情報処理装置においては、情報処理装置の起動に要する時間を短縮することが求められている。そして、情報処理装置の起動にあたって、デバイスドライバを、デバイスドライバを動作させるための記憶領域（例えば、ＤＲＡＭ上の記憶領域）にロードする場合、デバイスドライバのロードに時間を有する。特に、複雑な機能を有するハードウェアデバイスに対応するデバイスドライバはデータサイズが大きく、ロードに要する時間が長い。
【０００６】
この問題を解決するために、特許文献１では、情報処理装置上で動作するＯＳがロード可能な複数のデバイスドライバのうち、起動時にロードするデバイスドライバとロードしないデバイスドライバを予め設定しておく。そして、起動時にロードしないデバイスドライバは、そのデバイスドライバに対応するデバイスへのアクセスが発生した際にロードされるようにしておく。これにより、情報処理装置上で動作するＯＳがロード可能な複数のデバイスドライバの全てを情報処理装置の起動時にロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。
【０００７】
しかし、特許文献１の方法では、ＯＳにより管理されるアプリケーションプログラムから、デバイスドライバがロードされていないデバイスへのアクセスが発生した場合、対応するデバイスドライバをロードする。この場合、デバイスドライバのロードが終了するまでは、アプリケーションプログラムは、ＯＳからの応答を待ちつづける状態となり、アプリケーションプログラムの処理が中断してしまう。特に、アプリケーションプログラムが、ハードウェアデバイスの構成を示す構成情報を取得する取得要求をしている場合、ＯＳは構成情報をアプリケーションプログラムに取得させれば良い。しかし、ロードするデバイスドライバには、構成情報以外にも他の情報が含まれており、構成情報をロードした後に他の情報を更にロードした後でないと、アプリケーションプログラムへ構成情報を取得させることができない。
【０００８】
本願発明は、以上の問題点を鑑みてなされたものであり、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理装置は、ハードウェアデバイスを接続し、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置であって、前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に一定時間が経過したことに応じて前記第１デバイスドライバをロードする制御手段を有することを特徴とする。
また、本発明に係る情報処理装置は、ハードウェアデバイスを接続し、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含む第１デバイスドライバと、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まない第２デバイスドライバとを有する情報処理装置であって、前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードするとともに前記第２デバイスドライバを削除して、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバを動作させる制御手段を有することを特徴とする。
また、本発明に係る情報処理装置は、ハードウェアデバイスを接続し、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェアデバイスを制御するためのハードウェア制御情報を含み前記ハードウェアデバイスに関するデバイス情報を含まない第１デバイスドライバと、前記ハードウェアデバイスを管理するためのデバイスドライバであって、前記ハードウェア制御情報を含まず前記デバイス情報を含む第２デバイスドライバとを有する情報処理装置であって、前記情報処理装置が起動する際に前記第２デバイスドライバをロードし、前記情報処理装置が起動した後に所定条件が満たされたことに応じて前記第１デバイスドライバをロードして、前記ハードウェアデバイスを制御するためのデバイスドライバとして前記第１デバイスドライバ及び前記第２デバイスドライバを動作させる制御手段を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることができる。
【発明を実施するための最良の形態】
【００１２】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【００１３】
＜第１実施形態＞
以下、添付図面を参照して本発明の第１実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、ＦＡＸ、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、ＰＣ等を含む一般的な情報処理装置にも適用できる。
【００１４】
図２は、本実施の形態における情報処理装置のハードウェア構成を示すブロック図である。
【００１５】
＜ハードウェア構成＞
ＣＰＵ２０１はメモリコントローラ２０２と接続され、このメモリコントローラ２０２と接続されているＤＲＡＭ２０３に格納されている各種プログラムを実行する。ＤＲＡＭ２０３は、このプログラム以外に、例えば演算データや各種データを格納できる。メモリコントローラ２０２は更に、ＬＣＤコントローラ２０４とバスコントローラ２０５とに接続される。バスコントローラ２０５には、シリアル通信コントローラであるＳＩＯ２０６とＲＯＭ２０７が接続されている。またバスコントローラ２０５は、ハードディスクを接続するためのコネクタ（ＩＤＥ  ＰＨＹ）２１０と、ネットワークケーブルを接続するためのコネクタ（Ｎｅｔｗｏｒｋ  ＰＨＹ）２０８とを装備している。またバスコントローラ２０５は、ハードディスクコントローラやネットワークコントローラとしても動作する。ＬＣＤコントローラ２０４とＳＩＯ２０６は、利用者が、この情報処理装置を操作するためのＬＣＤパネル（タッチパネル）を有する操作パネル２２０（図３）が接続されるパネルＰＨＹ２０９と接続されている。尚、この操作パネル２２０については後述する。ＲＯＭ２０７には、この情報処理装置を動作させるための設定値や、この情報処理装置の起動に必要なブートプログラム等が含まれる。
【００１６】
この情報処理装置は更にＣＰＵ２１７を有している。このＣＰＵ２１７は、バス２１２によってＤＲＡＭ２１６と、各種ハードウェアデバイス（ＰＨＹ）２１３〜２１５と接続されている。ＤＲＡＭ２１６は、ＣＰＵ２１７で実行される各種プログラムや、各種データを格納する。バス２１２はバスブリッジ２１１を介してバスコントローラ２０５と接続されている。ＤＲＡＭ２０３に記憶される各種データは、バスコントローラ２０５、バスブリッジ２１１、バス２１２を経由してＤＲＡＭ２１６に転送可能であり、またその逆方向へのデータ転送も可能である。またＣＰＵ２０１とＣＰＵ２１７は、バスブリッジ２１１を経由して互いに通信できる。これによりＣＰＵ２０１はＣＰＵ２１７と通信することで、各種ハードウェアデバイス（ＰＨＹ）２１３乃至２１５に接続されるハードウェアユニットを制御できる。またＣＰＵ２０１は、コネクタ（ＩＤＥ  ＰＨＹ）２１０に接続されるハードディスク（以下、ＨＤＤ）からＣＰＵ２１７で実行するプログラムをＤＲＡＭ２１６に書き込むことができる。なお、ＨＤＤは、不揮発性の第１記憶手段であり、ＤＲＡＭは揮発性の第２記憶手段である。
【００１７】
続いてパネルＰＨＹ２０９と接続される操作パネル２２０について説明する。
【００１８】
図３は、本実施の形態に係る情報処理装置の操作パネル２２０の外観図である。
【００１９】
３０１は、この情報処理装置のユーザが数値情報や電話番号等を入力するためのテンキーである。リセットボタン３０２は、この操作パネル２２０で行った設定情報をクリアするためのキーである。３０３はソフト電源ボタンで、ソフトウェア的に装置の電源のオン／オフを指示するためのボタンである。スタートボタン３０４は、ユーザがＦＡＸ転送やコピー等の各種機能の実行開始を指示するためのボタンである。ストップボタン３０５は、既に開始された各種機能の実行の中断をユーザが指示するためのボタンである。３０６は、この情報処理装置の電源状態を示すＬＥＤである。ＬＥＤ３１０は、この情報処理装置で実行されているジョブの状態を示すＬＥＤである。またＬＥＤ３１１は、この情報処理装置で発生しているエラー状態を示すＬＥＤである。これらＬＥＤは、ＳＩＯ２０６によるシリアル通信により、それぞれ無灯、緑点灯、緑点滅、橙色点灯の状態に設定できる。ガイドキー３０７は、この情報処理装置の各種説明画面を表示する。またユーザモードキー３０８は、この情報処理装置をユーザモードに移行させるためのキーである。３０９は液晶表示器を有するタッチパネルである。ユーザが、この操作パネル２２０の各種ボタンやタッチパネル３０９を操作すると、その操作情報はパネルＰＨＹ２０９とＳＩＯ２０６を経由してＣＰＵ２０１に通知される。ＣＰＵ２０１はＤＲＡＭ２０３に格納されたプログラムに従ってＬＣＤコントローラ２０４を制御してタッチパネル３０９の画面の表示や更新を行う。またＣＰＵ２０１は、ＳＩＯ２０６を制御することで各種ＬＥＤの点灯／消灯制御も行う。
【００２０】
＜機能説明＞
次に本実施の形態に係る情報処理装置の各種機能について、各機能別に説明する。
【００２１】
（コピー機能）
ユーザは、スキャナＰＨＹ２１５に接続されるスキャナユニット（不図示）に原稿をセットし、操作パネル２２０を操作してコピーに係る設定を行う。このコピーに係る設定とは、例えば部数の設定や出力のソート方法、或いは読み取り時の変倍率等を含む。これらの設定値はＤＲＡＭ２０３に保存される。その後ユーザはスタートボタン３０４を押下する。これによりＣＰＵ２０１は、そのスタートボタン３０４の押下を検知し、ＣＰＵ２１７に対してスキャナユニットの駆動を依頼する。このとき、変倍に係る設定値及び取得したイメージデータの転送先の情報が、駆動依頼と共にＣＰＵ２１７に通知される。スキャナユニットからのイメージデータの転送先は、ＤＲＡＭ２０３，ＤＲＡＭ２１６のいずれかに選択される。ＣＰＵ２１７は、ＣＰＵ２０１から受信した情報に従ってスキャナユニットをスキャナＰＨＹ２１５を経由して駆動する。
【００２２】
このときスキャナユニットは、ユーザによってセットされた原稿を光学的に走査することによりイメージデータを形成する。こうしてスキャナユニットによって読み取られたイメージデータは、まずＤＲＡＭ２１６に格納され、所定の画像処理が施された後、ＣＰＵ２０１で指定されたイメージデータの転送場所に送られて格納される。このときＣＰＵ２０１は、イメージデータをＩＤＥ  ＰＨＹ２１０に接続されるハードディスクに格納してもよい。そしてＣＰＵ２０１は、その取得したイメージデータをプリンタＰＨＹ２１４に接続されるプリンタエンジン（不図示）で印刷するようにＣＰＵ２１７に対して指示する。これによりＣＰＵ２１７は、その指示されたイメージデータをプリンタエンジンで印刷するように、プリンタＰＨＹ２１４を経由してプリンタエンジンを制御する。プリンタエンジンはＣＰＵ２１７からの指示に従ってイメージデータをシート（用紙）上に印刷する。ここでプリンタエンジンに対して行う印刷指示は１ページ単位でなされるものとする。このため、スキャナユニットに複数ページの原稿がセットされた場合には、ＣＰＵ２０１は複数回ＣＰＵ２１７に対してイメージデータを印刷するように指示する。また、ユーザが操作パネル２２０を使用してソート方法を指示していた場合は、ＣＰＵ２０１が印刷指示を行うイメージデータを、その指定されたソート方法に合わせて指定することによりソート機能を実現する。
【００２３】
（ファックス機能）
次にファックス送信について説明する。ユーザは、スキャナＰＨＹ２１５に接続されるスキャナユニットに原稿をセットする。その後、操作パネル２２０を操作して、送信先の電話番号や読み取り時の設定等を入力する。そしてユーザがスタートボタン３０４を押下すると、それを検知したＣＰＵ２０１は、上述のコピー機能の動作と同様に、ＣＰＵ２１７に対して原稿の読み取りを依頼する。ここでも同様に、その読み取られたイメージデータはＤＲＡＭ２０３或はハードディスク、或いはＤＲＡＭ２１６に格納される。続いてＣＰＵ２０１は、その格納されたイメージデータを、ＦＡＸＰＨＹ２１３に接続されるファックスユニット（不図示）を用いて、その指定された電話番号に対してファックス送信するようにＣＰＵ２１７に対して指示する。ＣＰＵ２１７は、ＦＡＸＰＨＹ２１３を経由してファックスユニットを制御することにより、ＣＰＵ２０１で指定されたイメージデータを、指定された電話番号に対してファックス送信する。
【００２４】
続いてファックス受信の動作について説明する。ファックスユニットは、ファックスの着信があったことをＣＰＵ２１７に通知すると共に、通信先から伝送されたイメージデータをＤＲＡＭ２１６に転送して格納する。ＣＰＵ２１７はファックス受信があったことを、受信したイメージデータの情報と共にＣＰＵ２０１に通知する。その後、上述したコピー機能と同様に、ＣＰＵ２０１は、その受信したイメージデータをプリンタエンジンで出力するようにＣＰＵ２１７に対して指示する。これによりファックスユニットで受信したイメージデータをプリンタエンジンで印刷する。
【００２５】
（プリンタ機能）
ユーザが作成した文書データは、コネクタ２０８に接続されるネットワークを介して、この情報処理装置に伝送される。こうして転送される文書データは、例えばＰＤＬデータである。このコネクタ２０８を介して受信した文書データは、一旦ＤＲＡＭ２０３に保存される。ＣＰＵ２０１は、このＤＲＡＭ２０３に保持された文書データを解釈してイメージデータに変換し、ＤＲＡＭ２０３に保存する。続いてＣＰＵ２０１は、このイメージデータを、上述したコピー機能と同様に、プリンタエンジンで出力するようにＣＰＵ２１７に対して指示する。これによりＣＰＵ２１７は、そのイメージデータを印刷するように、プリンタＰＨＹ２１４を通じてプリンタエンジンを制御する。
【００２６】
（その他の機能）
上述したコピー機能やファックス機能、プリンタ機能で印刷するイメージデータは、全てＩＤＥ  ＰＨＹ２１０に接続されるハードディスクに格納してもよい。これにより、一度印刷したイメージデータを再利用することが可能になる。また複数のイメージデータを取り扱う場合に、ＤＲＡＭ２０３に保持されたイメージデータをハードディスクに転送して、ＤＲＡＭ２０３の、ハードディスクの転送済みのイメージデータを消去する。これにより、イメージデータの処理中に、他のイメージデータの読み取りや生成が行えるようになるので高速処理が可能になる。
【００２７】
＜ソフトウェア構成＞
次にＣＰＵ２０１が実行するソフトウェアシステムの構成について図１を用いて説明する。図１は、情報処理装置のソフトウェア構成を示すブロック図である。
【００２８】
図１は、本実施の形態に係る情報処理装置において、ＣＰＵ２０１が実行するソフトウェアシステムの構成を説明するためのブロック図である。
【００２９】
１２０はＯＳ（オペレーティングシステム）で、ジョブを制御するジョブ制御部１４１がＯＳ１２０上で動作する。また操作パネル２２０を制御するＵＩ制御アプリケーションプログラム１４２がＯＳ１２０上で動作する。またプリンタＰＨＹ２１４に接続されるプリンタエンジンを制御するプリント制御アプリケーションプログラム１４３がＯＳ１２０上で動作する。また、上述したコピー動作を制御するコピー制御アプリケーションプログラム１４４がＯＳ１２０上で動作する。また上述したプリンタ機能を制御するＰＤＬ制御アプリケーションプログラム１４５がＯＳ１２０上で動作する。また上述したファックス機能を制御するＦＡＸ制御アプリケーションプログラム１４６がＯＳ１２０上で動作する。
【００３０】
またＯＳ１２０は、例えばＦＡＴやＥＸＴ２等の各種ファイルシステムをサポートしている。ここでファイルシステムとは、ハードディスクにファイルを効率良く格納、或は取得するための仕組みである。ＯＳ１２０上で動作するアプリケーションプログラムは、ＯＳ１２０が公開するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）を操作して、このファイルシステムを利用できる。例えばコピー制御アプリケーションプログラム１４４は、このＡＰＩを操作することにより、スキャナから得られたイメージデータを効率良くハードディスクに格納できる。このようにハードディスクに格納されたイメージデータを任意の順序で取得することで、様々なレイアウト（例えば逆順印刷やＮ−ｕｐ印刷）で紙面に印刷することが可能になる。また、例えばＦＡＸ制御アプリケーションプログラム１４６は、このＡＰＩを操作することにより、ファックスで受信したイメージデータをハードディスクに格納できる。これによりファックスで受信した画像を再利用することが可能になる。また、例えばＰＤＬ制御アプリケーションプログラム１４５は、このＡＰＩを操作することにより、受信したイメージデータを解釈することによって得られるイメージデータをハードディスクに効率よく格納できる。通常、このように生成されたイメージデータは、プリンタエンジンに出力されるまで削除できない。このため、所定数の画像のイメージデータを生成した後、ＰＤＬ制御アプリケーションプログラム１４５はプリンタエンジンによって、そのイメージデータが印刷されるまで解釈処理を中断しなければならない。しかし、イメージデータをハードディスクに格納することにより、同時に格納することができる画像の数が増大するので、ＰＤＬ制御アプリケーションプログラム１４５による解釈処理を中断する頻度を低減できる。ファイルシステム１２１は、ＩＤＥ  ＰＨＹ２１０に接続されるハードディスクを制御するバスコントローラ２０５に内蔵されるハードディスクコントローラを制御するハードディスクドライバ１２６を操作する。こうしてハードディスク（ＨＤＤ）へのデータの送受信を行うことができる。
【００３１】
またＯＳ１２０は、例えばＴＣＰ／ＩＰやＵＤＰ等の各種ネットワークプロトコルをサポートする。通常、ＯＳがサポートするネットワークプロトコルは、ＯＳＩ基本参照モデルのアプリケーション層未満である。プロトコルスタック１２２は、ＯＳ１２０上で動作するアプリケーションに対してＩＦを公開する。これらアプリケーションプログラムは、このＩＦを操作することにより、各種プロトコルで外部装置と通信することが可能になる。例えばＰＤＬ制御アプリケーションプログラム１４５は、外部から伝送される文書データを受信するために、このＩＦを利用する。またジョブ制御アプリケーションプログラム１４１は、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）で外部装置と通信するためにこのＩＦを利用する。プロトコルスタック１２２は、バスコントローラ２０５に内蔵されているネットワークコントローラを制御するネットワークドライバ１２７を操作することで、コネクタ２０８で接続された外部装置と通信を行う。またＵＩ制御アプリケーションプログラム１４２は、ＬＣＤコントローラ２０４とＳＩＯ２０６を制御するドライバ１２３を操作することによってタッチパネル３０９に画像を表示する。またＵＩ制御アプリケーションプログラム１４２は、ユーザが操作パネル２２０に対して行った操作で入力されるコマンドを受信する。そして、そのユーザの操作に従った画面の更新や、またジョブ制御アプリケーションプログラム１４１に対して利用者が所望する動作の実行を指示する。またプリント制御アプリケーションプログラム１４３は、のプリンタＰＨＹ２１４に接続されるプリンタエンジンを制御するプリンタドライバ１２４を操作することで、各種イメージデータを紙面上に印刷する。ここで、印刷されるイメージデータはジョブ制御アプリケーションプログラム１４１で指定される。
【００３２】
コピー制御アプリケーションプログラム１４４は、ＵＩ制御アプリケーションプログラム１４２からの指示に従って、スキャナＰＨＹ２１５に接続されるスキャナユニットを制御するスキャナドライバ１２５を操作する。そして、スキャナユニットにセットされた原稿を読み取ってイメージデータを生成する。またこのコピー制御アプリケーションプログラム１４４は、こうして得られたイメージデータを、ファイルシステム１２１を操作することによりハードディスクに書き込む。またコピー制御アプリケーションプログラム１４４は、そのイメージデータを、プロトコルスタック１２２を操作して外部の情報処理装置に伝送する。またコピー制御アプリケーションプログラム１４４は、そのイメージデータの印刷をジョブ制御部１４１に指示する。このときジョブ制御アプリケーションプログラム１４１は、プリント制御アプリケーションプログラム１４３に対して、その指定されたイメージデータを指定して印刷の実行を指示する。ここでコピー制御アプリケーションプログラム１４４は、このように原稿を読み取って得られたイメージデータをハードディスクに格納している。従って、印刷するイメージデータの順序を制御することにより、ＵＩ制御アプリケーションプログラム１４２からの指示に従ったソート順で印刷できる。
【００３３】
ＰＤＬ制御アプリケーションプログラム１４５は、受信したＰＤＬ等の各種文書データをプロトコルスタック１２２で解釈してイメージデータに変換した後、ジョブ制御アプリケーションプログラム１４１に対して、そのイメージデータの印刷を指示する。このときジョブ制御アプリケーションプログラム１４１は、プリント制御アプリケーションプログラム１４３に対して、その指定されたイメージデータを指定して印刷の実行を指示する。
【００３４】
ＦＡＸ制御アプリケーションプログラム１４６は、ＵＩ制御アプリケーションプログラム１４２からの指示、或いはＦＡＸＰＨＹ２１３に接続されるファックスユニットを制御するＦＡＸドライバ１２８から発行される着呼イベントに従って動作する。ＵＩ制御アプリケーションプログラム１４２からファックス送信が指示されると、スキャナＰＨＹ２１５に接続されるスキャナユニットを制御するスキャナドライバ１２５を操作して、そのスキャナユニットにセットされた原稿を読み取る。続いてＦＡＸ制御アプリケーションプログラム１４６は、その読み取って得られたイメージデータを、ＵＩ制御アプリケーションプログラム１４２で指定された番号に対してファックス送信する。この際、ＦＡＸ制御アプリケーションプログラム１４６は、ＦＡＸＰＨＹ２１３に接続されるファックスユニットを制御するＦＡＸドライバ１２８を操作する。
【００３５】
一方、ＦＡＸドライバ１２８から着呼イベントが通知されると、ＦＡＸ制御アプリケーションプログラム１４６は、その着呼したイメージデータを読み取り、そのイメージデータの印刷をジョブ制御アプリケーションプログラム１４１に指示する。このときジョブ制御アプリケーションプログラム１４１は、プリント制御アプリケーションプログラム１４３に対してＦＡＸ制御アプリケーションプログラム１４６から指定されたイメージデータを指定して印刷の実行を指示する。
【００３６】
次に、一般的なデバイスドライバの内部構成について、図４を用いて説明する。図４は、デバイスドライバの内部構成を示す図である。
【００３７】
図４で、ドライバＩ／Ｆ部４０１は、アプリケーションプログラムからの要求を受け付けるとともに、要求に対する応答をアプリケーションプログラムに取得させるためのインターフェースとして機能する。ドライバＩ／Ｆ部４０１は、デバイスドライバのオープンの手順、クローズの手順、ドライバに対する要求手順、データの読み出し／書き込みの手順等を規定するプログラムで構成される。
【００３８】
また図４で、デバイス情報管理部４０２は、ハードウェアデバイスに関するデバイス情報を管理するためのプログラムで構成される。ここでいうデバイス情報は、デバイスドライバの管理下のハードウェアデバイスが、正常に動作する正常状態か、正常に動作しない（あるいは接続されていない）異常状態であるかを示す情報を含む。また、デバイス情報は、異常状態である場合に、その異常状態の種別を示す情報も含む。
【００３９】
また図４で、ドライバ情報管理部４０３は、デバイスドライバの動作状態を示すドライバ情報を管理するためのプログラムで構成される。デバイスドライバの動作状態としては、デバイスドライバが既にオープンされて動作中であるか否かの状態や、アプリケーションプログラムとハードウェアデバイス間でのデータの転送状態（転送待ち、転送中等）が含まれる。
【００４０】
また図４で、ハードウェア制御部４０４は、ドライバＩ／Ｆ部４０１を介して入力されるアプリケーションプログラムの要求を受け付け、その要求に基づいてハードウェアデバイスを制御するためのプログラムで構成される。そして、ハードウェア制御部４０４は、アプリケーションプログラムとハードウェアデバイス間でのデータの転送時に使用するバッファの管理を行う。また、ハードウェア制御部４０４は、複数のアプリケーションプログラムからハードウェアデバイスへの要求がされた場合に、いずれのアプリケーションプログラムからの要求を処理するかを排他的に選択する排他処理を実行する。また、ハードウェア制御部４０４は、デバイスドライバを初期化する際に、バッファのクリアや、排他処理で利用するソフトウェアリソースの初期化を実行する。なお、ソフトウェアリソースとしては、フラグやメッセージキューがある。
【００４１】
また図４で、ハードウェアアクセス部４０５は、デバイス情報管理部４０２及びハードウェア制御部４０４からの要求に応答して、ハードウェアデバイスのレジスタにアクセスするためのプログラムで構成される。
【００４２】
次に、第１実施形態におけるデバイスドライバの内部構成について、図５及び図６を用いて説明する。図５は、第２デバイスドライバとしてのスケルトンドライバ５００の内部構成を示す図である。また図６は、第１デバイスドライバとしてのフルドライバ６００の内部構成を示す図である。なお、第１実施形態では、スケルトンドライバ５００又はフルドライバ６００が、図１で説明したデバイスドライバ１２３〜１２８として動作する。
【００４３】
なお、図５及び図６におけるアプリケーションプログラムとは、前述した１４２〜１４６のいずれかに相当する。また、図５及び図６におけるハードウェアデバイスは、前述したパネルＰＨＹ２０９、プリンタＰＨＹ２１４、スキャナＰＨＹ１２５、ＩＤＥ  ＰＨＹ２１０、Ｎｅｔｗｏｒｋ  ＰＨＹ２０８、ＦＡＸ  ＰＨＹ２１３のいずれかに接続されるデバイス相当する。
【００４４】
図５に示すスケルトンドライバ５００が、図４で示す一般的なデバイスドライバと異なるのは、ハードウェア制御部４０４に相当する構成が含まれていない点である。一方、図６で示すフルドライバ６００は、図４で示す一般的なデバイスドライバと異なるところは無く、ハードウェア制御部４０４に相当する構成として、ハードウェア制御部６０４を含む。従って、スケルトンドライバ５００は、ハードウェア制御部を含まない分だけ、フルドライバ６００に比べてデータサイズが小さい。
【００４５】
なお、スケルトンドライバ５００のドライバＩ／Ｆ部５０１とフルドライバ６００のドライバＩ／Ｆ部６０１は図４のドライバＩ／Ｆ部４０１と同様なので説明を省略する。また、スケルトンドライバ５００のデバイス情報管理部５０２とフルドライバ６００のデバイス情報管理部６０２は図４のデバイス情報管理部４０２と同様なので説明を省略する。また、スケルトンドライバ５００のドライバ情報管理部５０３とフルドライバ６００のドライバ情報管理部６０３は図４のドライバ情報管理部４０３と同様なので説明を省略する。また、フルドライバ６００のハードウェア制御部５０４と図４のハードウェア制御部４０４と同様なので説明を省略する。
【００４６】
そして、スケルトンドライバ５００は、後述するように、情報処理装置の起動時にＨＤＤからＤＲＡＭ２０３上の所定の記憶領域にロードされるものである。スケルトンドライバ５００は、フルドライバ６００よりデータサイズが小さいので、ＨＤＤからＤＲＡＭ２０３にロードする際のロード時間が短くて済む。
【００４７】
なお、スケルトンドライバ５００は、ハードウェア制御部を含まないので、デバイス情報管理部５０２が、ハードウェアデバイスが正常に動作していることを示すデバイス情報を保持していたとしても、ハードウェアデバイスを制御することができない。そこで、ドライバ情報管理部５０３は、デバイス情報管理部５０２が、デバイス情報がハードウェアデバイスが正常に動作していることを示すとしても、デバイスドライバの動作状態が動作不可（初期化中）を示すドライバ情報を保持する。
【００４８】
一方、スケルトンドライバ５００とフルドライバ６００は、デバイス情報管理部とドライバ情報管理部と共通して有する。従って、いずれのデバイスドライバも、アプリケーションプログラムからのハードウェアデバイスのデバイス情報の取得要求や、ドライバの動作状態の取得要求に対して応答することが可能である。
【００４９】
次に、情報処理装置に電源が投入されて起動する際の動作について説明する。
【００５０】
情報処理装置の操作者は、情報処理装置のメインスイッチ（不図示）を押下することにより、外部の商用電源から供給される交流電圧を情報処理装置が備える交流電圧／直流電圧変換部に供給する。この供給により、交流電圧／直流電圧変換部は、直流電圧を情報処理装置の各部に供給し、情報処理装置が起動する。
【００５１】
図７は、情報処理装置に電源が投入された際（起動時）に、ＣＰＵ２０１が実行する動作を示すフローチャートである。図７は、ＣＰＵ２０１がＯＳ１２０の実行を開始させるまでの動作を示すものである。
【００５２】
ステップＳ７０１で、ＣＰＵ２０１は、ＲＯＭ２０４からＤＲＡＭ２０３へ、ＢＩＯＳ（バイオス）をロードし、ＣＰＵ２０１の初期化処理を行う。
【００５３】
ステップＳ７０２で、ＣＰＵ２０１は、ＤＲＡＭ２０３にロードされたＢＩＯＳを実行することによりＲＯＭ２０４からブートローダをＤＲＡＭ２０３へロードする。
【００５４】
ステップＳ７０３で、ＣＰＵ２０１は、ＤＲＡＭ２０３にロードされたブートローダを実行することにより、ＩＤＥ  ＰＨＹ２１０を介してＨＤＤにアクセスする。そして、ＣＰＵ２０１は、ＨＤＤに格納されたＯＳ１２０をＤＲＡＭ２０３へロードする。
【００５５】
ステップＳ７０４で、ＣＰＵ２０１は、ＤＲＡＭ２０３へロードされたＯＳ１２０の実行を開始させる。
【００５６】
次に、図８を用いて、情報処理装置の起動時に、ＯＳ１２０が実行する動作について説明する。図８は、情報処理装置の起動時に、ＯＳ１２０が実行する動作を説明するフローチャートである。図８に示す動作は、ＣＰＵ２０１がＯＳ１２０の実行を開始させたことに応じて開始される。
【００５７】
ステップＳ８０１で、ＯＳ１２０は、バスコントローラ２０５のハードウェア接続信号を確認することで、情報処理装置が備えるハードウェアデバイスを認識する。ここでいうハードウェアデバイスには、図２に示すパネルＰＨＹ２０９、プリンタＰＨＹ２１４、スキャナＰＨＹ１２５、ＩＤＥ  ＰＨＹ２１０、Ｎｅｔｗｏｒｋ  ＰＨＹ２０８、ＦＡＸ  ＰＨＹ２１３のいずれかに接続されるデバイスが含まれる。
【００５８】
ステップＳ８０２で、ＯＳ１２０は、スケルトンドライバ５００をＨＤＤからＤＲＡＭ２０３にロードする。
【００５９】
ステップＳ８０３で、ＯＳ１２０は、アプリケーションプログラムの実行を開始させる。Ｓ８０３で実行を開始させるアプリケーションプログラムとは、前述した１４２〜１４６を含む。なお、各アプリケーションプログラムは、ＨＤＤに格納されているので、ＯＳ１２０は、ＨＤＤに格納されたアプリケーションプログラムをＤＲＡＭ２０３にロードする。なお、ステップＳ８０３により実行が開始されたアプリケーションプログラムの動作については、図９で追って説明する。
【００６０】
ステップＳ８０４で、ＯＳ１２０は、ステップＳ８０３で実行が開始されたアプリケーションプログラムから、デバイスドライバに対する要求があるか否かを判定する。そして、デバイスドライバに対する要求があればステップＳ８０５へ進み、そうでなければステップＳ８０４を再び実行する。
【００６１】
ステップＳ８０５で、ＯＳ１２０は、アプリケーションプログラムにより要求された内容が、ハードウェアデバイスを制御するための要求であるか否かを判定する。そして、デバイスドライバに対する要求の内容がハードウェアデバイスを制御するための要求であればステップＳ８０６へ進み、そうでなければステップＳ８１１へ進む。
【００６２】
ステップＳ８０６で、ＯＳ１２０は、フルドライバ６００をＨＤＤからＤＲＡＭ２０３にロード済みか否かを判定し、ロード済みであればステップＳ８０８へ進み、ロード済みでなければステップＳ８０７へ進む。
【００６３】
ステップＳ８０７で、ＯＳ１２０は、フルドライバ６００をＨＤＤからＤＲＡＭ２０３にロードする。フルドライバ６００をロードするのは、スケルトンドライバ５００には、ハードウェアデバイスを制御するためのハードウェア制御部が含まれていないからである。そして、ＯＳ１２０は、フルドライバ６００がロードされたことに応じて、ハードウェアデバイスを制御するためのデバイスドライバを、スケルトンドライバ５００からフルドライバ６００に切り替える。
【００６４】
ステップＳ８０８で、ＯＳ１２０は、フルドライバ６００に含まれるハードウェア制御部６０４により、ステップＳ８０４で受け付けたアプリケーションプログラムからの要求に対する応答をする。例えば、ハードウェアデバイスがスキャナであり、アプリケーションプログラムがＦＡＸ制御アプリケーションプログラム１４６である場合を想定する。この場合、ＦＡＸ制御アプリケーションプログラム１４６が、スキャナにより原稿を読み取らせるための要求を、スキャナドライバ１２５としてのフルドライバ６００にする。そして、スキャナドライバ１２５は、ＦＡＸ制御アプリケーションプログラム１４６からの要求に応答して、スキャナにより原稿を読み取らせるための指示をスキャナに対して行う。そして、スキャナドライバ１２５は、スキャナが原稿を読み取って得た画像データを、ＤＲＡＭ２０３へ格納する。その上で、スキャナドライバ１２５は、画像データをＤＲＡＭ２０３に格納した旨を、ＦＡＸ制御アプリケーションプログラム１４６に通知する。
【００６５】
ステップＳ８０９で、ＯＳ１２０は、ＯＳ１２０に対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップＳ８１０へ進み、そうでなければステップＳ８０４へ戻る。例えば、ＯＳ１２０は、情報処理装置の操作者によりソフト電源ボタン３０３が押下された場合に、シャットダウン指示がなされたものと判定する。
【００６６】
ステップＳ８１０で、ＯＳ１２０は、ＯＳ１２０のシャットダウン処理を実行し、ＯＳ１２０の動作を停止させる。
【００６７】
ここで、ステップＳ８０５でＮＯと判定された場合に実行されるステップＳ８１１〜Ｓ８１３について説明する。
【００６８】
ステップＳ８０５でＮＯと判定される場合とは、アプリケーションプログラムからの要求が、ハードウェアデバイスを制御するための要求で無い場合である。具体的には、アプリケーションプログラムが、デバイス情報又はドライバ情報の取得要求を受け付けた場合である。
【００６９】
ステップＳ８１１で、ＯＳ１２０は、アプリケーションプログラムからの要求が、デバイス情報の取得要求であるか否かを判定する。そして、デバイス情報の取得要求であればステップＳ８１２へ進み、そうでなければステップＳ８１３へ進む。
【００７０】
ステップＳ８１２で、ＯＳ１２０は、アプリケーションプログラムからのデバイス情報の取得要求に応答して、デバイス情報管理部がアプリケーションにデバイス情報を取得させるように制御する。なお、ステップＳ８１２の処理を実行するデバイス情報管理部は、デバイスドライバとしてスケルトンドライバ５００が動作している場合は、デバイス情報管理部５０２となる。一方、デバイスドライバとしてフルドライバ６００が動作している場合は、デバイス情報管理部６０２となる。
【００７１】
ステップＳ８１３で、ＯＳ１２０は、アプリケーションプログラムからの要求がドライバ情報の取得要求であることから、ドライバ情報管理部がアプリケーションにドライバ情報を取得させるように制御する。なお、ステップＳ８１３の処理を実行するドライバ情報管理部は、デバイスドライバとしてスケルトンドライバ５００が動作している場合は、ドライバ情報管理部５０３となる。一方、デバイスドライバとしてフルドライバ６００が動作している場合は、ドライバ情報管理部６０３となる。
【００７２】
次に、アプリケーションプログラムが実行する動作について、図９を用いて説明する。図９は、情報処理装置の起動時に、アプリケーションプログラムが実行する動作を説明するフローチャートである。なお、ここでいうアプリケーションプログラムとは、前述した１４２〜１４６のいずれかであるものとする。
【００７３】
ステップＳ９０１で、アプリケーションプログラムは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバに対して、デバイス情報を取得するための要求をする。デバイス情報を取得するのは、アプリケーションプログラムが利用するハードウェアデバイスが、少なくとも正常に動作していることを確認するためである。
【００７４】
ステップＳ９０２で、アプリケーションプログラムは、デバイスドライバからデバイス情報を取得したか否かを判定し、取得したと判定した場合はステップＳ９０３へ進む。
【００７５】
ステップＳ９０３で、アプリケーションプログラムは、デバイスドライバから取得したデバイス情報を参照し、ハードウェアデバイスが動作可能か否かを判定し、動作可能であると判定した場合は、ステップＳ９０４へ進む。アプリケーションプログラムは、デバイス情報が、ハードウェアデバイスが正常に動作していることを示す情報である場合は、動作可能であると判定する。
【００７６】
ステップＳ９０４で、アプリケーションプログラムは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバに対して、ドライバ情報を取得するための要求をする。ドライバ情報を取得するのは、アプリケーションプログラムが利用するハードウェアデバイスに対応するデバイスドライバの動作状態を確認するためである。
【００７７】
ステップＳ９０５で、アプリケーションプログラムは、デバイスドライバからドライバ情報を取得したか否かを判定し、取得したと判定した場合はステップＳ９０６へ進む。
【００７８】
ステップＳ９０６で、アプリケーションプログラムは、デバイスドライバから取得したドライバ情報を参照し、デバイスドライバが動作可能か否かを判定し、動作可能であると判定した場合は、ステップＳ９０７へ進む。アプリケーションプログラムは、ドライバ情報が、デバイスドライバが既にオープンされており、データ待ち状態である場合にデバイスドライバが動作可能であると判定する。
【００７９】
なお、アプリケーションプログラムは、ハードウェア情報及びドライバ情報を取得し、ハードウェアデバイスとデバイスドライバが動作可能であることを確認しないと、ステップＳ９０７移行の処理を実行できない。従って、ＯＳ１２０がデバイスドライバのロードを完了して、デバイス情報やドライバ情報をアプリケーションプログラムに取得させることができる状態となっていないと、ハードウェアデバイスを利用した処理を実行できない。つまり、アプリケーションプログラムがハードウェアデバイスを利用した処理を実行するには、デバイスドライバがロードされていることが条件となるので、デバイスドライバのロードに要する時間が、アプリケーションプログラムの起動時間に影響を与える。
【００８０】
ステップＳ９０７で、アプリケーションプログラムは、ハードウェアデバイスを利用する処理を実行するためのハードウェア制御要求があるか否かを判定し、ハードウェア制御要求があればステップＳ９０８へ進む。例えば、アプリケーションプログラムが、ＦＡＸ制御アプリケーションプログラム１４６である場合、スキャナに原稿を読み取らせるための要求をする場合に、ステップＳ９０７でＹＥＳと判定される。
【００８１】
ステップＳ９０８で、アプリケーションプログラムは、ハードウェア制御要求を、デバイスドライバに対して通知する。
【００８２】
ステップＳ９０９で、アプリケーションプログラムは、アプリケーションプログラムに対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップＳ９１０へ進み、そうでなければステップＳ９０７へ戻る。例えば、アプリケーションプログラムは、ＯＳ１２０によりシャットダウン指示がされた場合に、シャットダウン指示がなされたものと判定する。
【００８３】
以上説明したように、ＯＳ１２０は、情報処理装置の起動時にはハードウェアデバイスを制御するためのハードウェア制御情報を含まないスケルトンドライバ５００をロードする。従って、ハードウェア制御情報を含むフルドライバ６００をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。一方で、ＯＳ１２０は、ハードウェアデバイスを制御するための要求がアプリケーションプログラムからなされた場合は、フルドライバ６００をロードすることでアプリケーションプログラムからの要求に適切に応答することができる。つまり、ハードウェアデバイスを有する情報処理装置において、情報処理装置の起動に要する時間を短縮しつつ、ハードウェアデバイスを利用した動作を実行するためのアプリケーションプログラムが実行する処理の一部が中断されないようにすることができる。
【００８４】
なお、上記の説明では、スケルトンドライバ５００は、ハードウェア制御情報を含まないものとしたが、ハードウェア制御情報の少なくとも一部を含まないものとしても良い。この場合、ハードウェア制御情報を含まない場合に比べて、スケルトンドライバ５００のデータサイズは大きくなるが、フルドライバ６００よりはデータサイズが小さい。従って、この場合であっても、フルドライバ６００をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。なお、ハードウェア制御情報の少なくとも一部としては、種々のものが挙げられる。例えば、ＯＳ１２０が、ハードウェアデバイスに対してハードウェアアクセス部を介してハードウェアデバイスの製造バージョンを問い合わせるための制御情報が挙げられる。
【００８５】
なお、上記の説明では、フルドライバ６００をロードするための所定条件は、アプリケーションプログラムからハードウェアデバイスを制御するための要求があったこととしたが、他の態様であっても良い。例えば、情報処理装置に、メインスイッチが操作者により押下されてからカウントを開始するタイマを設け、そのタイマが一定のカウント値をカウント（一定時間が経過）したことを条件としても良い。また、タイマを開始するタイミングは、メインスイッチが押下されたタイミング以外でも、例えば、ステップＳ８０２でスケルトンドライバのロードがされたタイミングであっても良い。
【００８６】
＜第２実施形態＞
次に、本発明の第２実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、ＦＡＸ、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、ＰＣ等を含む一般的な情報処理装置にも適用できる。
【００８７】
第１実施形態と第２実施形態は、あるハードウェアデバイスを管理するためのデバイスドライバとして、スケルトンドライバとフルドライバとを使用する点は共通している。一方、第１実施形態におけるフルドライバがデバイス情報管理部とドライバ情報管理部を有するのに対して、第２実施形態におけるフルドライバがそれらを有しない点が異なる。また、第１実施形態では、スケルトンドライバとフルドライバを切り替えていずれか一方を動作させるのに対して、第２実施形態ではスケルトンドライバを常に動作させつつ、必要に応じてフルドライバを更に動作させる点が異なる。
【００８８】
なお、以下で特に説明しない部分については、第１実施形態で説明したものと同様であるので、説明を省略する。
【００８９】
図１０は、第２実施形態におけるスケルトンドライバ１０００を示す図である。
【００９０】
スケルトンドライバ１０００が、図４で示す一般的なデバイスドライバと異なるのは、ハードウェア制御部４０４に相当する構成が含まれていない点である。
【００９１】
図１１は、第２実施形態におけるフルドライバ１１００を示す図である。
【００９２】
図１１におけるハードウェア制御部１００２は、第１実施形態のフルドライバ６００におけるハードウェア制御部６０４と同様である。
【００９３】
一方、図１１におけるドライバＩ／Ｆ部１１０１は、フルドライバ６００におけるドライバＩ／Ｆ部６０１とは異なり、アプリケーションプログラムと直接的にインターフェースするものではない。フルドライバ１１００は、図１２に示すようにスケルトンドライバ１０００から呼び出されることで、スケルトンドライバ１０００の一部として組み込まれるものである。そして、フルドライバ１１００のドライバＩ／Ｆ部１１０１は、スケルトンドライバ１０００とのインターフェースとして機能するプログラムで構成される。
【００９４】
また、図１１におけるハードウェアアクセス部１１０３は、フルドライバ６００におけるハードウェアアクセス部６０３とは異なり、ハードウェアデバイスと直接的にインターフェースするものではない。フルドライバ１１００は、図１２に示すようにスケルトンドライバ１０００から呼び出されることで、スケルトンドライバ１０００の一部として組み込まれるものである。そして、フルドライバ１１００のハードウェアアクセス部１１０３は、１０００とのインターフェースとして機能するプログラムで構成される。
【００９５】
以上のように、第２実施形態におけるフルドライバ１１００は、アプリケーションプログラムやハードウェアデバイスと直接的なインターフェースを構成するものではなく、スケルトンドライバ１０００と直接的なインターフェースを構成するものである。
【００９６】
従って、ＯＳ１２０は、アプリケーションプログラムがアクセスすべきデバイスドライバを常にスケルトンドライバ１０００としておけばよい。つまり、ＯＳ１２０は、スケルトンドライバとフルドライバとで切り替える必要がない。その代わり、スケルトンドライバ１０００は、ハードウェアデバイスに対する制御要求がアプリケーションプログラムからなされた場合、フルドライバ１１００を呼び出す。そして、フルドライバ１１００のハードウェア制御部１１０２は、アプリケーションプログラムからのハードウェア制御要求に対する応答をする。
【００９７】
以上説明したように、第１実施形態が奏する効果に加え、更なる効果を奏することができる。具体的には、フルドライバ１１００はデバイス情報管理部とドライバ情報管理部を有しないので、第１実施形態におけるフルドライバ６００よりもデータサイズが小さい。そうすると、第１実施形態に比べ、フルドライバ１１００をロードするのに要する時間が短縮される。
【００９８】
なお、上記の説明では、スケルトンドライバ１０００は、ハードウェア制御情報を含まないものとしたが、ハードウェア制御情報の少なくとも一部を含まないものとしても良い。この場合、ハードウェア制御情報を含まない場合に比べて、スケルトンドライバ１０００のデータサイズは大きくなるが、フルドライバ１１００よりはデータサイズが小さい。従って、この場合であっても、フルドライバ１１００をロードする場合に比べて、情報処理装置の起動に要する時間を短縮することができる。なお、ハードウェア制御情報の少なくとも一部としては、種々のものが挙げられる。例えば、ＯＳ１２０が、ハードウェアデバイスに対してハードウェアアクセス部を介してハードウェアデバイスの製造バージョンを問い合わせるための制御情報が挙げられる。
【００９９】
＜第３実施形態＞
次に、本発明の第３実施形態を説明する。尚、本実施形態に係る情報処理装置は、コピー、ＦＡＸ、プリンタ機能等の各種機能を有する複合機の場合で説明するが、本発明はこれに限定されるものでなく、ＰＣ等を含む一般的な情報処理装置にも適用できる。
【０１００】
第１実施形態と第３実施形態は、あるハードウェアデバイスを管理するためのデバイスドライバとして、フルドライバとを使用する点は共通している。一方、第１実施形態においては、スケルトンドライバを使用していたのに対し、第３実施形態においてはそれを使用しない点が異なる。
【０１０１】
情報処理装置で動作可能な全てのデバイスドライバを、情報処理装置の起動時にロードすると、起動に時間がかかってしまう。そこで、第３実施形態は、情報処理装置の起動時間を短縮するために、デバイスドライバをロードするタイミングを、適切に調整するものである。
【０１０２】
なお、以下で特に説明しない部分については、第１実施形態で説明したものと同様であるので、説明を省略する。
【０１０３】
図１３は、情報処理装置で動作可能なハードウェアデバイスに対応するデバイスドライバ１２３〜１２８と、それらの待機時間との関係を示すテーブルである。ここで、待機時間とは、情報処理装置のメインスイッチが押下されてから、ＯＳ１２０がデバイスドライバを開始するまでの時間を示すものである。待機時間が０秒となっているデバイスドライバ１２３〜１２６は、情報処理装置の起動時にロードされる。一方、待機時間が２０秒とされているネットワークドライバ１２７は、情報処理装置の起動が開始されてから、２０秒が経過した後にロードが開始される。また、待機時間が２５秒とされているＦＡＸドライバ１２８は、情報処理装置の起動が開始されてから、２５秒が経過した後にロードが開始される。
【０１０４】
このように、待機時間を２０秒や２５秒のように、一部のデバイスドライバをロードするタイミングをずらす。これにより、他のデバイスドライバがロードされてハードウェアデバイスが利用可能になる（起動状態となる）までの時間が短縮される。
【０１０５】
次に、図１４及び図１５を用いて、情報処理装置の起動時に、ＯＳ１２０が実行する動作を説明する。
【０１０６】
ステップＳ１４０１で、ＯＳ１２０は、情報処理装置が備えるハードウェアデバイスの認識がされる。ここでいうハードウェアデバイスには、図２に示すパネルＰＨＹ２０９、プリンタＰＨＹ２１４、スキャナＰＨＹ１２５、ＩＤＥ  ＰＨＹ２１０、Ｎｅｔｗｏｒｋ  ＰＨＹ２０８、ＦＡＸ  ＰＨＹ２１３のいずれかに接続されるデバイスが含まれる。
【０１０７】
ステップＳ１４０２で、ＯＳ１２０は、アプリケーションプログラムの実行を開始させる。Ｓ１４０２で実行を開始させるアプリケーションプログラムとは、第１実施形態の１４２〜１４６を含む。なお、各アプリケーションプログラムは、ＨＤＤに格納されているので、ＯＳ１２０は、ＨＤＤに格納されたアプリケーションプログラムをＤＲＡＭ２０３にロードする。なお、ステップＳ１３０２により実行が開始されたアプリケーションプログラムの動作については、第１実施形態の図９で説明した通りである。
【０１０８】
ステップＳ１４０３で、ＯＳ１２０は、図１３のテーブルを参照し、ＬＣＤドライバ１２３について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップＳ１４０４へ進む。ステップＳ１４０４では、ＬＣＤドライバ１２３を、ＨＤＤからＤＲＡＭ２０３にロードする。ここで、待機時間をカウントするために、情報処理装置に、メインスイッチが操作者により押下されてからカウントを開始するタイマを設けるものとする。そして、ＯＳ１２０は、タイマのカウント値に基づく経過時間と、図１３のテーブルに示される待機時間に基づいて、待機時間が経過したか否かを判定する。
【０１０９】
ステップＳ１４０５で、ＯＳ１２０は、図１３のテーブルを参照し、プリンタドライバ１２４について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップＳ１３０６へ進む。ステップＳ１４０６では、プリンタドライバ１２４を、ＨＤＤからＤＲＡＭ２０３にロードする。
【０１１０】
ステップＳ１４０７で、ＯＳ１２０は、図１３のテーブルを参照し、スキャナドライバ１２５について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップＳ１４０８へ進む。ステップＳ１３０８では、スキャナドライバ１２５を、ＨＤＤからＤＲＡＭ２０３にロードする。
【０１１１】
ステップＳ１４０９で、ＯＳ１２０は、図１３のテーブルを参照し、ＨＤＤドライバ１２６について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップＳ１４１０へ進む。ステップＳ１４１０では、ＨＤＤドライバ１２６を、ＨＤＤからＤＲＡＭ２０３にロードする。
【０１１２】
ステップＳ１４１１で、ＯＳ１２０は、図１３のテーブルを参照し、ネットワークドライバ１２７について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップＳ１４１２へ進む。ステップＳ１４１２では、ネットワークドライバ１２７を、ＨＤＤからＤＲＡＭ２０３にロードする。
【０１１３】
ステップＳ１４１３で、ＯＳ１２０は、図１３のテーブルを参照し、ＦＡＸドライバ１２８について、待機時間が経過したか否かを判定し、待機時間が経過したと判定された場合は、ステップＳ１４１４へ進む。ステップＳ１４１４では、ＦＡＸドライバ１２８を、ＨＤＤからＤＲＡＭ２０３にロードする。
【０１１４】
ステップＳ１４１５で、ＯＳ１２０は、ステップＳ１４０２で実行が開始されたアプリケーションプログラムから、デバイスドライバに対する要求があるか否かを判定する。そして、デバイスドライバに対する要求があればステップＳ１４１６へ進み、そうでなければステップＳ１４１９へ進む。
【０１１５】
ステップＳ１４１６で、ＯＳ１２０は、ステップＳ１４１５で実行が要求されたデバイスドライバがロード済みであるか否かを判定し、ロード済みであればステップＳ１４１７へ進み、そうでなければステップＳ１４１８へ進む。
【０１１６】
ステップＳ１４１７で、ＯＳ１２０は、実行が要求されたデバイスドライバに含まれるハードウェア制御部６０４により、ステップＳ１４１５で受け付けたアプリケーションプログラムからの要求に対する応答をする。
【０１１７】
一方、ステップＳ１４１８で、ＯＳ１２０は、実行が要求されたデバイスドライバがロードされていない旨をアプリケーションプログラムに通知する。
【０１１８】
ステップＳ１４１９で、ＯＳ１２０は、ＯＳ１２０に対するシャットダウン指示がなされているか否かを判定する。そして、シャットダウン指示がなされていると判定された場合はステップＳ１４２０へ進み、そうでなければステップＳ１４０３へ戻る。例えば、ＯＳ１２０は、情報処理装置の操作者によりソフト電源ボタン３０３が押下された場合に、シャットダウン指示がなされたものと判定する。
【０１１９】
ステップＳ１４２０で、ＯＳ１２０は、ＯＳ１２０のシャットダウン処理を実行し、ＯＳ１２０の動作を停止させる。
【０１２０】
以上説明したように、第３実施形態によれば、情報処理装置にて動作可能な複数のデバイスドライバをロードするタイミングを、デバイスドライバ毎に設定することができる。従って、情報処理装置で動作可能な全てのデバイスドライバを、情報処理装置の起動時にロードする場合に比べて、一部のハードウェアデバイスがデバイスドライバにより利用可能となるまでの時間を短縮することができる。なお、図１３は、デバイスドライバと待機時間の関係の一例を示したものに過ぎないので、各デバイスドライバに対応する待機時間は、任意に設定することができるようにしてもよい。
【０１２１】
＜他の実施形態＞
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給することによっても達成される。この場合、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行すること前述した実施形態の機能を実現する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【図面の簡単な説明】
【０１２２】
【図１】情報処理装置のソフトウェア構成を示すブロック図である。
【図２】情報処理装置のハードウェア構成を示すブロック図である。
【図３】情報処理装置の操作パネル２２０の外観図である。
【図４】デバイスドライバの内部構成を示す図である。
【図５】スケルトンドライバ５００の内部構成を示す図である。
【図６】フルドライバ６００の内部構成を示す図である。
【図７】情報処理装置の起動時に、ＣＰＵ２０１が実行する動作を示すフローチャートである。
【図８】情報処理装置の起動時に、ＯＳ１２０が実行する動作を説明するフローチャートである。
【図９】情報処理装置の起動時に、アプリケーションプログラムが実行する動作を説明するフローチャートである。
【図１０】スケルトンドライバ１０００の内部構成を示す図である。
【図１１】フルドライバ１１００の内部構成を示す図である。
【図１２】スケルトンドライバ１０００とフルドライバ１１００の関係を示す図である。
【図１３】デバイスドライバのロードを開始するまでの待機時間を示すテーブルである。
【図１４】情報処理装置の起動時に、ＯＳ１２０が実行する動作を説明するフローチャートである。
【図１５】情報処理装置の起動時に、ＯＳ１２０が実行する動作を説明するフローチャートである。
【図１】
0005178282.tif 000002
【図２】
0005178282.tif 000003
【図３】
0005178282.tif 000004
【図４】
0005178282.tif 000005
【図５】
0005178282.tif 000006
【図６】
0005178282.tif 000007
【図７】
0005178282.tif 000008
【図８】
0005178282.tif 000009
【図９】
0005178282.tif 000010
【図１０】
0005178282.tif 000011
【図１１】
0005178282.tif 000012
【図１２】
0005178282.tif 000013
【図１３】
0005178282.tif 000014
【図１４】
0005178282.tif 000015
【図１５】
0005178282.tif 000016