KeAcquireInStackQueuedSpinLock 函数 (wdm.h)

KeAcquireInStackQueuedSpinLock 例程获取排队的旋转锁。

语法

void KeAcquireInStackQueuedSpinLock(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

参数

SpinLock

[in, out]指定要获取的旋转锁。 此参数必须使用 KeInitializeSpinLock 进行初始化。

LockHandle

[out]指向调用方提供的 KLOCK_QUEUE_HANDLE 变量的指针,例程可用于返回旋转锁队列句柄。 调用方在释放锁时将此值传递给 KeReleaseInStackQueuedSpinLock

返回值

备注

KeAcquireInStackQueuedSpinLock 获取旋转锁作为 排队的旋转锁。 有关详细信息,请参阅 排队的旋转锁。 调用方通过调用 KeReleaseInStackQueuedSpinLock 例程释放旋转锁。

与普通旋转锁一样,排队的旋转锁只能在非常特殊的情况下使用。 有关何时使用旋转锁的说明,请参阅 KeAcquireSpinLock

获取旋转锁时,此例程将 IRQL 级别提升为DISPATCH_LEVEL。 如果保证调用方已在 DISPATCH_LEVEL 运行,则调用 KeAcquireInStackQueuedSpinLockAtDpcLevel 会更高效。

KeReleaseInStackQueuedSpinLock 的调用必须在 IRQL = DISPATCH_LEVEL发生。 此调用将还原操作系统在 KeAcquireInStackQueuedSpinLock 调用开始时保存的原始 IRQL。

驱动程序不得在同一旋转锁上合并对 KeAcquireSpinLockKeAcquireInStackQueuedSpinLock 的调用。 旋转锁必须始终作为排队的旋转锁获取或释放,或作为普通的旋转锁。

要求

   
最低受支持的客户端 Windows XP
标头 wdm.h (包括 Wdm.h)
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDIS (storport) MarkingQueuedIrps (wdm) QueuedSpinLock (storport) 、QueuedSpinLock (wdm) 、QueuedSpinLockRelease (storport) QueuedSpinLockRelease (wdm)

另请参阅

KLOCK_QUEUE_HANDLE

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLock