VC6.0获取windows操作系统位数(32位或者64位)
//安全的获取真实的系统信息
void CXxxDlg::SafeGetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo)
{
if (NULL == lpSystemInfo)
return;
typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
LPFN_GetNativeSystemInfo nsInfo =
(LPFN_GetNativeSystemInfo)GetProcAddress(GetModuleHandle(_T(“kernel32”)), “GetNativeSystemInfo”);;
if (NULL != nsInfo)
{
nsInfo(lpSystemInfo);
}
else
{
GetSystemInfo(lpSystemInfo);
}
}
//获取操作系统位数
int CXxxDlg::GetSystemBits()
{
SYSTEM_INFO si;
SafeGetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )
{
return 64;
}
return 32;
}
特别值得注意的是如果PROCESSOR_ARCHITECTURE_AMD64编译不识别,则在PROCESSOR_ARCHITECTURE_IA 64的定义处,自己宏定义一下,值为9。如下: