次の方法で共有


ESRT テーブルの定義

ESRT テーブルへのポインタは、EFI_CONFIGURATION_TABLE の該当する GUID から識別できます。

#define EFI_SYSTEM_RESOURCE_TABLE_GUID   \
{ 0xb122a263, 0x3661, 0x4f68,  0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80  }

次のテーブルは、ESRT テーブルの形式およびテーブルに含まれるファームウェア リソース エントリを表しています。

フィールド 配列の値 バイト長さ バイト オフセット 説明
ファームウェア リソースの数 4 0 ESRT 内のファームウェア リソース エントリの数。 ゼロにはできません。
ファームウェア リソースの最大値 4 4 テーブルを再割り当てせずに追加できるリソース配列エントリの最大数。 ファームウェア リソースの数を上回る必要があります。
ファームウェア リソースのバージョン 8 8 ファームウェア リソース エントリのバージョン。 この値は 1 に設定します
ファームウェア リソース エントリ配列 ファームウェア リソース エントリ 0
ファームウェアのクラス 16 16 更新カプセルを介して更新できるファームウェア コンポーネントを識別する GUID。 この GUID は、更新中に更新カプセル ヘッダーの CapsuleGuid パラメーターとして UEFI 更新カプセル ランタイム サービスに渡されます。
ファームウェアの種類 4 32 ファームウェア リソースの種類を識別する次のいずれかの値。

0: 不明

1: システムのファームウェア

2: デバイスのファームウェア

3: UEFI ドライバー
Firmware Version 4 36 現在のファームウェア バージョン。新しいリリースほど数字が大きくなります。 この値の形式は定義されていませんが、バージョンのメジャー番号やマイナー番号を組み込みます。 推奨としては、最初の単語がメジャー バージョン番号、2 番目の単語がマイナー バージョン番号の形式にします。
サポートされている最小バージョンのファームウェア 4 40 特定のシステム / デバイスに対してファームウェア リソースをロールバックできる最小のファームウェア リソースのバージョン。 このファームウェア バージョンでセキュリティ関連の修正プログラムを使用できる場合、互換性の低いバージョンは現在のファームウェア バージョンと同じです。
カプセル フラグ 4 44 更新カプセル ヘッダーのフラグ フィールドのビット 0 ~ 15 で UEFI 更新カプセル ランタイム サービスに渡されるフラグ (OS は、UEFI 仕様のセクション 7.5.3 で定義されているフラグのビット 16 ~ 31 を構成します)。
前回の試行バージョン 4 48 更新が試行された最新のファームウェア バージョン。 この値はファームウェア バージョンと同じ形式を使用します。
最新の試行の状態 4 52 最新のファームウェア更新の試行の状態を示す次のいずれかの値。

0: 成功

1: 失敗

2: リソース不足

3: 正しくないバージョン

4: 無効なイメージ形式

5: 認証エラー

6: 電源イベント - AC が接続されていません

7: 電源イベント - バッテリー不足
... ファームウェア リソース エントリ 1

コア UEFI ファームウェアは、それ自体に 1 つのシステム リソース エントリ (システム ファームウェア) を含む ESRT 構成テーブルを割り当てて設定します。 説明の目的で、このガイドのコア ファームウェアでは、ファームウェア更新パッケージ メカニズムを使用してデバイス ファームウェアの更新をサポートするデバイスを表す 1 つの追加エントリも作成します。

システム ファームウェアを記述するエントリは常に 1 つのみ必要です。 このエントリは、システム ファームウェアの更新を対象とするために使用します。 実装でシステムとデバイスのファームウェアの更新を単一のモノリシック操作として実行する場合は、システム ファームウェア エントリを使用して更新プログラムをターゲットにする必要があります。 それ以外の場合、デバイス ファームウェアの更新プログラムは、デバイス ファームウェアを記述する ESRT エントリの対象となります。

最初の手順では、これら 2 つのファームウェア リソース ({SYSTEM_FIRMWARE} と {DEVICE_FIRMWARE}) を表す GUID を生成します。 表 2 はテーブル定義の例を示しています。 この例では、両方のファームウェア バージョンが現在のバージョン 1 (ファームウェア バージョン == 1) であることを前提としています。

フィールド 配列の値 Value コメント
ファームウェア リソースの数 2 この表には、2 つのファームウェア リソース エントリが含まれています。
ファームウェア リソースの最大値 2 このテーブルの割り当てには、最大 2 つのリソースを記述するために十分な領域が含まれています。
ファームウェア リソースのバージョン 1 この表で使用するファームウェア リソース エントリ形式のバージョンは 1 です。
ファームウェア リソース エントリ配列 ファームウェア リソース エントリ 0
ファームウェアのクラス (SYSTEM_FIRMWARE) この GUID は、PnP を介して更新するシステム ファームウェアを識別します。
ファームウェアの種類 1 システム ファームウェアの種類は 1 です。
Firmware Version 1 現在のファームウェア バージョンは 1 です。
サポートされている最小バージョンのファームウェア 1 サポートされているファームウェアの最小バージョンは 1 であるため、ファームウェアをバージョン 1 より以前のバージョンにロールバックすることはできません。
カプセル フラグ 0 システム ファームウェアは、プライベート カプセル更新フラグを定義しません。
前回の試行バージョン 1 更新が試行された最新のシステム ファームウェア バージョンはバージョン 1 です。
最新の試行の状態 0 最新のシステム ファームウェアの更新が成功しました。
ファームウェア リソース エントリ 1
ファームウェアのクラス (DEVICE_FIRMWARE) この GUID は、PnP を介して更新するデバイス ファームウェアを識別します。
ファームウェアの種類 2 デバイスのファームウェアの種類は 2 です。
Firmware Version 1 現在のデバイス ファームウェア バージョンは 1 です。
サポートされている最小バージョンのファームウェア 1 サポートされているファームウェアの最小バージョンは 1 であるため、ファームウェアをバージョン 1 より以前のバージョンにロール バックすることはできません。
カプセル フラグ 0x8010 デバイス ファームウェアは、プライベート カプセル更新フラグ (0x8010) を定義します。
前回の試行バージョン 1 更新が試行された最新のデバイス ファームウェア バージョンはバージョン 1 です
最新の試行の状態 0 最新のデバイス ファームウェアの更新に成功しました。

上記の ESRT の例は、このドキュメントの他の場所で、ファームウェアの更新プロセスについて説明し、更新プロセスに対する Windows のサポートおよびサポートするファームウェアの実装について説明するために使用します。

プラグ アンド プレイ デバイス

更新プログラム ドライバー パッケージの作成

更新プログラムの処理

UEFI 環境からのデバイス I/O

シームレスな危機防止と回復

ファームウェア更新の状態