KeInitializeSpinLock 函数 (wdm.h)

KeInitializeSpinLock 例程初始化KSPIN_LOCK类型的变量。

语法

void KeInitializeSpinLock(
  [out] PKSPIN_LOCK SpinLock
);

参数

[out] SpinLock

指向旋转锁的指针,调用方必须为其提供存储。

返回值

备注

必须在初始调用 KeAcquireSpinLockKeAcquireInStackQueuedSpinLock 或需要旋转锁作为参数的任何其他支持例程之前调用此例程。

旋转锁对象的存储必须驻留:在驱动程序创建设备对象的设备扩展、驱动程序创建的控制器对象的控制器扩展或调用方分配的非分页池中。

注意

从 Windows XP 到 Windows 7 的 x64 系统内联此函数。 从 Windows 8 开始,将从中ntoskrnl.lib导出此函数。 因此,如果使用 Windows 10 WDK 生成在 Windows 7 (上运行的二进制文件,因此需要 NX 池用法才能) 传递 Windows 10 HLK 测试,则必须定义WIN9X_COMPAT_SPINLOCK。 否则,你可能会看到 Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39)

有关旋转锁的详细信息,请参阅旋转锁

此例程的调用方可以在任何 IRQL 上运行。 通常,调用方在 ADDDevice 例程中以 IRQL = PASSIVE_LEVEL 运行。

要求

   
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别 (请参阅“备注”部分)
DDI 符合性规则 HwStorPortProhibitedDDI (storport)

另请参阅

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeAcquireSpinLockAtDpcLevel

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel