从驱动程序创建进程
要创建一个有效的win32进程,驱动程序必须与CSRSS进行通信(完全没有记录)。所以我最后排队了一个用户模式的APC,并在现有的win32进程(该代码将调用CreateProcess并完成这项工作)的上下文中为APC代码分配虚拟内存。
这是一个棘手的方式,但它的工作原理。
我不知道一个更简单的方法来实现这一点。但是如果有一个Windows服务正在运行,它会在驱动程序中产生重叠的DeviceIoControl?返回时,服务可以检查从驱动程序收到的数据并启动相应的应用程序。
我会说这是正确的解决方案。从服务发出反向IRP,让驱动程序在需要启动用户模式过程时完成。 – 2009-07-16 06:37:12
感谢您的建议,但我无法运行我的服务(如果只有服务将被安装并从内核模式启动)。 – 2009-07-16 06:39:58
@Sergius:您必须安装驱动程序。您可以使用相同的INF文件安装该服务。 – 2009-07-16 06:48:00
这不能直接完成 - 创建一个win32进程需要一些CreateProcess的用户模式部分设置,而不仅仅是在内核模式下创建进程对象。
这里需要一些用户模式代码 - 服务,桌面应用程序等,以启动您的用户模式应用程序。
我正在考虑用我自己的用户模式代码向驱动程序的某些用户进程注入一个线程... – 2009-08-28 09:11:56
请看http://www.codeproject.com/KB/system/KernelExec.aspx。有趣... – 2009-10-26 12:13:20