Delen via


SynchCritSection-routines schrijven

Stuurprogramma's gebruiken hun SynchCritSection-routines voor een van de twee basisdoeleinden:

Een apparaat programmeren voor een I/O-bewerking

Toegang tot informatie over gedeelde status

Net als een ISR moet een SynchCritSection-routine zo snel mogelijk worden uitgevoerd, alleen doen wat nodig is om apparaatregisters in te stellen of contextgegevens bij te werken, voordat ze worden geretourneerd.

Omdat KeSynchronizeExecution de onderbrekingsdraaivergrendeling van een apparaatstuurprogramma bevat terwijl de SynchCritSection-routine wordt uitgevoerd, kan de ISR van het stuurprogramma pas worden uitgevoerd als de SynchCritSection-routine controle retourneert.

Voor ontvangen IRP moet een apparaatstuurprogramma zoveel mogelijk I/O-verwerkingen uitvoeren op IRQL-PASSIVE_LEVEL in de verzendroutines (of mogelijk apparaatspecifieke threads), of bij IRQL-DISPATCH_LEVEL in de StartIo-routine en DPC-routines.

Zie Spin Locks gebruiken voor meer informatie over hoe kritieke secties worden gesynchroniseerd: een voorbeeld.