ExAcquirePushLockExclusive-Makro (wdm.h)
Ruft die angegebene Pushsperre für exklusiven Zugriff durch den aufrufenden Thread ab.
Syntax
void ExAcquirePushLockExclusive(
Lock
);
Parameter
Lock
Undurchsichtiger Pushsperrzeiger. Dieser Zeiger muss durch einen vorherigen Aufruf von ExInitializePushLockinitialisiert worden sein.
Rückgabewert
Nichts
Bemerkungen
Pushsperren ähneln ERESOURCE-Strukturen (auch als Ressourcen bezeichnet), da sie für den freigegebenen oder exklusiven Zugriff erworben werden können. Weitere Informationen zu Pushsperren finden Sie im Referenzeintrag für ExInitializePushLock.
Im Gegensatz zu ERESOURCE-Strukturen können Pushsperren nicht rekursiv erworben werden. Wenn der Aufrufer die Pushsperre bereits für exklusiven oder freigegebenen Zugriff erworben hat, hängt der Thread. Wenn der Anrufer exklusiven Zugriff auf die angegebene Pushsperre erhält, hängt von den folgenden Faktoren ab:
Wenn die Pushsperre derzeit nicht freigegeben ist, wird der exklusive Zugriff sofort auf den aktuellen Thread gewährt.
Wenn die Pushsperre bereits für exklusiven oder freigegebenen Zugriff durch einen anderen Thread erworben 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 deaktivieren, indem KeEnterCriticalRegionaufgerufen wird. Erneute Zustellung nach freigabe der Pushsperre durch Aufrufen von KeLeaveCriticalRegion. Weitere Informationen finden Sie unter Deaktivieren von APCs.
Um die Pushsperre nach dem Erwerb freizugeben, rufen Sie ExReleasePushLockExclusiveauf. Jeder Aufruf von ExAcquirePushLockExclusive muss mit einem nachfolgenden Aufruf von ExReleasePushLockExclusiveabgeglichen werden.
Rufen Sie ExAcquirePushLockSharedauf, um eine Pushsperre für den freigegebenen Zugriff zu erwerben.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10, Version 1809 |
Header- | wdm.h |