crazyjaboy
驱动牛犊
驱动牛犊
  • 注册日期2007-03-15
  • 最后登录2010-12-31
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:2096回复:3

请问一个ReadFile的异步通信的问题。

楼主#
更多 发布于:2007-06-25 13:05
请问,我在项目中要通过DMA方式用ReadFile()函数,从PCI卡上读取数据,为了实现数据不间断听说应该用异步通信方式,我也按照做了。我的做法是一下发出十次的ReadFile申请,等待第一个IPR结束时,再补充发出一个ReadFile的IRP,第二个结束时,再补发一个IPR,……依次下去,我想这样应该能保证数据不间断,但是我现在测试的情况是,前十次ReadFile()很正常,驱动中先将10个IPR排队,依次完成,可是每次补充发出的ReadFile不能够正常工作,从SoftICE里观察好像是同步工作的,以后的IRP不能排队进入队列,就开始丢数据了。

我想问:
1。为了不丢数据的读取,我前面说这种思路可行么?(一次发出10个申请,以后补充)
2。如果思路正确,为什么后面的IRP不能排进队列。
谢谢。
zhangzhen_1982
驱动牛犊
驱动牛犊
  • 注册日期2007-05-28
  • 最后登录2008-01-27
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-12 15:31
楼主的问题解决了么?我也遇到相同情况,希望共同探讨
qq 457129107
xp4105
论坛版主
论坛版主
  • 注册日期2006-04-02
  • 最后登录2014-03-29
  • 粉丝1
  • 关注0
  • 积分905分
  • 威望570点
  • 贡献值1点
  • 好评度162点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-09-12 19:53
我就是不明白,为什么非要绕过中断呢???!!!

本来就该用中断来衔接,你偏不用。
时光如流水 抓紧时间实现自我价值
zhangzhen_1982
驱动牛犊
驱动牛犊
  • 注册日期2007-05-28
  • 最后登录2008-01-27
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-12 22:55
引用第2楼xp4105于2007-09-12 19:53发表的  :
我就是不明白,为什么非要绕过中断呢???!!!

本来就该用中断来衔接,你偏不用。

local端是16k*32位的fifo,写入的数据约40MB/s,用半满中断,频率会不会太高?
应用程序读取数据后要处理,现在是用循环方式做的,
ReadFile()读取后,处理数据,处理完后再读取,发现两次dma读取间隔时间太长,
数据丢掉了2/3
用中断效果是不是不太大?我想用多线程做,如楼主说的,不知道行得通吗?
游客

返回顶部