首页
社区
课程
招聘
驱动和应用层的采用事件方式通信,有时候就不灵了呢
发表于: 2008-11-8 23:29 5183

驱动和应用层的采用事件方式通信,有时候就不灵了呢

2008-11-8 23:29
5183
//驱动用这些
KeSetEvent
KeWaitForSingleObject
KeResetEvent

//应用层用
WaitForSingleObject
SetEvent 
ResetEvent

事件是应用层创建的,然后传给驱动层.大部分的时候工作都是正常的,双方用事件交互的很好.但有的时候,其中一方就接受不到事件激活了(程序很简单绝对不是逻辑错误)通过跟踪,驱动层KeSetEvent后,有的时候,应用层就触发不了,就卡在WaitForSingleObject那里了.

请问大牛,用事件方式通信要注意什么啊,上述情况怎么避免呢.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
2
是不是你的事件对象无意间被删除了?

用ObReferenceObjectByHandle给事件对象添增加一下引用计数??
2008-11-9 04:40
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有无意中删除的事情发生.

不知道还有什么好的方法,应用层和驱动来进行双向交互. 这事件方式我已经搞晕了.搞不清什么时候就失效.
2008-11-9 15:36
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你要把代码发上来看看才知道哦
2009-6-23 14:57
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
偶也用这种方法和驱动层通信的从来没有发现过楼主的问题,楼主因该好好检查一下代码了
2009-6-23 15:01
0
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
可能在某些情况下发生死锁了
2009-6-24 09:38
0
游客
登录 | 注册 方可回帖
返回
//