Partager via


NdisInitializeReadWriteLock, fonction (ndis.h)

La fonction NdisInitializeReadWriteLock initialise une variable de verrou en lecture ou en écriture de type NDIS_RW_LOCK.

Remarque L’interface de verrouillage en lecture-écriture est déconseillée pour les pilotes NDIS 6.20 et versions ultérieures, qui doivent utiliser NdisAllocateRWLock au lieu de NdisInitializeReadWriteLock.
 

Syntaxe

void NdisInitializeReadWriteLock(
  [out] PNDIS_RW_LOCK Lock
);

Paramètres

[out] Lock

Pointeur vers une variable de NDIS_RW_LOCK opaque qui représente un verrou. L’appelant peut utiliser ce verrou pour obtenir un accès en écriture ou en lecture aux ressources partagées entre les threads de pilotes non-ISR.

Valeur de retour

Aucun

Remarques

Une variable NDIS_RW_LOCK est utilisée pour limiter l’accès en écriture aux ressources partagées à un thread de pilote non-ISR à la fois. Cette NDIS_RW_LOCK peut autoriser plusieurs threads de pilote non-ISR à accéder en lecture simultanée à ces ressources. Ce type d’accès en lecture n’est pas autorisé pendant un accès en écriture.

Le pointeur lock qui est passé à NdisInitializeReadWriteLock est un paramètre obligatoire pour tous les autres Ndis.. Fonctions readWriteLock.

Avant qu’un pilote appelle la fonction NdisAcquireReadWriteLock pour obtenir un accès en écriture ou en lecture à une ressource, le pilote doit appeler NdisInitializeReadWriteLock pour initialiser le verrou associé à cette ressource. L’appelant doit fournir un stockage non paginé pour la variable à lock.

Après avoir appelé NdisInitializeReadWriteLock, le pilote peut appeler NdisAcquireReadWriteLock pour obtenir l’accès en écriture ou en lecture à la ressource. Un seul thread de pilote non-ISR à la fois peut obtenir l’accès en écriture à la ressource. Lorsqu’un thread non-ISR dispose d’un accès en écriture, tous les accès en lecture et en écriture par d’autres threads non-ISR doivent attendre que le titulaire de l’accès en écriture libère le verrou. Toutefois, si un thread non-ISR dispose d’un accès en lecture, d’autres threads non-ISR peuvent acquérir simultanément un accès en lecture.

Initialisez et utilisez ce type de verrou pour les ressources fréquemment consultées pour la lecture et l’accès peu fréquent à l’écriture.

Une fois l’accès aux ressources terminé, le pilote appelle le fonction NdisReleaseReadWriteLock.

Chaque verrou initialisé par un pilote effectue l’une des opérations suivantes :

  • Protège un ensemble discret de ressources partagées contre l’accès en écriture et en lecture simultanés par les threads de pilote qui s’exécutent sur IRQL <= DISPATCH_LEVEL.
  • Expose un ensemble discret de ressources partagées à l’accès en lecture simultanée par les threads de pilote qui s’exécutent à IRQL <= DISPATCH_LEVEL.
Les appelants de NdisInitializeReadWriteLock peuvent s’exécuter à n’importe quel irQL. En règle générale, un appelant s’exécute à IRQL = PASSIVE_LEVEL lors de l’initialisation.

Exigences

Exigence Valeur
client minimum pris en charge Déconseillé pour les pilotes NDIS 6.20 et ultérieurs, qui doivent utiliser NdisAllocateRWLock au lieu de NdisInitializeReadWriteLock. Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisInitializeReadWriteLock (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisInitializeReadWriteLock (NDIS 5.1)) dans Windows XP.
plateforme cible Universel
d’en-tête ndis.h (include Ndis.h)
bibliothèque Ndis.lib
DLL Ndis.sys
IRQL N’importe quel niveau (voir section Remarques)

Voir aussi

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock