Partager via


Macro NdisDprAcquireSpinLock (ndis.h)

La fonction NdisDprAcquireSpinLock acquiert un verrou de rotation afin que l’appelant puisse synchroniser l’accès aux ressources partagées entre les fonctions de pilote non-ISR de manière multiprocesseur-safe.

Syntaxe

void NdisDprAcquireSpinLock(
  [in]  _SpinLock
);

Paramètres

[in] _SpinLock

Pointeur vers un verrou de rotation opaque, déjà initialisé par l’appelant.

Valeur de retour

Aucun

Remarques

Le pilote miniport doit initialiser une variable de type NDIS_SPIN_LOCK avec NdisAllocateSpinLock avant d’appeler tout autre Ndis.. Fonction spinLock. Le pilote doit fournir un stockage résident pour le ou les verrous de rotation qu’il utilise.

NdisDprAcquireSpinLock est une version optimisée de NdisAcquireSpinLock qu’un pilote miniport ne peut appeler qu’en exécutant IRQL = DISPATCH_LEVEL.

Après avoir acquis un verrou de rotation avec NdisDprAcquireSpinLock, l’appelant doit libérer ce verrou avec un appel à NdisDprReleaseSpinLock. Un pilote miniport doit appeler NdisDprReleaseSpinLock suivant chaque appel à NdisDprAcquireSpinLock. Sinon, un interblocage se produit, pendant le conducteur.

Un verrou de rotation acquis avec NdisDprAcquireSpinLock doit être libéré avec NdisDprReleaseSpinLock. Un verrou de rotation acquis avec NdisAcquireSpinLock doit être libéré avec NdisReleaseSpinLock.

Un pilote ne doit jamais contenir de 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 à la fois 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 afin que son MiniportSynchronizeInterrupt fonction accède à ces ressources partagées au même niveau DIRQL auquel elle
fonctions MiniportInterrupt et/ou MiniportDisableInterruptEx.

Pour plus d’informations sur l’acquisition et la publication de verrous de rotation NDIS, consultez synchronisation et notification dans les pilotes réseau.

Exigences

Exigence Valeur
client minimum pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisDprAcquireSpinLock (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisDprAcquireSpinLock (NDIS 5.1)) dans Windows XP.
plateforme cible Universel
d’en-tête ndis.h (include 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)

Voir aussi

MiniportDisableInterruptEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback