2011-03-15 39 views
0

我設法使用WMI查詢httpd.exe服務以檢查它是正在運行還是停止。這裏是我玩的代碼:用於確定服務是否正在工作的WMI查詢

hres = pSvc->ExecQuery(
     bstr_t("WQL"), 
     bstr_t("SELECT * FROM Win32_Process Where Name='httpd.exe'"), 
     WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
     NULL, 
     &pEnumerator); 

現在我想查詢該服務正在使用的CPU數量。我想知道正在運行的服務是否正在工作。這可以做到嗎?我問的是正確的問題嗎?需要諮詢:)

+0

有沒有查詢,我可以檢查特定服務的消費? – karikari 2011-03-15 03:15:00

回答

0

使用Win32_Process,您可以獲得UserModeTimeKernelModeTime(以100納秒爲單位給出),它允許您在特定時間內計算每個CPU的平均值。

假設您將兩個Win32_Process信息分開TimeInterval(以100納秒單位給出)。

UserTimeRate = ((UserModeTime2 - UserModeTime1)/TimeInterval) * 100; 

KernelTimeRate =((KernelModeTime2 - KernelModeTime1)/TimeInterval) * 100; 

CPU = (((UserModeTime2 - UserModeTime1) + (KernelModeTime2 - KernelModeTime1))/TimeInterval) * 100; 

如果你想從一開始的速度,你可以計算從CreationDateTimeInterval現在。