Freigeben über


ExAcquirePushLockShared-Makro (wdm.h)

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

Syntax

void ExAcquirePushLockShared(
   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 ressourcen genannt), 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 den exklusiven Zugriff bereits erworben hat, hängt das System. Wenn der Aufrufer die Pushsperre für den freigegebenen Zugriff bereits erworben hat, kann er erneut freigegebenen Zugriff erhalten.

Rufen Sie ExReleasePushLockShared auf, um die Pushsperre nach dem Erwerb freizugeben. Jeder Aufruf von ExAcquirePushLockShared muss durch einen nachfolgenden Aufruf von ExReleasePushLockShared abgeglichen werden.

Wann der Aufrufer freigegebenen Zugriff auf die angegebene Pushsperre erhält, hängt von folgenden Faktoren ab:

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

  • Wenn die Pushsperre bereits für den freigegebenen Zugriff von einem anderen Thread abgerufen wurde und kein Thread auf den exklusiven Zugriff auf die Pushsperre wartet, wird dem Aufrufer sofort freigegebener Zugriff gewährt. Der Aufrufer wird in einen Wartezustand versetzt, wenn ein exklusiver Kellner vorhanden ist.

  • Wenn die Pushsperre bereits für den exklusiven Zugriff von einem anderen Thread abgerufen wurde oder ein anderer Thread auf exklusiven Zugriff wartet, 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 deaktivieren, indem er KeEnterCriticalRegion aufruft. Wiederherstellen der Übermittlung nach dem Aufheben der Pushsperre durch Aufrufen von KeLeaveCriticalRegion. Weitere Informationen finden Sie unter Deaktivieren von APCs.

Um eine Pushsperre für den exklusiven Zugriff zu erhalten, rufen Sie ExAcquirePushLockExclusive auf.

Anforderungen

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

Weitere Informationen

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockShared

ExAcquirePushLockExclusive