(57)【要約】【課題】情報処理装置が省電力状態から復帰する際に、復帰に要する時間が不必要に長くなることなくプログラムの検証を行う。【解決手段】ＭＦＰ（情報処理装置）のＣＰＵ２０１は、ＭＦＰの起動において、フラッシュディスク２０７に格納されている複数のプログラムのそれぞれの正当性を検証する。また、ＣＰＵ２０１は、ＭＦＰがスリープ状態へ移行した後、スリープ状態から復帰する際に（Ｓ７０２）、フラッシュディスク２０７に格納されている複数のプログラムのうち、スリープ状態からの復帰を条件として起動されるプログラムの正当性を検証する（Ｓ７０３〜Ｓ７０８）。【選択図】図５
2020187711.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数のプログラムが格納された不揮発性の記憶手段と、
前記情報処理装置の起動において、前記記憶手段に格納されている前記複数のプログラムのそれぞれの正当性を検証する第１検証手段と、
前記情報処理装置が第１電力状態から前記第１電力状態より消費電力が少ない第２電力状態へ移行した後、前記第２電力状態から前記第１電力状態に復帰する際に、前記記憶手段に格納されている前記複数のプログラムのうち、前記第２電力状態からの復帰を条件として起動されるプログラムの正当性を検証する第２検証手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第２検証手段は、前記記憶手段に格納されている前記複数のプログラムのうちで、前記情報処理装置が前記第２電力状態から復帰する復帰要因に基づいて特定された検証対象のプログラムの検証を行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶手段に格納されている前記複数のプログラムは、前記復帰を条件として起動されることが設定された１つ以上のプログラムを含み、
前記第２検証手段は、前記１つ以上のプログラムのうちで、前記情報処理装置が前記第２電力状態から復帰する復帰要因に基づいて特定された検証対象のプログラムの検証を行う
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記記憶手段に格納されている前記複数のプログラムのうちで、前記復帰要因に関連するジョブを実行するためのプログラムを、前記検証対象のプログラムとして特定する特定手段を更に備え、
前記第２検証手段は、前記特定手段によって特定された前記検証対象のプログラムの検証を行う
ことを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記第２検証手段は、前記復帰を条件として起動されるプログラムの正当性を検証する検証プログラムであり、
前記検証プログラムは、前記記憶手段に格納された前記複数のプログラムのうちの１つであり、前記情報処理装置の前記第２電力状態への移行前に起動される
ことを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記検証プログラムは、前記情報処理装置が起動する際に、又は前記情報処理装置が前記第２電力状態へ移行する際に起動される、
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記第２検証手段は、前記記憶手段に格納されている前記複数のプログラムのうち、前記情報処理装置が前記第２電力状態から前記第１電力状態に復帰するための復帰処理の実行中に起動されるプログラムの検証を行う
ことを特徴とする請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記情報処理装置の電力状態を制御する制御手段と、
前記記憶手段から読み出されて起動されたプログラムが格納されるメモリと、を更に備え、
前記メモリに格納されたプログラムが前記第２電力状態において保持されるよう、前記第２電力状態において前記メモリに電力供給が行われ、
前記復帰処理は、前記制御手段が前記第２電力状態からの復帰を開始してから、前記メモリに保持されている全てのプログラムに対して前記第２電力状態からの復帰を通知し、前記全てのプログラムから応答を受信するまでの処理である
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記第２検証手段は、検証対象のプログラムが正当ではないとの検証結果が得られると、前記情報処理装置が前記第２電力状態から前記第１電力状態に復帰するための復帰処理の実行を停止させる
ことを特徴とする請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
複数のプログラムが格納された不揮発性の記憶手段を備える情報処理装置の制御方法であって、
前記情報処理装置の起動において、前記記憶手段に格納されている前記複数のプログラムのそれぞれの正当性を検証する第１検証工程と、
前記情報処理装置が第１電力状態から前記第１電力状態より消費電力が少ない第２電力状態へ移行した後、前記第２電力状態から前記第１電力状態に復帰する際に、前記記憶手段に格納されている前記複数のプログラムのうち、前記第２電力状態からの復帰を条件として起動されるプログラムの正当性を検証する第２検証工程と、
を含むことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びその制御方法に関するものである。
【背景技術】
【０００２】
近年の情報処理装置において、システムの起動時（ブート時）に、当該システムに含まれるソフトウェアの改ざんの有無を検証し、改ざんされている可能性のあるソフトウェアを動作させないようにする改ざん検知機能が導入されつつある。このような改ざん検知処理が行われる場合、一般的に、改ざん検知機能が無いシステムに比べてシステムの起動に要する時間が長くなる。特許文献１には、システムの起動時に行われる改ざん検知処理に要する時間を短縮する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−３０５１２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報処理装置が省電力状態にある間に、不揮発性記憶装置に格納されているプログラムが、例えば、当該記憶装置自体の交換又はプログラムの改ざんにより、不正に変更された場合、装置が省電力状態から正常に復帰できなくなる。このため、省電力状態からの復帰時にも、上述のような改ざん検知処理を行うことが想定される。しかし、システムの起動時と同様の改ざん検知処理（プログラムの改ざんの有無の検証）を行うと、省電力状態からの復帰に要する時間が長くなり、ユーザの利便性が低下する可能性がある。
【０００５】
本発明は、上述の課題に鑑みてなされたものである。本発明は、情報処理装置が省電力状態から復帰する際に、復帰に要する時間が不必要に長くなることなくプログラムの検証を行う技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る情報処理装置は、複数のプログラムが格納された不揮発性の記憶手段と、前記情報処理装置の起動において、前記記憶手段に格納されている前記複数のプログラムのそれぞれの正当性を検証する第１検証手段と、前記情報処理装置が第１電力状態から前記第１電力状態より消費電力が少ない第２電力状態へ移行した後、前記第２電力状態から前記第１電力状態に復帰する際に、前記記憶手段に格納されている前記複数のプログラムのうち、前記第２電力状態からの復帰を条件として起動されるプログラムの正当性を検証する第２検証手段と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、情報処理装置が省電力状態から復帰する際に、復帰に要する時間が不必要に長くなることなくプログラムの検証を行うことが可能になる。
【図面の簡単な説明】
【０００８】
【図１】画像形成システムの構成例を示すブロック図。
【図２】コントローラの構成例を示すブロック図。
【図３】ＭＦＰの電源構成の例を示すブロック図。
【図４】セキュアブート機能が無効である場合のＭＦＰの起動処理の手順を示すフローチャート。
【図５】セキュアブート機能が有効である場合のＭＦＰの起動処理の手順を示すフローチャート。
【図６】スリープ復帰の前後における各プログラムの動作状態の例を示す図。
【図７】ＭＦＰのスリープ復帰処理の手順を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一又は同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１０】
本実施形態では、プリント機能、スキャナ機能、データ通信機能等の複数の機能を備える複合機（ＭＦＰ）に本発明を適用した場合を例とする。なお、本発明は、複合機に限定されず、画像形成装置又は画像処理装置等の情報処理装置にも適用可能であり、例えば、印刷装置、読取装置、複写機、及びファクシミリ装置等の装置にも適用可能である。
【００１１】
＜装置構成＞
図１は、本実施形態に係る画像形成システムの構成例を示すブロック図である。画像形成システムは、ＭＦＰ１０１と、ＭＦＰ１０１に接続されたフィニッシャ装置１５０とで構成される。フィニッシャ装置１５０は、ＭＦＰ１０１のプリンタ装置１０４から出力されたシートに対して、排紙、ソート、ステープル、パンチ、裁断等のシート処理を行う。
【００１２】
ＭＦＰ１０１は、ＬＡＮ１０８を介して、ＰＣ１０９等の外部装置と通信可能である。例えば、ＭＦＰ１０１は、ＬＡＮ１０８を介して外部装置から印刷ジョブ等のジョブ及び画像データ等のデータを受信可能である。なお、ＭＦＰ１０１は、ＬＡＮ１０８を介して任意の数の外部装置と接続され、各外部装置と通信可能に構成される。
【００１３】
コントローラ１０３は、スキャナ装置１０２、プリンタ装置１０４、操作部１０５、ＨＤＤ１０６、及びＦＡＸ装置１０７と接続される。コントローラ１０３は、接続された各デバイスを制御することで、ＭＦＰ１０１上でジョブを実行する。
【００１４】
スキャナ装置１０２は、原稿の画像を光学的に読み取り、当該画像をデジタル画像（画像データ）に変換して出力する。スキャナ装置１０２は、セットされた原稿束から一枚ずつ原稿を給紙する原稿給紙（ＤＦ）ユニット１２１と、給紙された原稿の画像を光学的にスキャンして、対応する画像データを生成するスキャナユニット１２２とで構成される。スキャナ装置１０２は、スキャナユニット１２２によって生成された画像データをコントローラ１０３へ出力する。
【００１５】
プリンタ装置１０４は、画像データに基づいて画像をシートに印刷（出力）する。プリンタ装置１０４は、印刷ユニット１４１、給紙ユニット１４２及び排紙ユニット１４３で構成される。給紙ユニット１４２は、シート束から一枚ずつシートを給紙可能である。印刷ユニット１４１は、入力された画像データに基づいて、給紙ユニット１４２によって給紙されたシートに画像を印刷する。印刷ユニット１４１によって画像が印刷されたシートは、排紙ユニット１４３へ排紙される。
【００１６】
操作部１０５は、操作画面を表示する表示デバイス（例えば、ＬＣＤ）と、ユーザからの設定又は指示の受け付けるための、タッチパネル及びハードキー等の入力デバイスとを備える。操作部１０５は、例えば、節電ボタン、コピーボタン、キャンセルボタン、リセットボタン、テンキー、ユーザモードキー等のハードキーを備える。操作部１０５は、ＭＦＰ１０１を操作するためのユーザインタフェースをユーザに提供する。
【００１７】
ＨＤＤ（ハードディスクドライブ）１０６は、ＭＦＰ１０１に備えられた不揮発性記憶装置の一例である。ＨＤＤ１０６は、画像データ等の各種データ、及び制御プログラム等の各種プログラムを格納する。ＦＡＸ装置１０７は、電話回線等の通信回線に接続され、当該通信回線を介して外部装置との間で画像データ（ＦＡＸデータ）の送受信を行う。
【００１８】
ＭＦＰ１０１は、コントローラ１０３に接続された電源スイッチ１１０を備える。電源スイッチ１１０がオンである場合、少なくとも、電源制御部２１３（図２及び図３）、操作部１０５、及びコントローラ１０３のメインボード２００（図２）の一部に対して電源３０１（図３）からの給電（電力供給）が行われる。電源スイッチ１１０がオンからオフに切り替わると、ＭＦＰ１０１は、シャットダウン状態に移行する。電源スイッチ１１０がオンからオフに切り替わっても、即時に給電が停止することはない。ＭＦＰ１０１がシャットダウン状態へ移行する際には、ソフトウェア及びハードウェアの終了処理の完了を待って、電源スイッチ１１０をオンにするために必要な部分を除く部分への、電源３０１からの給電が停止する。
【００１９】
ＭＦＰ１０１は、一例として、以下のジョブ（機能）を実行可能である。
‐複写（コピー）機能：
ＭＦＰ１０１は、スキャナ装置１０２により原稿の画像を読み取って得られた画像データに基づいて、プリンタ装置１０４によりシートに画像を印刷する複写機能を備える。
‐画像送信機能：
ＭＦＰ１０１は、スキャナ装置１０２により原稿の画像を読み取って得られた画像データを、ＬＡＮ１０８を介して外部装置へ送信する画像送信機能を備える。
‐画像保存機能：
ＭＦＰ１０１は、スキャナ装置１０２により原稿の画像を読み取って得られた画像データをＨＤＤ１０６に保存する画像保存機能を備える。ＨＤＤ１０６に保存された画像データは、必要に応じて画像送信機能又は印刷機能に使用される。
‐印刷機能：
ＭＦＰ１０１は、外部装置から受信した印刷ジョブ（印刷データ）又はＨＤＤ１０６に保存された画像データに基づいて、プリンタ装置１０４により画像を印刷する印刷機能を備える。
【００２０】
＜コントローラ１０３の構成＞
図２は、コントローラ１０３の構成例を示すブロック図である。コントローラ１０３は、メインボード２００及びサブボード２２０で構成される。なお、図２では、一部の構成を簡略化して示しており、例えば、チップセット、バスブリッジ、クロックジェネレータ等のＣＰＵ周辺ハードウェアを省略している。
【００２１】
メインボード２００は、いわゆる汎用的なＣＰＵシステムで構成される。メインボード２００は、ＣＰＵ２０１、ブートＲＯＭ２０２、メモリ２０３、バスコントローラ２０４、不揮発性メモリ２０５、ディスクコントローラ２０６、ＵＳＢコントローラ２０８、ネットワークコントローラ２１１、ＲＴＣ（リアルタイムクロック）２１２、及び電源制御部２１３を備える。ネットワークコントローラ２１１は、ＮＩＣ（ネットワークインターフェースカード）として構成されうる。
【００２２】
ＣＰＵ２０１は、メインボード全体を制御する。ブートＲＯＭ２０２は、ブートプログラムを格納している。メモリ２０３は、ＣＰＵ２０１によるワークメモリとして使用されるＲＡＭである。本実施形態では、メモリ２０３は、フラッシュディスク２０７から読み出されて起動されたプログラムが格納されるメモリとして機能する。後述するように、メモリ２０３に格納されたプログラムがスリープ状態において保持されるよう、スリープ状態においてメモリ２０３に電力供給が行われる。バスコントローラ２０４は、外部バスとのブリッジ機能を有し、サブボード２２０のバスコントローラ２２４と接続されている。ディスクコントローラ２０６は、記憶装置を制御するコントローラであり、本例ではフラッシュディスク２０７及びＨＤＤ１０６を制御する。
【００２３】
フラッシュディスク２０７は、ＳＳＤ（ソリッドステートドライブ）等の、半導体デバイスで構成された不揮発性記憶装置である。本実施形態では、複数のプログラムが格納された不揮発性の記憶手段の一例である。ＵＳＢコントローラ２０８は、ＭＦＰ１０１に対して接続された、ＵＳＢメモリ２０９等のＵＳＢデバイスを制御する。電源制御部２１３は、各デバイスからの割り込み、及び各デバイスに対する電力供給を制御する。なお、電源制御部２１３は、ＣＰＬＤ（結合プログラマブル論理回路）とも称される。
【００２４】
サブボード２２０は、メインボード２００より小規模の汎用的なＣＰＵシステムと、画像処理用ハードウェアとで構成される。サブボード２２０は、ＣＰＵ２２１、メモリ２２３、バスコントローラ２２４、不揮発性メモリ２２５、デバイスコントローラ２２６ａ，２２６ｂ、及び画像処理部２２７を備える。
【００２５】
ＣＰＵ２２１は、サブボード全体を制御する。メモリ２２３は、ＣＰＵ２０１によるワークメモリとして使用されるＲＡＭである。バスコントローラ２２４は、外部バスとのブリッジ機能を有し、メインボード２００のバスコントローラ２０４と接続されている。画像処理部２２７は、画像データに対する画像処理を行う。デバイスコントローラ２２６ａ，２２６ｂは、それぞれプリンタ装置１０４及びスキャナ装置１０２と接続されている。スキャナ装置１０２及びプリンタ装置１０４は、デバイスコントローラ２２６ａ，２２６ｂを介して、画像処理部２２７との間で画像データの送受信を行う。ＣＰＵ２２１は、デバイスコントローラ２２６ａ，２２６ｂを介して、プリンタ装置１０４及びスキャナ装置１０２を制御する。また、ＣＰＵ２２１は、ＦＡＸ装置１０７を直接制御する。
【００２６】
図２に示されるように、操作部１０５、ＨＤＤ１０６及びＵＳＢメモリ２０９は、メインボード２００に接続される。スキャナ装置１０２、プリンタ装置１０４及びＦＡＸ装置１０７は、サブボード２２０に接続され、フィニッシャ装置１５０は、プリンタ装置１０４を介してサブボード２２０に接続される。また、スキャナ装置１０２、プリンタ装置１０４、ＦＡＸ装置１０７、及びフィニッシャ装置１５０は、メインボード２００の電源制御部２１３にも接続される。
【００２７】
コントローラ１０３の動作の例として、シートへの画像のコピーを行う場合の動作について説明する。ユーザが操作部１０５を操作してコピージョブの実行を指示すると、ＣＰＵ２０１は、ＣＰＵ２２１を介してスキャナ装置１０２に画像読取指示を送る。スキャナ装置１０２は、画像読取指示に従って、原稿の画像をスキャンして画像データを生成し、生成した画像データを、デバイスコントローラ２２６ｂを介して画像処理部２２７へ送る。画像処理部２２７は、入力された画像データに対して所定の画像処理を行った後、当該画像データを、ＣＰＵ２２１を介してメモリ２２３に格納する。
【００２８】
ＣＰＵ２０１は、（一定量の又は全ての）画像データがメモリ２２３に格納されたことを確認すると、ＣＰＵ２２１を介してプリンタ装置１０４に画像出力指示を送る。ＣＰＵ２２１は、メモリ２２３上の画像データのアドレスを画像処理部２２７に通知する。プリンタ装置１０４からの同期信号に従って、メモリ２２３上の画像データが、画像処理部２２７及びデバイスコントローラ２２６ａを介してプリンタ装置１０４へ送られる。これにより、プリンタ装置１０４は、入力された画像データに基づいてシートに画像を印刷する。
【００２９】
なお、複数部数の印刷を行う場合、ＣＰＵ２０１は、メモリ２２３上の画像データをＨＤＤ１０６に保存してもよい。２部目以降の印刷については、ＨＤＤ１０６又はメモリ２２３からプリンタ装置１０４へ画像データを送ることで、プリンタ装置１０４に印刷を実行させる。
【００３０】
＜電源構成＞
図３は、ＭＦＰ１０１の電源構成の例を示すブロック図である。図３では、本実施形態との関連性が高い部分の構成である、ＭＦＰ１０１の電源３０１と、コントローラ１０３、プリンタ装置１０４、及び電源制御部２１３とに関連する構成を示している。なお、図３ではスキャナ装置１０２等への給電を制御するための構成の図示を省略しているが、プリンタ装置１０４に対する構成と同様に実現されうる。その場合、各リレースイッチに対する制御信号として、プリンタ装置１０４とスキャナ装置１０２等とで共通の制御信号が用いられてもよいし、異なる制御信号が用いられてもよい。
【００３１】
電源制御部２１３には、電源ラインＪを通じて電源３０１から常に電力が供給される。なお、電源スイッチ１１０がオンからオフに切り替えられた際にも、電源制御部２１３には電力が供給される。電源制御部２１３は、以下の動作を行うように構成されている。
【００３２】
電源制御部２１３は、制御信号Ｖ＿ＯＮ，Ｐ＿ＯＮ，Ｑ＿ＯＮをそれぞれ用いて、リレースイッチ３０８，３１１，３１５の切り替えを制御する。具体的には、電源制御部２１３は、制御信号Ｖ＿ＯＮを用いてリレースイッチ３０８の切り替えを制御することで、電源３０１からコントローラ１０３への、電源ライン３０９を通じた給電を制御する。また、ＣＰＵ２０１との通信により、ＣＰＵ２０１から電源制御部２１３に対して複数のタイマ値が設定される。電源制御部２１３は、タイマ起動時には、ＣＰＵ２０１によって設定された動作を実行する。
【００３３】
電源制御部２１３は、制御信号Ｐ＿ＯＮを用いてリレースイッチ３１１の切り替えを制御することで、電源３０１からプリンタ装置１０４に含まれるプリンタ制御部３２７への、電源ラインＰを通じた給電を制御する。プリンタ制御部３２７は、プリンタ装置１０４のロジック系統回路であり、ＣＰＵ３２０及びメモリ３２６を含む。
【００３４】
電源制御部２１３は、制御信号Ｑ＿ＯＮを用いてリレースイッチ３１５の切り替えを制御することで、電源３０１からプリンタ装置１０４に含まれる印刷ユニット１４１への、電源ラインＱを通じた給電を制御する。電源ラインＱは、電源ラインＰのサブラインとして構成され、印刷ユニット１４１内のデバイス３２１〜３２５への給電に用いられる。デバイス３２１〜３２５は、例えば、定着ユニットのモータ又はファンである。
【００３５】
なお、電源ラインＱは、電源ラインＰのサブラインとして構成されずに、電源３０１からリレースイッチ３１５を介して印刷ユニット１４１へ接続されてもよい。また、リレースイッチ３１５は、電源制御部２１３ではなくＣＰＵ３２０等によって制御されてもよい。また、電源ラインＱは、印刷ユニット１４１だけでなく給紙ユニット１４２及び排紙ユニット１４３への給電に使用されてもよい。
【００３６】
電源制御部２１３は、ＣＰＵ２０１の指示に従って、所定の制御信号（例えば、ＣＰＵ３２０へ出力されるＤＣＯＮ＿ＬＩＶＥＷＡＫＥ信号）を制御する。この制御信号がアサートされた状態でプリンタ装置１０４に対して電源が投入された場合、プリンタ装置１０４は、特定の動作を行わずにスリープ状態（省電力状態）から復帰してもよい。この特定の動作には、例えば、モータ、ローラ、及びポリゴンミラー等のデバイスの回転動作、ドラム及びローラの温調動作、ファンによる排熱動作が含まれうる。
【００３７】
なお、図３にはプリンタ装置１０４が示されているが、スキャナ装置１０２についてもプリンタ装置１０４と同様に、電源制御部２１３によって電源３０１からの給電が制御される。また、給電対象のブロックごとにリレースイッチを設けるのではなく、例えば、スリープ状態に電源をオフにするブロックに対して接続された第１リレースイッチと、それ以外のブロックに対して接続された第２リレースイッチとを設けてもよい。その場合、スリープ状態では、第１リレースイッチをオフにし、第２リレースイッチをオンにすることで、各ブロックへの給電が制御されてもよい。シャットダウン状態では両方のリレースイッチがオフにされる。
【００３８】
図３に示されるように、コントローラ１０３内のデバイスのうち、ネットワークコントローラ２１１へ給電が個別に制御される。具体的には、電源制御部２１３は、制御信号Ｎ＿ＯＮを用いてリレースイッチ３６１の切り替えを制御することで、電源３０１からネットワークコントローラ２１１への、電源ラインＮを通じた給電を制御する。ネットワークコントローラ２１１には、ＭＦＰ１０１の通常状態（通常電力状態）だけでなく、ＭＦＰ１０１のスリープ状態においても電源３０１から電源ラインＮを通じて給電される。これにより、ネットワーク（ＬＡＮ１０８）を通じた復帰を可能にしている。なお、「Ｗａｋｅ Ｏｎ ＬＡＮ」等の設定が有効でない限り、シャットダウン状態においてネットワークコントローラ２１１への給電は行われない。また、ＭＦＰ１０１は、スリープ状態以外の省電力状態として、ネットワークコントローラ２１１への給電が行われないサスペンド状態を有していてもよい
【００３９】
＜ＭＦＰ１０１の電力制御＞
次に、図２及び図３を参照して、ＭＦＰ１０１の各動作状態における電力制御の例について説明する。
【００４０】
●起動時
まず、ＭＦＰ１０１の起動時（コールドブート時）の電力制御について説明する。ＭＦＰ１０１を使用するためにユーザが電源スイッチ１１０をオンにすると、電源制御部２１３は、電源ラインＪを通じて電源オンを検知する。電源オンを検知すると、電源制御部２１３は、制御信号Ｖ＿ＯＮ，Ｐ＿ＯＮによりリレースイッチ３０８，３１１をそれぞれオンにする。その結果、電源３０１から装置全体（コントローラ１０３、プリンタ装置１０４、及びスキャナ装置１０２）への給電（電力供給）が開始される。プリンタ装置１０４及びスキャナ装置１０２では、それぞれのＣＰＵが、給電の開始に従って初期化動作を開始する。
【００４１】
コントローラ１０３のＣＰＵ２０１は、電源３０１からの給電の開始に従ってハードウェアの初期化を行う。ハードウェアの初期化は、例えば、レジスタの初期化、割り込みの初期化、カーネル起動時のデバイスドライバの登録、及び操作部１０５の初期化等を含む。ＣＰＵ２０１は、次にソフトウェアの初期化を行う。ソフトウェアの初期化は、例えば、各ライブラリの初期化ルーチンの呼び出し、プロセス及びスレッドの起動、プリンタ装置１０４及びスキャナ装置１０２と通信するソフトウェアサービスの起動、及び操作部１０５の描画等を含む。このようなハードウェア及びソフトウェアの初期化が完了すると、ＭＦＰ１０１は通常状態（通常電力状態）へ移行する。
【００４２】
●通常状態の電力制御
次に、ＭＦＰ１０１の通常状態における電力制御の例について説明する。通常状態は、ＭＦＰ１０１内の全てのユニットに給電している状態を含む。また、通常状態は、ＭＦＰ１０１内の一部のユニットに給電しない状態も含む。例えば、印刷が行われていない場合にプリンタ装置１０４に給電しない状態、及び操作部１０５の表示デバイスが点灯しておらず、かつ、ユーザがＭＦＰ１０１の近くにいない場合にスキャナ装置１０２に給電しない状態も、通常状態に含まれうる。プリンタ装置１０４に給電しているがモータ又はポリゴンミラーを動作させない状態又は転写ユニットの温調を行わない状態、及びスキャナ装置１０２に給電しているが読み取りのためのホームポジション検知動作を行わない状態も、通常状態に含まれうる。
【００４３】
●印刷実行時の電力制御
プリンタ装置１０４による印刷の実行時には、以下のような電力制御が行われる。コントローラ１０３のＣＰＵ２０１は、ＰＣ１０９からＬＡＮ１０８を介して受信したデータをメモリ２０３に格納し、当該データを解析する。解析の結果、ＣＰＵ２０１は、印刷機能を実行する場合には、受信したデータに基づいて印刷ジョブを生成し、電源制御部２１３に通知する。電源制御部２１３は、ＣＰＵ２０１からの通知を受信すると、制御信号Ｐ＿ＯＮによりリレースイッチ３１１をオンにすることで、電源３０１から電源ラインＰを通じてプリンタ装置１０４へ給電する。これにより、プリンタ装置１０４が使用可能な状態になる。
【００４４】
ＣＰＵ２０１は、プリンタ装置１０４が使用可能になると、印刷ジョブの実行を開始する。ＣＰＵ２０１は、メモリ２０３に格納されたデータを、バスコントローラ２０４及びバスコントローラ２２４を介して、サブボード２２０のＣＰＵ２２１へ送信する。ＣＰＵ２２１は、受信したデータを、画像処理部２２７及びデバイスコントローラ２２６を介してプリンタ装置１０４へ送信する。
【００４５】
プリンタ装置１０４は、受信したデータに基づいてシートに画像を印刷し、印刷が完了すると、印刷の実行結果をＣＰＵ２０１へ通知する。ＣＰＵ２０１は、印刷の完了に従って、制御信号Ｐ＿ＯＮによりリレースイッチ３１１をオフしてプリンタ装置１０４への給電を停止するよう、電源制御部２１３に指示する。
【００４６】
●スリープ移行時の電力制御
次に、スリープ状態への移行時の、ＭＦＰ１０１の電力制御の例について説明する。スリープ状態は、通常状態よりも消費電力が少ない電力状態である。スリープ状態から通常状態への復帰は、シャットダウン状態（電源オフ状態）から通常状態への起動に要する時間よりも短い時間で行うことが可能である。例えば、ユーザがＭＦＰ１０１を使用（操作）しない状態で一定時間が経過した場合、操作部１０５に配置された節電キーが押下された場合、設定時刻に達した場合、又は印刷ジョブの実行が終了した場合等に、ＭＦＰ１０１はスリープ状態へ移行する。
【００４７】
ＣＰＵ２０１は、スリープ状態に移行する場合、スリープ状態への移行を電源制御部２１３に通知し、コントローラ１０３への給電状態を変更させる。具体的には、電源制御部２１３は、スリープ状態において電源をオフにするブロックに対する給電を停止する。このとき、電源制御部２１３は、スリープ状態からの復帰時におけるソフトウェアの起動の高速化のために、メモリ２０３に格納されたプログラムがスリープ状態でも保持されるよう、メモリ２０３への給電を継続する。なお、本実施形態において、通常状態は第１電力状態の一例であり、スリープ状態（省電力状態）は、第１電力状態より消費電力が少ない第２電力状態の一例である。
【００４８】
●スリープ状態における電力制御
スリープ状態では、ＭＦＰ１０１がスリープ状態から復帰する要因（スリープ復帰要因）に関連する箇所に対して電源３０１から給電される。例えば、コントローラ１０３のメモリ２０３、ＣＰＵ２０１（割り込みコントローラ）、ネットワークコントローラ２１１、ＲＴＣ２１２、及びＵＳＢコントローラ２０８等に対して給電される。また、操作部１０５の節電キー、ＦＡＸ装置１０７の一部、及び各種センサ等に対しても給電される。なお、スリープ状態における給電箇所は、システムに依存して異なりうる。
【００４９】
●スリープ復帰時の電力制御
電源制御部２１３は、スリープ状態においてスリープ復帰要因が生じると、各デバイスへの給電を開始する。スリープ復帰要因の例には、ネットワークコントローラ２１１によるデータの受信、ＦＡＸ装置１０７による着信又はオフフックの検知、ＲＴＣ２１２によるタイマ又はアラームの検知、が含まれる。また、スリープ復帰要因の例には、操作部１０５における節電キーの押下、各種センサによる何らかの検知、及びＵＳＢコントローラ２０８によるＵＳＢデバイスの挿抜又はＵＳＢデバイスとの通信の検知、も含まれる。
【００５０】
電源制御部２１３は、スリープ復帰要因に関連するデバイス（ネットワークコントローラ２１１、ＲＴＣ２１２、及びＵＳＢコントローラ２０８等）から割り込みを受け付けると、割り込みの原因をＣＰＵ２０１へ通知する。ＣＰＵ２０１は、電源制御部２１３からの通知を受信するとスリープ復帰処理を行う。スリープ復帰処理は、ソフトウェアの動作状態を、スリープ状態への移行前の状態に戻すための処理である。
【００５１】
スリープ復帰処理において、ＣＰＵ２０１は、スリープ復帰を電源制御部２１３に通知する。電源制御部２１３は、ＣＰＵ２０１からの通知を受信すると、制御信号Ｖ＿ＯＮをオンにするとともに、制御信号Ｐ＿ＯＮを必要に応じてオンにする。その結果、電源３０１からコントローラ１０３への給電が再開されるとともに、プリンタ装置１０４及びスキャナ装置１０２への給電が必要に応じて再開される。
【００５２】
例えば、スリープ復帰要因としてネットワークコントローラ２１１によるデータ受信イベントが発生した場合、電源制御部２１３は、電源制御信号Ｖ＿ＯＮによりリレースイッチ３０８をオンにする。これにより、コントローラ１０３への給電が再開され、ＣＰＵ２０１がスリープ復帰処理を行う。このとき、プリンタ装置１０４及びスキャナ装置１０２等のデバイスへの給電は行われない場合がある。例えば、ジョブが生成されていない場合、又は各デバイスの情報の取得が不要である場合には、対応するデバイスへの給電は行われなくてもよい。
【００５３】
スリープ状態からの復帰後、例えば印刷ジョブの実行の終了に従ってスリープ状態へ移行する場合、ＣＰＵ２０１は、スリープ移行を電源制御部２１３に通知する。電源制御部２１３は、電源制御信号Ｐ＿ＯＮによりリレースイッチ３１１をオフにすることで、コントローラ１０３以外のデバイスへの給電を停止する。
【００５４】
＜コールドブート時の起動処理＞
次に、図４及び図５を参照して、ＭＦＰ１０１におけるコールドブート時の起動処理について説明する。図４及び図５は、ＭＦＰ１０１におけるコールドブート時の起動処理の手順を示すフローチャートである。図４は、セキュアブート機能が無効又はＭＦＰ１０１がセキュアブート機能を備えていない場合、図５は、セキュアブート機能が有効である場合を示している。なお、本実施形態では、コールドブートとは、電源スイッチ１１０がオフからオンに切り替わることにより、ＭＦＰ１０１が電源オフ状態から起動する処理を指す。
【００５５】
ユーザは、電源スイッチ１１０がオフとなっているＭＦＰ１０１を使用する場合、電源スイッチ１１０をオンに切り替える。これにより、電源３０１からコントローラ１０３への電力供給が開始されると、コントローラ１０３のＣＰＵ２０１は、初期プログラムに基づく起動処理を開始する。
【００５６】
セキュアブート機能が無効である場合、コントローラ１０３のＣＰＵ２０１は、図４の手順による起動処理を開始する。まずＳ４０１で、ＣＰＵ２０１は、ブートＲＯＭ２０２から初期プログラムを読み出して起動することで、各種ハードウェアの初期化を行う。初期プログラムは、ＢＩＯＳ（Basic Input/Output System）に相当する。ＣＰＵ２０１は、ハードウェアの初期化によりメモリ２０３及びフラッシュディスク２０７等のハードウェアが使用可能な状態になると、処理をＳ４０２へ進める。
【００５７】
Ｓ４０２で、ＣＰＵ２０１は、初期プログラムにより、フラッシュディスク２０７からメモリ２０３にＯＳを読み出して起動する。更にＳ４０３で、ＣＰＵ２０１は、ＯＳ上で動作するプログラム（アプリケーション）である通常プログラム（通常アプリケーション）をフラッシュディスク２０７から順にメモリ２０３に読み出して起動する。起動処理における起動対象の全ての通常プログラムの起動が完了すると、ＣＰＵ２０１は、図４の手順による起動処理を終了する。
【００５８】
一方、セキュアブート機能が有効である場合、電源３０１からコントローラ１０３への電力供給が開始されると、コントローラ１０３のＣＰＵ２０１は、図５の手順による起動処理を開始する。まずＳ５０１で、ＣＰＵ２０１は、ブートＲＯＭ２０２から初期プログラムを読み出して起動することで、各種ハードウェアの初期化を行う。ＣＰＵ２０１は、ハードウェアの初期化によりメモリ２０３及びフラッシュディスク２０７等のハードウェアが使用可能な状態になると、処理をＳ５０２へ進める。
【００５９】
Ｓ５０２で、ＣＰＵ２０１は、初期プログラムにより、フラッシュディスク２０７に格納されているＯＳの正当性（改ざんの有無）の検証を行う。当該検証の結果、Ｓ５０３で、ＣＰＵ２０１は、ＯＳが正当である（改ざんされていない）場合には、Ｓ５０４へ処理を進める。Ｓ５０４で、フラッシュディスク２０７からメモリ２０３にＯＳを読み出して起動し、Ｓ５０５へ処理を進める。一方、ＣＰＵ２０１は、ＯＳが正当ではない場合には、Ｓ５０９へ処理を進める。Ｓ５０９で、ＣＰＵ２０１は、起動エラーの通知（画面表示又はビープ音の出力等の異常報知）を行い、それ以降の処理を行わずに起動処理を途中で終了する。
【００６０】
ＯＳが起動すると、Ｓ５０５で、ＣＰＵ２０１は、当該ＯＳにより、フラッシュディスク２０７に格納されている各プログラム（通常プログラム）の正当性の検証を順に行う。なお、上述のように、通常プログラムはＯＳ上で動作するプログラムである。検証の結果、Ｓ５０６で、ＣＰＵ２０１は、検証した通常プログラムが正当である（改ざんされていない）場合には、Ｓ５０７へ処理を進める。なお、Ｓ５０５においてＣＰＵ２０１（ＯＳ）は、ＭＦＰ１０１の起動において、フラッシュディスク２０７に格納されている複数のプログラムのそれぞれの正当性を検証する第１検証手段の一例として機能する。
【００６１】
Ｓ５０７で、ＣＰＵ２０１は、正当であるとの検証結果が得られた通常プログラムを、フラッシュディスク２０７からメモリ２０３に読み出して起動する。一方、ＣＰＵ２０１は、検証した通常プログラムが正当ではない場合には、Ｓ５０６からＳ５０９へ処理を進め、起動エラーの通知（異常報知）を行い、それ以降の処理を行わずに起動処理を途中で終了する。
【００６２】
なお、ＣＰＵ２０１は、フラッシュディスク２０７に格納されている各通常プログラムについて、Ｓ５０５〜Ｓ５０７の処理を実行する。ただし、ＣＰＵ２０１は、Ｓ５０７では、起動処理における起動対象のプログラムのみを起動し、それ以外のプログラム（例えば、後述するような、スリープ復帰処理において起動されるプログラム）を起動しないように動作する。
【００６３】
その後、フラッシュディスク２０７に格納されている全ての通常プログラムが正当であることが確認され、必要なプログラムの起動が完了すると、ＣＰＵ２０１は、Ｓ５０８へ処理を進める。Ｓ５０８で、ＣＰＵ２０１は、ＭＦＰ１０１の通常動作を開始し、図５の手順による起動処理を終了する。
【００６４】
＜スリープ復帰に伴うソフトウェア動作の例＞
次に図６を参照して、スリープ状態からの復帰（スリープ復帰）に伴うＭＦＰ１０１のソフトウェア動作の例について説明する。図６は、スリープ復帰の前後における、メモリ２０３及びフラッシュディスク２０７に保持されている各プログラムの動作状態の例を示す図である。
【００６５】
図６の例において、スリープ移行前のメモリ２０３には、スリープ移行前に動作中のプログラムＡ〜Ｃが格納されている。ＣＰＵ２０１がフラッシュディスク２０７からプログラムＡ〜Ｃをメモリ２０３に読み出して実行（即ち、プログラムＡ〜Ｃを起動）することにより、ＭＦＰ１０１（ＣＰＵ２０１）上でプログラムＡ〜Ｃが動作している。一方、フラッシュディスク２０７には、プログラムＤと、ＭＦＰ１０１がスリープ状態から通常状態に復帰した後に動作を開始するプログラムＥ，Ｆとが、起動されていない状態で格納されている。
【００６６】
ここで、プログラムＡ〜Ｄは、例えば、コピー機能又はスキャン機能等を実行するためのプログラム、又は、起動対象のプログラム（通常プログラム又はアプリケーション）の正当性を検証するための検証プログラムである。本実施形態における検証プログラムは、ＭＦＰ１０１のスリープ状態からの復帰を条件として起動されるプログラムの正当性を検証するプログラムである。なお、図６では、フラッシュディスク２０７に格納されているプログラムのうち、起動中のプログラム（メモリ２０３に保持されているプログラム）の図示を省略している。
【００６７】
また、プログラムＥ，Ｆは、フラッシュディスク２０７に格納されている複数の通常プログラム（通常アプリケーション）のうちで、スリープ復帰を条件として動作する（起動される）プログラム（アプリケーション）である。以下では、これらのプログラムは「復帰後プログラム」又は「復帰後アプリケーション」とも称される。復帰後プログラムの例として、ＦＡＸ送信ジョブ又は印刷ジョブ等のジョブを指定時間に実行する機能を実現するためのプログラムが挙げられる。
【００６８】
上述の機能が使用される場合、スリープ移行前にスリープ状態から復帰する時間が指定時間として予め設定される。指定時間が近づくと、ＭＦＰ１０１がスリーブ状態から復帰し、復帰後プログラムとして、ジョブを実行するためのプログラムが起動される。例えば、ＦＡＸ送信ジョブを指定時間に実行する場合、復帰後プログラムとしてＦＡＸ送信プログラムが起動されることで、ＦＡＸ送信プログラムがＦＡＸ送信ジョブを実行する。また、印刷ジョブを指定時間に実行する場合、復帰後プログラムとして印刷プログラムが起動されることで、印刷プログラムが印刷ジョブを実行する。
【００６９】
ＭＦＰ１０１がスリープ状態に移行すると、メモリ２０３に格納されていたプログラムＡ〜Ｃは、前述のように、スリープ復帰時におけるソフトウェアの起動の高速化のために、スリープ状態においてもメモリ２０３に保持される。これは、スリープ状態において電源３０１からメモリ２０３への給電を継続することによって実現される。これにより、プログラムＡ〜Ｃは、スリープ状態において動作はしていないもののメモリ２０３に保持され続ける。
【００７０】
その後、スリープ状態においてスリープ復帰要因が発生すると、前述のように、電源制御部２１３は、ＣＰＵ２０１にスリープ復帰処理を実行させる。スリープ復帰処理の実行中に、ＣＰＵ２０１は、スリープ復帰を条件として動作するプログラムＥ，Ｆを、フラッシュディスク２０７からメモリ２０３に読み出して実行（起動）する。このようにして、プログラムＥ，Ｆが、スリープ復帰を条件として起動され、ＭＦＰ１０１（ＣＰＵ２０１）上で動作を開始する。
【００７１】
なお、ＣＰＵ２０１は、スリープ復帰の際に、スリープ復帰要因に関連する復帰後プログラムのみを起動してもよい。その場合、例えば、指定時刻にＦＡＸ送信ジョブを実行するためのスリープ復帰が行われる場合には、復帰後プログラムとしてＦＡＸ送信プログラムが起動される。また、指定時刻に印刷ジョブを実行するためのスリープ復帰が行われる場合には、復帰後プログラムとして印刷プログラムが起動される。
【００７２】
上述のようにフラッシュディスク２０７に予め格納されているプログラムＡ〜Ｆは全て、セキュアブート機能によってコールドブート時に正当性の検証が行われる。その後、コールドブート時の起動対象のプログラム（例えば、図６のプログラムＡ〜Ｃ）が起動される。しかし、スリープ復帰を条件として動作する復帰後プログラムは、コールドブート時には起動されず、コールドブートが行われてからＭＦＰ１０１がスリープ状態に移行するまでの間、フラッシュディスク２０７からメモリ２０３に読み出されない。
【００７３】
スリープ状態においては、フラッシュディスク２０７に格納されているプログラムが、フラッシュディスク２０７自体の交換又はプログラムの改ざんにより、不正に変更される可能性がある。スリープ状態において復帰後プログラムが不正に変更された場合、スリープ復帰後にそのようなプログラムが実行されると、当該プログラムが意図されていない動作を行う可能性がある。また、フラッシュディスク２０７の経年劣化により記憶内容が変化して、格納されている復帰後プログラムが破損した場合にも、スリープ復帰後に当該プログラムが意図されていない動作を行う可能性がある。
【００７４】
そこで、本実施形態では、ＣＰＵ２０１（検証プログラム）は、ＭＦＰ１０１がスリープ状態から復帰する際に、起動対象の復帰後プログラムの正当性の検証を行い、正当であること確認された復帰後プログラムを起動する。その際、ＣＰＵ２０１は、コールドブート時のようにフラッシュディスク２０７に格納されている全てのプログラムを検証対象とせずに、一部のプログラム（即ち、起動対象の復帰後プログラム）のみを検証対象として、正当性の検証を行う。
【００７５】
即ち、ＣＰＵ２０１（検証プログラム）は、フラッシュディスク２０７に格納されている複数のプログラムのうち、ＭＦＰ１０１がスリープ状態から通常状態に復帰するための復帰処理の実行中に起動されるプログラムの検証を行う。このように、フラッシュディスク２０７に格納されている複数のプログラムのうち、復帰処理の実行中に起動されるプログラムのみ検証を行うことで、スリープ状態からの復帰に要する時間が、プログラムの検証に起因して不必要に長くなることを防止できる。
【００７６】
なお、スリープ復帰処理の実行中に（スリープ復帰を条件として）起動されなかったプログラム（図６の例ではプログラムＤ）が、スリープ復帰の完了後に起動される際には、検証プログラムが当該プログラムの検証を行ってもよい。これにより、スリープ復帰の完了後に起動されるプログラムがスリープ状態の間に改ざんされていたとしても、当該プログラムが実行されて意図しない動作を行うことを防止できる。
【００７７】
＜スリープ復帰処理＞
次に、図７を参照して、ＭＦＰ１０１におけるスリープ復帰処理について説明する。図７は、ＭＦＰ１０１におけるスリープ復帰処理の手順を示すフローチャートである。図７の手順による処理は、ＭＦＰ１０１がスリープ状態へ移行した後に、ＣＰＵ２０１によって実行される。
【００７８】
まずＳ７０１で、ＣＰＵ２０１は、スリープ状態においてスリープ復帰要因が発生したか否かを判定し、スリープ復帰要因が発生するとＳ７０２へ処理を進める。上述のように、スリープ復帰要因は、例えば、ネットワークコントローラ２１１によるデータ受信イベントによる割り込み、又はＲＴＣ２１２からの割り込みである。Ｓ７０２で、ＣＰＵ２０１は、ソフトウェアの動作状態を、スリープ状態への移行前の状態に戻すためのスリープ復帰処理の実行を開始する。
【００７９】
次にＳ７０３で、ＣＰＵ２０１は、メモリ２０３に保持されている検証プログラムに対して、スリープ状態からの復帰を示す通知（復帰通知）を行う。検証プログラムは、フラッシュディスク２０７に格納された複数のプログラムのうちの１つであり、ＭＦＰ１０１のスリープ状態への移行前に起動され、メモリ２０３に格納される。図６の例では、スリープ状態への移行前に起動されているプログラムＡ〜Ｃのうちの１つに相当する。検証プログラムは、ＭＦＰ１０１がスリープ状態に移行する際又は直前に検証プログラムが起動されてもよいし、ＭＦＰ１０１のコールドブート時に（ＭＦＰ１０１が起動する際に）検証プログラムが起動されてもよい。これにより、スリープ状態において検証プログラムはメモリ２０３に保持され続ける。
【００８０】
ここで、本実施形態では、ＭＦＰ１０１の電力状態を制御（管理）する管理プログラムが、ＭＦＰ１０１のコールドブート時に起動され、ＣＰＵ２０１上でプロセスの１つとして動作している。上述の復帰通知は、管理プログラムから検証プログラムに対して送られる。復帰通知には、例えば、検証プログラムによる検証対象の復帰後プログラム（即ち、起動対象の復帰後プログラム）を示す情報が含まれる。管理プログラムは、スリープ復帰要因に基づいて、フラッシュディスク２０７又はＨＤＤ１０６（不揮発性の記憶装置）に格納されているプログラム（通常プログラム）のうち、検証対象の復帰後プログラムを特定する。更に、管理プログラムは、特定した復帰後プログラムを検証プログラムに通知する。あるいは、管理プログラムから検証プログラムに対してスリープ復帰要因を通知し、検証プログラムがスリープ復帰要因に基づいて検証対象の復帰後プログラムを特定してもよい。
【００８１】
このように、本例では、フラッシュディスク２０７に格納されている複数のプログラムに、スリープ復帰を条件として起動されることが設定された１つ以上の復帰後プログラムが含まれている。更に、当該１つ以上のプログラムのうちで、スリープ復帰要因に基づいて検証対象のプログラムが特定される。例えば、指定時刻にＦＡＸ送信ジョブを実行するためのスリープ復帰が行われる場合には、ＦＡＸ送信プログラムが検証対象として特定される。また、指定時刻に印刷ジョブを実行するためのスリープ復帰が行われる場合には、印刷プログラムが検証対象として特定される。即ち、フラッシュディスク２０７に格納されている複数のプログラムのうちで、スリープ復帰要因に関連するジョブを実行するためのプログラムが、検証対象のプログラムとして特定される。
【００８２】
Ｓ７０４で、ＣＰＵ２０１（検証プログラム）は、フラッシュディスク２０７に格納されている、検証対象として特定された復帰後のプログラム（図６の例ではプログラムＥ，Ｆ）の正当性を順に検証する。このようにして、ＣＰＵ２０１は、フラッシュディスク２０７に格納されている複数のプログラムのうちで、ＭＦＰ１０１がスリープ状態から復帰するスリープ復帰要因に基づいて特定された検証対象の復帰後プログラムの検証を行う。
【００８３】
Ｓ７０５で、ＣＰＵ２０１は、復帰後プログラムの正当性の検証結果に基づいて、復帰後プログラムが正当であることが確認された場合にはＳ７０６へ処理を進め、正当ではないことが確認された場合にはＳ７０９へ処理を進める。なお、Ｓ７０４においてＣＰＵ２０１（検証プログラム）は、スリープ状態からの復帰を条件として起動されるプログラムの正当性を検証する第２検証手段の一例として機能する。
【００８４】
Ｓ７０９で、ＣＰＵ２０１は、スリープ復帰エラーの通知（画面表示又はビープ音の出力等の異常報知）を行い、それ以降の処理を行わずにスリープ復帰処理を途中で終了する。このように、ＣＰＵ２０１は、検証対象のプログラムが正当ではないとの検証結果が得られると、スリープ復帰処理の実行を停止させる。これにより、スリープ復帰の完了後にそのようなプログラムが実行されて意図しない動作を行うことを防止できる。一方、Ｓ７０６で、ＣＰＵ２０１は、正当であることが確認された復帰後プログラムを起動し、Ｓ７０７へ処理を進める。なお、Ｓ７０６における復帰後プログラムの起動は、メモリ２０３内に保持されている、検証プログラム以外の他のプログラムによって実行されてもよい。
【００８５】
Ｓ７０７で、ＣＰＵ２０１は、検証対象の全ての復帰後プログラムの検証及び起動が完了したか否かを判定し、完了していなければＳ７０４に戻り、次の検証対象の復帰後プログラムの正当性の検証を行う。検証対象の全ての復帰後プログラムの検証及び起動が完了すると、ＣＰＵ２０１は、Ｓ７０７からＳ７０８へ処理を進める。Ｓ７０８で、ＣＰＵ２０１は、ＭＦＰ１０１の通常動作を開始し、図７の手順による処理を終了する。
【００８６】
なお、本実施形態では、ＣＰＵ２０１（検証プログラム）は、スリープ復帰処理の実行中に起動される復帰後プログラムを検証対象として、正当性の検証を行っている。なお、スリープ復帰処理は、例えば、上述の管理プログラムが、スリープ状態からの復帰が開始されてから、メモリ２０３に保持されている全てのプログラムに対して復帰通知を行い、全てのプログラムから応答を受信するまでの処理として定義されてもよい。
【００８７】
以上説明したように、本実施形態では、ＣＰＵ２０１は、ＭＦＰ１０１の起動において、フラッシュディスク２０７に格納されている複数のプログラムのそれぞれの正当性を検証する。また、ＣＰＵ２０１は、ＭＦＰ１０１がスリープ状態へ移行した後、スリープ状態から復帰する際に、フラッシュディスク２０７に格納されている複数のプログラムのうち、スリープ状態からの復帰を条件として起動されるプログラムの正当性を検証する。その際、ＣＰＵ２０１は、フラッシュディスク２０７に格納されている複数のプログラムのうちで、スリープ復帰要因に基づいて特定された検証対象のプログラムの検証を行ってもよい。
【００８８】
このように、本実施形態のＭＦＰ１０１では、コールドブート時には、フラッシュディスク２０７に格納されている複数のプログラムの全ての検証を行う。これに対して、スリープ状態からの復帰時には、スリープ復帰を条件として起動される、上記の複数のプログラムのうちの一部のプログラム（スリーブ復帰処理の実行中に起動されるプログラム）のみ検証を行う。これにより、ＭＦＰ１０１がスリープ状態（省電力状態）から復帰する際に、スリープ復帰に要する時間が不必要に長くなることなくプログラムの検証を行うことが可能になる。
【００８９】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９０】
発明は上述の実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。したがって、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００９１】
１０１：ＭＦＰ、１０２：スキャナ装置、１０３：コントローラ、１０４：プリンタ装置、１０５：操作部、２００：メインボード、２０１：ＣＰＵ、２０３：メモリ、２０７：フラッシュディスク、２１１：ネットワークコントローラ、２１３：電力制御部、２２０：サブボード、２２１：ＣＰＵ
【図１】
2020187711.tif 000003
【図２】
2020187711.tif 000004
【図３】
2020187711.tif 000005
【図４】
2020187711.tif 000006
【図５】
2020187711.tif 000007
【図６】
2020187711.tif 000008
【図７】
2020187711.tif 000009