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