Note: UEFI 定義的四種VFR 的 VARSTORE的型別

根據 28.2.5.6 Storage in UEFI 2.3 spec. 寫到UEFI目前可用在VFR Question的有 4種型別

1. Buffer Storage, 它是一個Buffer Storage Type, 用 EFI_IFR_VARSTORE OpCode表示, VFR 語法則是 varstore,  在Driver內要建立 EFI_HII_CONFIG_ACCESS_PROTOCOL 中的 ExtraceConfig() 與 RouteConfig(), 讓Framwork去存取 Var 的Buffer

2.  EFI Storage, 它是一種特定的 Buffer Storage, 用 EFI_IFR_EFIVARSTORE OpCode表示, VFR語法是 efivarstore, 在Driver內它是透過 EFI runtimer Service 中的 GetVariable()/SetVariable()存取變數, 因此這個會回存 NVRAM(Flash)

3. Name/Value Storage, 主要是一個 String 型別, 用 EFI_IFR_VARSTORE_NAME_VALUE Opcode表示, VFR語法是 namevaluevarstore,  在Driver內一樣要提供EFI_HII_CONFIG_ACCESS_PROTOCOL 來存取與儲存變數.

4. Date/Time Storage, 這就是Date/Time的專屬型別, 用 EFI_HII_DATE/EFI_HII_TIME OpCode表示,  VFR則直接就是data/time, 在Driver內就透過 GetTime()/SetTime(), GetWakeupTime()/SetWakeupTime() 存取之

當FormBrowse DXE使用 Buffer Storage 時, 會透過 EFI_HII_CONFIG_ACCESS_PROTOCOL,呼叫 ExtraceConfig(), 會透過Request 的EFI_STRING 將需要的 Var information 傳進來, 底下是該 Request String的一些 Example. 如果是一個Varstore的集合, 會有Byte offset, Width 的值是以Byte為單位, width為1時代表是一個byte. 而NameValue則直接傳進 Var Name

  • GUID=f4274aa000df424db55239511302113d&NAME=004d0079004900660072004e00560044006100740061&PATH=010414008db653c1fceb8e48b110662867745b877fff0400&OFFSET=DE&WIDTH=10
  • GUID=f4274aa000df424db55239511302113d&NAME=004d0079004900660072004e00560044006100740061&PATH=010414008db653c1fceb8e48b110662867745b877fff0400&OFFSET=EF&WIDTH=1
  • GUID=f4274aa000df424db55239511302113d&NAME=004d0079004900660072004e00560044006100740061&PATH=010414008db653c1fceb8e48b110662867745b877fff0400&OFFSET=D5&WIDTH=1&O
  • GUID=f4274aa000df424db55239511302113d&NAME=&PATH=010414008db653c1fceb8e48b110662867745b877fff0400&NameValueVar0&NameValueVar1&NameValueVar2

Buffer Storage 可以是Struct.Member 的變數形式, 在Form的 DXE Driver被載入時要自己將Struct 給初始化, 並透過 NewPackageList 去加入HII 的Database

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: