我快速将此代码http://msdn.microsoft.com/en-us/library/hskdteyh(v=vs.80).aspx实现到我的程序中,因为我需要获取一些CPU信息,但是当我到达这部分代码时:
__cpuid(CPUInfo, 0x80000000);
nExIds = CPUInfo[0];
下一个for循环开始永远滚动,所以我设置了一个断点并且命中数继续增长,结果 nExIDs 被设置为 2147483656 ,这将是如果不是几个星期,则执行剩余的代码时间(因此它显然是一个错误)。它没有说该功能已被弃用或任何东西,所以它不应该给我带来麻烦,对吧?如果它与* __ cpuid *功能相关,我在 VAIO 笔记本电脑上的 Windows 7家庭高级版64位上运行它。我查询的CPU是一个 Intel(R)Core(TM)i5 CPU M 460 @ 2.53GHz ,内核 2 ( 4逻辑< /strong>)。也许我需要传递除 0x80000000 以外的其他值?但是我如何确定多少呢?
答案 0 :(得分:3)
好的我明白了, MSDN 中的示例有一个错误 - 如果不支持该功能,则将其设置为负值,但 nExIds 是< strong> unsigned int ,所以当你将它设置为负无效值时,它会自动设置为 2147483656 。所以我必须使用 int 而不是 unsigned int 。