3

我正在快速将此代码http://msdn.microsoft.com/en-us/library/hskdteyh(v=vs.80).aspx实施到我的程序中,因为我需要获取一些 CPU 信息,但是当我得到到这部分代码:

__cpuid(CPUInfo, 0x80000000);
    nExIds = CPUInfo[0];

下一个 for 循环开始永远滚动,所以我放置了一个断点并且命中计数不断增加,结果nExIDs设置为2147483656,这将使其余代码的执行时间即使不是几周(所以很明显一个错误)。它并没有说该功能已被弃用或其他任何东西,所以它不应该给我带来麻烦,对吧?如果它与 *__cpuid* 功能相关,我在Windows 7 Home Premium 64上运行它- VAIO 笔记本电脑上的。我正在查询的 CPU 是Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz,有2 个内核(4 个逻辑)。也许我需要传递一个不同于0x80000000的值?但我如何确定多少?

4

1 回答 1

3

好的,我想通了,MSDN中的示例有一个错误 - 如果不支持该功能,则将其设置为负值,但nExIdsunsigned int,因此当您将其设置为负无效值时,它会自动设置到2147483656。所以我必须使用int而不是unsigned int

于 2013-03-28T00:43:14.910 回答