如何编写以编程方式从UEFI驱动程序添加启动选项的代码? 1)我尝试添加“Boot0001”变量:
ZeroMem(Data, 2048);
StrCpy(Data, L"Boot0001");
DataSize = StrLen(Data) * 2;
Status = gRT->SetVariable(L"Boot0001", &dGuid, Attr, DataSize, &Data);
2)我需要在“BootOrder”变量中添加条目。但我无法理解。 理想情况下,我想从示例efi应用程序添加启动选项启动。
答案 0 :(得分:2)
向UEFI启动列表添加内容:
您可以找到有效的代码段in UEFI shell sources。
答案 1 :(得分:1)
UEFI规范中描述了其工作原理 - 无需the UEFI Forum付款即可使用。目前的版本是2.4B。
BootOrder变量机制(以及其他内容)在3.2节 - 全局定义变量中描述,但我将给出一个简短的总结。
它是首选引导顺序的 UINT16 元素数组。 UINT16 值是Boot####
变量名称的数字部分。因此,要按优先顺序相反的顺序对选项Boot0001
,Boot0002
和Boot0003
进行排名,您的BootOrder变量应包含(十六进制,忽略字节顺序)000300020001
。
还需要设置非易失性,引导服务和运行时服务属性(如该章的表11所述)。