2009-10-29 67 views
4

我知道一个32位操作系统看不到超过4 GB的RAM。
因此,如果我要在运行32位操作系统的计算机上安装6 GB的RAM,是否有任何方法可以识别?
我知道一种方法来获得安装的RAM是通过WMI类:win32_physicalmemory.Capacity
但我不知道它是否会显示正确安装的ram大小,而不是支持。
我没有设置来测试这种情况,但如果有人已经知道这一点,请确认。
否则,请让我知道是否有其他方式做同样的事情。我问这个任何Windows 32位操作系统。如何识别32位机器上超过4 GB的内存

在此先感谢。
Samrat Patil。

+3

“我知道,一个32位操作系统无法看到超过4 GB的RAM。”不对。通过处理器支持的物理地址扩展(PAE)功能和地址窗口化扩展(AWE)等软件技术,您可以访问超过4GB的内存(例如WinServer2003 Enterprise可以使用它)。事情是,单个进程可以访问4GB的地址空间。 – 2009-10-29 11:07:09

+1

,它使一些司机崩溃并死亡可怕;) – jalf 2009-10-29 11:21:13

+0

@ jalf,有时似乎是驱动程序的默认行为。 ;) – sisve 2009-10-30 10:32:58

回答

4

32位操作系统使用PAE的CPU可以看到超过4GB的内存。只是32位地址空间限制为4GB。但是由于应用程序只能访问自己的虚拟地址空间,因此无法分辨它分配的内存是在第一个还是第五个内存中。

在Windows上,你可以使用GetPhysicallyInstalledSystemMemory功能:

功能从计算机的SMBIOS固件表中检索物理安装的RAM量。这可能与GlobalMemoryStatusEx函数报告的数量不同,后者将MEMORYSTATUSEX结构的ullTotalPhys成员设置为可供操作系统使用的物理内存量。

了解更多: http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm

1

有相当不错的功能GlobalMemoryStatusEx应该解决您的问题。它给回

typedef struct _MEMORYSTATUSEX { 
    DWORD  dwLength; 
    DWORD  dwMemoryLoad; 
    DWORDLONG ullTotalPhys; 
    DWORDLONG ullAvailPhys; 
    DWORDLONG ullTotalPageFile; 
    DWORDLONG ullAvailPageFile; 
    DWORDLONG ullTotalVirtual; 
    DWORDLONG ullAvailVirtual; 
    DWORDLONG ullAvailExtendedVirtual; 
}MEMORYSTATUSEX, *LPMEMORYSTATUSEX; 

我认为你正在寻找ullTotalPhys。所有值均以字节为单位。

相关问题