KeInitializeSpinLock 函数 (wdm.h)
KeInitializeSpinLock 例程初始化 KSPIN_LOCK 类型的变量。
语法
void KeInitializeSpinLock(
[out] PKSPIN_LOCK SpinLock
);
参数
[out] SpinLock
指向自旋锁的指针,调用方必须为其提供存储。
返回值
无
备注
必须在初始调用 KeAcquireSpinLock、 KeAcquireInStackQueuedSpinLock 或任何其他需要旋转锁作为参数的支持例程之前调用此例程。
旋转锁对象的存储必须驻留在驱动程序创建的设备对象的设备扩展中、驱动程序创建的控制器对象的控制器扩展中,或位于调用方分配的非分页池中。
此函数内联适用于从 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
KeReleaseInStackQueuedSpinLock