FltAcquirePushLockShared-Funktion (fltkernel.h)
Die FltAcquirePushLockShared-Routine ruft die angegebene Pushsperre für den gemeinsamen Zugriff durch den aufrufenden Thread ab.
Syntax
VOID FLTAPI FltAcquirePushLockShared(
[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
Die FltAcquirePushLockShared-Routine ruft die angegebene Pushsperre für den gemeinsamen 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 bereits die Pushsperre für den exklusiven Zugriff erworben hat, hängt das System. Wenn der Aufrufer die Pushsperre für den gemeinsamen Zugriff bereits erworben hat, kann er den freigegebenen Zugriff erneut empfangen. Jeder Aufruf von FltAcquirePushLockShared muss jedoch durch einen nachfolgenden Aufruf von FltReleasePushLock abgeglichen werden.
Wann der Aufrufer freigegebenen Zugriff auf die angegebene Pushsperre erhält, hängt von Folgendem ab:
Wenn die Pushsperre derzeit nicht vorhanden ist, wird der freigegebene Zugriff sofort auf den aktuellen Thread gewährt.
Wenn die Pushsperre bereits für den freigegebenen Zugriff von einem anderen Thread abgerufen wurde und kein Thread auf exklusiven Zugriff auf die Pushsperre wartet, wird dem Aufrufer sofort freigegebener Zugriff gewährt. Der Aufrufer wird in einen Wartezustand versetzt, wenn ein exklusiver Kellner vorhanden ist.
Wenn die Pushsperre bereits für den exklusiven Zugriff durch einen anderen Thread abgerufen wurde oder ein anderer Thread auf exklusiven Zugriff wartet, wird der aktuelle Thread in einen Wartezustand versetzt, bis die Pushsperre abgerufen werden kann.
Da FltAcquirePushLockShared die normale Kernel-APC-Übermittlung deaktiviert, ist es nicht erforderlich, KeEnterCriticalRegion oder FsRtlEnterFileSystem aufzurufen, bevor FltAcquirePushLockShared aufgerufen wird.
Um die Pushsperre nach dem Abrufen freizugeben, rufen Sie FltReleasePushLock auf. Jeder Aufruf von FltAcquirePushLockShared muss durch einen nachfolgenden Aufruf von FltReleasePushLock abgeglichen werden.
Um eine Pushsperre für exklusiven Zugriff zu erhalten, rufen Sie FltAcquirePushLockExclusive auf.
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 |