【问题标题】:How to find motherboard info using CPUID?如何使用 CPUID 查找主板信息?
【发布时间】:2011-10-03 16:30:01
【问题描述】:

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

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

非常感谢。

【问题讨论】:

  • 除非您尝试创建可启动的应用程序并直接访问硬件,否则我们需要知道将运行您的应用程序的操作系统
  • 这只是一个可启动的二进制文件
  • @limp,所以您是直接从引导加载程序启动,而不是从 Windows 等启动?

标签: c x86 osdev motherboard hardware-id


【解决方案1】:

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

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

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

【讨论】:

  • +1:同意。将获得此信息的是主板固件,并且必须使用适当的接口进行查询。
  • 这有点含糊。例如,CPU-Z 如何获取此信息?如果这是 ACPI,哪个表有它(但是,非 ACPI 系统会发生什么)?
  • @limp,就像我说的,在给出任何具体建议之前,我们需要您的操作系统。检索硬件信息的具体方法取决于操作系统。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-07-19
    • 2011-06-29
    • 1970-01-01
    • 2015-09-17
    • 2012-11-21
    • 2012-02-18
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多