17. 부팅 옵션에 WaitForEvent 함수 추가
이전 장에서 부팅 옵션에 HelloWorld 애플리케이션을 부팅 옵션에 추가했다.
EFI Shell에서 exit 명령어를 통해 BIOS로 이동한 후 부팅 매니저를 보면 HelloWorld 애플리케이션을 확인할 수 있다. 해당 애플리케이션을 실행하면 글자를 출력하고 바로 BIOS 화면으로 돌아가는 것을 확인할 수 있다.
Shell> exit

문자열을 출력하고 바로 BIOS로 돌아가는 것을 고치기 위해 이번 장에서는 HelloWorld 애플리케이션 코드에 WaitForEvent 함수를 추가한다.
WaitForEvent 는 사용자로부터 키 입력을 받을 때까지 기다리는 함수이다.
해당 문제를 해결하기 위해서 EFI_SIMPLE_TEXT_INPUT_PROTOCOL의 EFI_EVENT WaitForKey를 사용해야 한다.(gST->ConIn으로 사용할 수 있다.)
함수를 추가하기 위해 UefiLessonsPkg/HelloWorld/HelloWorld.c에 아래 코드를 추가한다.
OVMF를 새롭게 빌드한 후 BIOS -> Boot Manager -> HelloWorld 애플리케이션을 실행하면 처음과는 달리 문자열들을 출력하고 대기하는 화면을 볼 수 있다.

아직 문제가 남아있다. 이번에는 엔터키 입력을 했을 경우 다시 문자열 출력 화면으로 돌아온다.
이 문제는 입력 버퍼를 읽거나 지우지 않아 발생하는 문제로 Reset 함수를 통해 해결할 수 있다.
UefiLessonsPkg/HelloWorld/HelloWorld.c에 아래 코드를 추가한다.
다시 OVMF를 빌드하고 HelloWorld 애플리케이션을 실행해보면 모든 키 입력에서 정상적으로 종료가 되는 것을 볼 수 있다.
HelloWorld.c
Last updated