Device driver 将设备驱动程序生成的数据发送到用户模式应用程序

Device driver 将设备驱动程序生成的数据发送到用户模式应用程序,device-driver,ioctl,Device Driver,Ioctl,我一直在寻找一种方法,将我的设备驱动程序生成的数据发送到用户模式应用程序。例如,我在用户模式下将一个特定的进程id发送给我的设备驱动程序,然后我的设备驱动程序在进行一些计算或其他操作后在用户模式下将其发送回。 我的设备驱动程序使用IOCTL操作。所以我曾经认为在PIRP结构中有一个空间/缓冲区作为结构,用于发送到用户模式应用程序。经过大量的搜索,我没有得到有用的参考资料和信息。有人给我关于这件事的线索吗? 即使能帮上一点忙,我也会很感激的。提前感谢。当您调用DeviceIoControl API

我一直在寻找一种方法,将我的设备驱动程序生成的数据发送到用户模式应用程序。例如,我在用户模式下将一个特定的进程id发送给我的设备驱动程序,然后我的设备驱动程序在进行一些计算或其他操作后在用户模式下将其发送回。 我的设备驱动程序使用IOCTL操作。所以我曾经认为在PIRP结构中有一个空间/缓冲区作为结构,用于发送到用户模式应用程序。经过大量的搜索,我没有得到有用的参考资料和信息。有人给我关于这件事的线索吗?
即使能帮上一点忙,我也会很感激的。提前感谢。

当您调用DeviceIoControl API时,将调用为主功能[IRP\U MJ\U DEVICE\U CONTROL]指定的例程

正如你提到的,你会收到一个指向IRP的指针。根据您定义的IOCTL类型,您可以将数据发送给被调用方,在本例中,被调用方是用户模式应用程序

根据MSDN:

方法u缓冲 对于这种传输类型,Irp在Irp->AssociatedIrp.SystemBuffer处提供一个指向缓冲区的指针。此缓冲区表示在对DeviceIoControl和IOBuildDeviceIoControl请求的调用中指定的输入缓冲区和输出缓冲区。驱动程序将数据从该缓冲区传出,然后再传入该缓冲区