阅读:2184回复:3
请问一个ReadFile的异步通信的问题。
请问,我在项目中要通过DMA方式用ReadFile()函数,从PCI卡上读取数据,为了实现数据不间断听说应该用异步通信方式,我也按照做了。我的做法是一下发出十次的ReadFile申请,等待第一个IPR结束时,再补充发出一个ReadFile的IRP,第二个结束时,再补发一个IPR,……依次下去,我想这样应该能保证数据不间断,但是我现在测试的情况是,前十次ReadFile()很正常,驱动中先将10个IPR排队,依次完成,可是每次补充发出的ReadFile不能够正常工作,从SoftICE里观察好像是同步工作的,以后的IRP不能排队进入队列,就开始丢数据了。
我想问: 1。为了不丢数据的读取,我前面说这种思路可行么?(一次发出10个申请,以后补充) 2。如果思路正确,为什么后面的IRP不能排进队列。 谢谢。 |
|
沙发#
发布于:2007-09-12 15:31
楼主的问题解决了么?我也遇到相同情况,希望共同探讨
qq 457129107 |
|
板凳#
发布于:2007-09-12 19:53
我就是不明白,为什么非要绕过中断呢???!!!
本来就该用中断来衔接,你偏不用。 |
|
|
地板#
发布于:2007-09-12 22:55
引用第2楼xp4105于2007-09-12 19:53发表的 : local端是16k*32位的fifo,写入的数据约40MB/s,用半满中断,频率会不会太高? 应用程序读取数据后要处理,现在是用循环方式做的, ReadFile()读取后,处理数据,处理完后再读取,发现两次dma读取间隔时间太长, 数据丢掉了2/3 用中断效果是不是不太大?我想用多线程做,如楼主说的,不知道行得通吗? |
|