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