Compartir a través de


Macro NdisDprAcquireSpinLock (ndis.h)

La función NdisDprAcquireSpinLock adquiere un bloqueo de número para que el autor de la llamada pueda sincronizar el acceso a los recursos compartidos entre funciones de controlador que no son ISR de forma segura para varios procesadores.

Sintaxis

void NdisDprAcquireSpinLock(
  [in]  _SpinLock
);

Parámetros

[in] _SpinLock

Puntero a un bloqueo de número opaco, ya inicializado por el autor de la llamada.

Valor devuelto

None

Observaciones

El controlador de minipuerto debe inicializar una variable de tipo NDIS_SPIN_LOCK con NdisAllocateSpinLock antes de llamar a cualquier otro Ndis.. Función SpinLock . El controlador debe proporcionar almacenamiento residente para los bloqueos de número que usa.

NdisDprAcquireSpinLock es una versión optimizada de NdisAcquireSpinLock a la que un controlador de miniporte solo puede llamar mientras se ejecuta en IRQL = DISPATCH_LEVEL.

Después de adquirir un bloqueo de número con NdisDprAcquireSpinLock, el autor de la llamada debe liberar ese bloqueo con una llamada a NdisDprReleaseSpinLock. Un controlador de miniport debe llamar a NdisDprReleaseSpinLock siguiendo cada llamada a NdisDprAcquireSpinLock. De lo contrario, se produce un interbloqueo, colgando el controlador.

Se debe liberar un bloqueo de número adquirido con NdisDprAcquireSpinLock con NdisDprReleaseSpinLock. Se debe liberar un bloqueo de número adquirido con NdisAcquireSpinLock con NdisReleaseSpinLock.

Un controlador nunca debe contener un bloqueo de giro durante un período prolongado (más de unas cuantas instrucciones). Mantener un bloqueo de giro durante más de 25 microsegundos degrada el rendimiento del sistema y del controlador.

Un controlador de minipuerto no puede usar un bloqueo de número para proteger los recursos que sus otras funciones comparten con MiniportInterrupt o Funciones MiniportDisableInterruptEx . En su lugar, un controlador de minipuerto debe llamar NdisMSynchronizeWithInterruptEx para que su La función MiniportSynchronizeInterrupt accede a estos recursos compartidos en el mismo DIRQL en el que su
Las funciones MiniportInterrupt y/o MiniportDisableInterruptEx hacen.

Para obtener más información sobre cómo adquirir y liberar bloqueos de número NDIS, consulte Sincronización y notificación en controladores de red.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte NdisDprAcquireSpinLock (NDIS 5.1)) en Windows Vista. Compatible con controladores NDIS 5.1 (consulte NdisDprAcquireSpinLock (NDIS 5.1)) en Windows XP.
Plataforma de destino Universal
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis)

Consulte también

MiniportDisableInterruptEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback