NdisInitializeReadWriteLock, fonction (ndis.h)
La fonction NdisInitializeReadWriteLock initialise une variable de verrouillage en lecture ou en écriture de type NDIS_RW_LOCK.
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
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) |