我设法使用WMI查询httpd.exe服务,以检查它是在运行还是停止。这是我正在玩的代码:
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 :(得分:0)
使用Win32_Process
,您可以获得UserModeTime
和KernelModeTime
(以100纳秒为单位),这样您就可以在一定时间内计算每个CPU的平均值。
假设您得到两个由Win32_Process
分隔的TimeInterval
个信息(以100纳秒为单位)。
UserTimeRate = ((UserModeTime2 - UserModeTime1) / TimeInterval) * 100;
KernelTimeRate =((KernelModeTime2 - KernelModeTime1) / TimeInterval) * 100;
CPU = (((UserModeTime2 - UserModeTime1) + (KernelModeTime2 - KernelModeTime1)) / TimeInterval) * 100;
如果您想从头开始,您可以从TimeInterval
到现在计算CreationDate
。