Condividi tramite


Macro NdisDprAcquireSpinLock (ndis.h)

La funzione NdisDprAcquireSpinLock acquisisce un blocco spin in modo che il chiamante possa sincronizzare l'accesso alle risorse condivise tra le funzioni driver non ISR in modo multiprocessore sicuro.

Sintassi

void NdisDprAcquireSpinLock(
  [in]  _SpinLock
);

Parametri

[in] _SpinLock

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

Valore restituito

nessuno

Osservazioni

Il driver miniport deve inizializzare una variabile di tipo NDIS_SPIN_LOCK con NdisAllocateSpinLock prima di chiamare qualsiasi altro Ndis.. Funzione SpinLock . Il driver deve fornire l'archiviazione residente per i blocchi di rotazione usati.

NdisDprAcquireSpinLock è una versione ottimizzata di NdisAcquireSpinLock che un driver miniport può chiamare solo durante l'esecuzione in IRQL = DISPATCH_LEVEL.

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

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

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 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 NdisDprAcquireSpinLock (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisDprAcquireSpinLock (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

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback