NdisInitializeReadWriteLock, fonction (ndis.h)
La fonction NdisInitializeReadWriteLock initialise une variable de verrou 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 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.
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) |