BIOS实战之Keep Some Setup Items When Load Default

在OEM的专案中,经常会有这样的要求:当用户在做Load Default时,某些之前修改过的Item是不能变成默认值的。例如,SATA Mode这个选项默认是AHCI Mode,当用户将其修改成RST Mode之后,并且也安装好系统,若是用户后面再进Setup做了Load Default,假设SATA Mode又被Load成了AHCI Mode并保存,若此时再进系统可能就会有异常了,因此这就需要在做Load Default时SATA Mode依然要保持为RST Mode。

以下就根据不同IBV Code来大概介绍下修改方法。

PHOENIX

Phoenix Code中的实现方法,相对比较简单。还是以SATA Mode做为例子说明。

  1. 在 VFR 文件中,将对应的 ITEM的 flags 设置为INTERACTIVE,同时需要定义一个questionid,如此才能在CallBack中调用,同时option对应的flags得设置成0。
  2. 找到与 vfr 所在同一目录的ConfigAccess.c文件(或是找到此vfr会使用的Callback function的文件)
  3. 接下来在ConfigAccess.c中找到相应的Callbak Function


    先查找到如下Action部分,Loaddefault时就会跑进这个判断中,然后在switch (QuestionId) 里面添加绿色框中的代码,也就是questionid ID_CONFIGURATION_MENU_SATA_CONTROLLER 所对应的ITEM直接返回EFI_SUCCESS,不做任何动作。

猜你喜欢

转载自blog.csdn.net/u011397314/article/details/111253754