阅读:1395回复:3
DPC中的irp如何理解?
nt4下isa板卡驱动
有两个中断,来中断的时候要去各自的端口地址读取数据 打算使用同一个DPC来完成。来中断,调用DPC,在里面通知用户态并从硬件上读取数据,用户态的程序接受到事件后,从驱动中取数据 但是有一个疑问,请高手指点: Dpcforisr函数里面有IRP参数,它是怎么来的那?资料上讲是当前的IRP,问题是DPC执行的时候,用户未必来读取数据(是不是?)。这时候的IRP是怎么来那????和StartIO里面的IRP有什么区别和联系? 难道DPC不执行,一直到用户态程序发出IRP的时候,它才被调用??如果是这样话,StartIO里面怎么来处理IRP? DPC里面必须要执行的操作有那些?必须通知系统完成irp吗? |
|
沙发#
发布于:2003-11-10 09:25
好像不用,DPC的IRP好像是没有的,昨天碰上了一个,DS生成的代码里有irp,但运行的时候在这行死掉了。
所以觉得好像在DPC里的IRP不是必须有的。 |
|
板凳#
发布于:2003-11-10 11:32
nt4下isa板卡驱动 Dpcforisr 函数里面有IRP参数,它来自于你在调用 IoRequestDpc 时传给它的IRP指针。 |
|
|
地板#
发布于:2003-11-10 15:41
首先,你必须要调用DPC的时候,有两个参数,是指针来的。当DPC执行完的时候,就会驱动程序这个IRP已经执行完了,系统就会再调用下一个IRP。
|
|
|