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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de