Definizione di tabella ESRT
Il puntatore alla tabella ESRT viene identificato tramite il GUID corrispondente nella EFI_CONFIGURATION_TABLE.
#define EFI_SYSTEM_RESOURCE_TABLE_GUID \
{ 0xb122a263, 0x3661, 0x4f68, 0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 }
Nella tabella seguente viene descritto il formato della tabella ESRT e delle voci delle risorse del firmware contenute nella tabella.
Campo | Valore della matrice | Lunghezza byte | Offset di byte | Descrizione |
---|---|---|---|---|
Numero di risorse del firmware | 4 | 0 | Numero di voci delle risorse del firmware in ESRT. Non deve essere zero. | |
Numero massimo di risorse del firmware | 4 | 4 | Numero massimo di voci della matrice di risorse che possono essere aggiunte senza riallocare la tabella. Deve essere maggiore o uguale al numero di risorse del firmware. | |
Versione della risorsa firmware | 8 | 8 | Versione della voce della risorsa del firmware. Questo valore deve essere impostato su 1 | |
Matrice di voci delle risorse del firmware | Voce risorsa firmware 0 | |||
Classe firmware | 16 | 16 | GUID che identifica un componente firmware che può essere aggiornato tramite la capsula di aggiornamento. Questo GUID verrà passato al servizio di run-time dell'aggiornamento ueFI come parametro CapsuleGuid dell'intestazione della capsula di aggiornamento durante l'aggiornamento. | |
Tipo di firmware | 4 | 32 | Uno dei valori seguenti che identifica il tipo di risorsa del firmware: 0: Sconosciuto 1: Firmware di sistema 2: Firmware del dispositivo 3: driver UEFI |
|
Versione del firmware | 4 | 36 | La versione del firmware corrente, in cui un numero maggiore rappresenta una versione più recente. Il formato di questo valore non è definito, ma deve incorporare numeri principali e secondari della versione. Il formato consigliato è la prima parola principale e la seconda parola è numeri di versione secondaria. | |
Versione firmware supportata più bassa | 4 | 40 | Versione minima della risorsa firmware a cui è possibile eseguire il rollback di una risorsa del firmware per il sistema/dispositivo specificato. Se una correzione correlata alla sicurezza è disponibile in questa versione del firmware, la versione meno compatibile deve essere uguale alla versione del firmware corrente. | |
Flag della capsula | 4 | 44 | Flag che verranno passati al servizio di run-time dell'aggiornamento UEFI in bit 0 - 15 del campo Flag dell'intestazione della capsula di aggiornamento (il sistema operativo è responsabile della configurazione dei bit 16 - 31 di Flag come definito dalla sezione 7.5.3 della specifica UEFI). | |
Ultima versione di tentativo | 4 | 48 | Ultima versione del firmware per cui è stato tentato un aggiornamento. Questo valore usa lo stesso formato della versione del firmware. | |
Stato ultimo tentativo | 4 | 52 | Uno dei valori seguenti che descrive lo stato dell'ultimo tentativo di aggiornamento del firmware: 0: Successo 1: Non riuscito 2: Risorse insufficienti 3: Versione non corretta 4: Formato immagine non valido 5: Errore di autenticazione 6: Evento di alimentazione - AC non connesso 7: Evento di alimentazione - Batteria insufficiente |
|
... | Voce risorsa firmware 1 |
Il firmware UEFI principale deve allocare e popolare una tabella di configurazione ESRT contenente una voce di risorsa di sistema per se stessa (firmware di sistema). A scopo illustrativo, in questo firmware di base della guida verrà creata anche una voce aggiuntiva che rappresenta un dispositivo che supporta l'aggiornamento del firmware del dispositivo usando il meccanismo del pacchetto di aggiornamento del firmware.
Deve essere sempre presente una voce che descrive il firmware di sistema. Questa voce viene usata per indirizzare un aggiornamento del firmware di sistema. Se un'implementazione esegue aggiornamenti del firmware del sistema e del dispositivo come singola operazione monolitica, è necessario usare la voce del firmware di sistema per eseguire l'aggiornamento. In tutti gli altri casi, gli aggiornamenti del firmware del dispositivo sono destinati a una voce ESRT che descrive il firmware del dispositivo.
Il primo passaggio consiste quindi nel generare GUID per rappresentare queste due risorse del firmware, ad esempio {SYSTEM_FIRMWARE} e {DEVICE_FIRMWARE}. La tabella 2 mostra un esempio di definizione di tabella. In questo esempio si presuppone che entrambe le versioni del firmware siano attualmente versione 1 (versione firmware == 1).
Campo | Valore della matrice | Valore | Commento |
---|---|---|---|
Numero di risorse del firmware | 2 | Questa tabella contiene due voci di risorse del firmware. | |
Numero massimo di risorse del firmware | 2 | Questa allocazione di tabella contiene spazio sufficiente per descrivere un massimo di due risorse. | |
Versione della risorsa firmware | 1 | La versione del formato della voce della risorsa firmware usata da questa tabella è 1. | |
Matrice di voci delle risorse del firmware | Voce della risorsa firmware 0 | ||
Classe firmware | (SYSTEM_FIRMWARE) | Questo GUID identifica il firmware di sistema per l'aggiornamento tramite PnP. | |
Tipo di firmware | 1 | Il tipo di firmware di sistema è 1. | |
Versione del firmware | 1 | La versione corrente del firmware di sistema è 1. | |
Versione firmware supportata più bassa | 1 | La versione del firmware supportata più bassa è 1, quindi il firmware non può essere eseguito il rollback in una versione precedente alla versione 1. | |
Flag della capsula | 0 | Il firmware di sistema non definisce flag di aggiornamento delle capsule private. | |
Ultima versione di tentativo | 1 | L'ultima versione del firmware di sistema per cui è stato tentato un aggiornamento è stata la versione 1. | |
Stato ultimo tentativo | 0 | L'ultimo tentativo di aggiornamento del firmware di sistema ha avuto esito positivo. | |
Voce della risorsa firmware 1 | |||
Classe firmware | (DEVICE_FIRMWARE) | Questo GUID identifica il firmware del dispositivo per l'aggiornamento tramite PnP. | |
Tipo di firmware | 2 | Il tipo di firmware del dispositivo è 2. | |
Versione del firmware | 1 | La versione corrente del firmware del dispositivo è 1. | |
Versione firmware supportata più bassa | 1 | La versione del firmware supportata più bassa è 1, quindi il firmware non può essere eseguito il rollback in una versione precedente alla versione 1. | |
Flag della capsula | 0x8010 | Il firmware del dispositivo definisce i flag di aggiornamento delle capsule private (0x8010). | |
Ultima versione di tentativo | 1 | L'ultima versione del firmware del dispositivo per cui è stato tentato un aggiornamento è la versione 1 | |
Stato ultimo tentativo | 0 | L'ultimo tentativo di aggiornamento del firmware del dispositivo ha avuto esito positivo. |
L'esempio precedente di ESRT viene usato altrove in questa documentazione per esaminare il processo di aggiornamento del firmware e descrivere il supporto di Windows per il processo di aggiornamento e un'implementazione del firmware di supporto.
Argomenti correlati
Creazione di un pacchetto di driver di aggiornamento
Elaborazione degli aggiornamenti
I/O dispositivo dall'ambiente UEFI