2010-06-09 31 views
0

我在基於Windows的系統上查詢當前頁面文件的使用情況。這意味着在.NET Framework 2.0 SP1上運行,並且已經在Windows Vista,Windows 7,Windows Server 2003 R2和Windows Server 2008上進行了測試(並且行得通!)。Win32_PageFileUsage爲CurrentUsage返回0的WMI調用

在Windows Server 2003 SP2釋放,而不是R2)它似乎返回0:

using (var query = new ManagementObjectSearcher("SELECT CurrentUsage FROM Win32_PageFileUsage")) 
{ 
    foreach (ManagementBaseObject obj in query.Get()) 
    { 
     uint used = (uint)obj.GetPropertyValue("CurrentUsage"); 
     return used; 
    } 
} 

這只是返回WMI調用返回的第一行的結果。即使正在使用頁面文件,它也會返回0.當結果應該返回一個更大的值時,結果爲0的原因是什麼?

它可能是特定於有問題的機器,可能與操作系統版本無關。我也嘗試過這種做法,並且沒有提升特權,結果也一樣。

回答

0

原來實際值爲零。此特定實例中的主機提供程序將所有分頁內存設置爲0 MB。所以,通過WMI返回的數據確實是正確的。

1

WMI提供程序可能正在讀取由\PagingFile\% Usage計數器使用的同一個stat數據存儲區。

嘗試使用PdhOpenQuery/PdhAddCounter/PdhCollectQueryData來代替。

+0

感謝您的回答。在這種情況下,返回的值是正確的,我有點太急於向SO發佈問題。 :-) – 2010-06-09 02:40:01

相關問題