在 Windows Vista 中,使用者介面 (UI) 的數個元件都會顯示電腦的實體記憶體總容量,而各個元件所報告的值都有些許差異。本文將告訴您不同元件報告的值稍有出入的原因。此外,本文也將指出哪個元件顯示的值最精確,並包含有關擷取最精確之值的應用程式發展介面 (API) 的資訊。
簡介
在 Windows Vista 中,報告電腦實體記憶體總容量的 UI 元件包括:
-
[控制台] 中的 [歡迎中心] 項目
-
[控制台] 中的 [系統] 項目
-
[工作管理員] 中的 [效能] 索引標籤
-
[控制台] 中 [效能資訊及工具] 項目的 [檢視和列印詳細資料] 頁面
-
Microsoft System Information (Msinfo32.exe) 工具
每個元件報告的電腦可用 RAM 總容量都有些許差異。之所以發生這個問題,是因為某些元件的設計只會顯示消費者容易辨識的 RAM 容量。此外,每個元件都是由不同團隊、在不同時間、為了特定目的而開發。
例如,當您在 Windows Vista 電腦上檢視下列元件時,可能會發生下列情況:-
[控制台] 中 [歡迎中心] 項目報告的 RAM 容量是 2.00 GB
-
[控制台] 中 [系統] 項目報告的 RAM 容量是 2046 MB
-
[工作管理員] 的 [效能] 索引標籤報告的 RAM 容量是 2045 MB
-
[控制台] 中 [效能資訊及工具] 項目的 [檢視和列印詳細資料] 頁面報告的 RAM 容量是 2.00 GB
-
[系統資訊] 工具報告的 RAM 容量是 2,045.54 MB
在這些元件中,[系統資訊] 工具報告的實體記憶體總容量值最精確。
如何使用 API 取得實體記憶體總容量值
如果要擷取程式控制下最精確的值,開發人員應該依照下列步驟執行:
-
呼叫 GlobalMemoryStatusEx 函數。
-
查詢 MEMORYSTATUSEX 結構的 ullAvailPhys 成員。
元件會使用 GlobalMemoryStatusEx 函數,或 GlobalMemoryStatusEx 函數所使用的相同核心技術,以計算電腦的實體記憶體總容量。如果要以程式設計方式取得這個值,請查詢傳遞至 GlobalMemoryStatusEx 函數當做輸入的 MEMORYSTATUSEX 結構的 ullAvailPhys 成員。
在建置某些元件時,GlobalMemoryStatusEx 函數無法使用。不過,所有的元件都會使用相同的方式計算電腦的實體記憶體。各元件之間唯一的不同在於,在 UI 中顯示實體記憶體容量之前所執行的四捨五入計算。其他相關資訊
如需有關 GlobalMemoryStatusEx 函數的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/aa366589.aspx如需有關 MEMORYSTATUSEX 結構的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/aa366770.aspx 如需有關已安裝 4 GB RAM 之 Windows Vista 電腦的記憶體大小報告的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
929605The system memory that is reported in the System Information dialog box in Windows Vista is less than you expect if 4 GB of RAM is installed