Verarbeiten von Updates

Nachdem Firmwareupdatepakete angewendet und das System anschließend neu gestartet wurde, lädt der Windows-Betriebssystemladeprogramm alle Firmwarenutzlastdateien (in diesem Beispiel firmware.bin) in den physischen Arbeitsspeicher. Der Windows-Betriebssystemladeprogramm erstellt Kapselheader unter Verwendung der Informationen aus dem entsprechenden ESRT-Eintrag jedes Updates, der die GUID und flags beschreibt, die beim Aufrufen von UEFI UpdateCapsule verwendet werden sollen. Beim Festlegen des Felds "Flags" der einzelnen Kapselheader legt der Windows-Betriebssystemladeprogramm immer CAPSULE_FLAGS_PERSIST_ACROSS_RESET und CAPSULE_FLAGS_INITIATE_RESET fest. Der Windows-Betriebssystemladeprogramm kann zusätzlich CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE für Firmwaretypen festlegen, DEVICE_FIRMWARE, wenn das Kapselflag im INF für das Treiberpaket angegeben wurde. Proprietäre Kapselflags können auch in der INF angegeben werden, und wenn angegeben, werden beim Aufrufen von UEFI UpdateCapsule zusätzlich einbezogen.

Wenn Sie auf das ESRT-Beispiel in der ESRT-Tabellendefinition und das INF-Beispiel für das Treiberpaket für Firmwareressourcenupdates in Erstellen eines Updatetreiberpakets verweisen, sehen die vom Windows-Betriebssystemladeprogramm erstellten Kapselheader für die Übergabe an UpdateCapsule wie folgt aus.

Feld Wert Comment
CapsuleGuid {SYSTEM_FIRMWARE} Aus der FirmwareClass des entsprechenden ESRT-Ressourceneintrags.
HeaderSize ... Gepolstert auf seitenbündig firmware.bin start.
Flags 0x50000 Beibehalten des Zurücksetzens und Initiieren des Zurücksetzens.
CapsuleImageSize ... Kapselheadergröße + Die Größe von firmware.bin.

Beachten Sie, dass in diesem Beispiel nur eines der beiden in der ESRT-Tabelle definierten Geräte ein neues Treiberpaket für das Firmwareressourcenupdate installiert hat. Wenn ein Firmwareressourcenupdatetreiberpaket für das zweite Gerät in Tabelle 2 erstellt und dann auf dem entsprechenden Firmwareressourcengerät installiert wurde, wird ein zweiter Kapselheader wie folgt erstellt:

Feld Wert Comment
CapsuleGuid {DEVICE_FIRMWARE} Aus der FirmwareClass des entsprechenden ESRT-Ressourceneintrags.
HeaderSize ... Auf seitenbündiges GERÄT gepolstert. BIN-Start.
Flags 0x50000 Beibehalten, Initiieren, Zurücksetzen und Auffüllen der Systemtabelle, OR'd mit 0x8010 aus den CapsuleFlags des entsprechenden ESRT-Ressourceneintrags.
CapsuleImageSize ... Größe des Kapselheaders + Die Größe von DEVICE. BIN.

Nachdem das Windows-Betriebssystemladeprogramm alle ausstehenden Firmwareupdates geladen und die erforderlichen Datenstrukturen erstellt hat, um sie zu beschreiben, ruft er den UpdateCapsule-Laufzeitdienst auf, bevor ExitBootServices aufgerufen wird.

UpdateCapsule wird vor ExitBootServices aufgerufen, wenn die Plattformfirmware die exklusive Kontrolle über alle Geräte einschließlich des Speichergeräts hat. Eine Plattformfirmwareimplementierung von UpdateCapsule kann Firmwareupdatenutzlasten in persistentem Speicher speichern, um ein Update zu inszenieren oder ein Wiederherstellungsrollback zu unterstützen.

ESRT-Tabellendefinition

Plug and Play-Gerät

Erstellen eines Updatetreiberpakets

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

Nahtlose Krisenprävention und -wiederherstellung

Status des Firmwareupdates