私は、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のベンダー/ファミリ/モデルよりも深く検討する必要があります。
"CPUIDとVendorIDを使用して、すべての可能なCPU検出の包括的なコードが見つかりましたが、今はそのままにしておきたいのです。" - なぜですか? –
GetSystemInfoは実際に実装されていないトリックを行うように思えるので、msdnはそのドキュメントを最新の状態に保ちます。 – Alex