Partager via


FltAcquirePushLockExclusive, fonction (fltkernel.h)

La macro FltAcquirePushLockExclusive acquiert le verrou Push donné pour un accès exclusif par le thread appelant.

Syntaxe

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

Paramètres

[in, out] PushLock

Pointeur de verrouillage push opaque de type PEX_PUSH_LOCK. Ce pointeur doit avoir été initialisé par un appel précédent à FltInitializePushLock.

Valeur de retour

Aucun.

Remarques

FltAcquirePushLockExclusive acquiert le verrou Push donné pour un accès exclusif par le thread appelant.

Les verrous push sont similaires aux structures ERESOURCE (également appelées ressources) dans lesquelles ils peuvent être acquis pour un accès partagé ou exclusif. Pour plus d’informations sur les verrous push, consultez l’entrée de référence pour FltInitializePushLock.

Contrairement aux structures ERESOURCE, les verrous push ne peuvent pas être acquis de manière récursive. Si l’appelant a déjà acquis le verrou Push pour un accès exclusif ou partagé, le thread se bloque.

Lorsque l’appelant reçoit un accès exclusif au verrou Push donné dépend des éléments suivants :

  • Si le verrou push n’est pas propriétaire, l’accès exclusif est accordé immédiatement au thread actuel.

  • Si le verrou push a déjà été acquis pour un accès exclusif ou partagé par un autre thread, le thread actuel est placé dans un état d’attente jusqu’à ce que le verrou push puisse être acquis.

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

Pour libérer le verrou push après son acquisition, appelez FltReleasePushLock. Chaque appel à FltAcquirePushLockExclusive doit être mis en correspondance par un appel ultérieur à FltReleasePushLock.

Pour acquérir un verrou Push pour l’accès partagé, appelez FltAcquirePushLockShared.

Pour initialiser un verrou Push, appelez FltInitializePushLock.

Pour supprimer un verrou Push, appelez FltDeletePushLock.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
IRQL <= APC_LEVEL

Voir aussi

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion