2011-03-15 1 views
0

Мне удалось запросить службу httpd.exe с помощью WMI, чтобы проверить, работает ли она или остановлена. Вот код, который я играю с:Запрос 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); 

Теперь я хотел бы запросить количество ЦП, что служба использует. Я хочу знать, работает ли работающий сервис или нет. Это можно сделать? Я задаю правильный вопрос? нужен совет :)

+0

есть запрос, что я могу проверить потребление конкретной услуги? – karikari

ответ

0

Использование Win32_Process, Вы можете получить UserModeTime и KernelModeTime (приведены в 100 наносекундных единицах), которая позволяет вычислять каждый средний процессор в течение определенного времени.

Предполагая, что вы получите две информации Win32_Process, разделяемые TimeInterval (приведены в единицах 100 наносекунд).

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

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

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

Если вы хотите, чтобы скорость от начала, вы можете вычислить TimeInterval от CreationDate до сих пор.

Смежные вопросы