阅读:1337回复:3
关于Ring0与Ring3交互的问题
我在写一个实时监控API的驱动,现在可以截获调用。但是截获以后我要驱动等待用户的决定。
(就像卡吧那样),代码如下: KeSetEvent(pMyhook,0,FALSE);//通知用户 KeClearEvent(pMyhook); //自己等待用户的决定 KeWaitForSingleObject(pMyhook,Executive,KernelMode,FALSE,NULL); 我在我的HOOK函数里这样写,可以吗? 可是,这样写后,整个系统都几乎无法操作,很慢,但CPU占用正常,好象被阻塞了一样。 大家谁有这方面的经验,谢谢! ![]() |
|
沙发#
发布于:2007-05-09 20:17
不要无限等待,请采用短时等待+超时再循环来
呵呵~至于存在逻辑错误死锁的话,LZ就自己搞定吧~ |
|
|
板凳#
发布于:2007-05-09 21:33
呵呵,我最近也在做这方面的开发,我是用双事件的,你试试看:
KeSetEvent(pEventA, IO_NO_INCREMENT, TRUE); //通知用户 KeWaitForSingleObject((PKEVENT)pEventB,UserRequest,UserMode,FALSE,NULL); //转入等待 KeResetEvent(pEventB); //复位事件 同时建议不要对每次的调用都要通知用户,这样太频繁了 |
|
地板#
发布于:2007-05-11 13:41
SetEvent完了立即又Clear,恐怕用户层没有多少机会能等到这个事件
|
|