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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per