Могут ли приложения uefi вызывать API DXE lib и наоборот?

Я работаю в edk2 Tianocore. Я написал драйвер DXE для некоторой обработки данных, этот драйвер автоматически запускается непосредственно перед фазой BDS. Я также написал приложение uefi для выполнения той же работы, это приложение. может быть выполнен пользователем из оболочки uefi.

Общий код драйвера и приложения Dxe помещается в библиотеку uefi. Проблема в том, что вызовы функции Print() в библиотеке не работают при вызове из драйвера Dxe, они работают хорошо при вызове из приложения.


person user28264    schedule 21.02.2016    source источник


Ответы (1)


Функция печати не будет работать до тех пор, пока консоль вывода не будет инициализирована на этапе BDS, после чего заполняется указатель gST->ConOut. Вы можете заменить вызовы Print в своей библиотеке своей собственной функцией, например. PrintApp, который внутренне проверяет gST->ConOut и вызывает Print только в том случае, если gST->ConOut не равен NULL. Во время разработки мне также нравится вызывать DEBUG (...) в DXE и Print (...) после ReadyToBoot в функции PrintApp, поэтому я вижу одни и те же сообщения, выходящие либо на консоль отладки, либо на экран.

person sun2sirius    schedule 21.02.2016