Я пишу службу Windows (C ++), которая должна обнаружить конкретное завершение процесса Windows.
Я подумал о двух разных подходах к обнаружению терминации:
WaitForSingleObject(hHandle, INFINITE)
функция на ручке процесса.Очевидная разница в том, что WMI использует CALLBACK
функция.
Каковы другие основные различия, преимущества и недостатки между двумя подходами?
Спасибо!
Ранее я писал службу мониторинга процессов и использовал WMI для мониторинга процессов. Он позволяет вам указывать «где» предложение процессов для мониторинга и, как вы упомянули, вызывает вас, когда что-то произошло.
Преимущество этого состоит в том, что вам не нужно иметь блок потока, ожидающий завершения рассматриваемых процессов, а вместо этого можно просто выполнить запрос WMI и дождаться обратного вызова, когда что-то завершится. Недостатком является то, что WMI API немного более многословный, чем Win32 API. В частности, вы должны создавать запросы в виде строки в WMI.
Других решений пока нет …