中断中DPC的应用
实现目标:一、1等待允许发送新数据中断、2将应用层40个字节数据发送至驱动、3将数据从IRP中调出,来一个中断发送发送一个自动发送一个数据。完成后反馈给应用程序允许发送新数据中断。
二、有收数中断来。接受数据。来一个中断接收一个数据,接收满40个数据发送给应用层允许收数中断,读出40个数据。
目前实现:1不等待中断,将应用层数据发送至驱动。从IRP中可以读出应用层来的数据。2ISR可以响应外设的中断信号,发送一个数据或接受一个数据。
存在问题:不能从IRP中将应用层来的数据放到ISR中。即中断中的数据不能与应用层交互
请教解决办法
指导办法(别人告诉我,或者网页上搜的)要得到IRP中的数据是不是一定要IoGetCurrentIrpStackLocation。如果是我将这个放到ISR中,中断一来,立马死机。还有别的办法得到吗?
2需要用到DPC
我已经注册了startIO例程。初始化了IoInitializeDpcRequest(fdo,DpcForIsr);在ISR中加了IoRequestDpc(pdx->fdo, NULL, pdx);一来中断,立马重启。只要加IoRequestDpc(pdx->fdo, NULL, pdx);就会出现这个情况的。
操作系统windowsXP+ddk+vc6.0
看来应该是我对驱动中断的理解存在偏差。目前正在看书学习中。希望做过驱动中断的给予帮助。有完成的中断例程在条件允许的情况下希望能够共享,对比一下我的问题所在。