Condividi tramite


Macro NdisAcquireSpinLock (ndis.h)

La funzione NdisAcquireSpinLock acquisisce un blocco di rotazione in modo che il chiamante acquisisca l'accesso esclusivo alle risorse, condivise tra le funzioni driver, che il blocco di spin protegge.

Sintassi

void NdisAcquireSpinLock(
  [in]  _SpinLock
);

Parametri

[in] _SpinLock

Puntatore a un blocco spin opaco, già inizializzato dal chiamante.

Valore restituito

nessuno

Osservazioni

Il driver deve inizializzare una variabile di tipo NDIS_SPIN_LOCK con NdisAllocateSpinLock prima di chiamare qualsiasi altra funzione NdisXxxSpinLock . Il driver deve fornire l'archiviazione residente per i blocchi di rotazione usati.

Dopo aver acquisito un blocco spin con NdisAcquireSpinLock, il chiamante deve rilasciare tale blocco con una chiamata a NdisReleaseSpinLock. Un driver deve chiamare NdisReleaseSpinLock seguendo ogni chiamata a NdisAcquireSpinLock. In caso contrario, si verifica un deadlock, appeso al driver.

Un blocco di spin acquisito con NdisAcquireSpinLock deve essere rilasciato con NdisReleaseSpinLock. Un blocco di spin acquisito con NdisDprAcquireSpinLock deve essere rilasciato con NdisDprReleaseSpinLock.

Un driver non deve mai contenere un blocco di rotazione per un periodo esteso (più di alcune istruzioni). Il blocco di rotazione per più di 25 microsecondi riduce le prestazioni del sistema e del driver.

Un driver miniport non può usare un blocco spin per proteggere le risorse che le altre funzioni condividono con MiniportInterrupt e/o Funzioni MiniportDisableInterruptEx . Invece, un driver miniport deve chiamare NdisMSynchronizeWithInterruptEx in modo che il relativo driver La funzione MiniportSynchronizeInterrupt accede a tali risorse condivise allo stesso DIRQL in corrispondenza del quale ha
Le funzioni MiniportInterrupt e/o MiniportDisableInterruptEx.

Per altre informazioni sull'acquisizione e il rilascio dei blocchi di spin NDIS, vedere Sincronizzazione e notifica nei driver di rete.

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisAcquireSpinLock (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisAcquireSpinLock (NDIS 5.1) in Windows XP.
Piattaforma di destinazione Universale
Intestazione ndis.h (includere Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis)

Vedi anche

MiniportDisableInterruptEx

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAllocateSpinLock

NdisDprAcquireSpinLock

NdisMSynchronizeWithInterruptEx

NdisReleaseSpinLock