FltAcquireResourceShared-Funktion (fltkernel.h)

Die FltAcquireResourceShared-Routine ruft die angegebene Ressource für den freigegebenen Zugriff durch den aufrufenden Thread ab.

Syntax

VOID FLTAPI FltAcquireResourceShared(
  [in/out] PERESOURCE Resource
);

Parameter

[in/out] Resource

Zeiger auf eine undurchsichtige ERESOURCE-Struktur . Diese Struktur muss vom Aufrufer aus einem nicht ausgestellten Pool zugeordnet und durch Aufrufen von ExInitializeResourceLite oder ExReinitializeResourceLite initialisiert werden.

Rückgabewert

Keine.

Hinweise

Die FltAcquireResourceShared-Routine ruft die angegebene Ressource für den freigegebenen Zugriff durch den aufrufenden Thread ab.

Ob oder wann der Aufrufer freigegebenen Zugriff auf die angegebene Ressource erhält, hängt von folgenden Faktoren ab:

  • Wenn die Ressource derzeit nicht verwaltet wird, wird dem aktuellen Thread sofort freigegebener Zugriff gewährt.

  • Wenn der Aufrufer die Ressource bereits erworben hat (für freigegebenen oder exklusiven Zugriff), wird dem aktuellen Thread rekursiv derselbe Zugriffstyp gewährt. Beachten Sie, dass das Ausführen dieses Aufrufs den exklusiven Besitz eines Aufrufers an einer bestimmten Ressource nicht in freigegeben konvertiert.

  • Wenn sich die Ressource derzeit im Besitz eines anderen Threads befindet und kein Thread auf den exklusiven Zugriff auf die Ressource wartet, wird dem Aufrufer sofort freigegebener Zugriff gewährt. Der Aufrufer wird in einen Wartezustand versetzt, wenn ein exklusiver Kellner vorhanden ist.

  • Wenn sich die Ressource derzeit im Besitz eines anderen Threads befindet oder ein anderer Thread auf exklusiven Zugriff wartet und der Aufrufer noch nicht über freigegebenen Zugriff auf die Ressource verfügt, wird der aktuelle Thread in einen Wartezustand versetzt, bis die Ressource abgerufen werden kann.

FltAcquireResourceShared ist ein Wrapper für ExAcquireResourceSharedLite , der die normale Kernel-APC-Übermittlung deaktiviert.

Da FltAcquireResourceShared die normale Kernel-APC-Übermittlung deaktiviert, ist es nicht erforderlich, KeEnterCriticalRegion oder FsRtlEnterFileSystem aufzurufen, bevor FltAcquireResourceShared aufgerufen wird.

Um die Ressource nach dem Erwerb freizugeben, rufen Sie FltReleaseResource auf. Jeder erfolgreiche Aufruf von FltAcquireResourceShared muss durch einen nachfolgenden Aufruf von FltReleaseResource abgeglichen werden.

Um eine Ressource für den exklusiven Zugriff zu erhalten, rufen Sie FltAcquireResourceExclusive auf.

Um eine Ressource aus der Ressourcenliste des Systems zu löschen, rufen Sie ExDeleteResourceLite auf.

Um eine Ressource für die Wiederverwendung zu initialisieren, rufen Sie ExReinitializeResourceLite auf.

Weitere Informationen zu ERESOURCE-Strukturen finden Sie unter Einführung in ERESOURCE-Routinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP SP2
Unterstützte Mindestversion (Server) Windows Server 2003 SP1
Kopfzeile fltkernel.h
Bibliothek FltMgr.lib
IRQL IRQL <= APC_LEVEL