Что делать после ExitBootServices в UEFI?

После вызова функции ExitBootServices в UEFI, происходит переход из режима загрузки в режим исполнения операционной системы или другого приложения в режиме runtime, который предоставляет более широкие возможности для работы с аппаратным обеспечением.

После успешного выполнения ExitBootServices, вам уже необходимо выбрать и загрузить операционную систему или свое приложение. Вот несколько шагов, которые могут потребоваться для это сделать:

1. Определите файловую систему, на которой находится ваша операционная система или приложение. В UEFI существует подсистема EFI File System (EFIFS), которая предоставляет доступ к файлам и каталогам. Вы можете использовать функции загрузки файловой системы для анализа доступных разделов диска и поиска нужного файла.

2. Загрузите соответствующий загрузочный файл с вашей операционной системой или приложением в память. Это может быть, например, образ ядра операционной системы или исполняемый файл вашего приложения.

3. Установите контекст исполнения, чтобы подготовить аппаратный стек, программа начала исполнения, а также другие необходимые данные. В UEFI это делается путем создания нового объекта процесса и структуры окружения EFI_SYSTEM_TABLE, которая связывает функции UEFI с вашим новым контекстом.

4. Инициализируйте и конфигурируйте аппаратные устройства, такие как контроллеры дисков или сетевых карт, которые нужны для работы вашей операционной системы или приложения. Для этого можно использовать соответствующие функции UEFI, которые предоставляют доступ к аппаратному обеспечению.

5. Запустите ваши приложение или операционную систему. В UEFI это делается путем вызова функции, которая запускает код из загруженного файла в памяти.

Все вышеперечисленные шаги выполняются после вызова функции ExitBootServices и зависят от вашей конкретной конфигурации и требований. Каждая операционная система или приложение может иметь свои собственные специфические требования, которые вы должны учитывать при разработке.