ExAcquireSharedStarveExclusive-Funktion (wdm.h)
Die ExAcquireSharedStarveExclusive Routine erwirbt eine bestimmte Ressource für den freigegebenen Zugriff, ohne auf ausstehende Versuche zu warten, exklusiven Zugriff auf dieselbe Ressource zu erhalten.
Syntax
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Parameter
[in, out] Resource
Ein Zeiger auf die Ressource, die für den freigegebenen Zugriff abgerufen werden soll.
[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
ExAcquireSharedStarveExclusive gibt TRUE zurück, wenn der angeforderte Zugriff gewährt 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 zurzeit im Besitz eines anderen Threads ist, wird dem Aufrufer sofort freigegebener Zugriff gewährt, auch wenn ein anderer Thread auf exklusiven Zugriff auf diese Ressource wartet.
- Wenn die Ressource derzeit als exklusiv für einen anderen Thread verwendet wird, wird der Aufrufer entweder in einen Wartezustand versetzt (Wait auf TRUEfestgelegt) oder ExAcquireSharedStarveExclusive 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.
Der Aufrufer kann die Ressource freigeben, indem entweder ExReleaseResourceLite oder ExReleaseResourceForThreadLiteaufgerufen wird.
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
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite-