Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GetProcessAffinityMask返回空进程关联_C++_C_Winapi - Fatal编程技术网

C++ GetProcessAffinityMask返回空进程关联

C++ GetProcessAffinityMask返回空进程关联,c++,c,winapi,C++,C,Winapi,在一个非常简单的测试控制台应用程序中,我尝试获取进程的关联掩码: 编辑此代码不正确。问题解决了。请检查评论和验证答案 #include <cstdlib> #include <cstdio> #include <windows.h> int main() { while (1) { DWORD dwProcessAffinityMask = 0; DWORD dwSystemAffinityMask = 0;

在一个非常简单的测试控制台应用程序中,我尝试获取进程的关联掩码:

编辑此代码不正确。问题解决了。请检查评论和验证答案

#include <cstdlib>
#include <cstdio>
#include <windows.h>

int main()
{
    while (1)
    {
        DWORD dwProcessAffinityMask = 0;
        DWORD dwSystemAffinityMask = 0;

        BOOL res = GetProcessAffinityMask(
            GetCurrentProcess(),
            (PDWORD_PTR)&dwProcessAffinityMask,
            (PDWORD_PTR)&dwSystemAffinityMask);

        printf("%d 0x%X 0x%X\n",
            res,
            dwProcessAffinityMask,
            dwSystemAffinityMask);

        Sleep(1000);
    }

    return 0;
}
在我的笔记本电脑上运行,它有一个2核CPU,生成的系统掩码看起来是正确的。但是我不理解这里得到的
dwProcessAffinityMask
值的含义。出于这个原因,我还试图通过更改进程的关联掩码来玩弄任务管理器,但输出保持不变


此行为似乎不正确。

传递
DWORD\u PTR
变量的地址,而不是
DWORD
变量的地址

DWORD_PTR dwProcessAffinityMask;
DWORD_PTR dwSystemAffinityMask;

并移除这些铸型。它们清楚地表明了问题所在。当编译器报告您正在传递类型不匹配的参数时,请更正类型,而不是抑制错误。编译器已经告诉您出了什么问题,您只需要学习如何解释它的消息

你应该传递一个指向
DWORD\u PTR
的指针,而不是一个指向
DWORD
的指针。该死,你说得对!我是一只黑猩猩!现在测试正常了。是什么让你写
(PDWORD\u PTR)
而没有想到“嗯,也许这是错的,我应该仔细检查一下”@immibis我在阅读文档时被这个DWORD\u PTR和LPDWORD\u PTR的东西弄糊涂了。另外,原始代码来自一个32位的应用程序,这就是为什么这个bug在移植到64位之前从未出现的原因。我必须记住,在没有实际检查的情况下,不要复制/粘贴来自第三方的代码。谢谢
DWORD_PTR dwProcessAffinityMask;
DWORD_PTR dwSystemAffinityMask;