0

我设法使用 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 量。我想知道正在运行的服务是否在工作。这可以做到吗?我在问正确的问题吗?需要建议:)

4

1 回答 1

0

使用Win32_Process,您可以获得UserModeTimeKernelModeTime(以 100 纳秒为单位),它允许您计算特定时间内每个 CPU 的平均值。

假设您得到两个Win32_Process由 a 分开的信息TimeInterval(以 100 纳秒为单位)。

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

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

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

如果您想要从一开始的费率,您可以计算TimeIntervalCreationDate现在到现在。

于 2011-04-14T06:34:18.353 回答