ela*_*dan 7 c++ windows kernel usermode kernel-mode
我正在为我们的驾驶员团队建立一个硬件模拟器.现在,模拟器分为2个模块:第一个模块在驱动程序内部运行,在内核模式下运行,这是驱动程序和HW-Simulator之间的主要接口.第二个模块是一个可执行的用户模式代码,它为模拟器生成数据并通过调用将其传送到模拟器DeviceIOControl(在Windows API下)
我的需求是:我希望能够在内核模式下执行用户模式可执行文件.我需要能够以相对便携的方式做到这一点.目前我只在Windows上运行,但这应该很快就会改变.此外,我需要能够通过它的stdin管道与用户模式代码进行通信,以便重新配置它并最终关闭它.
我发现了这一点: 从内核空间执行用户空间函数
但它只与linux内核相关.有更便携的替代方案吗?或Windows替代?
我可以通过简单地使用ShellExecute/RunAs API函数在Windows中执行此操作吗?
注意:我们知道从内核空间调用用户模式代码所涉及的安全风险.但由于这只是用作测试环境而不会达到我们的发布代码,因此我们并不关心.
小智 5
在Windows内核中没有一种干净的方法可以做到这一点.用于创建进程的用户模式API CreateProcess使用未记录的API(NtCreateProcess/NtCreateThread)来创建进程.
建议的做法是使用"合作伙伴服务",即使用IOCTL与驱动程序通信的用户模式服务.您可以使用反向调用模型让您的驱动程序调用您的服务以使其创建进程.