通过C获取BIOS信息的常用方式
阅读一些内容后,我似乎可以映射 SMBIOS 内存并解析它。 我不知道该怎么做。 我无法使用任何托管代码,因为我希望它可以在任何操作系统下编译。
有谁有任何代码示例如何解决这个问题?
After reading some stuff it seems I can map the SMBIOS memory and parse it.
I have no idea on how to go about this.
I can't use any managed code as I would like this to be compilable under any OS.
Does anyone have any code examples how to go about this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在大多数系统上,它没有映射到用户模式可访问的内存中,因此您需要调用一些系统API。
在 Windows 上,您可以调用 GetSystemFirmwareTable。
On most systems, it is not mapped into user-mode accessible memory, so you need to call some system API.
On Windows, you can call GetSystemFirmwareTable.
对于 Linux,我想你应该看看 dmidecode 源代码 ( GPL)用于具体代码...
使用和解析 dmidecode 输出可能就是您所需要的...
For Linux I guess you should have a look at the dmidecode source (GPL) for concrete code...
Using and parsing dmidecode output may be all you need...
我编写了一个可重用的类来读取所有 SMBIOS 内容。
它是非常干净的代码,具有适当的错误处理并且易于扩展。
您可以从此类派生一个类,该类使用解析的数据来显示它或对其执行任何您想要的操作。
您还可以在代码注释中找到实际 SMBios 文档的链接。
你可以到我的主页下载:
ftp://ftp.netcult.ch/mirror/elmue/SMBiosClass.zip
埃尔穆埃
I wrote a reusable class to read all the SMBIOS stuff.
It is very clean code with a proper error handling and easy to extend.
You can derive a class from this class that uses the parsed data to display it or do whatever you want with it.
You find also a link to the actual SMBios documentation in the code's comments.
You can download it from my homepage:
ftp://ftp.netcult.ch/mirror/elmue/SMBiosClass.zip
Elmue
如果您可以运行 DOS 程序(例如 32 位 Windows),它将映射到 f000:f000
否则,您需要找到一种自己映射的方法或找到一个 API 来帮助您(如之前的帖子中所建议的)。
if you can run DOS programs (e.g. 32-bit Windows) it is mapped to f000:f000
Otherwise, you would need to figure out a way to map it yourself or find an API to help you (as suggested in previous posts).