Partager via


NdisInitializeReadWriteLock, fonction (ndis.h)

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

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

Syntaxe

void NdisInitializeReadWriteLock(
  [out] PNDIS_RW_LOCK Lock
);

Paramètres

[out] Lock

Pointeur vers une variable 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 des threads de pilote non-ISR.

Valeur de retour

None

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 simultanément en lecture à ces ressources. Cet accès en lecture n’est pas autorisé pendant un accès en écriture.

Le pointeur Lock 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 dans Verrouiller .

Après avoir appelé NdisInitializeReadWriteLock, le pilote peut appeler NdisAcquireReadWriteLock pour obtenir un accès en écriture ou en lecture à la ressource. Un seul thread de pilote non ISR à la fois peut obtenir un 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 détenteur d’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 simultanément acquérir un accès en lecture.

Initialisez et utilisez ce type de verrou pour les ressources fréquemment consultées pour la lecture et rarement accessibles pour l’écriture.

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

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 simultané en écriture et en lecture par des threads de pilote qui s’exécutent à IRQL <= DISPATCH_LEVEL.
  • Expose un ensemble discret de ressources partagées à un accès en lecture simultané par des threads de pilote qui s’exécutent au
Les appelants de NdisInitializeReadWriteLock peuvent s’exécuter sur n’importe quel IRQL. En règle générale, un appelant s’exécute sur IRQL = PASSIVE_LEVEL pendant l’initialisation.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Déconseillé pour les pilotes NDIS 6.20 et ultérieur, 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 Universal
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
DLL Ndis.sys
IRQL N’importe quel niveau (voir la section Remarques)

Voir aussi

NdisAcquireReadWriteLock

NdisReleaseReadWriteLock