Freigeben über


FltAcquireResourceShared-Funktion (fltkernel.h)

Die FltAcquireResourceShared Routine ruft die angegebene Ressource für den gemeinsamen 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 seitengebundenen Pool zugewiesen und durch Aufrufen von ExInitializeResourceLite oder ExReinitializeResourceLiteinitialisiert werden.

Rückgabewert

Nichts.

Bemerkungen

Die FltAcquireResourceShared-Routine erwirbt die angegebene Ressource für den gemeinsamen Zugriff durch den aufrufenden Thread.

Gibt an, ob der Aufrufer freigegebenen Zugriff auf die angegebene Ressource erhält, hängt von folgenden Faktoren ab:

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

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

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

  • Wenn die Ressource derzeit als exklusiv von einem anderen Thread oder wenn ein anderer Thread auf exklusiven Zugriff wartet und der Aufrufer noch keinen freigegebenen Zugriff auf die Ressource hat, 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 FltAcquireResourceSharedaufgerufen wird.

Rufen Sie FltReleaseResource-auf, um die Ressource nach dem Erwerb freizugeben. Jeder erfolgreiche Aufruf von FltAcquireResourceShared muss mit einem nachfolgenden Aufruf von FltReleaseResourceabgeglichen werden.

Rufen Sie FltAcquireResourceExclusiveauf, um eine Ressource für exklusiven Zugriff abzurufen.

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

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

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP SP2
mindestens unterstützte Server- Windows Server 2003 SP1
Header- fltkernel.h
Library FltMgr.lib
IRQL- IRQL-<= APC_LEVEL