2014-01-13 3 views
1

Я пишу службу Windows (C++), которая должна обнаруживать окончание процесса окон.обнаружение завершения процесса win32: WMI против WaitForSingleObject

Я думал о двух различных подходов к обнаружению прекращения:

  1. Использование WMI, как описано here.
  2. Использование winapi WaitForSingleObject(hHandle, INFINITE) функция на ручке процесса.

Очевидное отличие состоит в том, что WMI использует функцию CALLBACK.

Каковы другие основные отличия, преимущества и недостатки между двумя подходами?

Спасибо!

+2

'WaitForSingleObject' намного проще и надежнее. –

+0

@DavidHeffernan - Не могли бы вы рассказать о преимуществах надежности WaitForSingleObject? Благодаря! – GoodLife

+1

WMI flaky. 'WaitForSingleObject' - нет. –

ответ

0

Я уже писал службу мониторинга процессов и использовал WMI для мониторинга процессов. Это позволяет вам специфицировать условие «где» процессов для мониторинга и, как вы упомянули, вызывает вас, когда что-то произошло.

Преимущество этого в том, что вам не нужно иметь блок потока, ожидающий завершения процессов, о которых идет речь, но вместо этого может просто запустить ваш запрос WMI и дождаться обратного вызова, когда что-то закончится. Недостатком является то, что API WMI является немного более многословным, чем API Win32. В частности, вы должны создавать запросы в виде строки в WMI.

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