ExAcquireResourceExclusiveLite, fonction (wdm.h)
La routine ExAcquireResourceExclusiveLite acquiert la ressource donnée pour un accès exclusif par le thread appelant.
Syntaxe
BOOLEAN ExAcquireResourceExclusiveLite(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Paramètres
[in, out] Resource
Pointeur vers la ressource à acquérir.
[in] Wait
Spécifie le comportement de la routine chaque fois que la ressource ne peut pas être acquise immédiatement. Si TRUE, l’appelant est placé dans un état d’attente jusqu’à ce que la ressource puisse être acquise. Si FALSE, la routine retourne immédiatement, que la ressource puisse être acquise.
Valeur de retour
ExAcquireResourceExclusiveLite retourne TRUE si la ressource est acquise. Cette routine retourne FALSE si le d’attente d’entrée est FALSE et que l’accès exclusif ne peut pas être accordé immédiatement.
Remarques
La liste suivante décrit si et quand un appelant reçoit un accès exclusif à une ressource donnée :
Si la ressource n’est actuellement pas détenue, l’accès exclusif est accordé immédiatement au thread actuel.
Si l’appelant avait déjà acquis la ressource pour un accès exclusif, le thread actuel reçoit le même type d’accès récursivement.
Si l’appelant a un accès partagé à la ressource, l’appelant doit libérer le verrou avant qu’il tente de le réacquire exclusivement.
Si la ressource est actuellement détenue comme exclusive par un autre thread ou si l’appelant a uniquement un accès partagé à la ressource, le thread actuel est placé dans un état d’attente jusqu’à ce que la ressource puisse être acquise.
Si deux threads contiennent chacun un verrou partagé sur la même ressource et que les deux tentent d’acquérir le verrou exclusivement sans libérer leur verrou partagé, ils bloquent. Cela signifie que chaque thread attend que l’autre libère sa conservation partagée sur le verrou, et que l’autre ne libère pas sa conservation partagée jusqu’à ce que l’autre ne le fasse.
L’appelant peut libérer la ressource en appelant ExReleaseResourceLite ou ExReleaseResourceForThreadLite.
La remise d’APC du noyau normal doit être désactivée avant d’appeler cette routine. Désactivez la remise d’APC du noyau normal en appelant KeEnterCriticalRegion. La remise doit rester désactivée jusqu’à ce que la ressource soit libérée, à quel moment elle peut être réenable en appelant KeLeaveCriticalRegion. Pour plus d’informations, consultez Désactivation des API.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |
règles de conformité DDI | exclusiveResourceAccess(wdm), HwStorPortProhibitedDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Voir aussi
ExIsResourceAcquiredExclusiveLite