Freigeben über


KeAcquireInStackQueuedSpinLockAtDpcLevel-Funktion (wdm.h)

Die KeAcquireInStackQueuedSpinLockAtDpcLevel Routine ruft eine Drehsperre in der Warteschlange ab, wenn der Aufrufer bereits bei IRQL >= DISPATCH_LEVEL ausgeführt wird.

Syntax

void KeAcquireInStackQueuedSpinLockAtDpcLevel(
  PKSPIN_LOCK         SpinLock,
  PKLOCK_QUEUE_HANDLE LockHandle
);

Parameter

SpinLock

[in, out] Gibt die drehungssperre an, die erworben werden soll. Dieser Parameter muss durch einen Aufruf der KeInitializeSpinLock Routine initialisiert worden sein.

LockHandle

[out] Zeiger auf eine vom Aufrufer bereitgestellte KLOCK_QUEUE_HANDLE Struktur, die von der Routine verwendet werden kann, um den Drehsperreswarteschlangenhandle zurückzugeben. Um die Sperre freizugeben, übergibt der Aufrufer diesen Wert an die KeReleaseInStackQueuedSpinLockFromDpcLevel Routine.

Rückgabewert

Nichts

Bemerkungen

Für einen Treiber, der bei IRQL >= DISPATCH_LEVEL ausgeführt wird, KeAcquireInStackQueuedSpinLockAtDpcLevel eine Drehsperre als in die Warteschlange eingereihtes Drehschloss. Weitere Informationen finden Sie unter Schlösser in der Warteschlange. Rufen Sie zum Freigeben der Drehsperre die KeReleaseInStackQueuedSpinLockFromDpcLevel Routine auf.

Treiber, die bereits an einem IRQL->= DISPATCH_LEVEL ausgeführt werden, können diese Routine aufrufen, um die in die Warteschlange eingereihte Drehungssperre schneller abzurufen. Verwenden Sie andernfalls die KeAcquireInStackQueuedSpinLock Routine, um die Drehsperre zu erwerben.

Bei einem Treiber, der bei IRQL-> DISPATCH_LEVEL ausgeführt wird, erhält diese Routine die Sperre, ohne die aktuelle IRQL zu ändern. Für einen Treiber, der bei IRQL = DISPATCH_LEVEL ausgeführt wird, verbessert diese Routine die Leistung, indem sie die Sperre erhält, ohne zuerst die IRQL auf DISPATCH_LEVEL festzulegen, was in diesem Fall ein redundanter Vorgang wäre.

Wie gewöhnliche Drehsperren dürfen in die Warteschlange eingereihte Drehsperren nur unter besonderen Umständen verwendet werden. Eine Beschreibung der Verwendung von Drehsperren finden Sie unter KeAcquireSpinLock.

Treiber dürfen keine Aufrufe von KeAcquireSpinLock und KeAcquireInStackQueuedSpinLock auf derselben Drehsperre kombinieren. Eine Drehungssperre muss immer als in die Warteschlange eingereihte Spin-Sperre oder als normale Drehsperre abgerufen oder freigegeben werden.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP
Header- wdm.h
IRQL- IRQL->= DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport)

Siehe auch

KLOCK_QUEUE_HANDLE

KeAcquireSpinLock

KeAcquireInStackQueuedSpinLock

KeInitializeSpinLock

KeReleaseInStackQueuedSpinLockFromDpcLevel