2009-10-29 64 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。所有值均以字節爲單位。

相關問題