2017-07-30 73 views
0

我一直在寻找一种方法将设备驱动程序产生的数据作为结果发送到用户模式应用程序。例如,我将用户模式下的特定进程ID发送到我的设备驱动程序,并且经过一些计算或设备驱动程序后,我的设备驱动程序将其发送回用户模式。 我的设备驱动程序与IOCTL一起运行。所以一旦我认为PIRP结构中有一个空间/缓冲区结构用于发送给用户模式应用程序。经过大量的搜索,我没有任何有用的参考资料可供使用。有人在这件事上给我任何线索吗? 即使它有一点帮助,我也会感激。提前致谢。将设备驱动程序产生的数据发送到用户模式应用程序

回答

0

当您调用DeviceIoControl API时,将调用MajorFunction [IRP_MJ_DEVICE_CONTROL]的指定例程。

正如您所提到的,您会收到一个指向IRP的指针。根据您定义的IOCTL类型,您可以将数据发送给被调用者,在这种情况下,它是用户模式应用程序。

根据MSDN:https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/buffer-descriptions-for-i-o-control-codes

METHOD_BUFFERED 对于这种传输类型,在的IRP的Irp-> AssociatedIrp.SystemBuffer提供一个指向缓冲区的指针。此缓冲区代表在调用DeviceIoControl和IoBuildDeviceIoControlRequest时指定的输入缓冲区和输出缓冲区。驱动程序将数据从此缓冲区中传出,然后传送到此缓冲区中。

相关问题