Windows 引导加载程序如何添加打开固件设置的选项?

Windows 引导加载程序如何添加打开固件设置的选项?

Windows 设置1中有一个选项,可让您进入固件设置2。它是如何做到的?我猜想它会是某种汇编指令,但我不确定它是什么。

1如果我没记错的话。2
可能需要重新启动后...

答案1

具有快速启动功能的 UEFI 固件支持OsIndications包含 64 位位掩码的 EFI 变量。为了请求固件设置界面,Windows 会设置此变量中的位 1(也称为 EFI_OS_INDICATIONS_BOOT_TO_FW_UI),然后进行正常的系统重启。

使用 EFI 变量可以启动到其他操作系统条目BootNext,该变量是一个 16 位整数,包含所需条目的编号Boot####。例如,操作系统可以将其设置为 0x0002,然后进行常规重启,以便使用 Boot0002。

这两个变量在使用一次后都会被固件自动清除。

在这两种情况下,变量都是通过调用SetVariable()EFI 运行时服务上的方法来设置的。用户空间代码无法直接访问该方法,但您可以使用操作系统提供的 API 来执行相同的操作。(在 Windows 上,您可以使用设置固件环境变量,在 Linux/sys/firmware/efi/efivars或 libefivar 上。)

答案2

INT 20 在 POST 时可用,一旦加载 DOS,它就会执行 INT 21 上的某些功能。我不记得 INT 20 调用的确切参数,但如果你搜索一下,就会发现必须将 al、ah 和其他寄存器设置为什么才能重新启动并调用 bios 设置屏幕。

相关内容