FltAcquirePushLockExclusive-Funktion (fltkernel.h)
Das FltAcquirePushLockExclusive Makros erhält die angegebene Pushsperre für exklusiven Zugriff durch den aufrufenden Thread.
Syntax
VOID FLTAPI FltAcquirePushLockExclusive(
[in, out] PEX_PUSH_LOCK PushLock
);
Parameter
[in, out] PushLock
Undurchsichtiger Push-Sperrzeiger vom Typ PEX_PUSH_LOCK. Dieser Zeiger muss durch einen vorherigen Aufruf von FltInitializePushLockinitialisiert worden sein.
Rückgabewert
Nichts.
Bemerkungen
FltAcquirePushLockExclusive erhält die angegebene Pushsperre für exklusiven Zugriff durch den aufrufenden Thread.
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 FltInitializePushLock.
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 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.
Da FltAcquirePushLockExclusive die normale Kernel-APC-Übermittlung deaktiviert, ist es nicht erforderlich, KeEnterCriticalRegion oder FsRtlEnterFileSystem aufzurufen, bevor FltAcquirePushLockExclusiveaufgerufen wird.
Um die Pushsperre nach dem Erwerb freizugeben, rufen Sie FltReleasePushLockauf. Jeder Aufruf von FltAcquirePushLockExclusive muss mit einem nachfolgenden Aufruf von FltReleasePushLockabgeglichen werden.
Um eine Pushsperre für den freigegebenen Zugriff zu erhalten, rufen Sie FltAcquirePushLockSharedauf.
Um eine Pushsperre zu initialisieren, rufen Sie FltInitializePushLockauf.
Um eine Pushsperre zu löschen, rufen Sie FltDeletePushLockauf.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | fltkernel.h (include Fltkernel.h) |
Library | FltMgr.lib |
IRQL- | <= APC_LEVEL |