knightwithwings
驱动牛犊
驱动牛犊
  • 注册日期2003-01-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1395回复:3

DPC中的irp如何理解?

楼主#
更多 发布于:2003-11-04 23:15
nt4下isa板卡驱动
有两个中断,来中断的时候要去各自的端口地址读取数据
打算使用同一个DPC来完成。来中断,调用DPC,在里面通知用户态并从硬件上读取数据,用户态的程序接受到事件后,从驱动中取数据

但是有一个疑问,请高手指点:
Dpcforisr函数里面有IRP参数,它是怎么来的那?资料上讲是当前的IRP,问题是DPC执行的时候,用户未必来读取数据(是不是?)。这时候的IRP是怎么来那????和StartIO里面的IRP有什么区别和联系?

难道DPC不执行,一直到用户态程序发出IRP的时候,它才被调用??如果是这样话,StartIO里面怎么来处理IRP?

DPC里面必须要执行的操作有那些?必须通知系统完成irp吗?

mittermieier
驱动牛犊
驱动牛犊
  • 注册日期2002-06-02
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-11-10 09:25
好像不用,DPC的IRP好像是没有的,昨天碰上了一个,DS生成的代码里有irp,但运行的时候在这行死掉了。
所以觉得好像在DPC里的IRP不是必须有的。
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
板凳#
发布于:2003-11-10 11:32
nt4下isa板卡驱动
有两个中断,来中断的时候要去各自的端口地址读取数据
打算使用同一个DPC来完成。来中断,调用DPC,在里面通知用户态并从硬件上读取数据,用户态的程序接受到事件后,从驱动中取数据

但是有一个疑问,请高手指点:
Dpcforisr函数里面有IRP参数,它是怎么来的那?资料上讲是当前的IRP,问题是DPC执行的时候,用户未必来读取数据(是不是?)。这时候的IRP是怎么来那????和StartIO里面的IRP有什么区别和联系?

难道DPC不执行,一直到用户态程序发出IRP的时候,它才被调用??如果是这样话,StartIO里面怎么来处理IRP?

DPC里面必须要执行的操作有那些?必须通知系统完成irp吗?

 



Dpcforisr 函数里面有IRP参数,它来自于你在调用 IoRequestDpc 时传给它的IRP指针。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-10 15:41
首先,你必须要调用DPC的时候,有两个参数,是指针来的。当DPC执行完的时候,就会驱动程序这个IRP已经执行完了,系统就会再调用下一个IRP。
答得好的话,请兄弟们加点分,那是对我的肯定
游客

返回顶部