Fonction FltAcquirePushLockShared (fltkernel.h)

La routine FltAcquirePushLockShared acquiert le verrou Push donné pour l’accès partagé par le thread appelant.

Syntaxe

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

Aucun.

Notes

La routine FltAcquirePushLockShared acquiert le verrou Push donné pour l’accès partagé par le thread appelant.

Les verrous push sont similaires aux structures ERESOURCE (également appelées ressources) en ce qu’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 l’accès exclusif, le système se bloque. Si l’appelant a déjà acquis le verrou push pour l’accès partagé, il peut à nouveau recevoir l’accès partagé. Toutefois, chaque appel à FltAcquirePushLockShared doit être mis en correspondance par un appel suivant à FltReleasePushLock.

Le moment où l’appelant reçoit un accès partagé au verrou Push donné dépend des éléments suivants :

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

  • Si le verrou push a déjà été acquis pour l’accès partagé par un autre thread et qu’aucun thread n’attend un accès exclusif au verrou push, l’accès partagé est immédiatement accordé à l’appelant. L’appelant est placé dans un état d’attente s’il existe un serveur exclusif.

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

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

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

Pour acquérir un verrou push pour un accès exclusif, appelez FltAcquirePushLockExclusive.

Pour initialiser un verrou push, appelez FltInitializePushLock.

Pour supprimer un verrou push, appelez FltDeletePushLock.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
IRQL <= APC_LEVEL

Voir aussi

FltAcquirePushLockExclusive

FltAcquirePushLockSharedEx

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion