是否可以从操作系统访问EFI系统表?我想知道运行时服务的映射位置。原因是Windows API只将变量服务公开给用户模式(Get/SetFirmwareEnvironmentVariable),但我想知道是否可以通过在自定义驱动程序中直接访问服务来使用其余服务。我知道Windows加载程序正在将包含服务虚拟地址的表映射到内核内存中,但我还没有找到定位和读取它的方法。有人能就如何实现这一目标提供建议或指导吗?
这是一个一年前的问题,但我会回答它,也许它会帮助其他人。
长话短说。不,这是不可能的。它完全是Windows内部,如果Microsoft不公开它,就无法访问UEFI运行时服务。至于UEFI变量,它们存储在非易失性RAM中,只有UEFI固件(BIOS)知道所有变量存储在哪里以及如何存储。因此,有两种可能性,要么BIOS为Windows提供了一种获取UEFI运行时服务指针的方式,要么微软与BIOS供应商达成了协议,比如:-好吧,伙计们,如果你想让你的系统与Windows兼容,这里是你必须存储UEFI运行时间服务周期指针的内存位置。
我看到程序使用SetFirmwareEnvironmentVariable
写入NVRAM。