Поделиться через


Определение таблицы ESRT

Указатель на таблицу ESRT определяется по соответствующему идентификатору GUID в EFI_CONFIGURATION_TABLE.

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

В следующей таблице описан формат таблицы ESRT и записей ресурсов встроенного ПО, содержащихся в таблице.

Поле Значение массива Длина байтов Смещение байтов Описание
Число ресурсов встроенного ПО 4 0 Количество записей ресурсов встроенного ПО в ESRT. Не должно быть равно нулю.
Максимальное число ресурсов встроенного ПО 4 4 Максимальное количество записей массива ресурсов, которые можно добавить без перераспределения таблицы. Должно быть больше или равно количеству ресурсов встроенного ПО.
Версия ресурса встроенного ПО 8 8 Версия записи ресурса встроенного ПО. Это значение должно быть равно 1
Массив элементов ресурса встроенного ПО Запись ресурса встроенного ПО 0
Класс встроенного ПО 16 16 GUID, определяющий компонент встроенного ПО, который можно обновить с помощью капсулы обновления. Этот GUID будет передан в службу времени выполнения капсул обновления UEFI в качестве параметра CapsuleGuid заголовка обновления во время обновления.
Тип встроенного ПО 4 32 Одно из следующих значений, определяющих тип ресурса встроенного ПО:

0. Неизвестно

1: встроенное ПО системы

2. Встроенное ПО устройства

3. Драйвер UEFI
Версия встроенного ПО 4 36 Текущая версия встроенного ПО, где большее число представляет более новый выпуск. Формат этого значения не определен, но должен включать основные и дополнительные числа версий. Рекомендуемый формат: первое слово — основное, а второе слово — номера дополнительных версий.
Минимальная поддерживаемая версия встроенного ПО 4 40 Минимальная версия ресурса встроенного ПО, к которой можно выполнить откат ресурса встроенного ПО для данной системы или устройства. Если исправление, связанное с безопасностью, доступно в этой версии встроенного ПО, то наименее совместимая версия должна быть равна текущей версии встроенного ПО.
Капсульные флаги 4 44 Флаги, которые будут переданы в службу времени выполнения капсулы обновления UEFI в битах от 0 до 15 поля Флаги заголовка капсулы обновления (ос отвечает за настройку битов 16–31 флагов, как определено в разделе 7.5.3 спецификации UEFI).
Версия последней попытки 4 48 Последняя версия встроенного ПО, для которой была предпринята попытка обновления. Это значение использует тот же формат, что и версия встроенного ПО.
Состояние последней попытки 4 52 Одно из следующих значений, описывающих состояние последней попытки обновления встроенного ПО:

0: успешное завершение

1: неудачно

2. Недостаточно ресурсов

3. Неправильная версия

4: недопустимый формат изображения

5. Ошибка проверки подлинности

6. Событие питания — переменный доступ не подключен

7: Событие питания — недостаточно батареи
... Запись ресурса встроенного ПО 1

Основное встроенное ПО UEFI должно выделять и заполнять таблицу конфигурации ESRT, содержащую одну запись системного ресурса (системное встроенное ПО). В качестве иллюстрации в этом руководстве основное встроенное ПО также создаст еще одну запись, представляющую устройство, поддерживающее обновление встроенного ПО устройства с помощью механизма пакета обновления встроенного ПО.

Всегда должна быть только одна запись, описывающая встроенное ПО системы. Эта запись используется для обновления встроенного ПО системы. Если реализация выполняет обновления встроенного ПО системы и устройства в виде единой монолитной операции, для обновления необходимо использовать запись системного встроенного ПО. Во всех остальных случаях обновления встроенного ПО устройства нацелены на запись ESRT с описанием встроенного ПО устройства.

Первым шагом является создание идентификаторов GUID для представления этих двух ресурсов встроенного ПО, т. е. {SYSTEM_FIRMWARE} и {DEVICE_FIRMWARE}. В таблице 2 показан пример определения таблицы. В этом примере предполагается, что обе версии встроенного ПО в настоящее время являются версией 1 (версия встроенного ПО == 1).

Поле Значение массива Значение Комментировать
Число ресурсов встроенного ПО 2 Эта таблица содержит две записи ресурсов встроенного ПО.
Максимальное число ресурсов встроенного ПО 2 Это выделение таблицы содержит достаточно места для описания не более двух ресурсов.
Версия ресурса встроенного ПО 1 Формат записи ресурса встроенного ПО, который используется в этой таблице, равен 1.
Массив элементов ресурса встроенного ПО Запись ресурса встроенного ПО 0
Класс встроенного ПО (SYSTEM_FIRMWARE) Этот GUID идентифицирует встроенное ПО системы для обновления через PnP.
Тип встроенного ПО 1 Системный тип встроенного ПО — 1.
Версия встроенного ПО 1 Текущая версия встроенного ПО системы — 1.
Минимальная поддерживаемая версия встроенного ПО 1 Минимальная поддерживаемая версия встроенного ПО — 1, поэтому невозможно выполнить откат встроенного ПО до версии, более ранней, чем версия 1.
Капсульные флаги 0 Встроенное ПО системы не определяет флаги обновления частных капсул.
Версия последней попытки 1 Последняя версия встроенного ПО системы, для которой была предпринята попытка обновления, была версии 1.
Состояние последней попытки 0 Последняя попытка обновления встроенного ПО системы была успешной.
Запись ресурса встроенного ПО 1
Класс встроенного ПО (DEVICE_FIRMWARE) Этот GUID идентифицирует встроенное ПО устройства для обновления через PnP.
Тип встроенного ПО 2 Тип встроенного ПО устройства — 2.
Версия встроенного ПО 1 Текущая версия встроенного ПО устройства — 1.
Минимальная поддерживаемая версия встроенного ПО 1 Самая низкая поддерживаемая версия встроенного ПО — 1, поэтому откат встроенного ПО до версии 1 не допускается.
Капсульные флаги 0x8010 Встроенное ПО устройства определяет частные флаги обновления капсулы (0x8010).
Версия последней попытки 1 Последняя версия встроенного ПО устройства, для которой была предпринята попытка обновления, — версия 1.
Состояние последней попытки 0 Последняя попытка обновления встроенного ПО устройства была успешной.

Приведенный выше пример ESRT используется в других местах этой документации, чтобы пройти процесс обновления встроенного ПО и описать поддержку Windows для процесса обновления, а также реализацию встроенного ПО.

Устройство Plug and Play

Создание пакета драйвера обновления

Обработка обновлений

Ввод-вывод устройства из среды UEFI

Простое предотвращение и восстановление кризисов

Состояние обновления встроенного ПО