阅读:1638回复:3
派遣函数调用是否在发起者线程中执行?
想请教一个问题,看到这样一段描述。
系统服务函数NtReadFile创建IRP_MJ_WRITE类型的IRP,然后它将这个IRP发送到某个驱动程序的派遣函数中。NtReadFile然后去等待一个事件,这时当前线程进入“睡眠”状态,也可以说当前线程被阻塞住或者线程处于“Pending”状态。 这里说当线程进入睡眠状态,那么线程就可能发生了切换吧,那其派遣函数又在哪个线程环境中执行的?似乎根据不同的IRP类型其派遣函数被调用的方式都不同? 求教下! |
|
沙发#
发布于:2008-12-31 09:49
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2008-12-31 17:31
感谢楼上的回复~你也说派遣例程一定是运行在发起者线程中。那么其这句该如何理解
(“它将这个IRP发送到某个驱动程序的派遣函数中。NtReadFile然后去等待一个事件,这时当前线程进入“睡眠”状态,也可以说当前线程被阻塞住或者线程处于“Pending”状态。”) 这段其实是出至《windows驱动技术开发详解》里的。我总觉得很矛盾 既然NtReadFile然后去等待一个事件,这时当前线程进入“睡眠”状态。 那么这个线程又如何执行派遣函数? |
|
地板#
发布于:2009-01-04 16:51
用户被禁言,该主题自动屏蔽! |
|