Freigeben über


KeInitializeSpinLock-Funktion (wdm.h)

Die KeInitializeSpinLock-Routine initialisiert eine Variable vom Typ KSPIN_LOCK.

Syntax

void KeInitializeSpinLock(
  [out] PKSPIN_LOCK SpinLock
);

Parameter

[out] SpinLock

Zeiger auf eine Drehsperre, für die der Aufrufer den Speicher bereitstellen muss.

Rückgabewert

Keine

Bemerkungen

Diese Routine muss vor einem ersten Aufruf von KeAcquireSpinLock, von KeAcquireInStackQueuedSpinLock oder einer anderen Supportroutine aufgerufen werden, die eine Spinsperre als Argument erfordert.

Der Speicher für ein Spin Lock-Objekt muss sich in der Geräteerweiterung eines vom Treiber erstellten Geräteobjekts, in der Controllererweiterung eines vom Treiber erstellten Controllerobjekts oder in einem nicht ausgelagerten Pool befinden, der vom Aufrufer zugewiesen wird.

Diese Funktion ist für x64-Systeme von Windows XP bis Windows 7 inlined. Ab Windows 8 wird diese Funktion aus ntoskrnl.libexportiert. Wenn Sie daher den Windows 10 WDK verwenden, um eine Binärdatei zu erstellen, die unter Windows 7 ausgeführt wird (und sie daher die Verwendung des NX-Pools benötigen, um Windows 10 HLK-Tests zu bestehen), müssen Sie definierenWIN9X_COMPAT_SPINLOCK. Andernfalls wird möglicherweise angezeigt Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39).

Weitere Informationen zu Spinlocks finden Sie unter Spinlocks.

Aufrufer dieser Routine können in jedem IRQL ausgeführt werden. Normalerweise wird ein Aufrufer unter IRQL = PASSIVE_LEVEL in einer AddDevice-Routine ausgeführt.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene (siehe Abschnitt Hinweise)
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport)

Weitere Informationen

KeAcquireInStackQueuedSpinLock

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeAcquireSpinLockAtDpcLevel

KeReleaseInStackQueuedSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel