Delen via


Updates verwerken

Nadat firmware-updatepakketten zijn toegepast en het systeem vervolgens opnieuw is opgestart, laadt het Windows-besturingssysteemlaadprogramma alle firmwareladingbestanden (in dit voorbeeld firmware.bin) in het fysieke geheugen. Met het Windows OS-laadprogramma worden capsuleheaders gemaakt met behulp van de informatie van de bijbehorende ESRT-vermelding van elke update, waarin de GUID en vlaggen worden beschreven die moeten worden gebruikt bij het aanroepen van UEFI UpdateCapsule. Bij het instellen van het vlaggenveld van elke capsuleheader stelt het Windows OS-laadprogramma altijd CAPSULE_FLAGS_PERSIST_ACROSS_RESET en CAPSULE_FLAGS_INITIATE_RESET in. Het Windows-besturingssysteemlaadprogramma kan ook CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE instellen voor firmwaretypen DEVICE_FIRMWARE, als de capsulevlag is opgegeven in de INF voor het stuurprogrammapakket. Eigen capsulevlaggen kunnen ook worden opgegeven in het INF-bestand en wanneer deze worden opgegeven, worden ze dan ook opgenomen bij het aanroepen van UEFI UpdateCapsule.

Als we terugkijken naar het voorbeeld van de ESRT in de definitie van de ESRT-tabel en het INF-voorbeeld van het firmware-resource-update-stuurprogrammappakket in het maken van een updatestuurprogrammappakket, zouden de capsule-headers die door de Windows OS-loader worden gemaakt om door te geven aan UpdateCapsule er als volgt uitzien.

Veld Waarde Opmerking
CapsuleGuid {SYSTEM_FIRMWARE} De FirmwareClass van de overeenkomstige ESRT-resourcevermelding.
Kopgrootte ... Opgevuld om pagina uit te lijnen firmware.bin begin.
Vlaggen 0x50000 Volhouden en initiëren, opnieuw instellen.
CapsuleAfbeeldingsgrootte ... Capsuleheadergrootte + De grootte van firmware.bin.

Houd er rekening mee dat in dit voorbeeld slechts één van de twee apparaten die zijn gedefinieerd in de tabel ESRT, een nieuw stuurprogrammapakket voor firmwareresource-updates heeft geïnstalleerd. Als er een stuurprogrammapakket voor firmwareresource-updates is gemaakt voor het tweede apparaat in tabel 2 en vervolgens is geïnstalleerd op het bijbehorende firmwareresourceapparaat, wordt er als volgt een tweede capsuleheader gemaakt:

Veld Waarde Opmerking
CapsuleGuid {APPARAAT_FIRMWARE} De FirmwareClass van de overeenkomstige ESRT-resourcevermelding.
Headergrootte ... Opgevuld om het begin van DEVICE.BIN op de pagina uit te lijnen.
Vlaggen 0x50000 Zorg dat de systeemtabel bewaard blijft en start, reset en vul deze, gecombineerd met 0x8010 uit de bijbehorende CapsuleFlags van de ESRT-resourcevermelding.
CapsuleImageSize ... Capsule header grootte + de grootte van DEVICE.BIN.

Nadat het Windows-besturingssysteemlaadprogramma alle in behandeling zijnde firmware-updates heeft geladen en de benodigde gegevensstructuren heeft gemaakt om deze te beschrijven, roept het vervolgens de UpdateCapsule-runtimeservice aan, voordat u ExitBootServices aanroept.

UpdateCapsule wordt aangeroepen vóór ExitBootServices wanneer platformfirmware exclusieve controle heeft over alle apparaten, inclusief het opslagapparaat. Een implementatie van de platformfirmware van UpdateCapsule kan payloads van firmware-updates opslaan in permanente opslag om een update te faseren of om een herstelrollback te ondersteunen.

Definitie van de ESRT-tabel

Plug and Play-apparaat

Een stuurprogramma-updatepakket maken

Apparaat-I/O vanuit de UEFI-omgeving

Naadloze crisispreventie en herstel

Status van de firmware-update