FltAcquireResourceShared, fonction (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 de retour
Aucun.
Remarques
La routine FltAcquireResourceShared acquiert la ressource donnée pour l’accès partagé par le thread appelant.
Si l’appelant reçoit ou non l’accès partagé à la ressource donnée dépend des éléments suivants :
Si la ressource n’est 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 reçoit le même type d’accès de manière récursive. Notez que l’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 l’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 comme exclusive par un autre thread ou s’il existe un autre thread en attente d’accès exclusif et que l’appelant n’a pas déjà 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 NORMALE d’APC du noyau.
Étant donné que FltAcquireResourceShared désactive la remise NORMALE d’APC du noyau, il n’est pas nécessaire d’appeler KeEnterCriticalRegion ou FsRtlEnterFileSystem avant d’appeler FltAcquireSourceShared.
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.
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 |