【问题标题】:GetProcessAffinityMask gives wrong valueGetProcessAffinityMask 给出错误的值
【发布时间】:2010-11-24 04:02:35
【问题描述】:

我正在使用 WIN API 方法 GetProcessAffinityMask 来检索系统的进程和系统关联掩码。该方法执行时没有任何错误,但 lpProcessAffinityMask 和 lpSystemAffinityMask 的值为 -1,这是错误的。

我的机器是 AMD Opteron 6174 4 Physical,每台 12 核,所以整个系统有 48 核。我的操作系统是 Windows Web Server 2008 R2 64 位

【问题讨论】:

  • 您的应用是原生 x64 还是 x86 在 WOW64 下运行?
  • 我的应用是 x86 而不是原生 x64;那么通过更改项目配置,这个问题会得到解决吗?
  • 是的。使用 x86 应用程序,您可以在 64 位操作系统下在 WOW64 上运行。在这种情况下,您最多只能访问 32 个处理器。

标签: c++ windows winapi


【解决方案1】:

看到没有提供关于 OP 正在运行的应用程序的信息,我有根据地猜测该应用程序在 WOW64 下运行 - 因此限制为 32 个处理器(lpProcessAffinityMask 是指向 DWORD 的指针)。因此,OP 看到的结果为 0xFFFFFFFF。见:http://msdn.microsoft.com/en-us/library/aa384228%28v=VS.85%29.aspx

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 2014-07-14
    • 2019-07-15
    • 2012-05-03
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多