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 符合性规则 HwStorPortProhibitedDIS(storport)

另请参阅

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution