Fonction FltAcquireResourceShared (fltkernel.h)

La routine FltAcquireResourceShared acquiert la ressource donnée pour l’accès partagé par le thread appelant.

Syntaxe

VOID FLTAPI FltAcquireResourceShared(
  [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 retournée

Aucun.

Notes

La routine FltAcquireResourceShared acquiert la ressource donnée pour l’accès partagé par le thread appelant.

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 la propriété exclusive d’un appelant d’une ressource donnée en partage.

  • 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 jusqu’à ce que la ressource puisse être acquise.

FltAcquireResourceShared est un wrapper pour ExAcquireResourceSharedLite qui désactive la remise APC normale du noyau.

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

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

Pour acquérir une ressource pour un accès exclusif, appelez FltAcquireResourceExclusive.

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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP SP2
Serveur minimal pris en charge Windows Server 2003 SP1
En-tête fltkernel.h
Bibliothèque FltMgr.lib
IRQL IRQL <= APC_LEVEL