2011-07-12 17 views
2

マザーボードの情報(名前、IDなど)を取得するためのC関数を開発しようとしていますが、これらの情報が格納されている場所を見つけることができません。私はCPUIDを見ましたが、マザーボードに関連するものは何も見つかりませんでした(CPUに関する情報はたくさんありますが)。CPUIDを使用してマザーボード情報を検索するには?

どこから知ることができますか?

ありがとうございます。

+1

あなたが起動可能なアプリケーションを作成しようとしていて、ハードウェアに直接アクセスして、あなたのアプリケーションを実行するOSを知る必要がない限り、 – Djole

+0

これはブート可能なバイナリの – limp

+0

@limpなので、ブートローダーの、Windowsやなどからですか? – bdonlan

答えて

4

CPUIDはCPU自体に関する情報(したがって名前)を返します。マザーボードに関する情報は返されません。お使いのOSにACPIデータを照会する方法があるかもしれません。マザーボードの製造元がそのような情報を記録するのに迷惑をかけると、探しているものがあるかもしれません。ただし、これを行う正確な方法はOSによって異なります。

ベアメタルにコーディングする場合、最初の停止は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私が言ったように、具体的な助言を与える前にOSが必要です。ハードウェア情報を取得する正確な方法は、OSによって異なります。 – bdonlan

0

dmidecodeソースとそれが参照する標準(SMBIOS/DMI)から始めます。

関連する問題