Как найти информацию о материнской плате, используя CPUID?

Я пытаюсь разработать функцию C для получения информации о материнской плате (имя, идентификатор и т. Д.), Но не могу найти, где хранится эта информация. Я взглянул на CPUID, но не смог найти там ничего, связанного с материнской платой (хотя много информации о процессоре).

Кто-нибудь знает, откуда я могу получить эту информацию?

Большое спасибо.

2 ответа

CPUID возвращает информацию о самом CPU (отсюда и название); он не возвращает информацию о материнской плате. Ваша ОС, скорее всего, будет иметь какой-то способ запроса данных ACPI, который может (если производитель материнской платы потрудился записать такую ​​информацию) иметь то, что вы ищете; однако точный способ сделать это зависит от вашей ОС.

Если вы программируете на голое железо, ваша первая остановка - таблицы ACPI. Особый интерес могут представлять OEMID и идентификатор таблицы OEM в DSDT; Вы также можете найти информацию о модели в другом месте. Имейте в виду, однако, что BIOS, как правило, полны интересных ошибок, и нет никакой гарантии, что производитель заполнил все, что не является абсолютно необходимым для загрузки Windows.

Системы без ACPI обычно устарели, по крайней мере, для оборудования ПК. Если вы используете систему без поддержки ACPI, удачи. В системе, не поддерживающей ACPI, не существует стандартизированного расположения для идентификационной информации материнской платы. Вы можете попробовать проверить оборудование и угадать его на основе таблицы известных аппаратных профилей, но это лучшее, что вы можете сделать.

Я бы начал с источника dmidecode и стандартов, на которые он ссылается (SMBIOS/DMI).

Другие вопросы по тегам