代码之家  ›  专栏  ›  技术社区  ›  Samrat Patil

如何在32位计算机上识别超过4 gb的ram

  •  4
  • Samrat Patil  · 技术社区  · 15 年前


    所以,如果我要在运行32位操作系统的机器上安装,比如说6GB的RAM,有没有办法确定这一点?
    我知道获取已安装RAM的一种方法是通过WMI类:win32_physicalmemory.Capacity
    但我不知道它是否会显示正确安装的ram大小,而不是支持的大小。

    如果有其他方法,请告诉我。我问的是任何windows 32位操作系统。

    提前谢谢。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Kasprzol    15 年前

    32位操作系统可以看到超过4GB的内存 PAE -已启用的CPU。只是32位地址空间被限制为4GB。但由于应用程序只能访问自己的虚拟地址空间,它无法判断分配的内存是1GB还是5GB。

    GetPhysicallyInstalledSystemMemory 功能:

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

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

        2
  •  1
  •   Joey Gumbo    15 年前

    WMI将所有内存大小报告为 uint64 如图所示 documentation for Win32_OperatingSystem

        3
  •  1
  •   Michal Sznajder    15 年前

    有很好的功能 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