1. 建立INF file, 如Sample.inf. 給一組GUID並設定為BS_DRIVER.
2. 建立一個Header file - Vfr.h, 並設定一組Formset GUID. 另外須設定一個Form Id.
3. 建立一個VFR file - Sample.vfr, 並將Formset GUID設定進來.
4. 建立Sample.c, 這裡有一些步驟須進行:
a. 先宣告一個extern的陣列資料, 命名規則是以VFR檔名+Bin[].
b. 宣告一個extern的字串陣列資料, 命名規則是以INF檔名+Strings[].
c. 須設定一組GUID, 此GUID須宣告在DEF file, 之後會安裝給HII Protocol.
d. 進入DxeMain, 首先要Locate EFI_HII_DATABASE_PROTOCOL.
e. 再來Locate EFI_HII_CONFIG_ROUTING_PROTOCOL.
f. 把Bin[]與Strings[]與Formset GUID包成EFI_HII_PACKAGE_LIST_HEADER.
g. 利用HiiLibCreatePackageListDriverHandle產生一個Driver Handle.
h. 將產生出來的Driver Handle以及EFI_HII_PACKAGE_LIST_HEADER,
加到HII Database裡面去. 並產生一個HII Handle.
i. 安裝EFI_HII_CONFIG_ACCESS_PROTOCOL到Driver Handle裡面去.
此Protocol包含了三個Callback Function. 包含:
(1). ExtractConfig. 進入Setup Menu時會呼叫.
(2). RouteConfig. 離開Setup Menu時會呼叫.
(3). Callback. 頁面切換時會呼叫.
j. 將SCT_FORM_SET_PROTOCOL的資料填入, 並安裝給Driver Handle.
2. 建立一個Header file - Vfr.h, 並設定一組Formset GUID. 另外須設定一個Form Id.
3. 建立一個VFR file - Sample.vfr, 並將Formset GUID設定進來.
4. 建立Sample.c, 這裡有一些步驟須進行:
a. 先宣告一個extern的陣列資料, 命名規則是以VFR檔名+Bin[].
b. 宣告一個extern的字串陣列資料, 命名規則是以INF檔名+Strings[].
c. 須設定一組GUID, 此GUID須宣告在DEF file, 之後會安裝給HII Protocol.
d. 進入DxeMain, 首先要Locate EFI_HII_DATABASE_PROTOCOL.
e. 再來Locate EFI_HII_CONFIG_ROUTING_PROTOCOL.
f. 把Bin[]與Strings[]與Formset GUID包成EFI_HII_PACKAGE_LIST_HEADER.
g. 利用HiiLibCreatePackageListDriverHandle產生一個Driver Handle.
h. 將產生出來的Driver Handle以及EFI_HII_PACKAGE_LIST_HEADER,
加到HII Database裡面去. 並產生一個HII Handle.
i. 安裝EFI_HII_CONFIG_ACCESS_PROTOCOL到Driver Handle裡面去.
此Protocol包含了三個Callback Function. 包含:
(1). ExtractConfig. 進入Setup Menu時會呼叫.
(2). RouteConfig. 離開Setup Menu時會呼叫.
(3). Callback. 頁面切換時會呼叫.
j. 將SCT_FORM_SET_PROTOCOL的資料填入, 並安裝給Driver Handle.
留言