VC判断系统和进程是64位还是32位

///

//判断操作系统是64位还是32位

//返回TRUE位64位,返回FALSE位32位

///

方法一:

BOOL IsWow64() 

    typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 
    LPFN_ISWOW64PROCESS fnIsWow64Process; 
    BOOL bIsWow64 = FALSE; 
    fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle("kernel32"),"IsWow64Process"); 
    if (NULL != fnIsWow64Process) 
    { 
        fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
    } 
    return bIsWow64; 
}

 

方法二:

BOOL GetOSVerIs64Bit()
{
 BOOL bRet=FALSE;

 SYSTEM_INFO si;

 typedef VOID(__stdcall*GETNATIVESYSTEMINFO)(LPSYSTEM_INFO lpSystemInfo);

 GETNATIVESYSTEMINFO fnGetNativeSystemInfo;
 fnGetNativeSystemInfo=(GETNATIVESYSTEMINFO)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"GetNativeSystemInfo");
 if (fnGetNativeSystemInfo!=NULL)
 {
  fnGetNativeSystemInfo(&si);

  if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||   

   si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )

  { 
   bRet=TRUE;
  }
 }

 return bRet;
}

 

//

//判断进程是64位还是32位

//返回1为64位,返回0为32位

int GetProcessIsWOW64(HANDLE hProcess)
{
 int nRet=-1;

 typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 
 LPFN_ISWOW64PROCESS fnIsWow64Process; 
 BOOL bIsWow64 = FALSE; 
 BOOL bRet;
 DWORD nError;
 fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(L"kernel32"),"IsWow64Process"); 
 if (NULL != fnIsWow64Process) 
 { 
  bRet=fnIsWow64Process(hProcess,&bIsWow64);
  if (bRet==0)
  {
   nError=GetLastError();
   nRet=-2;
  }
  else
  {
   if (bIsWow64)
   {
    nRet=1;
   }
   else
   {
    nRet=0;
   }
  }
 } 
 return nRet; 
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值