zoukankan      html  css  js  c++  java
  • 判断是64位操作系统还是32位系统

    1、IsWow64Process

    确定指定进程是否运行在64位操作系统的32环境(Wow64)下。
    语法
    BOOL WINAPI IsWow64Process(
      __in HANDLE hProcess,
      __out PBOOL Wow64Process
      );
    参数
      hProcess
        进程句柄。该句柄必须具有PROCESS_QUERY_INFORMATION 或者 PROCESS_QUERY_LIMITED_INFORMATION 访问权限
      Wow64Process
        指向一个bool值,
        如果该进程是32位进程,运行在64操作系统下,该值为true,否则为false。
        如果该进程是一个64位应用程序,运行在64位系统上,该值也被设置为false。
      返回值
        如果函数成功返回值为非零值。
        如果该函数失败,则返回值为零。要获取扩展的错误的信息,请调用GetLastError .
      微软的例子:
      #include <windows.h>
      #include <tchar.h>
      typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
      LPFN_ISWOW64PROCESS fnIsWow64Process;
      BOOL IsWow64()
      {
        BOOL bIsWow64 = FALSE;
        //IsWow64Process is not available on all supported versions of Windows.
        //Use GetModuleHandle to get a handle to the DLL that contains the function
        //and GetProcAddress to get a pointer to the function if available.
        fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
        if(NULL != fnIsWow64Process)
        {
          if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
          {
            //handle error
          }
        }
        return bIsWow64;
      }
      int main( void )
      {
        if(IsWow64())
          _tprintf(TEXT("The process is running under WOW64.
    "));
        else
          _tprintf(TEXT("The process is not running under WOW64.
    "));
        return 0;
      }

      注意:使用此函数判断操作系统是32位还是64位并不合适,勉强要用的话,可以指向一个32位进程。

    2、比较合适的做法是:

      BOOL Is64bitSystem()
      {
        SYSTEM_INFO si;
        GetNativeSystemInfo(&si);
        if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
                si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )
          return TRUE;
        else
          return FALSE;
      }
  • 相关阅读:
    Sql server 2005 restore failed
    使用Windows Live Writer发布到cnblogs
    IE7 Tab problem
    转: 编码,charset,乱码,unicode,utf8与net简单释义(续)
    移动12.1号动感地带寻宝答案
    转: 各种 lightbox 实现
    Cannot connect windows 2003 server remotely by mstsc
    boost asio 网络编程案例简单改写
    读书笔记之《程序员的自我修养链接、装载与库》
    基于OpenSSL简单实现Shamir基于身份的数字签名算法
  • 原文地址:https://www.cnblogs.com/guomeiran/p/3898718.html
Copyright © 2011-2022 走看看