ironfacer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-16
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1176回复:2

请教一个IRP处理的问题

楼主#
更多 发布于:2004-09-26 09:59
小弟的PCI驱动当中,必须要在应用程序级等待中断,在发起read和write操作,因此read和write的IRP和中断没有关系。但是为了不丢中断,我想另外管理一个IRP队列,并用IO_CTL的方式来实现中断等待功能,采用的是通常所用的在应用程序第一次访问设备是一次性先发32各IO_CTL的IRP到队列中,以后没完成一个就补充一个的方法。我想请各位大虾指点一下,我下面的方法是否可行:(1)
对于read和write RIP,在StartIO中启动一个函数来完成read或Write的工作,并且完成这些IRP。(2)对于我用于实现中断等待的IO_CTL IRP,我在相应的派遣函数中将他们派遣到我自己管理的队列中,并在ISR中从我自己管理的IRP队列中出队一个IRP,并完成它。也就是说这些IRP没有经过StartIO的处理。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-26 16:02
应该可以,但如果你只是为了保证对所有中断数据处理不丢失,你完全可以使用更简单的方式处理,队列所有数据,然后在通知app处理
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
steven_kane
驱动牛犊
驱动牛犊
  • 注册日期2002-12-22
  • 最后登录2009-10-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-28 00:29
可以使用操作系统的irp排队功能,也可以自己写一个队列,
一定要记住对已经排队的irp调用IoMarkIrpPending,
surpise remove 或remove时,调用iocancelirp
游客

返回顶部