Last updated
Last updated
앞서 생성한 패키지 내부에 HelloWorld
애플리케이션을 포함하도록 한다.
HelloWorld.c
의 소스 코드는 아래와 같이 작성한다.
위와 같이 작성한 이유는 다음과 같다.
그 중에서 *ConOut
은 'Console Output'의 약자로 ConsoleOutHandle
과 연결된 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
인터페이스에 대한 포인터이다.
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
인터페이스에 대한 정보는 다음과 같다.
또한 L""
은 CHAR16
을 의미하며 다른 프로세서 아키텍처에서 다른 유형 구현을 위한 프록시이다.
이 때문에 아키텍처별 다른 ProcessorBind.h
헤더 정보를 지정하여 빌드한다.
이제 빌드를 통해 정상적인 출력이 진행되는지 확인해보자
아래와 같은 결과를 얻을 수 있다.
문자열을 출력하기 위해서는 애플리케이션의 Entry Point에 전달되는EFI_SYSTEM_TABLE
서비스를 이용해야 한다.
EFI_SYSTEM_TABLE
은 다음과 같이 구성되어 있으며 공식 UEFI 스펙에서 자세히 기술하고 있다.
출력 기능을 담당하는 OutputString
의 구현은 다음과 같이 정의되어 있다.
예로 X64경우에는 다음과 같든 헤더 정보를 이용한다