Compartilhar via


Definição de tabela ESRT

O ponteiro para a tabela ESRT é identificado por meio de seu GUID correspondente no EFI_CONFIGURATION_TABLE.

#define EFI_SYSTEM_RESOURCE_TABLE_GUID   \
{ 0xb122a263, 0x3661, 0x4f68,  0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80  }

A tabela a seguir descreve o formato da tabela ESRT e as entradas de recurso de firmware contidas na tabela.

Campo Valor da matriz Comprimento do byte Deslocamento de bytes Descrição
Contagem de recursos de firmware 4 0 O número de entradas de recurso de firmware no ESRT. Não deve ser zero.
Máximo de recursos de firmware 4 4 O número máximo de entradas de matriz de recursos que podem ser adicionadas sem realocar a tabela. Deve ser maior ou igual à Contagem de Recursos de Firmware.
Versão do recurso de firmware 8 8 A versão de entrada do recurso de firmware. Esse valor deve ser definido como 1
Matriz de entrada de recurso de firmware Entrada 0 do recurso de firmware
Classe firmware 16 16 Um GUID que identifica um componente de firmware que pode ser atualizado por meio da cápsula de atualização. Esse GUID será passado para o serviço de tempo de execução da cápsula de atualização UEFI como o parâmetro CapsuleGuid do cabeçalho da cápsula de atualização durante a atualização.
Tipo de firmware 4 32 Um dos seguintes valores que identifica o tipo de recurso de firmware:

0: Desconhecido

1: Firmware do sistema

2: Firmware do dispositivo

3: Driver UEFI
Versão do Firmware 4 36 A versão atual do firmware, em que um número maior representa uma versão mais recente. O formato desse valor não está definido, mas deve incorporar números principais e secundários da versão. O formato recomendado é a primeira palavra é principal e a segunda palavra é números de versão secundárias.
Versão mais baixa do firmware com suporte 4 40 A versão mais baixa do recurso de firmware para a qual um recurso de firmware pode ser revertido para o sistema/dispositivo determinado. Se uma correção relacionada à segurança estiver disponível nesta versão de firmware, a versão menos compatível deverá ser igual à versão atual do firmware.
Sinalizadores de cápsula 4 44 Sinalizadores que serão passados para o serviço de tempo de execução da cápsula de atualização UEFI nos bits 0 – 15 do campo Flags do cabeçalho da cápsula de atualização (o sistema operacional é responsável por configurar os bits 16 – 31 de Flags, conforme definido pela seção 7.5.3 da especificação UEFI).
Versão da última tentativa 4 48 A última versão de firmware para a qual uma atualização foi tentada. Esse valor usa o mesmo formato que a Versão do Firmware.
Status da última tentativa 4 52 Um dos seguintes valores que descreve o status da última tentativa de atualização de firmware:

0: Êxito

1: Sem êxito

2: Recursos insuficientes

3: Versão incorreta

4: Formato de imagem inválido

5: Erro de autenticação

6: Evento de energia – AC não conectado

7: Evento de energia – Bateria insuficiente
... Entrada 1 do recurso de firmware

O firmware UEFI principal deve alocar e preencher uma tabela de configuração do ESRT que contém uma entrada de recurso do sistema para si mesmo (firmware do sistema). Para fins ilustrativos, neste guia, o firmware principal também criará uma entrada adicional que representa um dispositivo que dá suporte à atualização de firmware do dispositivo usando o mecanismo de pacote de atualização de firmware.

Sempre deve haver exatamente uma entrada que descreva o firmware do sistema. Essa entrada é usada para direcionar uma atualização de firmware do sistema. Se uma implementação executar atualizações de firmware do sistema e do dispositivo como uma única operação monolítica, a entrada de firmware do sistema deverá ser usada para direcionar a atualização. Em todos os outros casos, as atualizações de firmware do dispositivo são direcionadas por uma entrada ESRT que descreve o firmware do dispositivo.

A primeira etapa, então, é gerar GUIDs para representar esses dois recursos de firmware, ou seja, {SYSTEM_FIRMWARE} e {DEVICE_FIRMWARE}. A Tabela 2 mostra um exemplo de uma definição de tabela. Este exemplo pressupõe que ambas as versões de firmware estejam atualmente na versão 1 (Versão do Firmware == 1).

Campo Valor da matriz Valor Comentário
Contagem de recursos de firmware 2 Esta tabela contém duas entradas de recurso de firmware.
Máximo de recursos de firmware 2 Essa alocação de tabela contém espaço suficiente para descrever um máximo de dois recursos.
Versão do recurso de firmware 1 A versão de formato de entrada de recurso de firmware que esta tabela usa é 1.
Matriz de entrada de recurso de firmware Entrada de recurso de firmware 0
Classe firmware (SYSTEM_FIRMWARE) Esse GUID identifica o firmware do sistema para atualização via PnP.
Tipo de firmware 1 O tipo de firmware do sistema é 1.
Versão do Firmware 1 A versão atual do firmware do sistema é 1.
Versão mais baixa do firmware com suporte 1 A versão mais baixa do firmware com suporte é 1, portanto, o firmware não pode ser revertido para uma versão anterior à versão 1.
Sinalizadores de cápsula 0 O firmware do sistema não define nenhum sinalizador de atualização de cápsula privada.
Versão da última tentativa 1 A última versão de firmware do sistema para a qual uma atualização foi tentada foi a versão 1.
Status da última tentativa 0 A última tentativa de atualização de firmware do sistema foi bem-sucedida.
Entrada de recurso de firmware 1
Classe firmware (DEVICE_FIRMWARE) Esse GUID identifica o firmware do dispositivo para atualização via PnP.
Tipo de firmware 2 O tipo de firmware do dispositivo é 2.
Versão do Firmware 1 A versão atual do firmware do dispositivo é 1.
Versão mais baixa do firmware com suporte 1 A versão mais baixa do firmware com suporte é 1, portanto, o firmware não pode ser revertido para uma versão anterior à versão 1.
Sinalizadores de cápsula 0x8010 O firmware do dispositivo define sinalizadores de atualização de cápsula privada (0x8010).
Versão da última tentativa 1 A última versão de firmware do dispositivo para a qual uma atualização foi tentada é a versão 1
Status da última tentativa 0 A última tentativa de atualização de firmware do dispositivo foi bem-sucedida.

O exemplo de ESRT acima é usado em outro lugar nesta documentação para percorrer o processo de atualização de firmware e descrever o suporte do Windows para o processo de atualização, bem como uma implementação de firmware de suporte.

Dispositivo plug and play

Criação de um pacote de driver de atualização

Processando atualizações

E/S do dispositivo do ambiente UEFI

Prevenção e recuperação contínuas de crises

Status da atualização de firmware