Macro NdisAcquireSpinLock (ndis.h)

La función NdisAcquireSpinLock adquiere un bloqueo de giro para que el autor de la llamada obtenga acceso exclusivo a los recursos, compartidos entre las funciones del controlador, que protege el bloqueo de giro.

Sintaxis

void NdisAcquireSpinLock(
  [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 debe inicializar una variable de tipo NDIS_SPIN_LOCK con NdisAllocateSpinLock antes de llamar a cualquier otra función NdisXxxSpinLock . El controlador debe proporcionar almacenamiento residente para los bloqueos de número que usa.

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

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

Un controlador nunca debe contener un bloqueo de giro durante un período prolongado (más de unas pocas 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 a 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 sí lo 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 los controladores NDIS 6.0 y NDIS 5.1 (consulta NdisAcquireSpinLock (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulta NdisAcquireSpinLock (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

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAllocateSpinLock

NdisDprAcquireSpinLock

NdisMSynchronizeWithInterruptEx

NdisReleaseSpinLock