ExAcquireResourceExclusiveLite-Funktion (wdm.h)
Die ExAcquireResourceExclusiveLite Routine ruft die angegebene Ressource für exklusiven Zugriff durch den aufrufenden Thread ab.
Syntax
BOOLEAN ExAcquireResourceExclusiveLite(
[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
ExAcquireResourceExclusiveLite gibt TRUE zurück, wenn die Ressource abgerufen wird. Diese Routine gibt FALSE zurück, wenn die Eingabe WaitFALSE- ist und der exklusive Zugriff nicht sofort gewährt werden kann.
Bemerkungen
In der folgenden Liste wird beschrieben, ob und wann ein Aufrufer exklusiven Zugriff auf eine bestimmte Ressource erhält:
Wenn die Ressource derzeit nicht im Besitz ist, wird der exklusive Zugriff sofort auf den aktuellen Thread gewährt.
Wenn der Aufrufer die Ressource bereits für den exklusiven Zugriff erworben hat, erhält der aktuelle Thread denselben Zugriffstyp rekursiv.-
Wenn der Aufrufer über gemeinsamen Zugriff auf die Ressource verfügt, muss der Aufrufer die Sperre freigeben, bevor er versucht, ihn exklusiv erneut zu erhalten.
Wenn die Ressource derzeit exklusiv von einem anderen Thread ist oder der Aufrufer nur über gemeinsamen Zugriff auf die Ressource verfügt, wird der aktuelle Thread in einen Wartezustand versetzt, bis die Ressource abgerufen werden kann.
Wenn zwei Threads jeweils eine freigegebene Sperre auf derselben Ressource enthalten und beide versuchen, die Sperre exklusiv zu erwerben, ohne ihre freigegebene Sperre freizugeben, werden sie inaktiv. Dies bedeutet, dass jeder Thread wartet, bis der andere seine freigegebene Aufbewahrung für die Sperre freigibt, und beides gibt den freigegebenen Halteraum erst wieder frei, wenn der andere dies tut.
Der Aufrufer kann die Ressource freigeben, indem entweder ExReleaseResourceLite oder ExReleaseResourceForThreadLiteaufgerufen wird.
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 |
---|---|
Zielplattform- | Universal |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | IRQL-<= APC_LEVEL |
DDI-Complianceregeln | ExclusiveResourceAccess(wdm), HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Siehe auch
ExIsResourceAcquiredExclusiveLite