阅读:1658回复:8
请教,如何在DISPATCH_LEVEL级等待用户下发命令?我想在DISPATCH_LEVEL级等待用户下发命令 而 在 DISPATCH_LEVEL 级,KeWaitFor....的超时必须设为0,而KeDelayExecutionThread函数不允许使用,其它的延时等待方法好像也不可行。。。 因为在DISPATCH_LEVEL级纯粹的进行死循环会让连鼠标都没有反应,也就是我没有办法在DISPATCH_LEVEL级阻赛线程来等待用户下发命令? 请问有没有解决办法?谢谢! [编辑 - 12/15/02 by Thkr_dev] |
|
沙发#
发布于:2002-12-24 09:57
为什么需要在DISPATCH_LEVEL等待呢? 你可以建立一个线程在 PASSIVE_LEVEL 等待。 然后再 KeRaiseIrql 就可以了。 如果你必须在 DISPATCH_LEVEL 开始的话, 就调用 IoQueueWorkItem 吧。 |
|
板凳#
发布于:2002-12-22 20:44
我觉得你可以结束掉它然后等待事件,事件发生后再建一个DPC
|
|
|
地板#
发布于:2002-12-22 20:16
谢谢楼上的再次回答,非常感谢
那我现在要阻塞住那个DPC线程让他停在那里等候我的命令该怎么做呢?嗯,我先去查查资料看,再次感谢:) |
|
地下室#
发布于:2002-12-22 00:58
好象在DPC中是不该改变IRQL的。
你可以建一个PASSIVE_LEVEL的线程等待事件,事件设置后将某个内存变量改变状态再从DPC中访问该内存变量 |
|
|
5楼#
发布于:2002-12-20 20:24
嗯,是这个错误,但是不知道该怎么解决???
具体就是:如果我降低Irql来进行延时或WaitEvent的时候都会出现0x000000B8错误, // MessageId: ATTEMPTED_SWITCH_FROM_DPC // // MessageText: // // A wait operation, attach process, or yield was attempted from a DPC routine. // #define ATTEMPTED_SWITCH_FROM_DPC ((ULONG)0x000000B8L) [编辑 - 12/20/02 by Thkr_dev] |
|
6楼#
发布于:2002-12-19 08:40
蓝屏?是不是EVENT对象的问题啊?
|
|
|
7楼#
发布于:2002-12-16 19:24
多谢楼上,我试试
嗯,降低到PASSIVE_LEVEL 再用KeWait...就会蓝屏错误 |
|
8楼#
发布于:2002-12-16 08:40
非要在DISPATCH_LEVEL等吗?不能在PASSIVE_LEVEL下?
你试试用TIMER轮询事件,也许可以 |
|
|