0

当进程停止时,我需要在 KMDF 驱动程序中获得通知。我不想使用PsSetCreateProcessNotifyRoutine,因为这会通知我创建或销毁的每个进程。只有当我感兴趣的某些进程 ID 被销毁/退出/删除时,我才想知道/收到通知。(我不关心进程创建)。

我想到的一种方法是与驱动程序共享应用程序创建的事件。我将在驱动程序中创建一个工作线程并使其等待用户创建的事件,当应用程序终止时,等待将中止。这是了解进程何时终止/关闭的好方法,还是有更多标准方法可以做到这一点?我在一些论坛上读到共享事件不是一个好主意,我应该使用重叠的 ioctl,但这显然在这里不起作用。

4

2 回答 2

1

已解决:这就是我所做的:(我的驱动程序是顶级单片驱动程序)

  1. 使用带有进程 ID 的 ZwOpenProcess 来获取进程的句柄。

  2. 使用 ObReferenceObjectByHandle 和进程句柄来获取调度程序对象。

  3. 使用 PsCreateSystemThread 创建了一个系统线程并传入了调度的对象。

  4. 使用 KeWaitForSingleObject 使上述步骤中创建的系统线程等待调度的对象。

  5. 以编程方式终止进程或导致异常,然后使用 X gui 按钮将其关闭。所有这些都唤醒了创建的系统线程。

当感兴趣的进程终止时,这基本上会给我通知。

于 2012-09-18T21:42:04.580 回答
0

只需使用 PsSetCreateProcessNotifyRoutine 并检查 ProcessId。

于 2012-09-18T00:25:51.057 回答