Share via


ESRT-Tabellendefinition

Der Zeiger auf die ESRT-Tabelle wird über die entsprechende GUID im EFI_CONFIGURATION_TABLE identifiziert.

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

In der folgenden Tabelle werden das Format der ESRT-Tabelle und die Firmwareressourceneinträge in der Tabelle beschrieben.

Feld Arraywert Bytelänge Byteoffset BESCHREIBUNG
Anzahl der Firmwareressourcen 4 0 Die Anzahl der Firmwareressourceneinträge im ESRT. Darf nicht 0 sein.
Firmwareressourcenmaximum 4 4 Die maximale Anzahl von Ressourcenarrayeinträgen, die hinzugefügt werden können, ohne die Tabelle neu zuzuordnen. Muss größer oder gleich der Firmwareressourcenanzahl sein.
Firmwareressourcenversion 8 8 Die Firmwareressourceneintragsversion. Dieser Wert sollte auf 1 festgelegt werden.
Firmwareressourceneingabearray Firmwareressourceneintrag 0
Firmwareklasse 16 16 Eine GUID, die eine Firmwarekomponente identifiziert, die über die Updatekapsel aktualisiert werden kann. Diese GUID wird während des Updates als CapsuleGuid-Parameter des Update-Headers an den UEFI-Updatekapsellaufzeitdienst übergeben.
Firmwaretyp 4 32 Einer der folgenden Werte, der den Typ der Firmwareressource identifiziert:

0: Unbekannt.

1: Systemfirmware

2: Gerätefirmware

3: UEFI-Treiber
Firmware Version 4 36 Die aktuelle Firmwareversion, bei der eine größere Anzahl ein neueres Release darstellt. Das Format dieses Werts ist nicht definiert, sollte jedoch Haupt- und Nebennummern der Version enthalten. Das empfohlene Format ist das erste Wort haupt und das zweite Wort ist Nebenversionsnummern.
Niedrigste unterstützte Firmwareversion 4 40 Die niedrigste Firmwareressourcenversion, auf die eine Firmwareressource für das jeweilige System/Gerät zurückgesetzt werden kann. Wenn in dieser Firmwareversion ein sicherheitsbezogener Fix verfügbar ist, sollte die am wenigsten kompatible Version der aktuellen Firmwareversion entsprechen.
Kapselflags 4 44 Flags, die in Bits 0 bis 15 des Felds Flags des Updatekapselheaders an den UEFI-Updatekapsellaufzeitdienst übergeben werden (das Betriebssystem ist verantwortlich für die Konfiguration der Bits 16 bis 31 der Flags gemäß Abschnitt 7.5.3 der UEFI-Spezifikation).
Version des letzten Versuchs 4 48 Die letzte Firmwareversion, für die ein Update versucht wurde. Dieser Wert verwendet das gleiche Format wie FirmwareVersion.
Status "Letzter Versuch" 4 52 Einer der folgenden Werte, der den Status des letzten Firmwareupdateversuchs beschreibt:

0: Erfolg

1: Nicht erfolgreich

2: Unzureichende Ressourcen

3: Falsche Version

4: Ungültiges Bildformat

5: Authentifizierungsfehler

6: Netzereignis – Ac nicht verbunden

7: Stromereignis – Unzureichender Akku
... Firmwareressourceneintrag 1

Die Kern-UEFI-Firmware sollte eine ESRT-Konfigurationstabelle mit einem Systemressourceneintrag für sich selbst (Systemfirmware) zuordnen und auffüllen. Zu Veranschaulichungszwecken erstellt die Kernfirmware in diesem Leitfaden auch einen zusätzlichen Eintrag, der ein Gerät darstellt, das die Aktualisierung der Gerätefirmware mithilfe des Mechanismus für das Firmwareupdatepaket unterstützt.

Es muss immer genau ein Eintrag vorhanden sein, der die Systemfirmware beschreibt. Dieser Eintrag wird verwendet, um ein Systemfirmwareupdate als Ziel zu verwenden. Wenn eine Implementierung Updates der System- und Gerätefirmware als einzelnen monolithischen Vorgang ausführt, muss der Eintrag der Systemfirmware verwendet werden, um das Update als Ziel zu verwenden. In allen anderen Fällen werden Gerätefirmwareupdates durch einen ESRT-Eintrag zur Beschreibung der Gerätefirmware verwendet.

Der erste Schritt besteht dann darin, GUIDs zu generieren, die diese beiden Firmwareressourcen darstellen, d. h. {SYSTEM_FIRMWARE} und {DEVICE_FIRMWARE}. Tabelle 2 zeigt ein Beispiel für eine Tabellendefinition. In diesem Beispiel wird davon ausgegangen, dass beide Firmwareversionen derzeit Version 1 (Firmwareversion == 1) sind.

Feld Arraywert Wert Comment
Anzahl der Firmwareressourcen 2 Diese Tabelle enthält zwei Firmwareressourceneinträge.
Firmwareressourcenmaximum 2 Diese Tabellenzuordnung enthält genügend Speicherplatz, um maximal zwei Ressourcen zu beschreiben.
Firmwareressourcenversion 1 Die Von dieser Tabelle verwendete Firmwareressourceneintragsformatversion ist 1.
Firmwareressourceneingabearray Firmwareressourceneintrag 0
Firmwareklasse (SYSTEM_FIRMWARE) Diese GUID identifiziert die Systemfirmware für die Aktualisierung über PnP.
Firmwaretyp 1 Der Systemfirmwaretyp ist 1.
Firmware Version 1 Die aktuelle Systemfirmwareversion ist 1.
Niedrigste unterstützte Firmwareversion 1 Die niedrigste unterstützte Firmwareversion ist 1, sodass ein Rollback der Firmware nicht auf eine frühere Version als Version 1 erfolgen kann.
Kapselflags 0 Die Systemfirmware definiert keine flags für private Kapselupdates.
Version des letzten Versuchs 1 Die letzte Systemfirmwareversion, für die ein Update versucht wurde, war Version 1.
Status des letzten Versuchs 0 Der letzte Versuch zur Aktualisierung der Systemfirmware war erfolgreich.
Firmwareressourceneintrag 1
Firmware-Klasse (DEVICE_FIRMWARE) Diese GUID identifiziert die Gerätefirmware, die über PnP aktualisiert werden soll.
Firmwaretyp 2 Gerätefirmwaretyp ist 2.
Firmware Version 1 Die aktuelle Gerätefirmwareversion ist 1.
Niedrigste unterstützte Firmwareversion 1 Die niedrigste unterstützte Firmwareversion ist 1, sodass ein Rollback der Firmware nicht auf eine frühere Version als Version 1 erfolgen kann.
Kapselflags 0x8010 Gerätefirmware definiert private Kapselupdateflags (0x8010).
Version des letzten Versuchs 1 Die letzte Gerätefirmwareversion, für die ein Update versucht wurde, ist Version 1.
Status des letzten Versuchs 0 Der letzte Versuch zur Aktualisierung der Gerätefirmware war erfolgreich.

Das obige ESRT-Beispiel wird an anderer Stelle in dieser Dokumentation verwendet, um den Firmwareupdateprozess zu durchlaufen und die Windows-Unterstützung für den Updateprozess sowie eine unterstützende Firmwareimplementierung zu beschreiben.

Plug-and-Play-Gerät

Erstellen eines Updatetreiberpakets

Verarbeiten von Updates

Geräte-E/A aus der UEFI-Umgebung

Nahtlose Krisenprävention und -wiederherstellung

Status des Firmwareupdates