FltAcquirePushLockSharedEx, fonction (fltkernel.h)
La routine FltAcquirePushLockSharedEx acquiert le verrou Push donné pour l’accès partagé par le thread appelant.
Syntaxe
VOID FLTAPI FltAcquirePushLockSharedEx(
PEX_PUSH_LOCK PushLock,
ULONG Flags
);
Paramètres
PushLock
Pointeur de verrouillage push opaque. Ce pointeur doit avoir été initialisé par un appel précédent à FltInitializePushLock.
Flags
Masque de bits des indicateurs qui contrôlent les attributs du verrou.
Valeur de retour
Aucun.
Remarques
La routine FltAcquirePushLockSharedEx 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) 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, le système se bloque. Si l’appelant a déjà acquis le verrou Push pour l’accès partagé, il peut recevoir à nouveau l’accès partagé. Toutefois, chaque appel à FltAcquirePushLockShared doit être mis en correspondance par un appel ultérieur à FltReleasePushLock.
Lorsque l’appelant reçoit un accès partagé au verrou Push donné dépend des éléments suivants :
Si le verrou push n’est pasowned, l’accès partagé est accordé immédiatement au thread actuel.
Si le verrou push a déjà été acquis pour l’accès partagé par un autre thread et qu’aucun thread n’attend l’accès exclusif au verrou Push, 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 le verrou push a déjà été acquis pour l’accès exclusif par un autre thread ou s’il existe un autre thread en attente d’accès exclusif, le thread actuel est placé dans un état d’attente jusqu’à ce que le verrou push puisse être acquis.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | fltkernel.h |
bibliothèque | FltMgr.lib |