C++ 从MSDN实现uu cpuid示例会给出非常大的数字

C++ 从MSDN实现uu cpuid示例会给出非常大的数字,c++,breakpoints,msdn,cpuid,C++,Breakpoints,Msdn,Cpuid,我正在快速地将这段代码实现到我的程序中,因为我需要获得一些CPU信息,但是当我看到这部分代码时: __cpuid(CPUInfo, 0x80000000); nExIds = CPUInfo[0]; 下一个for循环开始永远滚动,因此我设置了一个断点,命中率不断增加,结果是nExIDs设置为2147483656,这将使剩余代码的执行时间变长(如果不是几周的话)(因此这显然是一个错误)。它没有说该功能已被弃用或其他任何东西,因此它不应该给我带来麻烦,对吗?如果它与*uu cpuid*函数

我正在快速地将这段代码实现到我的程序中,因为我需要获得一些CPU信息,但是当我看到这部分代码时:

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

下一个for循环开始永远滚动,因此我设置了一个断点,命中率不断增加,结果是nExIDs设置为2147483656,这将使剩余代码的执行时间变长(如果不是几周的话)(因此这显然是一个错误)。它没有说该功能已被弃用或其他任何东西,因此它不应该给我带来麻烦,对吗?如果它与*uu cpuid*函数相关,我将在VAIO笔记本电脑上的Windows 7 Home Premium 64位上运行它。我查询的CPU是英特尔(R)核心(TM)i5 CPU m 460@2.53GHz,具有2个核心(4个逻辑)。也许我需要传递一个不同于0x8000000的值?但是如何确定传递的值呢?

好的,我发现了,MSDN中的示例有一个错误-如果不支持该功能,它会将其设置为负值,但nExIds是一个无符号int,因此当您将其设置为负值时,它会自动设置为2147483656。因此我必须使用int而不是unsigned int

如果您发布您正在使用的代码,我们可能会提供帮助。在该页面上记录的其他信息类型是否有效?他们回来了什么?@Rich:在他链接的页面上。当然,不能保证它是无漏洞的。谢谢@RobertHarvey不得不滚动一点才能找到你链接的页面的这一部分,你读了吗?如果支持,则可以使用0x8000000中的信息类型值返回信息。要确定允许的最大有意义值,请将信息类型设置为0x8000000