win32进程终止检测:WMI与WaitForSingleObject

时间:2014-01-13 16:46:00

标签: c++ winapi process wmi waitforsingleobject

我正在编写一个需要检测特定Windows进程终止的Windows服务(c ++)。

我想到了两种不同的方法来检测终止:

  1. 使用 WMI ,如here所述。
  2. 在流程'句柄上使用winapi WaitForSingleObject(hHandle, INFINITE) 功能。
  3. 明显的区别是WMI使用CALLBACK函数。

    这两种方法之间的其他主要差异,优点和缺点是什么?

    谢谢!

1 个答案:

答案 0 :(得分:0)

之前我编写过流程监控服务,并使用WMI监控流程。它允许您指定要监视的进程的“where”子句,并且如您所述,在发生某些事件时会调用您。

这样做的好处是你不必让一个线程块等待有问题的进程退出,而是可以运行你的WMI查询并在某些东西终止时等待回调。缺点是WMI API比Win32 API更加冗长。特别是你必须在WMI中将查询构建为字符串。