Freigeben über


ExAcquireResourceSharedLite-Funktion (wdm.h)

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

Syntax

BOOLEAN ExAcquireResourceSharedLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

Parameter

[in, out] Resource

Ein Zeiger auf die ressource, die abgerufen werden soll.

[in] Wait

Gibt das Verhalten der Routine an, wenn die Ressource nicht sofort abgerufen werden kann. Bei TRUE wird der Aufrufer in einen Wartezustand versetzt, bis die Ressource abgerufen werden kann. Bei FALSE wird die Routine sofort zurückgegeben, unabhängig davon, ob die Ressource abgerufen werden kann.

Rückgabewert

Der Aufrufer kann die Ressource freigeben, indem er entweder ExReleaseResourceLite oder ExReleaseResourceForThreadLite aufruft.

ExAcquireResourceSharedLite gibt TRUE zurück, wenn (oder wann) die Ressource abgerufen wird. Diese Routine gibt FALSE zurück, wenn die Eingabe Waitfalse ist und der freigegebene Zugriff nicht sofort gewährt werden kann.

Hinweise

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 durch diesen Aufruf der exklusive Zugriff eines Aufrufers auf eine bestimmte Ressource nicht in den freigegebenen Zugriff konvertiert wird.

  • 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 die Ressource derzeit im Besitz eines anderen Threads ist oder ein anderer Thread auf exklusiven Zugriff wartet und der Aufrufer nicht bereits über freigegebenen Zugriff auf die Ressource verfügt, wird der aktuelle Thread entweder in einen Wartezustand versetzt (Wait set to TRUE) oder ExAcquireResourceSharedLite gibt FALSE zurück.

Die normale Kernel-APC-Übermittlung muss vor dem Aufrufen dieser Routine deaktiviert werden. Deaktivieren Sie die normale Kernel-APC-Übermittlung, indem Sie KeEnterCriticalRegion aufrufen. Die Übermittlung muss deaktiviert bleiben, bis die Ressource freigegeben wird. Zu diesem Zeitpunkt kann sie durch Aufrufen von KeLeaveCriticalRegion erneut aktiviert werden. Weitere Informationen finden Sie unter Deaktivieren von APCs.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Weitere Informationen

ExAcquireResourceExclusiveLite

ExAcquireSharedStarveExclusive

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite