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