Elaborazione degli aggiornamenti
Dopo aver applicato tutti i pacchetti di aggiornamento del firmware e il sistema successivamente riavviato, il caricatore del sistema operativo Windows carica tutti i file del payload del firmware (in questo esempio firmware.bin) nella memoria fisica. Il caricatore del sistema operativo Windows crea intestazioni di 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. Nell'impostazione del 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 della capsula è stato specificato nel inF per il pacchetto driver. I flag di capsule proprietari possono essere specificati anche in INF e quando specificato verranno inclusi anche quando si chiama UEFI UpdateCapsule
Fare riferimento all'esempio ESRT nella definizione di tabella ESRT e nel pacchetto del driver di aggiornamento delle risorse del firmware INF in Creazione di un pacchetto di driver di aggiornamento, le intestazioni della capsula create dal caricatore del sistema operativo Windows creano per passare a UpdateCapsule saranno le seguenti.
Campo | Valore | Commento |
---|---|---|
CapsuleGuid | {SYSTEM_FIRMWARE} | Dalla voce firmware della risorsa ESRT corrispondente. |
HeaderSize | ... | Riempimento per l'avvio firmware.bin allineato alla pagina. |
Flags | 0x50000 | Rendere persistenti e avviare, reimpostare. |
CapsuleImageSize | ... | Dimensioni 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 di 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 della capsula come indicato di seguito:
Campo | Valore | Commento |
---|---|---|
CapsuleGuid | {DEVICE_FIRMWARE} | Dalla voce firmware della risorsa ESRT corrispondente. |
HeaderSize | ... | Riempimento in base all'allineamento della pagina DISPOSITIVO. Avvio BIN. |
Flags | 0x50000 | Rendere persistenti e avviare, reimpostare e popolare la tabella di sistema, OR con 0x8010 dalla voce della risorsa ESRT corrispondente CapsuleFlags. |
CapsuleImageSize | ... | Dimensioni intestazione della capsula + Dimensioni del DISPOSITIVO. 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 run-time 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 per l'archiviazione persistente per eseguire un aggiornamento o supportare un rollback di ripristino.
Argomenti correlati
Creazione di un pacchetto di driver di aggiornamento
I/O dispositivo dall'ambiente UEFI