FltAcquirePushLockExclusive-Funktion (fltkernel.h)
Das Makro FltAcquirePushLockExclusive ruft die angegebene Pushsperre für den exklusiven Zugriff durch den aufrufenden Thread ab.
Syntax
VOID FLTAPI FltAcquirePushLockExclusive(
[in, out] PEX_PUSH_LOCK PushLock
);
Parameter
[in, out] PushLock
Undurchsichtiger Pushsperrzeiger vom Typ PEX_PUSH_LOCK. Dieser Zeiger muss durch einen vorherigen Aufruf von FltInitializePushLock initialisiert worden sein.
Rückgabewert
Keine.
Hinweise
FltAcquirePushLockExclusive ruft die angegebene Pushsperre für den exklusiven Zugriff durch den aufrufenden Thread ab.
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 FltInitializePushLock.
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.
Wann 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.
Da FltAcquirePushLockExclusive die normale Kernel-APC-Übermittlung deaktiviert, ist es nicht erforderlich, KeEnterCriticalRegion oder FsRtlEnterFileSystem aufzurufen, bevor FltAcquirePushLockExclusive aufgerufen wird.
Um die Pushsperre nach dem Abrufen freizugeben, rufen Sie FltReleasePushLock auf. Jeder Aufruf von FltAcquirePushLockExclusive muss durch einen nachfolgenden Aufruf von FltReleasePushLock abgeglichen werden.
Rufen Sie FltAcquirePushLockShared auf, um eine Pushsperre für den gemeinsamen Zugriff zu erhalten.
Um eine Pushsperre zu initialisieren, rufen Sie FltInitializePushLock auf.
Um eine Pushsperre zu löschen, rufen Sie FltDeletePushLock auf.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | fltkernel.h (fltkernel.h einschließen) |
Bibliothek | FltMgr.lib |
IRQL | <= APC_LEVEL |