2014-01-13 54 views
1

我正在編寫一個需要檢測特定的Windows進程終止的Windows服務(C++)。win32進程終止檢測:WMI與WaitForSingleObject

我想到了兩種不同的方法來檢測終止:

  1. 使用WMI描述here
  2. 使用winapi WaitForSingleObject(hHandle, INFINITE)函數關於進程的句柄。

明顯的區別在於WMI使用CALLBACK函數。

這兩種方法之間的其他主要差異,優點和缺點是什麼?

謝謝!

+2

'WaitForSingleObject'更簡單,更可靠。 –

+0

@DavidHeffernan - 請您詳細說明'WaitForSingleObject'的可靠性優勢嗎?謝謝! – GoodLife

+1

WMI是片狀的。 'WaitForSingleObject'不是。 –

回答

0

我寫過一個過程監控服務,並使用WMI來監控過程。它允許您指定要監視的進程的「where」子句,並且如您所述,在出現問題時調用您。

這樣做的好處是,您無需等待相關進程退出的線程塊,而是可以運行您的WMI查詢,並在出現問題時等待回調。缺點是WMI API比Win32 API稍微羅嗦一些。特別是您必須在WMI中以字符串的形式構建查詢。