Как установить последовательность загрузки драйверов dxe?

Насколько я знаю, диспетчер DXE сначала загружает драйвер, указанный в файле Apriori. Затем загружает другие учитывающие зависимости. Я хочу загрузить утилиту либо до AMITSE, либо после. Если после AMITSE, то идея была CreateEvent(EVT_SIGNAL_EXIT_BOOT_SERVICES, ..., MAINFCN,...), но в MAINFCN я не могу обрабатывать другие события. Может быть, лучше было бы загрузить UEFI_APPLICATION при получении EVT_SIGNAL_EXIT_BOOT_SERVICES?

Основная проблема, которую я хочу решить, - это выполнение драйвера между экранами AMITSE (предлагает нажимать клавиши для входа в экран настройки и настройки).

Итак, я попытался:

  1. Поместите драйвер в другое место в томе - проблема не решена (драйвер загружается после экрана приглашения AMITSE).
  2. В секции [depex] поставьте TRUE - драйвер вообще не загрузился.
  3. CreateEvent(..) - не может обрабатывать другие события (чтобы поймать нажатие клавиши).

Не пробовал:

  1. Драйвер, который вызовет событие для загрузки приложения перед запуском загрузочных служб.

Может есть более простые способы?


person away228    schedule 13.08.2020    source источник


Ответы (1)


Решено написанием драйвера, предлагающего запустить приложение.

Идея создать событие и перехватить EVT_SIGNAL_EXIT_BOOT_SERVICES не сработает, потому что после этого [фактически после ExitBootServices()] события несколько полей системной таблицы EFI должны быть установлены в NULL. К ним относятся ConsoleInHandle, ConIn, ConsoleOutHandle, ConOut, StandardErrorHandle, StdErr и BootServicesTable. [Спецификация UEFI, версия 2.8, стр. 218-219]

person away228    schedule 22.08.2020