Macro NdisDprAcquireSpinLock (ndis.h)
La funzione NdisDprAcquireSpinLock acquisisce un blocco spin in modo che il chiamante possa sincronizzare l'accesso alle risorse condivise tra funzioni driver non ISR in modo sicuro per più processi.
Sintassi
void NdisDprAcquireSpinLock(
[in] _SpinLock
);
Parametri
[in] _SpinLock
Puntatore a un blocco di rotazione 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 spazio di archiviazione residente per i blocchi di selezione 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 di selezione 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 conducente.
È necessario rilasciare un blocco spin acquisito con NdisDprAcquireSpinLock con NdisDprReleaseSpinLock. È necessario rilasciare un blocco spin acquisito con NdisAcquireSpinLock con NdisReleaseSpinLock.
Un driver non deve mai tenere un blocco di rotazione per un periodo prolungato (più di alcune istruzioni). Tenere premuto un 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 condivise dalle altre funzioni con il MiniportInterrupt e/o
funzioni miniportDisableInterruptEx. Al contrario, un driver miniport deve chiamare
NdisMSynchronizeWithInterruptEx in modo che
MiniportSynchronizeInterrupt funzione accede a tali risorse condivise allo stesso DIRQL in cui il relativo
miniportInterrupt e/o funzioni MiniportDisableInterruptEx.
Per altre informazioni sull'acquisizione e il rilascio di blocchi di selezione NDIS, vedere sincronizzazione e notifica di nei driver di rete.
Fabbisogno
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 (include 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) |