Condividi tramite


Sincronizzazione e controller di dominio threadati

Per sincronizzare l'accesso a una posizione di memoria accessibile sia dall'interno che dall'esterno di una routine CustomThreadedDpc , un driver può usare blocchi di rotazione ordinari o blocchi di rotazione in coda. In questo caso, il driver deve rispettare determinate regole per eseguire correttamente la sincronizzazione in IRQL = PASSIVE_LEVEL e in IRQL = DISPATCH_LEVEL, perché una routine CustomThreadedDpc può essere eseguita in entrambi i runtime di integrazione.

Per un blocco di rotazione ordinario, si applicano le regole seguenti:

Le regole per i blocchi di rotazione in coda sono simili:

Poiché KeAcquireSpinLockForDpc e KeAcquireInStackQueuedSpinLockForDpc non reimpostano l'IRQL quando viene chiamato a DISPATCH_LEVEL, vengono eseguiti più velocemente di KeAcquireSpinLock e KeAcquireInStackQueuedSpinLock, rispettivamente.

Per altre informazioni sui blocchi di rotazione, vedere Blocchi di rotazione.