Freigeben über


FltAcquirePushLockSharedEx-Funktion (fltkernel.h)

Die FltAcquirePushLockSharedEx Routine erwirbt die angegebene Pushsperre für den freigegebenen Zugriff durch den aufrufenden Thread.

Syntax

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Parameter

PushLock

Undurchsichtiger Pushsperrzeiger. Dieser Zeiger muss durch einen vorherigen Aufruf von FltInitializePushLockinitialisiert worden sein.

Flags

Eine Bitmaske von Flags, die die Attribute der Sperre steuern.

Rückgabewert

Nichts.

Bemerkungen

Die FltAcquirePushLockSharedEx Routine erwirbt die angegebene Pushsperre für den freigegebenen 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 Anrufer die Pushsperre bereits für exklusiven Zugriff erworben hat, hängt das System. Wenn der Anrufer die Pushsperre für den freigegebenen Zugriff bereits erworben hat, kann er erneut freigegebenen Zugriff erhalten. Jeder Aufruf von FltAcquirePushLockShared muss jedoch mit einem nachfolgenden Aufruf von FltReleasePushLockabgeglichen werden.

Wenn dem Anrufer der freigegebene Zugriff auf die angegebene Pushsperre gewährt wird, hängt von den folgenden Faktoren ab:

  • Wenn die Pushsperre zurzeit nicht freigegeben ist, wird der freigegebene Zugriff sofort auf den aktuellen Thread gewährt.

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

  • Wenn die Pushsperre bereits für den exklusiven Zugriff durch einen anderen Thread erworben wurde oder ein anderer Thread auf exklusiven Zugriff wartet, wird der aktuelle Thread in einen Wartezustand versetzt, bis die Pushsperre abgerufen werden kann.

Anforderungen

Anforderung Wert
Header- fltkernel.h
Library FltMgr.lib

Siehe auch

FltInitializePushLock