コンピューティングデバイスにファームウェアモジュールをプロビジョニングする方法であって、前記コンピューティングデバイスを第1の高電力消費状態から第2の低電力消費状態へと遷移させる場合、プレブート期間において利用可能な1以上のファームウェア機能を含むファームウェア環境を再インスタンス化する段階と、ファームウェアボリューム上の暗号署名が承認されるか否かを、前記ファームウェア環境によって判断する段階と、前記ファームウェアボリュームのマニフェストによって要求されている前記コンピューティングデバイスのハードウェアリソースが利用可能か否かを、前記ファームウェア環境によって判断する段階と、前記ファームウェアボリュームの少なくとも1つのファームウェアモジュールが前記ファームウェア環境のインストールされたファームウェアに準拠しているか否かを、前記ファームウェア環境によって判断する段階と、前記少なくとも1つのファームウェアモジュールによって利用されるリソースを収容するスペースをメモリ内に確保する段階と、前記第2の低電力消費状態にある前記コンピューティングデバイスで、前記少なくとも1つのファームウェアモジュールを実行する段階とを備える方法。前記コンピューティングデバイスが前記第1の高電力消費状態にある場合、前記コンピューティングデバイスに前記ファームウェアボリュームをダウンロードする段階をさらに備える請求項1に記載の方法。前記ファームウェアボリュームは、ヘッダと、前記ファームウェアボリュームの内容をカバーする暗号署名と、前記少なくとも1つのファームウェアモジュールによって利用されるべき前記コンピューティングデバイスのハードウェアリソースを宣言するマニフェストと、前記少なくとも1つのファームウェアモジュールとを含む請求項1または2に記載の方法。前記少なくとも1つのファームウェアモジュールは、1以上のEFIS3DXEIPLファームウェアドライバのためのバイナリコードを含む請求項3に記載の方法。前記ファームウェア環境は、前記コンピューティングデバイスの製造時に偽に設定されるS3DXEIPLイネーブルフラグを含み、前記方法はさらに、前記暗号署名が承認され、前記ハードウェアリソースが利用可能で、前記少なくとも1つのファームウェアモジュールが準拠している場合、前記S3DXEIPLイネーブルフラグを真に設定する段階を備える請求項4に記載の方法。続くS3レジュームにおいて、前記S3DXEIPLイネーブルフラグが真の場合、オペレーティングシステムレジュームベクトルに制御を渡す前に、前記S3DXEIPLおよび対応付けられているファームウェアモジュールを前記ファームウェアボリュームから開始する段階をさらに備える請求項5に記載の方法。前記ファームウェアボリュームは、前記コンピューティングデバイスの製造者以外によって、提供されるとともに署名され、前記ファームウェアボリュームは、ユーザに出荷された後に、前記コンピューティングデバイスにインストールされる請求項1から6のいずれか一項に記載の方法。前記少なくとも1つのファームウェアモジュールの実行に関するステータス値を、前記コンピューティングデバイスのオペレーティングシステムに戻すステータス構造を持つシステムテーブルエントリを作成する段階をさらに備える請求項1から7のいずれか一項に記載の方法。プロセッサと、前記プロセッサによって操作されるファームウェア環境とを備えるコンピューティングデバイスであって、前記ファームウェア環境は、第1の電力レベルを消費する動作状態へと前記コンピューティングデバイスをブートさせるために用いられる複数のファームウェア機能を含み、前記ファームウェア環境はさらに、前記コンピューティングデバイスが前記動作状態から前記第1の電力レベルよりも低い第2の電力レベルを消費するスリープ状態へと遷移する場合、前記コンピューティングデバイスをブートさせるために用いられる前記複数のファームウェア機能の少なくともサブセットを含むように再インスタンス化され、前記ファームウェア環境は、再インスタンス化されると、ファームウェアボリューム上の暗号署名が承認されるか否かを判断し、前記ファームウェアボリュームのマニフェストによって要求されている前記コンピューティングデバイスのハードウェアリソースが利用可能か否かを判断し、前記ファームウェアボリュームの少なくとも1つのファームウェアモジュールが前記ファームウェア環境のインストールされたファームウェアに準拠しているか否かを判断し、前記少なくとも1つのファームウェアモジュールによって利用されるリソースを収容するスペースをメモリ内に確保し、前記第2の電力レベルを消費するスリープ状態にある前記コンピューティングデバイスで、前記少なくとも1つのファームウェアモジュールを実行するコンピューティングデバイス。前記プロセッサは、前記コンピューティングデバイスが前記第1の電力レベルを消費する動作状態にある場合、前記ファームウェアボリュームを前記コンピューティングデバイスにダウンロードする請求項9に記載のコンピューティングデバイス。前記ファームウェアボリュームは、ヘッダと、前記ファームウェアボリュームの内容をカバーする暗号署名と、前記少なくとも1つのファームウェアモジュールによって利用されるべき前記コンピューティングデバイスのハードウェアリソースを宣言するマニフェストと、前記少なくとも1つのファームウェアモジュールとを含む請求項9または10に記載のコンピューティングデバイス。前記少なくとも1つのファームウェアモジュールは、1以上のEFIS3DXEIPLファームウェアドライバのためのバイナリコードを含む請求項11に記載のコンピューティングデバイス。前記ファームウェア環境は、前記コンピューティングデバイスの製造時に偽に設定されるS3DXEIPLイネーブルフラグを含み、前記ファームウェア環境は、前記暗号署名が承認され、前記ハードウェアリソースが利用可能で、前記少なくとも1つのファームウェアモジュールが準拠している場合、前記S3DXEIPLイネーブルフラグを真に設定する請求項12に記載のコンピューティングデバイス。続くS3レジュームにおいて、前記S3DXEIPLイネーブルフラグが真の場合、前記ファームウェア環境は、オペレーティングシステムレジュームベクトルに制御を渡す前に、前記S3DXEIPLおよび対応付けられているファームウェアモジュールを前記ファームウェアボリュームから開始する請求項13に記載のコンピューティングデバイス。前記ファームウェアボリュームは、前記コンピューティングデバイスの製造者以外によって、提供されると共に署名され、前記ファームウェアボリュームは、ユーザに出荷された後に、前記コンピューティングデバイスにインストールされる請求項9から14のいずれか一項に記載のコンピューティングデバイス。前記ファームウェア環境は、前記少なくとも1つのファームウェアモジュールの実行に関するステータス値を、前記コンピューティングデバイスのオペレーティングシステムに戻すステータス構造を持つシステムテーブルエントリを作成する請求項9から15のいずれか一項に記載のコンピューティングデバイス。コンピューティングデバイスに、前記コンピューティングデバイスを第1の高電力消費状態から第2の低電力消費状態へと遷移させる場合、プレブート期間において利用可能な1以上のファームウェア機能を含むファームウェア環境を再インスタンス化する手順と、ファームウェアボリューム上の暗号署名が承認されるか否かを前記ファームウェア環境によって判断する手順と、前記ファームウェアボリュームのマニフェストによって要求されている前記コンピューティングデバイスのハードウェアリソースが利用可能か否かを前記ファームウェア環境によって判断する手順と、前記ファームウェアボリュームの少なくとも1つのファームウェアモジュールが前記ファームウェア環境のインストールされたファームウェアに準拠しているか否かを前記ファームウェア環境によって判断する手順と、前記少なくとも1つのファームウェアモジュールによって利用されるリソースを収容するスペースをメモリ内に確保する手順と、前記第2の低電力消費状態にある前記コンピューティングデバイスで、前記少なくとも1つのファームウェアモジュールを実行する手順とを実行させて、前記コンピューティングデバイスにファームウェアモジュールをプロビジョニングするためのプログラム。前記コンピューティングデバイスが前記第1の高電力消費状態にある場合、前記コンピューティングデバイスに前記ファームウェアボリュームをダウンロードする手順を前記コンピューティングデバイスにさらに実行させる請求項17に記載のプログラム。前記ファームウェアボリュームは、ヘッダと、前記ファームウェアボリュームの内容をカバーする暗号署名と、前記少なくとも1つのファームウェアモジュールによって利用されるべき前記コンピューティングデバイスのハードウェアリソースを宣言するマニフェストと、前記少なくとも1つのファームウェアモジュールとを含む請求項17または18に記載のプログラム。前記少なくとも1つのファームウェアモジュールは、1以上のEFIS3DXEIPLファームウェアドライバのためのバイナリコードを含む請求項19に記載のプログラム。前記ファームウェア環境は、前記コンピューティングデバイスの製造時に偽に設定されるS3DXEIPLイネーブルフラグを含み、前記暗号署名が承認され、前記ハードウェアリソースが利用可能で、前記少なくとも1つのファームウェアモジュールが準拠している場合、前記S3DXEIPLイネーブルフラグを真に設定する手順を前記コンピューティングデバイスにさらに実行させる請求項20に記載のプログラム。続くS3レジュームにおいて、前記S3DXEIPLイネーブルフラグが真の場合、オペレーティングシステムレジュームベクトルに制御を渡す前に、前記S3DXEIPLおよび対応付けられているファームウェアモジュールを前記ファームウェアボリュームから開始する手順を前記コンピューティングデバイスにさらに実行させる請求項21に記載のプログラム。前記少なくとも1つのファームウェアモジュールの実行に関するステータス値を、前記コンピューティングデバイスのオペレーティングシステムに戻すステータス構造を持つシステムテーブルエントリを作成する手順を前記コンピューティングデバイスにさらに実行させる請求項17から22のいずれか一項に記載のプログラム。本発明の実施形態例は、これらに限定されないが、コンピューティングデバイスのファームウェア環境において、当該コンピューティングデバイスが低電力消費状態であるスリープモードを維持している場合、当該コンピューティングデバイスのオペレーティングシステムとは別個に、ファームウェアモジュールをプロビジョニングする方法および装置を含む。実施形態例のさまざまな側面は、当業者間で研究内容を伝達するべく一般的に利用している用語を用いて説明される。しかし、説明する側面のうち一部のみを利用して他の実施形態を実施し得ることは当業者には明らかであろう。説明の便宜上、具体的な数字、材料および構成を記載して、実施形態例を完全に理解されたい。しかし、具体的且つ詳細な内容を利用することなく別の実施形態を実施し得ることは当業者には明らかであろう。また、公知の特徴は、実施形態例をあいまいにすることを避けるべく、説明を省略しているか、または、簡潔に説明している。さらに、さまざまな処理を、実施形態例を最も理解しやすい順序で、複数の独立した処理として、順次説明する。しかし、説明の順序は、これらの処理が必ず所定順序で行われなければならないことを意味するものと解釈されるべきではない。具体的には、これらの処理は、説明する順序で実行する必要はない。一実施形態においてという表現を何度も用いる。この表現は概して、同じ実施形態を意味するものではない。しかし、同じ実施形態を意味している場合もある。備える、有する、含むといった用語は、文脈からそうでないことが分かる場合を除き、同義語である。図1は、さまざまな実施形態に係る、コンピューティングデバイスがウェイクモードからスリープモードへと遷移する様子を時系列で説明する図である。本明細書で説明されるように、さまざまな実施形態において、コンピューティングデバイスのファームウェアは、コンピューティングデバイスがスリープモードである間に、処理を実行する構成を持つとしてよい。ファームウェアは、オペレーティングシステムとは別個にこの処理を実行することができる。この結果、機能が向上するとともに、コンピューティングデバイスの総消費電力が小さくなる。実施形態では、コンピューティングデバイスまたはシステムは、デスクトップコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、ネットワークサーバ、シンクライアント、または、ファームウェアを利用する他のコンピューティングデバイスであってよい。実施形態によると、ファームウェアは、レガシーベーシックインプット/アウトプットシステムBIOS、ユニファイドエクステンシブルファームウェアインターフェース例えば、UEFI仕様、バージョン2.0、2006に準拠しているか、エクステンシブルファームウェアインターフェースEFIに準拠しているか例えば、EFI仕様、バージョン1.10、2004、または、その他のファームウェアであってよい。尚、EFIは、コンピューティングデバイスファームウェアと、オペレーティングシステムまたは他のアプリケーション環境との間の抽象的なプログラムインターフェースを説明する公共の産業仕様である。例えば、EFIによって、ファームウェアを、ファームウェアモジュールとして、さまざまなリソースから、または、コンピュータネットワークを介して1以上のコンピュータシステムから、ロードすることができるようになる。リソースとしては、フラッシュメモリデバイス、オプションのROMリードオンリーメモリ、さまざまな持続的ストレージデバイス例えば、ハードディスク、CD-ROMコンパクトディスクリードオンリーメモリ等がある。ユニファイドEFIUEFIアーキテクチャに関するさらなる情報については、公共のインターネットのwww-uefi-org本文献では、意図せずハイパーリンクが組み込まれないように、ピリオドに代えてハイフンを使用しているにおいて入手可能であるとしてよい。このように、本明細書で説明するように、さまざまな実施形態において、スリープモードに遷移すると、コンピューティングデバイスは、UEFI、または、プレブート期間に利用可能な1以上のファームウェア機能を含む他のファームウェア環境を再インスタンス化するとしてよい。実施形態によると、再インスタンス化されたファームウェア環境によって、ファームウェア環境は、通常はコンピューティングデバイスのOSが実行する電力管理機能を実行できるようになるとしてよい。ある実施形態によると、再インスタンス化されたファームウェア環境は、新しいファームウェアモジュールのプロビジョニング、または、既存のファームウェアモジュールの更新等を、OSの関与無しに実行可能とするとしてよい。ある実施形態によると、新しくインストールされたファームウェアまたは新しく更新されたファームウェアモジュールは、コンピューティングデバイスについての処理を実施するべく実行されるとしてよい。図1を参照しつつ説明すると、図示している実施形態では、111において、コンピューティングデバイスがファームウェア環境ファームウェアとも呼ぶによってプレブート期間に初期化されるとしてよい。さまざまな実施形態によると、以下でもさらに詳細に説明するが、112において、このプレブート期間において、ファームウェアは、メモリの一部分またはメールボックスを、そこからファームウェアが後にデータを収集するものとして、確保するとしてよい。プレブート初期化が完了すると、113において、ブート処理を継続して行うべく、コンピューティングデバイスのオペレーティングシステムOSに制御が引き渡されるとしてよい。OSまたはシステムのブートの後、OSは、115において、機能モードまたはウェイクモードでコンピューティングデバイスを実行または動作させるとしてよい。ウェイクモードには、通常動作に対応付けられる高電力消費状態が通常含まれる。コンピューティングデバイスは、117までウェイクモードで動作し続けるとしてよい。117において、スリープイベントによってコンピューティングデバイスはスリープモードS3に遷移する。スリープモードS3は、低電力消費状態を含む。上述したように、スリープイベントは、さまざまなイベントを含むとしてよく、例えば、ユーザによる選択またはユーザがアクティブでないことなどがある。ある程度時間が経過した後、さまざまな実施形態において、コンピューティングデバイスはウェイクイベントを受信するとしてよい。一部の実施形態によると、ウェイクイベントは、電子メール、コンフィグレーションディレクティブ、または、その他のネットワーク送信等のネットワークイベントを含むとしてよい。他の実施形態では、ウェイクイベントは、入力デバイスでの入力を感知すること、コンピューティングデバイスのキーボードに触ること、特定の種類のネットワークパケットを受信すること等であってよい。ウェイクイベントの処理は、システム管理割り込みSMI、制御ライン変更、レジスタフラグまたはその他の構造体によって開始されるとしてよい。また、ウェイクイベントの処理は、コンピューティングデバイスのチップセットによって開始されるとしてよい。さらに、一部のウェイクイベントは、OSによる処理のために、コンピューティングデバイスの電源を入れる処理をトリガするとしてよい。他のウェイクイベントは、本開示の実施形態に関して後述するが、コンピューティングデバイスがスリープモードの間に、ファームウェアによって処理されるとしてよい。したがって、さまざまな実施形態において、ファームウェアは、コンピューティングデバイスのOSとは別個に動作し、ウェイクイベントが、コンピューティングデバイス全体を第1の高電力消費状態に戻さなくても処理できるか否かを判断するとしてよい。ウェイクイベントをファームウェアで処理することが出来ず、OSがウェイクイベントを処理する場合、121において、ディスクを回転させて、モニタをオンに制御して、コンピューティングデバイスを完全ウェイクモードに戻すとしてよい。処理フローはこの後、115に戻るとしてよい。115において、OSはウェイクモードでコンピューティングデバイスを実行または動作させる。しかし、OSに別個に、そして、コンピューティングデバイス全体を第1の高電力消費状態に戻すことなくウェイクイベントを処理可能であるとファームウェアが判断すると、ファームウェアはウェイクイベントの処理を実行することができる。コンピューティングデバイスはこうして、119において、スリープ状態を継続するとしてよい。一部の実施形態によると、ファームウェアは、ウェイクイベントに応じて、そして、コンピューティングデバイス全体をウェイク状態にすることなく、1以上のハードウェアコンポーネントまたはハードウェアデバイスをウェイク状態にして、ウェイクイベントに対応するタスクについて対処または完了させるとしてよい。さらに、ファームウェアは、イベントの処理が完了した後、ハードウェアコンポーネントを、第2の低電力消費状態を含むスリープモードに戻すとしてよい。尚、実施形態において、123では、OSが1以上のハードウェアコンポーネントをスリープモードに遷移させる方法に関するデータのモニタリングおよび収集を、例えば、フィルタドライバ等のファームウェアコンポーネントが開始するとしてよい。さまざまな実施形態において、フィルタドライバは、収集したデータを、112においてプレブート期間中にファームウェアが確保したにメールボックスまたはメモリの一部に保存するとしてよい。ファームウェアは後に独立して、収集したデータを利用して、ウェイクイベントに対処する必要がある1以上のハードウェアコンポーネントをスリープモードへ、および/または、スリープモードから遷移させるとしてよい。ある実施形態によると、ウェイクイベントが発生すると、エンドユーザに出荷された後にコンピューティングデバイスにプロビジョニングされたファームウェアモジュールを実行することができるとしてよい。続いて、図2Aおよび図2Bは、本開示のさまざまな実施形態に係る、OSとは別個に、ウェイクイベントを処理する方法の一例を示すフローチャートである。図2Aに示すブロックは、ある実施形態によると、ファームウェアによって実行されるとしてよい。図2Bに示すブロックは、ある実施形態によると、OSによって実行される。ファームウェアによって実行されるという表現は、より複雑なコンピューティングデバイスのやり取りを短くまとめたものであることは当業者には明らかであろう。シングルプロセッサシステムにおいて、例えば、命令の実行は、メインプロセッサ、つまり、中央演算処理装置CPUによって実行されるとしてよい。尚、ファームウェアによって実行されるという表現は、非オペレーティングシステム命令を、プロセッサに結合されている不揮発性メモリストアファームウェアからフェッチして、プロセッサで実行することを意味するとしてもよい。プロセッサは、OSをロードする前に、ファームウェアに対するアクセスを持つ。このため、ブート命令は通常、ファームウェアブートブロックに格納されているとしてよい。さらに、一部の実施形態では、完全ブートブロックはリモートに設けられているとしてよく、ローカルブートブロックが、完全ブートブロックのリモート位置に対するポインタを含むとしてよい。図2Aおよび図2Bの実施形態では、ブロック201において、コンピューティングデバイスまたはコンピューティングシステムの電源がオンになるとしてよい。コンピューティングプラットフォームは、ブロック203において、ブートブロックファームウェアによって予備的に初期化されるとしてよい。ファームウェアの他の部分は、ブートブロックの外部に設けられており、予備初期化において役割を持つとしてよい。尚、ブートブロックは通常、早期メモリ初期化および中央プロセッサ初期化等の初期化の早期段階を担当する。予備初期化はさらに、メモリの特定および再設定、コンピューティングデバイスに結合されているコンポーネントおよびデバイスの特定等を含むとしてよい。図示している実施形態では、予備初期化または直後の処理の一環として、ファームウェアが複数のポリシークエスチョンを開始して、コンピューティングデバイスのステータスを決定するとしてよい。ブロック204において、ファームウェアは、スリープイネーブルアクティビティがイネーブルされているか否かを判断するとしてよい。スリープイネーブルアクティビティがイネーブルされている場合、ブロック206に進む。スリープイネーブルアクティビティがイネーブルされていない場合、ブロック230に進む。実施形態では、ファームウェアは、ブロック206において、コンピューティングデバイスが、ウェイクイベント例えば、少なくとも1つの実施形態においてネットワークウェイクイベントに起因して、ウェイク状態になるか、または、スリープモードから遷移するか否かについて質問するとしてよい。さまざまな実施形態において、コンピューティングデバイスがネットワークウェイクイベントに起因してウェイク状態にならずに単に起動処理を完了すると、プレブートプロセスはブロック208に続くとしてよい。ブロック208において、ファームウェアは、後に必要になる画像をキャッシュするとしてよい。例えば、スリープモード例えば、S3に必要なデータをキャッシュするとしてよい。続いて、ブロック210において、ファームウェアは、このプレブート期間において、コンピューティングデバイスの有形コンピュータ可読格納媒体においてメモリの一部を確保するとしてよい。ある実施形態によると、メモリの一部は、ファームウェアのメールボックスとして機能するとしてよい。尚、ファームウェアが能動的にこのようなリソースを自身で確保しない限り、コンピューティングデバイスのリソースは通常は、OSの制御下にある。さらに、さまざまな実施形態において、以下で説明するが、OSが1以上のハードウェアコンポーネントをスリープ状態に遷移させる方法に関する入出力I/Oデータは、例えば、OSのモニタ素子によって、ファームウェアによって後にアクセスされるべくメールボックスに保存されるとしてよい。実施形態において、既にキャッシュした画像をファームウェアが再度初期化できるような十分なメモリが確保されているとしてよい。図示した実施形態では、次のブロック212において、ファームウェアは通常のブートプロセスを継続し、OSは制御を与えられて開始されるとしてよい。図2Bのブロック214において、OSは、例えば、フィルタドライバ等のコンポーネントをインストールするとしてよい。以下で分かるが、フィルタドライバは、ハードウェアコンポーネントをスリープモードに遷移させることに関するI/Oデータを収集するモニタリングコンポーネントとして機能するとしてよい。通常のOS処理をブロック216で継続して行うとしてよい。判断ブロック218において、入力が所定期間にわたって受信されていない場合、または、他のコンピューティングデバイスポリシーが指定する状態の場合、OSはコンピューティングデバイスをスリープモードに遷移させるとしてよい。例えば、コンピューティングデバイスがスリープモードに遷移することをポリシーが指示していない場合、OS処理をブロック216で継続して実行する。別の場合、判断ブロック218に戻って、コンピューティングデバイスがスリープモードに遷移すると、OSは判断ブロック218からブロック220へと下方に進むとしてよい。実施形態によると、OSはこの後、全てまたは略全てのハードウェアコンポーネントまたはハードウェアデバイスドライバに、ハードウェアコンポーネントがスリープモードに遷移する旨を通知するメッセージを送信するとしてよい。フィルタドライバは、この通知をブロック222で受信または検出するとしてよく、1以上のハードウェアデバイスまたはコンポーネントがスリープモードに遷移する方法に関する入出力I/Oデータ、例えば、ハードウェアデバイスインターフェースとハードウェアデバイスドライバとの間のI/O信号を監視し始めるとしてよい。ブロック224において、フィルタドライバはこの後、I/Oデータを収集して、プレブート期間にファームウェア環境に確保したメールボックスブロック210で説明に保存するとしてよい。最後に、ブロック226において、OSはコンピューティングデバイスのスリープモードへの遷移を完了させる。尚、ブロック224でメールボックスに保存されたI/Oデータは、前述したように、後に、ウェイクイベントの処理中および/または処理後に、ファームウェアに当該I/Oデータを利用させるべく利用されるとしてもよい。このように、例えば、判断ブロック206まで戻り、コンピューティングデバイスが、ネットワークウェイクイベント等のウェイクイベントによりウェイク状態に遷移する場合、YESの矢印にしたがって進むとしてよい。ブロック228において、ファームウェアは、OSがスリープモードである間に、OSに別個に、コンピューティングデバイス全体をウェイク状態にすることなく、または、高電力消費状態に戻すことなく、ネットワークイベントがファームウェアによって処理可能か否かを判断するとしてよい。判断結果がNOである場合、コンピューティングデバイスは、ブロック230において、通常のS3コードパスで再開し、最終的に212において通常のブートプロセスを継続する。しかし、判断結果がYESである場合、ファームウェアは、ネットワークイベントをOSに別個に処理させるとしてよい。一部の実施形態によると、ブロック232において、ファームウェアは、1以上しかし、全てではないのハードウェアコンポーネントのみをウェイク状態または高電力消費状態に遷移させるか、および/または、ネットワークイベントの処理に利用されるソフトウェアを開始するとしてよい。ブロック235において、ファームウェアは、キャッシュされたデバイスI/Oを利用して、コンピューティングデバイスをD3ステートに戻すとしてよく、必要であれば、コマンドを適切なポートに書き込んで、S3へと遷移させるとしてよい。このように、さまざまな実施形態によると、コンピューティングデバイスのファームウェア環境は、コンピューティングデバイスがスリープモードに遷移すると、再インスタンス化される。実施形態によっては、ファームウェア環境は、電力管理またはコンピューティングデバイスのOSによって通常実行される他の機能を実行できる構成を持つ。一部の実施形態によると、コンピューティングデバイスが特定のハードウェアコンポーネント、例えば、スリープモード中にコンピューティングデバイスが受信するネットワーク送信に対応付けられているハードウェアコンポーネントをスリープ状態に遷移させる機能を持つだけでなく、ファームウェア環境は、コンピューティングデバイスの複数のその他のハードウェアコンポーネントまたはその他のコンポーネントのウェイクモードへの遷移を開始する機能を持つ。さまざまな実施形態において、ファームウェア環境は、複数のハードウェアデバイスのうちいずれかがスリープモードに遷移する方法に関するI/Oデータを読み出す構成を持つ。このようなI/Oデータは、プレブート期間においてファームウェアによって確保されたメールボックスから読み出されるとしてよい。さまざまな実施形態によると、ファームウェア環境は、通常はOSによってのみ実施される電力管理機能であるが、ハードウェアコンポーネントをスリープモードに遷移させる構成を持つ。さまざまな実施形態によると、ファームウェア環境は、新規または更新後のファームウェアモジュールをプロビジョニングする構成を持つ。図3を参照すると、実施形態は、例えば、www-intel-com/technology/framework本文献では、意図せずハイパーリンクが組み込まれないように、ピリオドに代えてハイフンを使用しているで入手可能なプラットフォームイノベーションフレームワークフォーエクステンシブルファームウェアインターフェースEFI検討案、バージョン0.9、2003年9月16日のモジュールS3レジュームアーキテクチャを結合させるとしてよい。通常、例えば、UEFIプラットフォーム初期化PI仕様バージョン2.3、公開日:2009年5月8日によると、PIプレEFIPEIモジュールおよびPIドライバエグゼキューションエンバイロメントDXEドライバの完全な実装は、S5モードオフからブート中に呼び出されるとしてよい。この結果、プレOSアプリケーションが利用し得るUEFI環境、例えば、UEFIシェル、第三者UEFIドライバ/オプションROM、および、UEFIOSローダが作成される。しかし、S3の間は、S3レジューム時間制約のために、コンピューティングデバイスは、DXEを含まずPEIのサブセットのみを通常含む標準的なPIレジュームフローを実行するとしてよい。このため、S3レジュームモードでは、多くのUEFIドライバフィーチャを利用できない可能性がある。しかし、本開示のさまざまな実施形態では、コンピューティングデバイスは、S3の間にDXE330を実施し得る。このため、図3に示すように、S3は、OSがスリープモードにある間に、UEFIブートサービスアプリケーションを実行するべく、一部のプレOS隔離ページまたは、OSドライバ固定ページにおいてUEFI環境を再形成するべくDXEを含むとしてよい。図3を参照すると、図示されている実施形態は、UEFIアーキテクチャに応じて実装されるブート-ウェイクサイクルを説明するブロック図300である。当該実施形態では、通常ブート301の間に、電源オンまたはリセットの後、プレメモリ初期化セキュリティSECフェーズ302SEC302が開始されるとしてよい。SEC302は、コンピューティングデバイス上で実行される最初のオペレーティングコードのセキュリティチェックをサポートするとしてよい。続いて、当該実施形態では、SEC302は、CPU/メモリ初期化、プレEFIPEIフェーズ304PEI304に遷移するとしてよい。PEI304は、例えば、プロセッサ、チップセットおよびマザーボード用の特定の初期INITコンフィグレーションルーチンをロードして呼び出す方法を提供するとしてよい。PEI304は、メモリを発見して、後期初期化、ドライバ実行環境DXEフェーズ306DXE306にハンドオフされるリソースマップを用意するとしてよい。DXE306は、プロセッサ、チップセットおよびプラットフォームコンポーネントの初期化を行うDXEドライバを呼び出すことを含むとともに、コンソールおよびブートデバイスについてソフトウェア抽象化を提供することを含むとしてよい。310に図示しているように、DXE306は、I/Oコントローラ設定を、ブートスクリプトテーブルの一部として不揮発性ストアNVS等の未使用メモリに保存するとしてよい。ブートスクリプトは、スリープモードに遷移する前の状態にコンピューティングデバイスを戻すためにS3レジューム時に再生すべき一連の処理を含むとしてよい。通常のブートスクリプトは、I/OデバイスおよびCPUステート情報を復元する。319に見られるように、S3レジュームブートでは、SEC320が実施されるとしてよい。続いて、325では、S3PEIモジュールが、PEIフェーズコンフィグレーションを310のNVSから復元するとしてよい。例えば、基本的なチップセットCS、ハードウェアHWおよびビデオの設定の復元を行うとしてよい。このように、実施形態では、OSがスリープ状態の間、更新されたDXE330がS3において実施されるとしてよい。DXE330は、S3DXE初期プログラムロードIPL335、S3DXEコア340、S3DXEファームウェアボリュームFV345、S3ブートデバイス選択BDS350、S3ネットワークプロキシアクション355、および、S3DXEターミネータ360を含む、幾つかのコンポーネントまたはフェーズによって円滑化されるとしてよい。上述したように、略完全に形成されたUEFIインターフェースのインスタンス化は、DXE330をS3に含めることによって実施されるとしてよい。通常は、少数のUEFIドライバのみをプレブートフェーズで追加する。しかし、ある実施形態によると、OSドライバは、追加のUEFIドライバをUEFI環境に追加するとしてもよい。さまざまな実施形態によると、UEFIドライバは、それぞれ別のソースから収集されるとしてよい。一部の実施形態では、これらの追加されるドライバは、UEFIシステムパーティション上で、または、DXE330の間に利用可能なUEFIドライバの数を大きくする他の方法を用いて、プロビジョニングされるとしてもよい。図4は、本開示の実施形態を実現するコンピューティングデバイス400の一例を示す図である。さまざまな実施形態において、コンピューティングデバイス400は、バス420を介して結合されるさまざまな素子を備える。図示されているように、これらの素子には、プロセッサ401、メモリ410、チップセット403、ハードウェアデバイス460、フラッシュメモリ等の不揮発性ストレージ430、および、通信インターフェース415が含まれるとしてよい。チップセット403は、上述したファームウェアが設けられているとしてよい。メモリ410は、OS422、上述したメールボックス435およびデバイスドライバ480を含むとしてよい。プロセッサ401は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ等、ソフトウェアを実行可能な任意の種類のプロセッサであってよい。図4に図示されているプロセッサ401は1つのみであるが、コンピューティングデバイス400には1以上のプロセッサが設けられるとしてよく、プロセッサのうち1以上は、複数のスレッド、複数のコア等を含むとしてよい。さまざまな実施形態によると、BIOS433のファームウェアモジュールは、バス420上で1以上のハードウェアデバイス460のハードウェアインターフェースとデバイスドライバ480との間で通信されるI/O信号をモニタリングすることによって、第1の高電力消費状態と、第2の低電力消費状態との間での1以上のハードウェアデバイス460の遷移に関する情報を決定または収集するとしてよい。スリープモード中、ファームウェアは、上述したように、1以上のネットワークまたはウェイクイベントを処理するとしてよい。通信インターフェース415は、ネットワークインターフェースカードNIC等のネットワーク化インターフェースを含むとしてよい。NICは、例えば、シリアルオーバーローカルエリアネットワークLANインターフェースを介して、1以上のリモートサーバ482を含むインターネット/ネットワーク475に通信可能に結合されているとしてよい。通信インターフェースは、トランスファーコントロールプロトコル/インターネットプロトコルTCP/IP、ハイパーテキストトランスファープロトコルHTTPまたはシンプルオブジェクトアクセスプロトコルSOAPまたはその他の通信プロトコルをサポートするとしてよい。NICは、他の手段を用いて、ネットワークを介して通信を行うとしてもよい。例えば、インテグレーテッドドライブエレクトロニクスIDEリダイレクション不図示またはその他の手段を用いるとしてよい。尚、実施形態によっては、ウェイクイベントの処理は、これに限定されないが、特定のパケットタイプに応答すること、ダイナミックホストコンフィグレーションプロトコルDHCPリースを有効で維持すること、低電力バックグラウンドアクティビィティ、例えば、ウイルスに関してメモリをスキャンすること、および、リモートファイルバックアップ/復元等を維持することを含むとしてよい。図示した実施形態では、チップセット403はさらに、ベーシックインプットアウトプットシステムBIOS409用のソフトウェアインターフェースを含むとしてよい。図5は、さまざまな実施形態に係る、ハードウェアコンポーネントの上方のソフトウェアスタックを示す図である。ある実施形態によると、ユーザOS可視環境において、低電力更新/ダウンロードLPUDアプリケーション500および対応するLPUDサービスアプリケーションプログラミングインターフェースAPI502は、独立ソフトウェアベンダISVアプリケーションプログラム504、506、508と、シリアルアドバンスドトランスポートアーキテクチャSATAコントローラ512と通信するストレージソフトウェアスタック510との間に配置されているとしてよい。SATAコントローラは、ストレージデバイス図5では不図示と通信する。LPUDアプリケーションは、さまざまなアクティビティをOS不在状態で実行する。このようなアクティビティには、ウイルス署名に関してディスクをスキャンすること例えば、ウイルス対策クライアント、ディスクのコンテンツをコンピューティングクラウドバックアップサーバにリモートバックアップすること例えば、バックアップクライアント、または、ファイルサーバとして機能すること例えば、ラップトップのメインOSが中断されており、ラップトップがLPUD状態にある間に、MP3またはMP4を車内インフォテインメントPCに提供することが含まれるとしてよい。LPUDサービスAPIは、ファイルシステムに悪影響を与えない方法で、例えば、読出処理等、ディスクへのアクセスを可能とする。このため、メインOSがウェイク状態になっても、ディスクは破損状態になっていない。LPUDサービスAPIはさらに、バックアップ例えば、クライアントからのデータ送信およびウイルス対策AVスキャン例えば、署名ファイルの受信をサポートするべく、送受信処理を実行するソケットライブラリを実現する。ユーザOS側は、メインOSがウェイク状態になると、ステータス情報をLPUDから受信するとしてよい。または、ユーザOSは、ユーザOSがビジー状態でない場合に、LPUD状態への遷移を開始してよい。また、ユーザOSは、LPUDアプリケーションの帯域内アクティブ化のためにコンソールを提供する。LPUDアプリケーションは、これに限定されないが、オプトイン、および、LPUD用にどの程度メモリを分離するか判断することこの物理メモリはユーザOSに対して失われ、性能に影響を与えるのでを含む。ある実施形態によると、ファームウェア環境では、EFIBIOS514図4ではBIOS433としてNVS430に格納されているは、少なくとも複数のコンポーネントを含む。ニューテクノロジファイルシステムNTFSドライバ516は、データを読み書きするべく、ハードドライブ518と通信を行う。ネットワークインターフェースコントローラNICドライバ520は、コンピューティングデバイスに結合されているネットワークを介してデータの読み書きを行うべく、NIC522と通信を行う。WiFiシムShim524は、UEFI2.3仕様の付録アペンディクス:AppendixE.2に定義されているように、UEFIUNDIインターフェース、コンピューティングプラットフォームにおいてワイヤレスNicW-NICへのローデータグラム読み書きを行うコマンドおよびデータブロックCDBを実現する。これには、インテルコーポレーション社製の市販のチップセットのホストエクステンデッドコマンドインターフェースHECIを用いてUNDICDBがプロキシされる第三者W-NICまたは管理エンジンMEベースのW-NICが含まれるとしてよい。管理エンジンME526は、アウトオブバンドチップセットネットワーク側管理機能を提供するべく含まれているとしてよい。EFILPUDエージェント528は、コンピューティングデバイスがスリープ状態にある間に、新しいファームウェアモジュールのプロビジョニングおよび/または既存のファームウェアモジュールの更新を調整する。ハイパーテキストトランスポートプロトコルHTTP/HTTPセキュアHTTPSプラグイン530は、LibSocketを利用するべく含まれているとしてよく、LibCラッパ532は、POSIX同様のプログラミングAPIを抽象化するべく含まれているとしてよい。ファームウェアモジュール534は、本明細書に開示しているように、ISVから取得されて、コンピューティングデバイスにインストールされる新規または更新後のファームウェアモジュールを含む。ある実施形態によると、EFIBIOS514はさらに、S3DXEイネーブルフラグ536および公開認証鍵538一実施形態によると、Kpub_s3extension_verificationと呼ばれるを含む。ある実施形態によると、コンピューティングデバイスは、工場での製造時に、EFIBIOSファームウェアおよび少なくとも1つのS3DXIPLファームウェアモジュールがシステムボードにインストールされるとしてよい。EFIBIOSにおけるS3DXEイネーブルフラグ536は、製造時には偽に設定されているとしてよい。コンピューティングデバイスはこの後、ユーザに出荷されるとしてよい。コンピューティングデバイスは、ユーザによって操作されている間、S4状態ハイバネートまたはS5状態全電力サイクルを通って、OSへブートされるとしてよい。ユーザは、OSおよび従来のウェブブラウザを介して、選択されたウェブサイトを訪問してS3DXEファームウェアボリュームをダウンロードするとしてよい。図6は、本発明の実施形態に係る、S3DXEファームウェアボリューム600を示す図である。ファームウェアボリューム600は、ファームウェアボリュームヘッダ608と、ファームウェアボリュームのコンテンツをカバーする暗号署名606とを含むバイナリファイルを有する。ファームウェアボリューム600はさらに、1以上のファームウェアモジュール602を有する。ある実施形態によると、ファームウェアモジュールは、.efiファイル拡張を含む。ある実施形態によると、ファームウェアモジュールは、ドライバを含む。ファームウェアモジュール602は、1以上のS3DXEIPLファームウェアモジュール用のファームウェアバイナリコードを含む。本発明の実施形態によると、ファームウェアモジュールは、本明細書で説明しているように、ファームウェアボリュームから読み出されて、不揮発性ストレージ430にインストールされて、低電力消費状態の間に実行されるとしてよい。ファームウェアボリュームはさらに、マニフェスト604を有する。マニフェスト604は、実行されると、S3DXEファームウェアボリュームがコンピューティングデバイスのハードウェアリソースのうちどれI/Oデバイス、メモリ等を消費または利用するかを宣言している。S3DXEファームウェアボリュームは、事前に第三者によって署名が成されている例えば、対応する秘密鍵Kpriv_s3extension_verificationを持つ署名サーバを利用する独立ソフトウェアベンダISV、相手先商標製品製造OEM、または、独立BIOSベンダIBV等。OS存在アプリケーションプログラムはこの後、ユーザがS3DXE拡張ファームウェアモジュールのインストールを希望しているか否かを質問するようにユーザを促すとしてよい。ユーザがファームウェアモジュールのインストールを希望している場合、ある実施形態では、OS存在アプリケーションが、不揮発性ストレージに格納されているS3DXEファームウェアボリュームへのポインタを用いてUpdateCapsuleUEFIランタイムサービスを呼び出す。再開するとEFIBIOSファームウェアが、ユーザに対して不透明である必要があるUpdateCapsuleランタイムサービスをどのように実施するかに応じて、ウォームスタートまたはS3状態、EFIBIOSファームウェアは、不揮発性ストレージにS3DXEファームウェアボリュームの存在を検出する。図7は、さまざまな実施形態に係るプロビジョニングプロセスを説明するためのフローチャートである。ある実施形態によると、このプロセスは、図3に示すように、コンピューティングデバイスがS3スリープ状態にある間に実行されるとしてよい。ブロック700において、EFIBIOSファームウェアは、公開認証鍵Kpub_s3extension_verificationを用いて、S3DXEファームウェアボリューム上の暗号署名606が正しいか否かを判断する。認証している場合、ブロック702において、EFIBIOSファームウェアは、ファームウェアボリュームマニフェストによって要求されたハードウェアリソースが利用可能か否かを判断するべく確認する。利用可能である場合、ブロック704において、EFIBIOSは、ファームウェアボリューム内のファームウェアモジュールが、既にインストールされている既存のファームウェアに準拠している例えば、依存関係が満たされている、正しい命令セットアーキテクチャが存在している等か否かを判断する。準拠している場合、ブロック706において、EFIBIOSは、不揮発性メモリにおいて、ファームウェアボリュームから得られる新規または更新後のファームウェアモジュールが利用するリソースをサポートするために必要な大きさのメモリスペースを確保する。ブロック708において、EFIBIOSは、S3DXEイネーブルフラグを真に設定する。ブロック700、702、および704において、いずれかの判断結果が否定である場合、ブロック710に進む。ブロック710において、EFIBIOSは、システムテーブルエントリを作成する。システムテーブルは、UEFI2.3仕様のセクション4.6に説明されているように、EFIコンフィグレーションテーブルを持つ。これによって、ベンダGUIDによって名前が割り当てられる一連の追加テーブルをインストールすることが可能になる。この場合、EFIBIOSは、成功について真となり、失敗について偽となるブール値を持つテーブルを作成する。システムテーブルエントリは、UpdateCapsuleランタイムサービスコールに応じて、ファームウェアモジュールの実行に関するステータス値をOSに戻すステータス構造を持つ。これは、システムがS3から遷移してウェイク状態になった後、埋め込みS3処理環境からメインホストOSにステータス情報を戻すために実行される。ブロック712において、S3DXEイネーブルフラグが真である場合、ブロック714において成功ステータスが返されて、ファームウェアモジュールが実行されるとしてよい。偽である場合、ブロック716において失敗ステータスが返されるとしてよい。ある実施形態によると、利用されるハードウェアリソースのためにメモリを供給する別の方法として、OSが、S3DXEファームウェアモジュールが利用するOSページをピン付けまたは確保して、恐らくはバラバラの状態のページリストをUpdateCapsuleランタイムサービスコールに渡す。このため、ファームウェアは、OSメモリマップからメモリを盗むことに代えて、バラバラの状態のページリストをOSから受け取って、これらのページをファームウェア確保として、S3DXEファームウェアモジュールを開始するために利用する。ある実施形態によると、OSインストーラは、S3DXEファームウェアボリュームを、UEFIサービスパーティション上のディレクトリに入れることが出来、ファームウェアボリュームの位置をUpdateCapsuleコールを介して通知する。別の実施形態では、EFIBIOSは、ファームウェアボリュームについて、UEFIシステムパーティションを調べるとしてよい。いずれの場合も、EFIBIOSは、ファームウェアボリュームのコンテンツを、続くS3DXEアクティブ化で利用するメモリへと複製する前に、当該コンテンツを暗号を利用して承認する。ある実施形態によると、続くS3レジュームにおいて、S3DXEイネーブルフラグが真である場合、EFIBIOSは、スリープ状態に戻る前に、および/または、OSレジュームベクトルに制御を渡す前に、S3DXEIPLおよび対応するファームウェアモジュールをS3DXEファームウェアボリュームから開始するとしてよい。このように、低電力消費状態においてOSホストインストーラがファームウェアモジュールダウンロード機能をアクティブ化するワンタッチプロビジョニングモデルを説明した。この機能は、コンピューティングデバイスが、ユーザに出荷された後にアクティブ化されるとしてよい。これによって、S3DXEIPLコードおよび証明鍵インフラストラクチャを、EFIBIOS内の小さいフックとして、第三者に提供することが出来るようになるが、出荷後に、OSが中断されたS3DXE環境において実行するべく、ファームウェアボリュームをコンピューティングデバイスに追加することができる。本明細書で説明した方法は、任意の特定のハードウェア構成またはソフトウェア構成に限定されるものではない。任意のコンピューティング環境、家庭用電化製品または処理環境において適用され得るであろう。本明細書で説明した方法は、ハードウェア、ソフトウェア、または、これら2つの組み合わせで実現されるとしてよい。本明細書で説明した方法は、プログラミング可能なマシンで実行されるプログラムで実装されるとしてよい。このようなマシンには、モバイルコンピュータあるいは固定型コンピュータ、携帯情報端末PDA、セットトップボックス、セルラー方式電話およびポケットベル登録商標、家庭用電化製品DVDプレーヤ、パーソナルビデオレコーダ、パーソナルビデオプレーヤ、衛星受信機、ステレオ受信機、ケーブルテレビ受信機を含む、および、その他の電子機器がある。このようなマシンは、プロセッサと、プロセッサがアクセス可能な格納媒体揮発性メモリおよび不揮発性メモリおよび/または格納素子を含むと、少なくとも1つの入力デバイスと、1以上の出力デバイスとを備えるとしてよい。当業者であれば、本開示はさまざまなシステム構成で実施可能であることに想到するであろう。例えば、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、独立した家庭用電化製品等で実施可能であることに想到するであろう。本発明は、タスクまたはその一部は、通信ネットワークで結合されている、リモート処理デバイスで実行され得る分散型コンピューティング環境でも実施可能である。プログラム命令は、当該命令がプログラミングされている汎用処理システムまたは特定用途向け処理システムに、本明細書で説明した処理のうち一部を実行させるために用いられるとしてよい。これに代えて、これらの処理は、当該処理を実行するためのハードワイヤードロジックを含む特定のハードウェアコンポーネントによって実行されるとしてもよい。または、プログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントを組み合わせることによって、実行されるとしてもよい。本明細書で説明した方法は、処理システムまたは他の電子デバイスに当該方法を実行させるべく当該処理システムまたは他の電子デバイスをプログラミングするために用いられる命令が格納されている機械アクセス可能媒体を含むコンピュータプログラム製品として供給されるとしてよい。本明細書で用いるコンピュータ可読媒体という用語は、コンピューティングデバイスで実行される命令列を格納または符号化することができ、コンピューティングデバイスに、本明細書で説明した方法のいずれか1つを実行させる任意の媒体を含むとしてよい。コンピュータ可読媒体という用語は、これらに限定されないが、ソリッドステートメモリおよび光ディスクおよび磁気ディスクを含むとする。さらに、一の形態または別の形態としての例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ロジック等ソフトウェアといえば、関連技術分野では、動作を実行するもの、または、結果を発生させるものを意味することが普通である。このような表現は単に、処理システムによってソフトウェアが実行されると、プロセッサは、動作を実行するか、または、結果を発生させることを記述するための簡単な表現である。