用于dmidecode的C/C++ API

amrnrhlw  于 2023-03-01  发布在  C/C++
关注(0)|答案(1)|浏览(253)

dmidecode列出了各种硬件参数,包括实际安装的DRAM模块的大小、型号和序列号。
在不使用system()和解析输出文本的情况下,是否存在通过C/C ++获得相同信息的编程接口?
例如:

dmidecode --type 17
# dmidecode 2.12
SMBIOS 2.7 present.

Handle 0x0043, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0042
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: DIMM
    Set: None
    Locator: ChannelA-DIMM0
    Bank Locator: BANK 0
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1600 MHz
    Manufacturer: 0711
    Serial Number: 00000000
    Asset Tag: 9876543210
    Part Number: PUD31600C114G2VS
    Rank: 1
    Configured Clock Speed: 1600 MHz

Handle 0x0044, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0042
    Error Information Handle: Not Provided
    Total Width: Unknown
    Data Width: Unknown
    Size: No Module Installed
nafvub8i

nafvub8i1#

dmidecode似乎从这些二进制文件中获取数据
/sys/固件/dmi/表/DMI
/sys/固件/dmi/表/smbios入口点
有一个解析它们的库
https://github.com/brunexgeek/smbios-parser
对我来说,它确实起到了作用。我遇到的唯一不一致是获取系统的UUID。显然,这是因为在某个时候,字节顺序发生了变化,如dmidecode手册页所述。解决这些问题的方法可能是从/sys/class/dmi/id/product_uuid获取UUID

相关问题