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

标签 c x86 osdev motherboard hardware-id

我正在尝试开发一个 C 函数来获取一些主板信息(名称、ID 等),但我找不到这些信息的存储位置。我查看了 CPUID,但在那里找不到与主板相关的任何信息(尽管有很多关于 CPU 的信息)。

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

非常感谢。

最佳答案

CPUID 返回有关 CPU 本身的信息(因此得名);它不返回有关主板的信息。您的操作系统可能有某种查询 ACPI 数据的方法,这些数据可能(如果主板制造商不厌其烦地记录此类信息)有您要查找的内容;但是,具体的方法取决于您的操作系统。

如果您在裸机上编码,您的第一站是 ACPI tables .特别感兴趣的可能是 DSDT 中的 OEMID 和 OEM 表 ID;您也可以在其他地方找到模型信息。但是请注意,BIOS 往往是 full of interesting bugs ,并且不能保证制造商已经填写了让 Windows 启动并非绝对必要的任何内容。

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

关于c - 如何使用 CPUID 查找主板信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665685/

相关文章:

C 编程数组循环

c - 使用C编程将图像存储在“二进制”数组中

c - 使用 gdb 为多线程应用程序设置观察点

x86 - 现代计算机是以实模式还是虚拟实模式启动的?

c - 在链表的开头插入新节点

c - C 中的宏用法?

x86 - 跳转到保护模式不起作用或没有效果

程序集 x86 : comparing strings doesn't work

gcc - 成功构建了 GCC 交叉编译器工具链。如何正确设置环境变量?

c++ - 操作系统如何检测进程崩溃