admin管理员组

文章数量:1627952

    HII Database 是整个平台的中央数据中心,Driver 负责将一些元素安装到Database中,如字体,字符串,图像,表格;Forms Browser使用这些元素在显示设备(Display Devices)上来呈现用户界面,或者通过输入设备(HID devices)接收用户信息;交互后用户在Forms Browser里面的更改会保存在EFI Global Variable Store(使用 GetVariable() 和 SetVariable() )或者自定义驱动提供的变量存储空间中。

HII Database

       作为系统所有表单,字串,图片,字体数据的资源库,驱动如果包含对数据库合适的信息,就会输出数据到HII database。例如,一个驱动可能包含所有主板具体数据(传统系统“setup”),另外,外接卡可能包含它们自己的驱动,也就有它们自己的setup相关数据。所有这些含有setup相关数据的驱动都会输出它们的信息到HII database

Forms Browser

        读取HII Database内容,翻译forms 数据来展现给user,如setup相关数据。同样也会获取用户输入的数据,允许将变化保存倒NV 存储中

Driver

    驱动和应用动态生成package,每个package有标准的header(EFI_HII_PACKAGE_HEADER),来表明大小以及package type; 每个package以header->type=EFI_HII_PACKAGE_END终止,就这样串在一起形成package list。

Forms Package

   packageheader-》type =EFI_HII_PACKAGE_FORMS即Forms package,其用来携带基于Forms的编码数据,Forms里面对象都是IFR(Internal Forms Representation)编码,我们一般使用的VFR,HFR, SD最后都是要转换为IFR,Forms package将IFR对象表现为op-code的集合。

packageheader offset+sizeof(EFI_HII_PACKAGE_HEADER)即IFR

IFR是对HII相关对象的一个二进制编码,每一个对象至少有3个属性,以标准的header(EFI_IFR_OP_HEADER)开始:

Opcode:所有不同HII相关对象的枚举,参考UEFI 33.3.8.3 Opcode Reference

 Length: Opcode自身长度

Scope:如果设定,会打开一个新的scope

综上,Packagelist->Forms Package->IFR,根据IFR->OpCode来获取具体form信息,如opcode如果为EFI_IFR_FORM_SET,则可以读到以下具体信息

    Packagelist 可以通过EFI_HII_DATABASE_PROTOCOL-》ExportPackageLists获取;也有在DXE 驱动中通过gEfiHiiPackageListProtocolGuid 获取,前提是DXE image中有type 为HII的PE/COFF resource。

本文标签: 知识点HIIUEFIHumanInfrastructure