Fonction ExAcquireSharedStarveExclusive (wdm.h)
La routine ExAcquireSharedStarveExclusive acquiert une ressource donnée pour l’accès partagé sans attendre les tentatives en attente d’acquisition d’un accès exclusif à la même ressource.
Syntaxe
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Paramètres
[in, out] Resource
Pointeur vers la ressource à acquérir pour l’accès partagé.
[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
ExAcquireSharedStarveExclusive retourne TRUE si l’accès demandé est accordé. Cette routine retourne FALSE si l’entrée Wait est 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 actif.
- Si l’appelant a déjà acquis la ressource (pour un accès partagé ou exclusif), le thread actuel bénéficie du même type d’accès de manière récursive. Notez que le fait d’effectuer 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 en tant que partagée par un autre thread, l’accès partagé est accordé immédiatement à l’appelant, même si un autre thread attend un accès exclusif à cette ressource.
- Si la ressource est actuellement détenue en tant qu’exclusive par un autre thread, l’appelant est placé dans un état d’attente (Wait défini sur TRUE) ou ExAcquireSharedStarveExclusive retourne FALSE.
La remise d’APC du noyau normal doit être désactivée avant d’appeler cette routine. Désactivez la remise APC du noyau normal en appelant KeEnterCriticalRegion. La remise doit rester désactivée jusqu’à ce que la ressource soit libérée. À ce stade, elle peut être réactivée en appelant KeLeaveCriticalRegion. Pour plus d’informations, consultez Désactivation des API.
L’appelant peut libérer la ressource en appelant ExReleaseResourceLite ou ExReleaseResourceForThreadLite.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure 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
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite