处理KMDF驱动程序中的退出/删除通知

时间:2012-09-17 23:11:04

标签: process notifications driver kmdf

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

  3. 使用PsCreateSystemThread创建一个System线程并传入调度对象。

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

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

  6. 这主要是在有兴趣的流程终止时通知我。

答案 1 :(得分:0)

只需使用PsSetCreateProcessNotifyRoutine并检查ProcessId。