Condividi tramite


Scrittura di routine SynchCritSection

I driver usano le routine SynchCritSection per uno dei due scopi di base:

Programmazione di un dispositivo per un'operazione di I/O

Accesso alle informazioni sullo stato condiviso

Analogamente a un ISR, una routine SynchCritSection deve essere eseguita il più rapidamente possibile, eseguendo solo le operazioni necessarie per configurare i registri dei dispositivi o aggiornare i dati del contesto, prima di restituire.

Poiché KeSynchronizeExecution mantiene il blocco di spin di interruzione di un driver di dispositivo durante l'esecuzione della routine SynchCritSection , l'ISR del driver non può essere eseguito fino a quando la routine SynchCritSection restituisce il controllo.

Per qualsiasi IRP ricevuto, un driver di dispositivo deve eseguire il maggior numero possibile di elaborazione di I/O in IRQL PASSIVE_LEVEL nelle routine di invio (o eventualmente thread dedicati al dispositivo) o in IRQL DISPATCH_LEVEL nelle routine StartIo e nelle routine DPC.

Per altre informazioni sulla sincronizzazione delle sezioni critiche, vedere Using Spin Locks: An Example.For additional information about how critical sections are synchronized, see Using Spin Locks: An Example.