BIOS知识枝桠——HII

HII Database

  • HII OverView
  • HII Protocol

HII OverView

BIOS知识枝桠——HII_第1张图片
HII(Human Interface Infrastructure), 定义了一套管理用户输入的基础架构,支持多种类型的用户输入。在这个架构中HII 数据库处理底层位置,负责提供用户安装、卸载及使用各种字符串、字体及图片等资源的接口。
上图展现了HII 的基本架构。
HII DataBase: 对HII 的所有数据进行管理。
Setup Browser: 负责和用户进行交互,用户的输入输出,修改值时会获取到对应的数据然后通知HII Driver进行保存或者其他,还有一个Display模块是负责显示的。
这一套框架加载的时候是在BDS阶段,启动UI界面,Setup Browser一直监视着用户的改动,通过HIIDriver存储改动到database或是EFI Variable里面去,保证下次启动的时候改动仍然生效。

HII Protocol

Font Protocol: 字符相关,字符串图像,Sting ID图像,获取字形,获取字体信息
String Protocol: String 相关操作,New – Get – Set – String ; Get Language & 2nd Language
Image Protocol: New – Get – Set – Image ; Draw Image, Draw Image ID
Database Protocol: 管理HII每个组件的数据,New – Remove- Update – List – Export Lists – Get Handle Package;Find- Get- Set Keyboard layout;Register, Unregister Package Notify

通常遇到的会是String Protocol,但实际上也不会直接去调用String Protocol,在开发过程中,为了方便开发,在MdeMoudlePkg里面添加了一个HI Lib,提供了常用的Service足够满足日常开发。
BIOS知识枝桠——HII_第2张图片
对于HII Driver来说,首先要把自己的HII Package List install上去,Driver里面可能有String Package ,Form Package,这个就需要打包install到HII Database 里面进行统一管理,这样Setup Browse就知道有哪些信息并进行显示。除此以外,HII Driver还需要produce一个Config Access Protocols,这个Protocol进行和UI方面的数据交互,对于用户来说,在setup page修改的选项会由setup browser监控后同步HII Driver,这个Protocol包含三个API,ExtractConfig (读取当前的设置状态值)、RouteConfig(存储用户修改好的信息,由HII Driver决定)、CallBack(对用户的修改动作作出响应)。

你可能感兴趣的:(BIOS,bios)