Как установить последовательность загрузки драйверов dxe?
Насколько мне известно, диспетчер DXE сначала загружает драйвер, указанный в файле Apriori. Затем загружает другие рассматриваемые зависимости. Я хочу загрузить утилиту до AMITSE или после. Если после AMITSE идея была CreateEvent(EVT_SIGNAL_EXIT_BOOT_SERVICES, ..., MAINFCN,...), но в MAINFCN я не могу обрабатывать другие события. Может быть, лучше было бы загрузить UEFI_APPLICATION при получении EVT_SIGNAL_EXIT_BOOT_SERVICES?
Основная проблема, которую я хочу решить, - это запускать драйвер между экранами AMITSE (предлагать нажимать клавиши для входа в настройки и экран настройки).
Итак, я попробовал:
- Поместить драйвер в другое место в томе - проблема не решена (драйвер загружается после экрана приглашения AMITSE).
- Поставьте TRUE в секцию [depx] - драйвер вообще не загрузился.
- CreateEvent (..) - не может обрабатывать другие события (чтобы поймать нажатие клавиши).
Не пробовал:
- Драйвер, который вызовет событие для загрузки приложения перед запуском служб загрузки.
Может есть способы попроще?
1 ответ
Решается написанием драйвера, предлагающего запустить приложение.
Идея создать событие и перехватить EVT_SIGNAL_EXIT_BOOT_SERVICES не сработает, потому что после этого [фактически после ExitBootServices()] события несколько полей системной таблицы EFI должны быть установлены в NULL. К ним относятся ConsoleInHandle, ConIn, ConsoleOutHandle, ConOut, StandardErrorHandle, StdErr и BootServicesTable. [Спецификация UEFI, версия 2.8, стр. 218-219]