首页
社区
课程
招聘
[求助]关于事件对象的问题!
发表于: 2010-4-2 15:39 3892

[求助]关于事件对象的问题!

2010-4-2 15:39
3892
问题描述:
应用程序 A.exe 创建一事件对象,并使用 IOCTL 方式发送该事件对象句柄到一驱动 B.exe。
驱动程序 B.exe 接收到该事件对象。并使用 ObReferenceObjectByHandle() 来为对象指针交换用户模式句柄。成功返回后,驱动程序就能够在驱动层设置该事件对象的状态了吧!
上面的过程应该是没问题的吧!若有,请大家指出。
接下来,我要问的是,若应用程序 A.exe 退出并关闭了它自己的事件对象。驱动程序打开的事件对象句柄的状态时怎样的?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
1.ObDereferenceObject 计数平衡
2.应用程序无法退出,一直等待KeSetEvent。除非断电。

本人属于初学乍练的。
2010-4-2 23:19
0
雪    币: 75
活跃值: (698)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
a关闭事件对象也只是该对象的使用计数减1吧。由于b引用了这个对象,应该是A程序退出了,但该事件对象还是在的,对象的句柄还是有效的吧
2010-4-3 03:17
0
雪    币: 247
活跃值: (187)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
上面的问题描述有个地方错了,是 B.sys。真的不好意思!
skypismire 说的好像是正确的。 A.exe  调用 CloseHandle() 去关闭它自己创建的事件对象返回成功。
但实际上 A.exe 退出后,由于 B.sys 引用了该事件对象,事件对象确实还存在,对象的句柄确实还可用。

但问题出来了,本来该事件对象时 A.exe 创建的,由上面的现象可以看到,它的生存期是可以在内核中存在的。现在的疑问是,有什么方法可以使它的生存期和 A.exe 的生存期同步(也就是 A.exe 退出了,该事件对象也不存在。)
2010-4-6 11:25
0
游客
登录 | 注册 方可回帖
返回
//