ExAcquireSharedStarveExclusive-Funktion (wdm.h)
Die ExAcquireSharedStarveExclusive-Routine ruft eine bestimmte Ressource für den gemeinsamen Zugriff ab, 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 gemeinsamen Zugriff 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. False gibt die Routine sofort zurück, unabhängig davon, ob die Ressource abgerufen 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 Waitden Wert FALSE aufweist 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 Folgendem ab:
- Wenn die Ressource derzeit nicht vorhanden ist, wird dem aktuellen Thread sofort freigegebener Zugriff gewährt.
- Wenn der Aufrufer die Ressource bereits abgerufen 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, wird dem Aufrufer sofort freigegebener Zugriff gewährt, auch wenn ein anderer Thread auf exklusiven Zugriff auf diese Ressource wartet.
- Wenn sich die Ressource derzeit im Besitz eines anderen Threads exklusiv befindet, wird der Aufrufer entweder in einen Wartezustand versetzt (Wait auf TRUE festgelegt), oder ExAcquireSharedStarveExclusive gibt FALSE zurück.
Die normale Kernel-APC-Übermittlung muss vor dem Aufruf 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. An diesem Punkt kann sie durch Aufrufen von KeLeaveCriticalRegion erneut aktiviert werden. Weitere Informationen finden Sie unter Deaktivieren von APCs.
Der Aufrufer kann die Ressource freigeben, indem er entweder ExReleaseResourceLite oder ExReleaseResourceForThreadLite aufruft.
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
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite