问题
有时候碰到一个需求:如何通过代码的方式,判断当前系统是32位还是64位的?
直接上代码
废话不多说,直接上代码,稍后进行解释。
![12b8fc537dd985115e3a242c77725cab.png](https://i-blog.csdnimg.cn/blog_migrate/d873248410ca4292194b616de5d3c144.jpeg)
以上函数对当前系统是否为64位进行判断,因为当前所有系统只有32位和64位两种,所以,如果以上函数返回TRUE,则代表当前系统是64位的,反之,则是32位系统。
原理解释
第一段:
函数首先对_WIN64宏进行判断,_WIN64是一个预定义宏,当编译目标平台为64位时,此宏会被定义。如果此代码运行并且_WIN64被定义,则意味着运行此代码的进程是一个64位进程,在Windows系统上,一个64位进程仅能在64位操作系统上运行,故如果在当前编译环境下_WIN64宏被定义,则此函数返回TRUE。
第二段:
当代码进入第二段,表明了运行此代码的进程是一个32位进程。代码的第二段首先尝试从kernel32.dll中获取IsWow64Process函数的地址,如果获取失败,表示当前系统的kernel32.dll中并没有IsWow64Process这一函数,表明当前系统为32位系统。如果函数获取成功,则调用IsWow