我知道32位操作系统看不到超过4 GB的内存
因此,如果我要在运行32位操作系统的计算机上安装6 GB的RAM,有什么方法可以识别它吗?
我知道一种获取已安装RAM的方法是通过WMI类:win32_physicalmemory.Capacity
但我不知道它是否会显示正确安装的柱塞尺寸而不是支持
我没有设置测试这种情况,但如果有人已经知道这一点,请确认。
否则,请告诉我是否有其他方法可以做同样的事情。我问这个任何Windows 32位操作系统。
提前致谢。
Samrat Patil。
答案 0 :(得分:4)
32位操作系统可以通过启用PAE的CPU看到超过4GB的内存。只是32位地址空间限制为4GB。但是由于应用程序只能访问自己的虚拟地址空间,因此无法判断它分配的内存是否存在于第1或第5 GB的内存中。
在Windows上,您可以使用GetPhysicallyInstalledSystemMemory功能:
函数从计算机的SMBIOS固件表中检索物理安装的RAM量。这可能与GlobalMemoryStatusEx函数报告的数量不同,后者将MEMORYSTATUSEX结构的ullTotalPhys成员设置为可供操作系统使用的物理内存量。
了解更多: http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm
答案 1 :(得分:1)
WMI将所有内存大小报告为uint64
,如documentation for Win32_OperatingSystem所示。
答案 2 :(得分: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
。所有值都以字节为单位。