阅读:1333回复:6
20分问:怎么等待中断干完某件事?
我
[编辑 - 7/27/04 by lonkiss] |
|
|
沙发#
发布于:2002-07-05 21:21
在DPC里不能用事件来同步,你或许可以用一个工作者线程来等待。你最好说的详细点!
|
|
板凳#
发布于:2002-07-06 11:02
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2002-07-06 13:33
可以用 信
|
|
地下室#
发布于:2002-07-08 09:10
你在别的ioctl例程中等待这个事件,如果事件发生,就准备下一次发送或关闭中断。在dpc中如果条件满足就将事件设置为信号态,这样不就行了、
|
|
|
5楼#
发布于:2002-07-08 11:47
查询标志。
|
|
6楼#
发布于:2002-07-08 16:34
不行啊,我在DPC里面不能等待的,因为KeWaitForSingleObject()只能在IRQL==PASSIVE_LEVEL上工作。
---------------------------------- KeWaitForSingleObject例程有两个限定: 1. 调用者必须运行在低于或等于DISPATCH_LEVEL级上。 2. 如果调用中指定了非0的超时,那么调用者必须严格地运行在低于DISPATCH_LEVEL的IRQL上。 在 DDK 中的描述如下: Callers of KeWaitForSingleObject must be running at IRQL <= DISPATCH_LEVEL. Usually, the caller must be running at IRQL = PASSIVE_LEVEL and in a nonarbitrary thread context. A call while running at IRQL = DISPATCH_LEVEL is valid if and only if the caller specifies a Timeout of zero. That is, a driver must not wait for a nonzero interval at IRQL = DISPATCH_LEVEL. |
|
|