阅读:2509回复:5
驱动置事件太快应用响应不过来怎么办
就是很简单的驱动中用KeSetEvent()通知应用,在应用中用waitforsingleobject()等到事件后resetevent(),发现当驱动发事件的频率太快以后,应用有可能收不到,比如驱动一共发了10000次,在应用程序里可能只收到9000次,有没有人遇到过这种问题,有什么好的处理方法,或者可以用别的什么机制在驱动和应用之间传递通知,谢谢了!
|
|
|
沙发#
发布于:2012-05-29 17:32
把多次的请求合并,降低次数?
|
|
|
板凳#
发布于:2012-05-31 17:17
回 znsoft 的帖子
znsoft:把多次的请求合并,降低次数? (2012-05-29 17:32) 用过了,但数据来的快了以后事件的速度又快上来了,znsoft大牛,对XP操作系统来说事件速度有没有一个限制。或者有没有别的方式让驱动通知应用比事件效率更高,谢谢! |
|
|
地板#
发布于:2012-06-01 17:19
请问znsoft,对于一个PCI桥片,我在中断处理函数中收中断,只记录中断次数,调用DPCFORISR,在DPCFORISR中传递数据,将中断处理函数记录的中断次数全部处理完,向应用发事件,这个流程有没有什么问题?
|
|
|
地下室#
发布于:2012-06-13 14:15
回 cross_sky 的帖子
cross_sky:请问znsoft,对于一个PCI桥片,我在中断处理函数中收中断,只记录中断次数,调用DPCFORISR,在DPCFORISR中传递数据,将中断处理函数记录的中断次数全部处理完,向应用发事件,这个流程有没有什么问题? (2012-06-01 17:19) 有问题啊,DPC的IRQL是在DISPATCH级的,这个级别也是不允许呆的时间过长,如果在这个里面处理数据,肯定是有问题的,将会影响系统的进程和线程调度。 |
|
|
5楼#
发布于:2012-06-14 01:24
类似应用层waitforsingleobject( ),同样的,驱动层也要等待
resetevent( )复位后,驱动层再KeSetEvent( ) 否则还没来得及resetevent( )复位 驱动层就KeSetEvent( ),应用层肯定会滞后 同步机制就是这么回事 总之,应用层等待驱动层 那么驱动层也要等待应用层 礼尚往来嘛 |
|