不同的 Entry,其預設的字串編碼也不同,UEFI 預設是使用 Unicode ﹝UINT16﹞,而標準 C 則是使用 ASCII﹝char﹞。
不過,為了 porting 的方便,我大部份都使用 main 型式,反正還是可以呼叫 UEFI 相關函數。
C code Entry | UefiMain | ShellAppMain | main |
parameter | EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable |
UINTN Argc, CHAR16 **Argv |
int argc, char *argv[] |
include file | #include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiApplicationEntryPoint.h> |
#include <Uefi.h> #include <Library/UefiLib.h> #include <Library/ShellCEntryLib.h> |
|
[Defines] (INF) ENTRY_POINT |
UefiMain | ShellCEntryLib | ShellCEntryLib |
[Packages] (INF) | MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec |
MdePkg/MdePkg.dec ShellPkg/ShellPkg.dec |
MdePkg/MdePkg.dec ShellPkg/ShellPkg.dec StdLib/StdLib.dec |
[LibraryClasses] (INF) | UefiApplicationEntryPoint UefiLib |
ShellCEntryLib UefiLib |
ShellCEntryLib UefiLib LibC |
為了避免不必要的誤解,我都習慣不將不需要的東西放入專案,這樣一來,Code 看起來才會賞心悅目。