Fonction ExAcquireResourceSharedLite (wdm.h)
La routine ExAcquireResourceSharedLite acquiert la ressource donnée pour l’accès partagé par le thread appelant.
Syntaxe
BOOLEAN ExAcquireResourceSharedLite(
[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 la valeur est TRUE, l’appelant est placé dans un état d’attente jusqu’à ce que la ressource puisse être acquise. Si la valeur est FALSE, la routine retourne immédiatement, que la ressource puisse ou non être acquise.
Valeur retournée
L’appelant peut libérer la ressource en appelant ExReleaseResourceLite ou ExReleaseResourceForThreadLite.
ExAcquireResourceSharedLite retourne TRUE si (ou quand) la ressource est acquise. Cette routine retourne FALSE si l’entrée Wait a la valeur FALSE et que l’accès partagé ne peut pas être accordé immédiatement.
Remarques
Si ou quand l’appelant reçoit un accès partagé à la ressource donnée dépend des éléments suivants :
Si la ressource n’est actuellement pas propriétaire, l’accès partagé est accordé immédiatement au thread actuel.
Si l’appelant a déjà acquis la ressource (pour un accès partagé ou exclusif), le thread actuel se voit accorder le même type d’accès de manière récursive. Notez que la réalisation de cet appel ne convertit pas l’accès exclusif d’un appelant à une ressource donnée en accès partagé.
Si la ressource est actuellement détenue comme partagée par un autre thread et qu’aucun thread n’attend un accès exclusif à la ressource, l’accès partagé est accordé immédiatement à l’appelant. L’appelant est placé dans un état d’attente s’il existe un serveur exclusif.
Si la ressource est actuellement détenue en tant qu’exclusive par un autre thread ou s’il existe un autre thread en attente d’un accès exclusif et que l’appelant ne dispose pas déjà d’un accès partagé à la ressource, le thread actuel est placé dans un état d’attente (wait défini sur TRUE) ou ExAcquireResourceSharedLite retourne FALSE.
La remise APC normale du noyau doit être désactivée avant d’appeler cette routine. Désactivez la remise APC normale du noyau en appelant KeEnterCriticalRegion. La remise doit rester désactivée jusqu’à ce que la ressource soit libérée, ce qui permet de la réactiver en appelant KeLeaveCriticalRegion. Pour plus d’informations, consultez Désactivation des API.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport),IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Voir aussi
ExAcquireResourceExclusiveLite
ExAcquireSharedStarveExclusive
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite