zoukankan      html  css  js  c++  java
  • 判断是否是64位系统

    背景:

    在写一个应用,需要和系统窗口进行通讯,所以通讯数据要兼容32位和64位系统。

    故事:

    以为挺简单的一件事情,直接搜索“VC判断 64位系统”,搜到很多结果,但答案很一致,好像上学时候交的作业:

     1 typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
     2 
     3 LPFN_ISWOW64PROCESS fnIsWow64Process;
     4 
     5 BOOL IsWow64()
     6 {
     7     BOOL bIsWow64 = FALSE;
     8 
     9     //IsWow64Process is not available on all supported versions of Windows.
    10     //Use GetModuleHandle to get a handle to the DLL that contains the function
    11     //and GetProcAddress to get a pointer to the function if available.
    12 
    13     fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
    14         GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
    15 
    16     if(NULL != fnIsWow64Process)
    17     {
    18         if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
    19         {
    20             //handle error
    21         }
    22     }
    23     return bIsWow64;
    24 }
    25  

    link:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684139(v=vs.85).aspx

    疑问:

    我是想判断系统位数,咋取得一个系统函数名称里有单词process,还有个进程句柄做参数,系统属性怎么地也不能因进程不同传回不同信息吧。MSDN搜索该函数,会发现有这么一句

    image

    思考:

    记得原来看到一篇MSDN博客上说Wow64是Window32 On Window64的简称,所以这个函数就是判断一个进程是不是处于这样情况:32 bit Window process On 64 bit Window。

    那么为什么大家都说通过这个函数可以判断系统是否是64位呢?这个说法有一个前提,就是当前进程必须是32位进程:

    32位进程在64位系统上反回TRUE

    32位进程在32位系统上反回FALSE

    64位进程在64位系统上反回FALSE

    你会不会提出这样的疑问?文档上没有说64位进程在32位系统上返回情况;好吧,我刚开始也绕进去了,你可以重启一下大脑,32位系统无法运行64位进程。

  • 相关阅读:
    Python装饰器的解包装(unwrap)
    《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记
    关于Python的函数(Method)与方法(Function)
    判断python对象是否可调用的三种方式及其区别
    tornado返回指定的http code
    Mac下安装pymssql
    iptables
    OpenFlow通信流程解读
    Prometheus的架构及持久化
    ansible总结
  • 原文地址:https://www.cnblogs.com/aishangxue/p/3614620.html
Copyright © 2011-2022 走看看