阅读:3924回复:6
调用KeWaitForSingleObject出现BugCheck(B8) ATTEMPTED_SWITCH_FROM_DPC?
我调用KeWaitForSingleObject时出现,BugCheck(B8) ATTEMPTED_SWITCH_FROM_DPC,我在完成例程中设了断点,出错时还没经过完成例程,大概是怎么回事???百思不得其解
救我啊 |
|
|
沙发#
发布于:2003-09-20 13:16
KeWaitForSingleObject只能运行在PASSIVE_LEVEL,除非你把TIMEOUT设为0。 检查一下发生BugCheck时的IRQL
|
|
板凳#
发布于:2003-09-20 13:24
对啊,我的TIMEOUT是0,我的流程是让完成例程中的KeSetEvent来中止KeWaitForSingleObject的等待,可还没到完成例程(我设了断点的),等待就出错了
|
|
|
地板#
发布于:2003-09-22 09:09
我的TIMEOUT是0,我的流程是让完成例程中的KeSetEvent来中止KeWaitForSingleObject的等待 如果是等待事件而不是超时的话, TIMEOUT不应该是0, 而应该是无穷吧? |
|
|
地下室#
发布于:2003-09-22 09:35
OH,SORRY,最后一个参数我设置的是NULL,表示的是无限等待,我弄错了,
不过,我设置了断点,也打了断言,在那里的确是DISPATCH_LEVEL,不过任出错,不知是怎么回事, |
|
|
5楼#
发布于:2003-09-22 22:54
你不能在DISPATCH_LEVEL调用KeWaitForSingleObject()。去看看DDK文档。
|
|
6楼#
发布于:2003-09-23 09:04
如何降低IRQL级别?用KeLowerIrql吗?
|
|
|