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

ExGetExclusiveWaiterCount

ExGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

ExReleaseResourceForThreadLite