6

有没有办法在 windows 上以编程方式查找系统芯片组的北桥、南桥名称和其他硬件信息?我不认为 WMI 提供了这些信息。我试图找出像hwinfocpuinfo这样的工具是如何找到这些信息的。

4

1 回答 1

3

人们通常通过 WMI 执行此类操作,它很多时候无法提供有用的信息,甚至提供“错误”信息,因为有时它依赖于来自 BIOS(通过 SMBIOS)的供应商填充信息,这些信息经常为空或错误,而不是去与特定的硬件部分进行通信。

我以前经历过这种经历来获取 RAM 信息。WMI 提供了错误的 BIOS 信息,我发现 RAM 芯片带有一个特殊的 SPD(串行存在检测)芯片,我需要与之通信。最后我的雇主选择了 CPUID API。

这里 CPU-Z 的作者在一次采访中谈到了这个话题:

http://www.techpowerup.com/mobile/reviews/Interviews/Franck_Delattre/1.html

要获得这样的信息,您需要搜索如何通过驱动程序在内核模式下与 PCI 配置空间进行通信,或者寻找一些可以为您执行此操作的替代 API。

以下是我当时浏览的一些链接:

http://www.codeproject.com/Articles/35378/Access-Physical-Memory-Port-and-PCI-Configuration

http://support.microsoft.com/?scid=kb;en-us;253232&x=3&y=13

http://www.hollistech.com/Resources/Misc%20articles/getbusdata.htm

http://www.osronline.com/showThread.CFM?link=176210#T4

另外,我认为值得一提的是 Windows 中的 SetupDi 函数,它有时能够提供 WMI 无法提供的信息。

于 2012-07-18T01:35:46.873 回答