Gravando rotinas synchCritSection
Os drivers usam suas rotinas SynchCritSection para uma das duas finalidades básicas:
Programando um dispositivo para uma operação de E/S
Acessando informações de estado compartilhado
Como um ISR, uma rotina SynchCritSection deve ser executada o mais rápido possível, fazendo apenas o que é necessário para configurar registros de dispositivo ou atualizar dados de contexto, antes de retornar.
Como KeSynchronizeExecution mantém o bloqueio de rotação de interrupção de um driver de dispositivo enquanto sua rotina SynchCritSection é executada, o ISR do driver não pode ser executado até que a rotina SynchCritSection retorne o controle.
Para qualquer IRP recebido, um driver de dispositivo deve fazer o máximo de processamento de E/S possível no IRQL PASSIVE_LEVEL em suas rotinas de expedição (ou possivelmente threads dedicados ao dispositivo) ou no IRQL DISPATCH_LEVEL em sua rotina StartIo e rotinas DPC.
Para obter informações adicionais sobre como as seções críticas são sincronizadas, consulte Usando bloqueios de rotação: um exemplo.