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
版权声明:本文标题:UEFI HII (Human Interface Infrastructure)一些知识点 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729000012a1182490.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论