如何使用CPUID查找主板信息?

时间:2011-07-12 14:21:35

标签: c x86 osdev motherboard hardware-id

我正在尝试开发一个C函数来获取一些主板信息(名称,ID等),但我无法找到存储这些信息的位置。我看过CPUID,但我找不到与主板相关的任何东西(虽然有很多关于CPU的信息)。

有谁知道从哪里可以获得这些信息?

非常感谢。

2 个答案:

答案 0 :(得分:5)

CPUID返回有关CPU本身的信息(因此名称);它不会返回有关主板的信息。您的操作系统可能会有一些方法来查询ACPI数据,这可能(如果主板的制造商不愿记录此类信息)具有您正在寻找的内容;但是,确切的方法取决于您的操作系统。

如果您正在使用裸机进行编码,那么您的第一站就是ACPI tables。特别感兴趣的可能是DSDT中的OEMID和OEM表ID;您也可以在其他地方找到模型信息。但是,请注意,BIOS往往是full of interesting bugs,并且无法保证制造商已经填写了任何非必要的东西来启动Windows。

非ACPI系统通常已过时,至少对于PC硬件而言。如果您使用非ACPI系统,祝您好运。非ACPI系统上的主板识别信息没有标准化位置。您可以尝试根据已知硬件配置文件的表格来探测硬件和猜测,但这是您可以做的最好的。

答案 1 :(得分:1)

我将从dmidecode源及其引用的标准(SMBIOS / DMI)开始。