KeAcquireInterruptSpinLock 函数 (wdm.h)
KeAcquireInterruptSpinLock 例程获取与中断对象关联的旋转锁。
语法
KIRQL KeAcquireInterruptSpinLock(
PKINTERRUPT Interrupt
);
参数
Interrupt
[in, out]指定指向中断对象的指针。 此值必须由 IoConnectInterrupt 或 IoConnectInterruptEx 提供。
返回值
KeAcquireInterruptSpinLock 在调用例程时返回当前 IRQL。 释放旋转锁时,此值将传递给 KeReleaseInterruptSpinLock 。
注解
驱动程序使用中断旋转锁来同步对与中断的 ISR 共享的内存的访问。 驱动程序可以通过调用 KeReleaseInterruptSpinLock 释放旋转锁。
在保留中断旋转锁时执行的任何代码在指定的 中断的 IRQL = DIRQL 处执行,因此必须非常快速地执行。 有关详细信息,请参阅 使用关键部分。
将驱动程序例程同步到 ISR 的首选方法是使用 KeSynchronizeExecution 例程。
从 Windows 8 开始,驱动程序可以使用 IoConnectInterruptEx 注册在 IRQL = PASSIVE_LEVEL 运行且不使用旋转锁进行中断同步的中断服务例程。 如果中断指向连接到被动级别 ISR 的中断对象,KeAcquireInterruptSpinLock 会导致 bug 检查。 有关详细信息,请参阅 使用 Passive-Level 中断服务例程。
调用方必须在 IRQL <= DIRQL 下运行才能 中断。 (这是驱动程序在创建中断时作为 IoConnectInterrupt 的 SynchronizeIrql 参数传递的值。)
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP |
标头 | wdm.h |
IRQL | <= DIRQL |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) |