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 zu erwerbende Ressource.

[in] Wait

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

Rückgabewert

Der Aufrufer kann die Ressource freigeben, indem entweder ExReleaseResourceLite oder ExReleaseResourceForThreadLiteaufgerufen wird.

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.

Bemerkungen

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 Zugriff eines Anrufers einer bestimmten Ressource nicht in den freigegebenen Zugriff 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 exklusiv von einem anderen Thread ist oder ein anderer Thread auf exklusiven Zugriff wartet und der Aufrufer noch keinen freigegebenen Zugriff auf die Ressource hat, wird der aktuelle Thread entweder in einen Wartezustand versetzt (Wait auf TRUEfestgelegt) oder ExAcquireResourceSharedLite gibt FALSEzurück.

Die normale Kernel-APC-Übermittlung muss vor dem Aufrufen dieser Routine deaktiviert werden. Deaktivieren Sie die normale Kernel-APC-Übermittlung, indem Sie KeEnterCriticalRegionaufrufen. Die Zustellung muss deaktiviert bleiben, bis die Ressource freigegeben wird. An diesem Punkt kann sie durch Aufrufen von KeLeaveCriticalRegionerneut aktiviert werden. Weitere Informationen finden Sie unter Deaktivieren von APCs.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Siehe auch

ExAcquireResourceExclusiveLite-

ExAcquireSharedStarveExclusive

ExAcquireSharedWaitForExclusive

ExConvertExclusiveToSharedLite-

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite-

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite-