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

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

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

Итак, я попробовал:

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

Не пробовал:

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

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

1 ответ

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

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

Другие вопросы по тегам