【问题标题】:Is there any functions can access single value of smbios with protocol technique?是否有任何功能可以使用协议技术访问 smbios 的单个值?
【发布时间】:2019-10-13 01:15:59
【问题描述】:

我是 uefi 的新手,正在尝试使用协议技术访问 smbios 值。我检查了 UEFI 和 SMBIOS 规范,但没有发现任何内容。

我知道有一个叫做 pci.read() 的函数,每次使用协议处理 pci 设备时,它可以访问内存的 pci 区域中的一个值。好像没有类似的函数每次读取一个值来处理 smbios 协议?

我在specs中找到的类似的是GetNext(),但是这个函数只输出了三个header的值。我想知道是否有任何方法可以每次读取单个值,以便我可以立即 Print() 值?还是把smbios的内存值放到一个数组中?

【问题讨论】:

    标签: bios uefi


    【解决方案1】:

    SMBIOS 对 UEFI 而言只不过是指向配置表的指针(可通过 UEFI 系统表访问,并由指定的 GUID 标识)。

    EFI_SMBIOS_PROTOCOL,但它是 PI(平台初始化)规范的一部分,而不是 UEFI - 因此不能被视为可移植接口。最新版 PI 规范(目前为 1.7)可从https://uefi.org/specifications 下载。

    否则,从系统表中获取指针并手动解析结构。结构表的大小可以从 SMBIOS 入口点读取。

    【讨论】:

    • 谢谢你的回答,但我放弃了使用协议访问smbios数据。我改用 EfiGetSystemConfigurationTable。这样做更快、更容易。
    • 遗憾的是,我认为这是最好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2020-12-13
    相关资源
    最近更新 更多