我是uefi的新手,正尝试通过协议技术访问smbios值。我已经检查了UEFI和SMBIOS规范,但对它们一无所获。
我知道有一个名为pci.read()的函数,每次使用协议处理pci设备时,该函数每次都可以访问内存的pci区域中的一个值。似乎没有类似的函数每次都读取一个值来处理smbios协议?
我在规范中发现的与GetNext()类似,但是此函数仅输出header的三个值。我想知道是否有任何方法可以每次读取单个值,以便我可以立即Print()值?还是将smbios的内存值放入数组中?
答案 0 :(得分:0)
SMBIOS 对UEFI而言只是指向配置表的指针(可通过UEFI系统表访问并由指定的GUID标识)。
其中有一个EFI_SMBIOS_PROTOCOL
,但它是PI(平台初始化)规范的一部分,不是UEFI的一部分-因此不能视为可移植接口。可以从https://uefi.org/specifications下载最新版本的PI规范(当前为1.7)。
否则,请从系统表中获取指针并手动解析结构。可以从SMBIOS入口点读取结构表的大小。