用户模式应用程序和内核模式驱动程序之间的双向交互?

Jos*_* Do 8 windows kernel driver process

我即将撰写以下互动:

  • 当有一个即将启动的进程时,驱动程序将通知用户应用程序,然后它将等待应用程序的响应.

  • 应用程序将决定是否允许正常创建或立即终止该过程,并将其决定发送回驱动程序.

  • 基于用户应用程序的决定.然后,驱动程序将允许或阻止进程执行.

我的问题是:从驱动程序通知用户模式应用程序然后让驱动程序等待响应的建议方法是什么?

Wu *_*eng 6

对于事件通知,您可以使用通知事件.即内核调用IoCreateNotificationEvent和KeSetEvent.用户调用KeWaitForSingleObject.对于用户内核消息通信,您可以使用IOCTL.

或者,您可以只使用命名管道.

PS您不能将PsSetCreateProcessNotifyRoutine()用于您的目的,因为它仅用于审计,但不用于预防/取消.

  • 如果他在Vista及以后,他可以使用[`PsSetCreateProcessNotifyRoutineEx`](http://msdn.microsoft.com/en-us/library/windows/hardware/ff559953(v = vs.85).aspx)来防止进程创建.这种技术可行,但他需要确保他的回调是可重入的,并且可能会创建一个事件*每个进程*,当用户空间做出决定时,回调将在其上休眠.其他注意事项:确保在用户空间准备好做出决策之前不要阻止进程创建. (4认同)