当前位置: 代码迷 >> 驱动开发 >> 驱动怎么发送数据给应用程序
  详细解决方案

驱动怎么发送数据给应用程序

热度:327   发布时间:2016-04-28 10:01:20.0
驱动如何发送数据给应用程序
驱动程序中通过某个条件获取到一个进程ID,想把这ID主动发给应用程序(百度了一会,感觉都是由应用程序先发消息给驱动,然后驱动才反馈回数据),有什么方法
------解决思路----------------------
有函数的  好像叫copy_to_usr
------解决思路----------------------
可以使用ioctl()函数获取
------解决思路----------------------
这个我一般在少量数据,比如读写寄存器什么的,使用RtlCopyMemory( pIrp->AssociatedIrp.SystemBuffer……)函数进行返回数据;在大量数据的时候,比如大量数据的采集或DMA,采用二者公用一个缓冲区,驱动写入、应用读出(或反之),驱动发送完成事件通知应用,我一般在驱动中分配,再 使用MmMapLockedPagesSpecifyCache()函数映射到用户空间
------解决思路----------------------
应用层用DeviceIocontrol函数,驱动层可采用多种缓冲方式
------解决思路----------------------
在底层提供接口  上层直接用DeviceIocontrol即可获得ID
------解决思路----------------------
驱动回传给应用程序可以试试copy_to_user 函数
------解决思路----------------------
驱动传数据给应用层都是用copy_to_user的
------解决思路----------------------
需要你的驱动程序支持异步触发功能 fasync  
  相关解决方案