Partager via


FltAcquireResourceExclusive, fonction (fltkernel.h)

La routine FltAcquireResourceExclusive acquiert la ressource donnée pour un accès exclusif par le thread appelant.

Syntaxe

VOID FLTAPI FltAcquireResourceExclusive(
  [in/out] PERESOURCE Resource
);

Paramètres

[in/out] Resource

Pointeur vers une structure ERESOURCE opaque. Cette structure doit être allouée par l’appelant à partir d’un pool non paginé et initialisée en appelant ExInitializeResourceLite ou ExReinitializeResourceLite.

Valeur de retour

Aucun

Remarques

FltAcquireResourceExclusive acquiert la ressource donnée pour un accès exclusif par le thread appelant.

Les circonstances suivantes déterminent si ou quand l’appelant reçoit un accès exclusif à la 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 a déjà acquis la ressource pour un accès exclusif, le thread actuel reçoit le même type d’accès de manière récursive.

  • Les appelants qui ont un accès partagé à la ressource doivent libérer le verrou, puis 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.

FltAcquireResourceExclusive est un wrapper pour ExAcquireResourceExclusiveLite qui désactive la remise NORMALE d’APC du noyau.

Étant donné que FltAcquireResourceExclusive désactive la remise NORMALE d’APC du noyau, il n’est pas nécessaire d’appeler KeEnterCriticalRegion ou FsRtlEnterFileSystem avant d’appeler FltAcquireResourceExclusive.

Pour libérer la ressource après son acquisition, appelez FltReleaseResource. Chaque appel réussi à FltAcquireResourceExclusive doit être mis en correspondance par un appel ultérieur à FltReleaseResource.

Pour acquérir une ressource pour l’accès partagé, appelez FltAcquireResourceShared.

Pour supprimer une ressource de la liste des ressources du système, appelez ExDeleteResourceLite.

Pour initialiser une ressource à réutiliser, appelez ExReinitializeResourceLite.

Pour plus d’informations sur les structures ERESOURCE, consultez Présentation des routines ERESOURCE.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP SP2
serveur minimum pris en charge Windows Server 2003 SP1
d’en-tête fltkernel.h
bibliothèque FltMgr.lib
IRQL IRQL <= APC_LEVEL