2011-03-15 91 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现在。