Partager via


ExInitializePushLock, fonction (wdm.h)

Initialise une variable de verrouillage Push.

Syntaxe

void ExInitializePushLock(
  [Out] PEX_PUSH_LOCK PushLock
);

Paramètres

[Out] PushLock

Pointeur vers le stockage fourni par l’appelant, qui doit être au moins la valeur de sizeof(EX_PUSH_LOCK), pour que la variable de verrou push soit initialisée. Le stockage doit être aligné sur 4 octets sur des plateformes 32 bits et alignés sur des plateformes 64 bits.

Valeur de retour

Aucun

Remarques

Les verrous push sont similaires aux structures ERESOURCE (également appelées « ressources ») de la manière suivante :

  • Les verrous push peuvent être utilisés pour la synchronisation par un ensemble de threads.
  • Les verrous push peuvent être acquis pour un accès partagé ou exclusif.
  • Bien que l’appelant fournisse le stockage de la variable de verrouillage Push, la structure EX_PUSH_LOCK est opaque : autrement dit, ses membres sont réservés à l’utilisation du système.

Les verrous push offrent les avantages suivants sur les structures ERESOURCE :

  • Lorsque les verrous push sont principalement acquis pour l’accès partagé, ils sont plus efficaces que les structures ERESOURCE.
  • Le stockage des verrous Push peut être alloué à partir d’un pool paginé ou non paginé. Les structures ERESOURCE doivent être allouées uniquement à partir d’un pool non paginé.
  • EX_PUSH_LOCK structures sont beaucoup plus petites que les structures ERESOURCE.

Les verrous push présentent les inconvénients suivants par rapport aux structures ERESOURCE :

  • L’algorithme d’octroi d’un accès exclusif n’est pas équitable pour tous les threads. S’il existe un niveau élevé de contention de verrouillage exclusif, il n’existe aucune garantie sur l’ordre dans lequel les threads reçoivent un accès exclusif.
  • Il n’existe aucune routine de prise en charge pour déterminer le propriétaire actuel d’un verrou Push. (Les utilisateurs des structures ERESOURCE peuvent appeler des routines telles qu’ExIsResourceAcquiredExclusiveLite pour déterminer si le thread actuel a un accès exclusif à la ressource.)
  • Les verrous push ne peuvent pas être acquis de manière récursive.

Pour acquérir ou libérer un verrou Push pour un accès exclusif, appelez ExAcquirePushLockExclusive ou ExReleasePushLockExclusive, respectivement.

Pour acquérir ou libérer un verrou push pour l’accès partagé, appelez ExAcquirePushLockShared ou ExReleasePushLockShared, respectivement.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 1809
d’en-tête wdm.h