如何判断操作系统是64位还是32位(GetNativeSystemInfo和IsWow64Process两种方法)
64位Wnidows 里面有个叫Wow64的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo可以获得这个信息。
代码示例:
SYSTEM_INFO si;
GetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 )
{
//64 位操作系统
}
else
{
// 32 位操作系统
}
另外,Windows API 还提供了 IsWow64Process 函数判断程序是不是运行在Wow64模拟器之上。
代码示例:
BOOL bIsWow64 = FALSE;
IsWow64Process(GetCurrentProcess(), &bIsWow64);
需要注意是GetNativeSystemInfo 函数从Windows XP 开始才有, 而 IsWow64Process 函数从 Windows XP with SP2 以及 Windows Server 2003 with SP1 开始才有。 所以使用该函数的时候最好用GetProcAddress。
typedef void (WINAPI *LPFN_PGNSI)(LPSYSTEM_INFO);
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_PGNSI pGNSI = (LPFN_PGNSI ) GetProcAddress(
GetModuleHandle(TEXT("kernel32.dll")), "GetNativeSystemInfo");
LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
>> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<
http://blog.csdn.net/wingeek/article/details/4028379
最新文章
- 【Alpha】Daily Scrum Meeting第七次
- AndroidLinker与SO加壳技术之下篇
- FZU 2193 So Hard (有限小数转换最简分数)(想法题)
- gdb调试core文件
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
- 从0开始学Java——JSP和Servlet——jsp转servlet出错的三个典型场景
- codeforces 719A:Vitya in the Countryside
- 如何下载spring-framework
- mac 安装lua并配置Subline Text2 的lua开发环境
- 游走[HNOI2013]
- HDU 6185 Covering 矩阵快速幂
- POJ2689-Prime Distance-区间筛素数
- 一、K3 Wise 实施指导《K3 Wise实施手册》
- Centos6 rpm 安装mysql5.5(转)
- Aspose.words一 DOM结构
- Windows下安装配置爬虫工具Scrapy及爬虫环境
- postgres json
- PHP函数总结 (七)
- Socket编程 - 网络基础知识
- Qt 模拟鼠标点击(QApplication::sendEvent(ui->;pushbutton, &;event0);)