Skriva rutiner för Synkroniserade Kritiska Sektioner

Förarna använder sina SynchCritSection-rutiner för något av två grundläggande syften:

Programmera en enhet för en I/O-åtgärd

Åtkomst till information om delat tillstånd

Precis som en ISR måste en SynchCritSection-rutin köras så snabbt som möjligt och endast göra vad som krävs för att konfigurera enhetsregister eller uppdatera kontextdata innan de returneras.

Eftersom KeSynchronizeExecution innehåller en enhetsdrivrutins avbrottsspinnlås medan dess SynchCritSection-rutin körs kan inte drivrutinens ISR köras förrän synchCritSection-rutinen returnerar kontrollen.

För alla mottagna IRP bör en enhetsdrivrutin utföra så mycket I/ O-bearbetning som möjligt antingen på IRQL-PASSIVE_LEVEL i sina sändningsrutiner (eller eventuellt enhetsspecifika trådar) eller vid IRQL-DISPATCH_LEVEL i sina StartIo-rutiner och DPC-rutiner.

Mer information om hur viktiga avsnitt synkroniseras finns i Använda spinlås: Ett exempel.