Freigeben über


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

Siehe auch

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion