2014-01-13 81 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中以字符串的形式构建查询。