Freigeben über


ExAcquirePushLockExclusive-Makro (wdm.h)

Ruft die angegebene Pushsperre für den exklusiven Zugriff durch den aufrufenden Thread ab.

Syntax

void ExAcquirePushLockExclusive(
   Lock
);

Parameter

Lock

Undurchsichtiger Pushsperrzeiger. Dieser Zeiger muss durch einen vorherigen Aufruf von ExInitializePushLock initialisiert worden sein.

Rückgabewert

Keine

Bemerkungen

Pushsperren ähneln ERESOURCE-Strukturen (auch als Ressourcen bezeichnet), da sie für freigegebenen oder exklusiven Zugriff abgerufen werden können. Weitere Informationen zu Pushsperren finden Sie im Referenzeintrag für ExInitializePushLock.

Im Gegensatz zu ERESOURCE-Strukturen können Pushsperren nicht rekursiv abgerufen werden. Wenn der Aufrufer die Pushsperre für exklusiven oder freigegebenen Zugriff bereits erworben hat, hängt der Thread. Wenn der Aufrufer exklusiven Zugriff auf die angegebene Pushsperre erhält, hängt von Folgendem ab:

  • Wenn die Pushsperre derzeit nicht vorhanden ist, wird dem aktuellen Thread sofort exklusiver Zugriff gewährt.

  • Wenn die Pushsperre bereits für den exklusiven oder freigegebenen Zugriff durch einen anderen Thread abgerufen wurde, wird der aktuelle Thread in einen Wartezustand versetzt, bis die Pushsperre abgerufen werden kann.

Vor dem Aufrufen dieser Routine muss der Treiber die normale Kernel-APC-Übermittlung durch Aufrufen von KeEnterCriticalRegion deaktivieren. Die Übermittlung nach dem Aufheben der Pushsperre kann durch Aufrufen von KeLeaveCriticalRegion wieder aktiviert werden. Weitere Informationen finden Sie unter Deaktivieren von APCs.

Um die Pushsperre nach dem Abrufen freizugeben, rufen Sie ExReleasePushLockExclusive auf. Jeder Aufruf von ExAcquirePushLockExclusive muss durch einen nachfolgenden Aufruf von ExReleasePushLockExclusive abgeglichen werden.

Rufen Sie ExAcquirePushLockShared auf, um eine Pushsperre für den gemeinsamen Zugriff zu erhalten.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1809
Kopfzeile wdm.h

Weitere Informationen

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockExclusive

ExAcquirePushLockShared