Windows Api : GetSystemInfo与GetNativeSystemInfo的区别

来源:互联网 发布:淘宝男装关键词优化 编辑:程序博客网 时间:2024/06/18 18:44
  MSDN中介绍,GetSystemInfo被用来获取当前系统的相关信息,但是笔者在使用中出现了问题。笔者的操作系统是Windows 7 64位,在win32工程中调用此函数,发现得到的cpu架构居然是x86,显然不对。经过查找资料,笔者发现有网友也遇到了相同的问题并建议调用GetNativeSystemInfo,结果果然正确。现在将此问题记录下来分享给大家。因为真正的强人不是技术有多强,而是能和其他人分享成果共同进步。
       下面具体分析下。MSDN对GetNativeSystemInfo是这样解释的:该api是获取当前的系统信息给运行在WOW64下的一个应用程序。如果在一个64位的应用中调用此函数,那它等效于GetSystemInfo.
       言外之意,如果一个32位的应用运行在64位操作系统上这两个api是不同的。再来看一下什么是WOW64:MSDN里介绍道WOW64是一个32位的模拟器,它的主要作用就是让一个32位的应用程序无缝地运行在64位操作系统之上。换句话说,就是一个win32的应用要在64位操作系统上正常运行,就要凭借WOW64。
       总结一下,笔者开头的问题本质就是api兼容方面的问题,具体说应用程序和操作系统匹配的情况下没有任何问题,但是32位应用程序按理来说是不能运行在64位操作系统上的,为了兼容微软推出了WOW64来兼容,但是此时GetSystemInfo就可能取到错误的信息了。为了得到正确结果,我们就需要调用更底层的api GetNativeSystemInfo了。

     代码如下 :
    Windows <wbr>Api <wbr>: <wbr>GetSystemInfo与GetNativeSystemInfo的区别

0 0
原创粉丝点击