如何在 windows 中从内核模式启动用户模式程序

How to start a user mode program from kernel mode in windows

我有一个驱动程序(内核模式)(KMDF) 并且我有一个用户首选项表单。我需要从驱动程序代码启动 activity 并获取首选项。 那么我如何在 windows 操作系统中从内核启动该用户模式程序?

很简单,除非你使用像 APC 这样的奇怪的未记录的技巧,否则你不能这样做,这可能会导致许多不兼容问题; 只需将您的应用程序设置为自动启动(例如CurrentVersion\Run)并向驱动程序发送一个 IRP 以及您需要发送的数据。

让驱动程序在用户模式下做某事的最佳方法是让它与可以完成工作的用户模式组件通信。所以你做一些事情,比如有一个用户模式服务,它打开一个到驱动程序的通道,然后当驱动程序需要做一些事情(例如,启动一个进程)时,它可以向服务发送消息。

在 osronline 中搜索反向调用模型以获取更多信息,或者如果您正在构建微型过滤器,请查看 FltSendMessage API 文档。

正如其他发帖人指出的那样,在 DriverEntry 中执行此操作可能行不通,因为可能甚至没有要与之通信的用户会话。