Condividi tramite


Elaborazione degli aggiornamenti

Dopo l'applicazione di tutti i pacchetti di aggiornamento del firmware e dopo il riavvio del sistema, il caricatore del sistema operativo Windows carica tutti i file di payload del firmware (in questo esempio , firmware.bin) in memoria fisica. Il caricatore del sistema operativo Windows crea intestazioni capsule usando le informazioni della voce ESRT corrispondente di ogni aggiornamento, che descrive il GUID e i flag da usare quando si chiama UEFI UpdateCapsule. Impostando il campo flag dell'intestazione della capsula, il caricatore del sistema operativo Windows imposta sempre CAPSULE_FLAGS_PERSIST_ACROSS_RESET e CAPSULE_FLAGS_INITIATE_RESET. Il caricatore del sistema operativo Windows può inoltre impostare CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE per i tipi di firmware DEVICE_FIRMWARE, se il flag capsule è stato specificato in INF per il pacchetto driver. Le flag capsule proprietarie possono anche essere specificate nell'INF e, quando specificate, saranno incluse anche quando si chiama UEFI UpdateCapsule.

Facendo riferimento all'esempio ESRT nella definizione della tabella ESRT e all'esempio INF del pacchetto del driver di aggiornamento delle risorse firmware in Creazione di un pacchetto driver di aggiornamento, le intestazioni della capsula create dal caricatore del sistema operativo Windows per passare a UpdateCapsule sono le seguenti.

Campo Valore Commento
CapsuleGuid {FIRMWARE DI SISTEMA} Dal FirmwareClass della voce della risorsa ESRT corrispondente.
HeaderSize ... Imbottito per allineare alla pagina l'inizio di firmware.bin.
Bandiere 0x50000 Permanere e iniziare un reset.
CapsuleImageSize ... Dimensioni dell'intestazione della capsula + Dimensioni del firmware.bin.

Si noti che in questo esempio solo uno dei due dispositivi definiti nella tabella ESRT ha installato un nuovo pacchetto driver di aggiornamento delle risorse del firmware. Se un pacchetto driver di aggiornamento delle risorse del firmware è stato creato per il secondo dispositivo nella tabella 2 e quindi installato nel dispositivo della risorsa firmware corrispondente, verrà creata una seconda intestazione capsule come indicato di seguito:

Campo Valore Commento
CapsuleGuid {DEVICE_FIRMWARE} Dalla classe Firmware corrispondente presente nella voce della risorsa ESRT.
HeaderSize ... Riempito per allineamento pagina all'inizio di DEVICE.BIN.
Bandiere 0x50000 Persistenza e avvio, reimpostazione e popolamento della tabella di sistema, OR con 0x8010 dalla voce della risorsa ESRT corrispondente CapsuleFlags.
CapsuleImageSize ... Dimensioni dell'intestazione della capsula + La dimensione di DEVICE.BIN.

Dopo che il caricatore del sistema operativo Windows ha caricato tutti gli aggiornamenti del firmware in sospeso e creato le strutture di dati necessarie per descriverle, chiama quindi il servizio di runtime UpdateCapsule, prima di chiamare ExitBootServices.

UpdateCapsule viene chiamato prima di ExitBootServices quando il firmware della piattaforma ha il controllo esclusivo di tutti i dispositivi, incluso il dispositivo di archiviazione. Un'implementazione del firmware della piattaforma di UpdateCapsule può salvare i payload di aggiornamento del firmware nell'archiviazione permanente per preparare un aggiornamento o supportare un ripristino dello stato precedente.

definizione di tabella ESRT

dispositivo Plug and play

Creazione di un pacchetto driver di aggiornamento

I/O del dispositivo dall'ambiente UEFI

Prevenzione e ripristino delle crisi senza intoppi

stato di aggiornamento del firmware