【问题标题】:win32 process termination detection: WMI vs. WaitForSingleObjectwin32 进程终止检测:WMI 与 WaitForSingleObject
【发布时间】:2014-01-13 16:45:59
【问题描述】:

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

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

  1. 使用 WMI,如 here 所述。
  2. 在进程的句柄上使用winapi WaitForSingleObject(hHandle, INFINITE)函数。

明显的区别在于 WMI 使用了CALLBACK 函数。

这两种方法之间的其他主要区别、优点和缺点是什么?

谢谢!

【问题讨论】:

  • WaitForSingleObject 更简单、更可靠。
  • @DavidHeffernan - 您能否详细说明WaitForSingleObject 的可靠性优势?谢谢!
  • WMI 不稳定。 WaitForSingleObject 不是。

标签: c++ winapi process wmi waitforsingleobject


【解决方案1】:

我之前写过一个进程监控服务,使用WMI来监控进程。它允许您指定要监视的进程的“where”子句,并且正如您所提到的,当发生某些事情时会调用您。

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

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多