推荐 Windows 下读取 SMBIOS的工具

最近发现一个能够在 Windows下读取 SMBIOS 的代码,有需要的朋友可以参考一下。
我在 UEFI 版本的 Windows 10 X64 下测试成功,编译器为 VS2015。

smbios

具体原理是使用: GetSystemFirmwareTable 来获得系统的SMBIOS信息。其中还有SMBIOS结构体的解析代码。有需要的朋友可以参考一下。
具体代码来自:https://github.com/KunYi/DumpSMBIOS
这里可以下载源程序

DumpSMBIOS-master

此外,还放了一个我编译的 X64 Release EXE版本,有需要的朋友可以试试,

DumpSMBIOS

最后,特别感谢作者KunYi Chen。

《推荐 Windows 下读取 SMBIOS的工具》有6个想法

  1. 不客氣! 某些原因在網上查找我自己 剛好找到你這來
    看了一下你作了很多以前我剛做BIOS時的學習項目呢!

    不過我做那些項目是手上還拿不到UEFI程式碼的時期只好用EDKII了!
    還看了你那個 Change BootOrder on Windows 那個提權只需要 SE_SYSTEM_ENVIRONMENT_NAME
    是必須的
    不過我那時只簡單測試BootOrder 跟一個TPM 相關設定都是正常可以的
    BootOrder 是UINT16 Array 型別所以是兩個Bytes
    另外幾家BIOS Vendor應該都有提供一個OS上面的程式庫透過SMM去設定變數的
    還有Boot 以後EFI 還是有保留空間的不會完全釋放會保留Runtime Service的空間
    ref. http://wiki.phoenix.com/wiki/index.php/EFI_RUNTIME_SERVICES

    1. 非常感谢您。

      关于 Runtime Service 我这边做了一点研究,但是没有找到 Windows 调用这些 Service 的方法,

      不知道哪里能找到相关的例子呢?

  2. Windows 沒有開放調用的方法, OS本身的 GetFirmwareEnvironmentVariables & SetFirmwareEnvironmentVariables 實際上調用 Runtime service的
    詳見 page 36 in http://www.uefi.org/sites/default/files/resources/UEFI-Plugfest-WindowsBootEnvironment.pdf

    按文件說明有可能在ACPI Driver 裡面調用runtime 但是也建議你除非必要不要這樣做
    可以參考這個文件
    https://firmware.intel.com/sites/default/files/resources/A_Tour_beyond_BIOS_Implementing_APEI_with_UEFI_White_Paper.pdf

  3. 这个方法确实可以,但 winxp上面是执行不了的.
    以前在winxp上面,直接通过特殊 _SM_查找 到 SMBIOS 地址,再读取.
    最近工作需要,没事研究了下AMI SMM CODE,AMI DMIEDIT工具的那个工具,就是用的SMM,
    用SMM的方法可以顺序读取和修改DMI修改,这样就不局限于WINDOWS系统 .

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注