2011-01-06 12 views
1

可能であれば、現在のプロセスがi3/i5ファミリまたはi7ファミリのIntel Coreで実行されているかどうかを検出しようとしていますか?GetNativeSystemInfoおよびSYSTEM_INFOです。 CPUID & VendorIDを使用して、可能なすべてのCPU検出の包括的なコードを見つけましたが、今はそのままにしておきたいと思います。GetSytemInfoと適切な情報があるようです。実行時にi3/i5/i7 Intel Coreファミリを検出する

私は単にこれを実行している:

SYSTEM_INFO si; 
GetSystemInfo(&si); 

wProcessorRevisionwProcessorLevelは、その情報を与えることができるはずのように見えます。私が手に私はここでテストする必要がありi5の上:

wProcessorArchitecture = 0 (correct) 
wProcessorLevel = 6 
wProcessorRevision = 7685 

私は、どこにでも見て、最新のインテル・コア・ファミリのための一切のスペックを試していません。私が見つけることができるすべてがそれのためには余りにも古く...どんな考えですか?

+6

"CPUIDとVendorIDを使用して、すべての可能なCPU検出の包括的なコードが見つかりましたが、今はそのままにしておきたいのです。" - なぜですか? –

+0

GetSystemInfoは実際に実装されていないトリックを行うように思えるので、msdnはそのドキュメントを最新の状態に保ちます。 – Alex

答えて

1

あなたが興味を持っている仕様は、「Intel仕様のアップデート」というドキュメントです。興味のあるプロセッサフ​​ァミリ固有のドキュメントについては、googleを利用する必要があります。

1

インテルから入手できます。 Start here、モデルを選択し、 "Download Datasheet"をクリックし、次に "Specification Update"をクリックしてcpuidを探します。

+0

合意 - これらの人のCPU IDはわかりますが、wProcessorLevel&wProcessorRevision ? – Alex

+1

レベルを無視します。リビジョンはモデルとして上位バイト、ステッピングとして下位バイトを持ちます。完全なcpuidが必要な場合は、__cpuid()イントリンシックを使用する必要があります。 –

1

私は、CPUがIntel i3/i5/i7であるかどうかを知りたいと思う理由を教えてください。あなたが間違っていて、CPUIDなどによって返された機能フラグを使用する必要があることを伝えることができます。基本的には、必要な答えを得るために十分な情報が提供されていません(あなたに求めた答えを与えるのに十分な情報しかありません)。 :-)

CPUの製造元がわからないため、SYSTEM_INFO構造体の "wProcessorLevel"と "wProcessorRevision"フィールドは実質的に役に立たない。 CPUIDのVendorIDを使用して製造元を決定することができますが、そうすることで、ファミリ/モデル/ステッピング情報を同時に取得できます。

"wProcessorLevel"は、 "CPUID.family"から直接取得されたようです。 "wProcessorLevel = 6"の場合は、Pentium IIからNetburstベースのCPU(Pentium 4など)を除いて最新のNehalemまでのIntel CPUが可能です。また、AMD K7、Cyrix M2、VIA C3などのものもあります。

"wProcessorRevision"フィールドは、 "(CPUID.model < < 8)+ CPUID.stepping"から派生したようです。ステッピング部分は無視する必要があります。 CPUID /ファミリの部分と組み合わされた "CPUID.model"部分は、それが最新のIntel Nehalemであるか、別の製造元の古いCPUであるかを判断するには不十分です(同じ "CPUID.family"と " "wProcessorLevel"を無視して "CPUID.model"部分のみに依存すると、状況が悪化するだけです。

もちろん、CPUIDの完全な識別情報があっても、 i3/i5/i7とNehalemベースのXeonまたはNehalemベースのCeleronの間、またはIntelが使用していると感じる他のブランド名(実際には "i3/i5またはi7"を意味する方法があります)今後のインテルのリリースは、i3/i5/i7ではありません(インテルが今後どのファミリ/モデル/ステッピング値を使用するか予測する方法はありません)。また、CPUIDによって返される情報が変更されることを許可するCPUもあることを忘れないでください。つまり、 "vendorID = Intel、family = 6、model = 30"を返すCPUが全く異なるわけではありませんしたがって、 "wProcessorRevision"および "wProcessorRevision"情報が正しいことを厳密に保証するものではありません)。これが懸念される場合は、CPUIDのベンダー/ファミリ/モデルよりも深く検討する必要があります。

関連する問題