从用户模式发送IRP_MJ_SYSTEM_CONTROL请求

Sending IRP_MJ_SYSTEM_CONTROL request from user-mode

本文关键字:MJ SYSTEM CONTROL 请求 IRP 用户 模式      更新时间:2023-10-16

我有Windows内核模式驱动程序和用户模式DLL作为驱动程序和GUI应用程序之间的中间层。

我使用DeviceIoControl功能将IRP_MJ_DEVICE_CONTROL请求从用户模式DLL发送到驱动程序,并且效果很好。

但是我也想从用户模式发送IRP_MJ_SYSTEM_CONTROL请求。我的驱动程序源代码中有 pnp.c 模块,其中包含实现 DispatchSystemControl 例程的 DispatchSystemControl 例程,该例程处理 IRP_MN_START_DEVICE、IRP_MN_START_DEVICE、IRP_MN_REMOVE_DEVICE 等 IRP。

我可以看到这个处理程序运行良好,例如IRP_MN_REMOVE_DEVICE当我删除设备时随时调用处理程序。

但是我想知道有没有办法使用某些功能从用户模式发送IRP_MJ_SYSTEM_CONTROL请求,例如与我使用 DeviceIoControl 发送IRP_MJ_DEVICE_CONTROL相同的方式

IRP_MJ_SYSTEM_CONTROL请求由 WMI 的内核模式驱动程序发送。有关详细信息,请参阅此 MSDN 文章