首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
编程技术
发新帖
0
0
[求助]派遣函数调用是否在发起者线程中执行?
发表于: 2008-12-30 21:20
6466
[求助]派遣函数调用是否在发起者线程中执行?
只是学习
2008-12-30 21:20
6466
想请教一个问题,看到这样一段描述。
系统服务函数NtReadFile创建IRP_MJ_WRITE类型的IRP,然后它将这个IRP发送到某个驱动程序的派遣函数中。NtReadFile然后去等待一个事件,这时当前线程进入“睡眠”状态,也可以说当前线程被阻塞住或者线程处于“Pending”状态。
这里说当线程进入睡眠状态,那么线程就可能发生了切换吧,那其派遣函数又在哪个线程环境中执行的?似乎根据不同的IRP类型其派遣函数被调用的方式都不同? 求教下!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
0
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
8
)
炉子
雪 币:
66
活跃值:
(16)
能力值:
( LV8,RANK:130 )
在线值:
发帖
4
回帖
317
粉丝
1
关注
私信
炉子
3
2
楼
Irp发送下去之后Dispatch(派遣函数)一定是在当前线程中执行的,但是驱动有权由于各种原因选择不立即执行所请求的操作,而是将所请求的操作通过各种方式(比如将所有的操作连成一个链表然后在某个特定的由驱动创建的线程)在其他线程的上下文中完成,而发送IRP的线程则会一直被阻塞直到驱动调用Io(f)CompleteRequest唤醒发送IRP的线程。
2009-1-1 09:04
0
只是学习
雪 币:
210
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
7
回帖
26
粉丝
0
关注
私信
只是学习
3
楼
麻烦炉子大牛移架一下这里~ :)
http://www.debugman.com/read.php?tid=2599
2009-1-1 17:07
0
heretic
雪 币:
217
活跃值:
(35)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
93
粉丝
0
关注
私信
heretic
4
楼
“Irp发送下去之后Dispatch”只有顶层的驱动可以保证这点,如果你是low level的驱动,比如ndis层的,那一般都不在原线程上下文。
2009-1-1 20:48
0
只是学习
雪 币:
210
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
7
回帖
26
粉丝
0
关注
私信
只是学习
5
楼
to:heretic
这跟IRP是否同步处理有关吗?
2009-1-1 21:20
0
炉子
雪 币:
66
活跃值:
(16)
能力值:
( LV8,RANK:130 )
在线值:
发帖
4
回帖
317
粉丝
1
关注
私信
炉子
3
6
楼
heretic说的对,通常而言,更下层的驱动的dispatch是由上层的驱动在一个特定workthread(一个由上层驱动创建的SystemThread)中调用的,这样可以保证Dispatch立即返回,否则难以实现异步IO。
2009-1-2 11:25
0
只是学习
雪 币:
210
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
7
回帖
26
粉丝
0
关注
私信
只是学习
7
楼
可俺这个问题是个 同步IRP的问题汗~~
2009-1-2 14:57
0
炉子
雪 币:
66
活跃值:
(16)
能力值:
( LV8,RANK:130 )
在线值:
发帖
4
回帖
317
粉丝
1
关注
私信
炉子
3
8
楼
异步IO的话调用了Dispatch之后不会WaitForSingleObject,同步IO在调用了Dispatch如果Dispatch返回STATUS_PENDING的话会WaitForSingleObject(kernel中)
2009-1-2 15:32
0
wowelf
雪 币:
214
活跃值:
(24)
能力值:
( LV6,RANK:90 )
在线值:
发帖
4
回帖
29
粉丝
2
关注
私信
wowelf
2
9
楼
派遣函数调用是否在发起者线程中执行?
========================
非常肯定,是的。
2009-1-2 15:43
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
只是学习
7
发帖
26
回帖
10
RANK
关注
私信
他的文章
[求助]关于异常发生后保护模式下权限转移疑惑
4852
[求助]int 2e对应系统服务派发例程如何知道查找SSDT还是shadow?
4186
[求助]关于DPC机制原理上问题
5329
[求助]派遣函数调用是否在发起者线程中执行?
6467
[求助]IRQ被微软扩展成IRQL是怎么落实在硬件的机制上的?
5437
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部