4.2 Write UEFI Application Entry Point
Developers must focus on specifying the entry point of UEFI application in the
[Defines]
section of INF file.
Its prototype is list below:
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE
ImageHandle,
IN EFI_SYSTEM_TABLE
*SystemTable
);
As can be seen, there are two parameters for UEFI application entry point,
ImageHandle
and SystemTable
. ImageHandle
refers to the image handle of
the UEFI application. SystemTable
is the pointer to the EFI System Table.
The following is a full UEFI_APPLICATION example located at
$WORKSPACE\MdeModulePkg\Application\HelloWorld. It shows how to print a "UEFI Hello World!" string to console.
Note: This application uses several pcds to demonstrate the usage of PCD. Readers can obtain the default value of these pcds from the
$WORKSPACE\MdeModulePkg\MdeModulePkg.dec file.
EFI_STATUS
EFIAPI
UefiMain (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
UINT32 Index;
Index = 0;
//
// Three PCD type (FeatureFlag, UINT32 and String) are used as the
// sample.
//
if (FeaturePcdGet (PcdHelloWorldPrintEnable)) {
for (Index = 0;
Index < PcdGet32 (PcdHelloWorldPrintTimes); Index ++) {
//
// Use UefiLib Print API to print string to UEFI console
//
Print ((CHAR16 *)PcdGetPtr (PcdHelloWorldPrintString));
}
}
return EFI_SUCCESS;
}