GlobalMemoryStatus()函数获取内存信息与dos下的systeminfo不一致的有关问题

GlobalMemoryStatus()函数获取内存信息与dos下的systeminfo不一致的问题
我在vs2008下调用GlobalMemoryStatus()函数获取内存信息,代码如下:
MEMORYSTATUS ms; //记录内容空间信息的结构体变量

//调用GlobalMemoryStatus()函数获取内存信息
GlobalMemoryStatus(&ms);

cout<<"total physical mem:"<<(float)ms.dwTotalPhys/1024/1024<<"MB"<<endl; //总的物理内存大小
cout<<"used physical mem:"<<(float)(ms.dwTotalPhys - ms.dwAvailPhys)/1024/1024<<"MB"<<endl; //已用物理内存大小
cout<<"avilible physical mem:"<<(float)ms.dwAvailPhys/1024/1024<<"MB"<<endl; //可用物理内存大小
cout<<endl;
cout<<"total Virtual mem:"<<(float)ms.dwTotalVirtual/1024/1024<<"MB"<<endl; //总的虚拟内存大小
cout<<"used Virtual mem:"<<(float)(ms.dwTotalVirtual-ms.dwAvailVirtual)/1024/1024<<"MB"<<endl; //已用虚拟内存大小
cout<<"avilible Virtual mem:"<<(float)ms.dwAvailVirtual/1024/1024<<"MB"<<endl; //可用虚拟内存大小
运行结果如下:
总物理内存:2048MB
可用物理内存:828.055MB
总虚拟内存:2047.88MB
可用虚拟内存:2021.42MB

但是,我在运行下通过systeminfo指令获取的内存信息为:
物理内存总量:3062MB
可用物理内存:833MB
虚拟内存:最大值:6121MB
虚拟内存:可用:1469MB
虚拟内存:使用中:4652MB

我电脑是WIN7系统,我装了了虚拟机,虚拟机内存是1G。我想问一下:
1、程序获取的内存对么?
2、怎样获取和dos指令一样的信息,有这个必要么
谢谢大家

------解决方案--------------------
GlobalMemoryStatus 识别不了大于 2GB 的内存,应该用 GlobalMemoryStatusEx
------解决方案--------------------
system("systeminfo >si.txt");
//然后读文件si.txt的内容
(^_^)
------解决方案--------------------
那就看看函数的详细介绍吧,或者用软件来检测看看结果
------解决方案--------------------
探讨

引用:
GlobalMemoryStatus 识别不了大于 2GB 的内存,应该用 GlobalMemoryStatusEx

又出现新的问题了,我把代码改为:
MEMORYSTATUSEX ms; //记录内容空间信息的结构体变量
ZeroMemory(&amp;ms,sizeof(MEMORYSTATUSEX));

//调用GlobalMemorySta……