KeAcquireInterruptSpinLock 函数 (wdm.h)

KeAcquireInterruptSpinLock 例程获取与中断对象关联的旋转锁。

语法

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

参数

Interrupt

[in, out]指定指向中断对象的指针。 此值必须由 IoConnectInterruptIoConnectInterruptEx 提供。

返回值

KeAcquireInterruptSpinLock 在调用例程时返回当前 IRQL。 释放旋转锁时,此值将传递给 KeReleaseInterruptSpinLock

注解

驱动程序使用中断旋转锁来同步对与中断的 ISR 共享的内存的访问。 驱动程序可以通过调用 KeReleaseInterruptSpinLock 释放旋转锁。

在保留中断旋转锁时执行的任何代码在指定的 中断的 IRQL = DIRQL 处执行,因此必须非常快速地执行。 有关详细信息,请参阅 使用关键部分

将驱动程序例程同步到 ISR 的首选方法是使用 KeSynchronizeExecution 例程。

从 Windows 8 开始,驱动程序可以使用 IoConnectInterruptEx 注册在 IRQL = PASSIVE_LEVEL 运行且不使用旋转锁进行中断同步的中断服务例程。 如果中断指向连接到被动级别 ISR 的中断对象,KeAcquireInterruptSpinLock 会导致 bug 检查。 有关详细信息,请参阅 使用 Passive-Level 中断服务例程

调用方必须在 IRQL <= DIRQL 下运行才能 中断。 (这是驱动程序在创建中断时作为 IoConnectInterruptSynchronizeIrql 参数传递的值。)

要求

要求
最低受支持的客户端 Windows XP
标头 wdm.h
IRQL <= DIRQL
DDI 符合性规则 HwStorPortProhibitedDDI (storport)

另请参阅

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution