"哈囉"時間就這樣愉快的過去了嗎?
雖然常常聽到一句俗語"好奇心害死一隻貓"。
但我的好奇心時常作祟,就會很想了解萬事的根本。
於是,開始反問自己一些問題。
“Hello World” 是怎麼秀出來的呢?
Print (L"Hello World\r\n");
這段指令就好像我們C語言常見的printf一樣,只是UEFI提供了print這個函式,而放在(protocol\print)的資料夾內。
但我卻想要用UEFI的概念寫出一樣的功能,該如何做呢?
因為我想這會是一個好時機更了解整個UEFI的概念。其實,UEFI提供了一個protocol handle服務Console Support,它可以幫助我們簡單的完成這項功能,概念顯得更貼近UEFI的架構。這指令為
SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello World\n\r");
protocol handle的名字為Txtout,可能會因為定義不同而有不同的名子。不過也可以從公定的GUID確切的找到這個protocol。
#define EFI_SIMPLE_TEXT_OUT_PROTOCOL_GUID \
{ 0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
Shell>guid –b
至於這protocol怎麼去控制硬體,這就會是一個很大的工程,這之中會跟組語有些關聯。遇到大問題這時還是要學會取捨,把大方向抓住,了解目前我們需要了解的就夠了。
No comments:
Post a Comment