zzht007
驱动牛犊
驱动牛犊
  • 注册日期2002-08-18
  • 最后登录2005-07-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1463回复:4

关于重叠IO的问题

楼主#
更多 发布于:2003-08-13 11:13
请各位大侠出手相救!
兄弟做了一个PCI的数据采集卡,想做到如下操作:
首先下发1#IRP,在处理过程中打开设备中断通知设备进行数据采集,异步返回;然后下发2#IRP,读取一些随时改变的状态寄存器信息,立即返回,在应用程序中作相应的准备工作;然后进入Waitforsingleobject等待中断触发后完成1#IRP,程序继续执行。
我试了几次均不成功。可是机械工业出版社的Windows2000驱动程序开发大全第一卷中P217中明确指出‘内核模式驱动程序不必按照I/O请求被送往I/O管理的顺序来处理它们’。
实在不知该如何实现,可老板逼的很急,望大侠们出手相救!
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-08-13 21:03
用户被禁言,该主题自动屏蔽!
zzht007
驱动牛犊
驱动牛犊
  • 注册日期2002-08-18
  • 最后登录2005-07-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-14 15:41
谢谢斑竹。
不过偶还有些不清楚:
1  您指的栈是哪个栈?或者是系统队列(驱动程序队列)?
2  在本版的“驱动程序如何发消息给应用程序? ”中Dragon2008大侠在上面帖了2段代码,是采用同步传输方式调用驱动程序,同时给驱动程序传递了一个Event句柄,然后在应用层一个线程中等待Event事件产生。偶使用SoftIce进行调试,在DeviceIoControl退出时SoftIce提示出错:Break due to UnhandledException:NTSTATUS STATUS_ACCESS_VIOLATION。我试了好几次,不知道是怎么回事就是无法通过。如果这个可以实现的话,我的问题也能使用这种办法解决。
请斑竹指点。
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-14 15:47
你如果不下#2 IRP,#1会不会回来?
Waitforsingleobject返回什么?Timeout还是别的?
助人乃快乐之本 有人给分就更快乐了 :-)
zzht007
驱动牛犊
驱动牛犊
  • 注册日期2002-08-18
  • 最后登录2005-07-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-15 15:46
不下2#IRP,1#IRP通过中断触发并且在Dpc中完成返回没有问题。
Waitforsingleobject等待的是第一个IRP下发时作为参数传递给deviceiocontrol的overlapped中的event。是infinite等待。
游客

返回顶部