如何从驱动程序向另一个驱动程序(不在同一个堆栈中)进行 IOCTL 调用(在 Windows 上)

Posted

技术标签:

【中文标题】如何从驱动程序向另一个驱动程序(不在同一个堆栈中)进行 IOCTL 调用(在 Windows 上)【英文标题】:How can I make IOCTL calls from a driver to another driver (not in the same stack) (on windows) 【发布时间】:2013-08-06 12:01:14 【问题描述】:

我想从一个驱动程序向另一个完全不同的驱动程序调用 IOCTL(不在同一个堆栈上)

我在网上查过,但他们只讲如何将IOCTL发送给较低的驱动程序,但不是我的情况。

p.s : 这两个驱动程序都是我编写的,所以我可以在第二个驱动程序中创建一个设备对象,但是我如何与之通信(我无法从内核调用 DeviceIOControl)

谢谢!

【问题讨论】:

【参考方案1】:

它与从用户空间发送 IOCTL 没有太大区别。只需使用ZwOpenFile 获取设备句柄,使用ZwDeviceIoControlFile 发送IOCTL。并且不要忘记为句柄设置 OBJ_KERNEL_HANDLE 属性。

【讨论】:

以上是关于如何从驱动程序向另一个驱动程序(不在同一个堆栈中)进行 IOCTL 调用(在 Windows 上)的主要内容,如果未能解决你的问题,请参考以下文章

当 sql server 数据库中的数据发生变化时,从一个 android 应用程序向另一个应用程序发送推送通知

以推送通知的形式从设备中的一个应用程序向另一设备中的另一个应用程序发送一些数据

如何使用firebase在android studio中从一个用户向另一个用户发送通知[重复]

在 Swift 应用程序中向另一个用户付款

使用 Parse 从一个用户向另一个用户发送推送通知

使用 Cython 向另一个应用程序公开功能