C++判断操作系统是32位还是64位
2个回答
2016-11-11 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
c++中检测系统是32位还是64位的方法如下:
1、定义一个函数getWindowsBit,传入布尔值:
bool getWindowsBit(bool & isWindows64bit)
{
预编译语句,判断32位成立,那么就把isWindows64bit置为true
#if _WIN64
isWindows64bit = true;
return true;
预编译语句,判断32位成立,那么就把isWow64置为false
#elif _WIN32
BOOL isWow64 = 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.
LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)
GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
2、实际的判断逻辑,根据处理器函数GetCurrentProcess来判断
if(fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(), &isWow64))
return false;
if(isWow64)
isWindows64bit = true;
else
isWindows64bit = false;
return true;
}
else
return false;
#else
assert(0);
return false;
#endif
}
1、定义一个函数getWindowsBit,传入布尔值:
bool getWindowsBit(bool & isWindows64bit)
{
预编译语句,判断32位成立,那么就把isWindows64bit置为true
#if _WIN64
isWindows64bit = true;
return true;
预编译语句,判断32位成立,那么就把isWow64置为false
#elif _WIN32
BOOL isWow64 = 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.
LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)
GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
2、实际的判断逻辑,根据处理器函数GetCurrentProcess来判断
if(fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(), &isWow64))
return false;
if(isWow64)
isWindows64bit = true;
else
isWindows64bit = false;
return true;
}
else
return false;
#else
assert(0);
return false;
#endif
}
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
不一定,ARM架构的嵌入式开发可以基于uc/os、Linux、Windows等操作系统,而不一定要使用LINUX操作系统。在ARM架构上,Windows和Linux都是可以使用的,而且许多嵌入式系统开发工具也都是支持这两种操作系统的。因此,...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
展开全部
BOOL Is64Bit_OS()
{
BOOL bRetVal = FALSE;
SYSTEM_INFO si = { 0 };
LPFN_PGNSI pGNSI = (LPFN_PGNSI) GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "GetNativeSystemInfo");
if (pGNSI == NULL)
return FALSE;
pGNSI(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )
bRetVal = TRUE;
else
//32 位操作系统
_tprintf(_T("is 32 bit OS\r\n"));
return bRetVal;
}
{
BOOL bRetVal = FALSE;
SYSTEM_INFO si = { 0 };
LPFN_PGNSI pGNSI = (LPFN_PGNSI) GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "GetNativeSystemInfo");
if (pGNSI == NULL)
return FALSE;
pGNSI(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )
bRetVal = TRUE;
else
//32 位操作系统
_tprintf(_T("is 32 bit OS\r\n"));
return bRetVal;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询