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) |