2011-07-12 18 views
2

我想開發一個C函數獲取一些主板信息(名稱,ID等),但我找不到這些信息存儲在哪裏。我看了一下CPUID,但是我找不到與主板相關的任何東西(儘管很多關於CPU的信息)。如何使用CPUID查找主板信息?

有誰知道從哪裏可以得到這些信息?

非常感謝。

+1

除非您嘗試創建可引導的應用程序並直接訪問硬件,否則我們需要知道將運行您的應用程序的操作系統 – Djole

+0

這只是可啓動的二進制文件 – limp

+0

@limp,因此您直接啓動的引導程序,而不是從Windows或其他? – bdonlan

回答

4

CPUID返回有關CPU本身的信息(因此名稱);它不會返回有關主板的信息。你的操作系統可能會有一些查詢ACPI數據的方法,這可能(如果主板的製造商不屑於記錄這些信息),你可以找到你想要的;但是,確切的方法取決於您的操作系統。

如果您要編碼裸機,您的第一站是ACPI tables。特別感興趣的可能是DSDT中的OEMID和OEM表ID;你也可以在其他地方找到模型信息。但是,請注意,BIOS往往是full of interesting bugs,並且不能保證製造商已經填寫了任何不必要的東西來啓動Windows。

非ACPI系統通常已經過時,至少對於PC硬件而言。如果您使用的是非ACPI系統,祝您好運。在非ACPI系統上沒有標準化的主板識別信息位置。您可以嘗試根據已知硬件配置文件的表格來探測硬件和猜測,但這是您可以做的最好的選擇。

+0

+1:同意。這是主板固件將有這個信息,並且它必須使用適當的接口查詢。 –

+0

這有點含糊。 CPU-Z如何得到這個信息呢?如果這是ACPI,哪張表有(但是,非ACPI系統會發生什麼)? – limp

+0

@limp,就像我說過的,在給出任何具體建議之前,我們需要您的操作系統。檢索硬件信息的確切方法取決於操作系統。 – bdonlan

0

我會從dmidecode源及其引用的標準(SMBIOS/DMI)開始。