吃烤鱼

潮起潮又落 看世间百态

  • 博客访问: 84957
  • 博文数量: 53
  • 博客积分: 2050
  • 博客等级: 大尉
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 15:52
文章分类

全部博文(53)

文章存档

2011年(1)

2010年(3)

2009年(49)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题
GetSystemInfo获得系统信息 2009-12-16 10:54:27

分类:


GetSystemInfo这个API可以获得系统信息,但是最近我在通过这个API获得CPU的体系结构,也就是看主机
是64bit还是32bit时,发现一个小小的问题。程序如下:
SYSTEM_INFO info; 
GetSystemInfo(&info);
 cout<<"Architecture of cpu:" << info.wProcessorArchitecture<<endl ;
 cout<<"number of cpu:"       << info.dwNumberOfProcessors<<endl ;
  
 return 0;
在32bit机器下,wProcessorArchitecture返回0,也就是PROCESSOR_ARCHITECTURE_INTEL。这个正常。
在64bit机器侠,用win32模式,编译运行程序,返回0,也就是PROCESSOR_ARCHITECTURE_INTEL,这个有
点奇怪,宿主机是64bit的啊,不过用win32模式运行而已。看来GetSystemInfo这个API的内部实现,有问
题。
在64bit机器下,用x64模式,编译,运行,正常,返回9.也就是PROCESSOR_ARCHITECTURE_AMD64。
 
------------------------------------------------------------------------------------用下面的代码,上面的疑问可以得到解决
 
// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
 pGNSI = (PGNSI) GetProcAddress(
      GetModuleHandle(TEXT("kernel32.dll")),
      "GetNativeSystemInfo");
   if(NULL != pGNSI)
      pGNSI(&si);
   else GetSystemInfo(&si);
 
-----------------------------
关键在于GetNativeSystemInfo 与GetSystemInfo之间肯定是有细微的差别的
阅读(2975) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册