zoukankan      html  css  js  c++  java
  • SetProcessAffinityMask的问题

    BOOL WINAPI SetProcessAffinityMask(
      _In_ HANDLE    hProcess,
      _In_ DWORD_PTR dwProcessAffinityMask
    );//MSDN2015版
    

      

    这里第二个参数有问题,因为DWORD_PTR is a pointer cast to a dword value

    虽然DWORD_PTR跟DWORD是一样的, typedef DWORD DWORD_PTR

    但意义上来说不一样,DWORD_PTR说明这个双字是一个地址,这个地址指向一个DWORD值

    而DWORD说明这是一个DWORD值

    所以,我在用这个函数的时候特意注意了

    用了个

    DWORD dwAffinityMask = 0x1  // 处理器0
    DWORD_PTR dwptrAff = (DWORD)(&dwAffinityMask);
    
    SetProcessAffinityMask(hProcess,dwptrAff);
    //结果返回错误,0x57, INVALID_PARAMETER
    

    然后我就

    DWORD dwAffinityMask = 0x1; 
    
    SetProcessAffinityMask(hProcess,dwAffinityMask);
    //这样竟然就成功了,根本不需要那样,所以我被MSDN文档的那个参数类型误导了!
    

    然后我已经去MSDN网站上反馈错误了。

    另外关联性就是一个DWORD 32位,从右往左,第i位代表处理器i, 1为存在/设置;0为不存在/取消

    0x0000000f   处理器0~3

    0x00000008  处理器3

    0x00000005  处理器0和2

    然后我发现自己错了,DWORD_PTR并没有我说的,我按照INT_PTR望文生义了,网上查了下,加_PTR似乎是说确保放得下一个指针,用于64和32移植相关问题的,所以就把他当DWORD用就完了,白想这么多。

  • 相关阅读:
    Salt-ssh批量自动安装被控端salt-mini
    Saltstack配置管理
    gitlab的安装和基本维护
    Git的杀手级功能之 一 远程仓库
    分布式版本控制系统-git
    Linux查看服务器公网ip的方法
    vmware fusion 10序列号
    python3.6.4的importlib模块重载用法
    设置PyCharm中的Python代码模版
    MacOs执行SQL出错(mysql)
  • 原文地址:https://www.cnblogs.com/cqubsj/p/6074509.html
Copyright © 2011-2022 走看看