Macro NdisAcquireSpinLock (ndis.h)
La fonction NdisAcquireSpinLock acquiert un verrou de rotation afin que l’appelant bénéficie d’un accès exclusif aux ressources, partagées entre les fonctions de pilote, que le verrou de rotation protège.
Syntaxe
void NdisAcquireSpinLock(
[in] _SpinLock
);
Paramètres
[in] _SpinLock
Pointeur vers un verrou de rotation opaque, déjà initialisé par l’appelant.
Valeur de retour
None
Remarques
Le pilote doit initialiser une variable de type NDIS_SPIN_LOCK avec NdisAllocateSpinLock avant d’appeler n’importe quelle autre fonction SpinLock NdisXxx. Le pilote doit fournir un stockage résident pour les verrous de rotation qu’il utilise.
Après avoir acquis un verrou de rotation avec NdisAcquireSpinLock, l’appelant doit libérer ce verrou avec un appel à NdisReleaseSpinLock. Un pilote doit appeler NdisReleaseSpinLock après chaque appel à NdisAcquireSpinLock. Sinon, un blocage se produit, accrochant le pilote.
Un verrou de rotation acquis avec NdisAcquireSpinLock doit être libéré avec NdisReleaseSpinLock. Un verrou de rotation acquis avec NdisDprAcquireSpinLock doit être libéré avec NdisDprReleaseSpinLock.
Un pilote ne doit jamais tenir un verrou de rotation pendant une période prolongée (plus de quelques instructions). La conservation d’un verrou de rotation pendant plus de 25 microsecondes dégrade les performances du système et du pilote.
Un pilote miniport ne peut pas utiliser un verrou de rotation pour protéger les ressources que ses autres fonctions partagent avec le MiniportInterrupt et/ou Fonctions MiniportDisableInterruptEx . Au lieu de cela, un pilote miniport doit appeler NdisMSynchronizeWithInterruptEx pour que son La fonction MiniportSynchronizeInterrupt accède à ces ressources partagées au même niveau DIRQL auquel son
Les fonctions MiniportInterrupt et/ou MiniportDisableInterruptEx le font.
Pour plus d’informations sur l’acquisition et la publication de verrous de rotation NDIS, consultez Synchronisation et notification dans les pilotes réseau.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisAcquireSpinLock (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (consultez NdisAcquireSpinLock (NDIS 5.1)) dans Windows XP. |
Plateforme cible | Universal |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Règles de conformité DDI | Irql_Synch_Function(ndis),SpinLock(ndis),SpinLockBalanced(ndis),SpinLockDpr(ndis),SpinLockDprRelease(ndis), SpinlockRelease(ndis), SpinlockRelease(ndis) |
Voir aussi
MiniportSynchronizeInterrupt NdisMSynchronizeWithInterruptExCommentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour