Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um driver de dispositivo deve evitar sondar seu dispositivo, a menos que seja absolutamente necessário, e nunca deve usar uma fatia de tempo inteira para sondagem. Sondar um dispositivo é uma operação custosa que faz com que o sistema operacional fique limitado pelo processamento dentro do driver de sondagem. Um driver de dispositivo que faz muita sondagem interfere nas operações de E/S em outros dispositivos e pode tornar o sistema lento e sem resposta para os usuários.
Dispositivos desenvolvidos recentemente, que são tão avançados tecnologicamente quanto os processadores nos quais o Windows foi projetado para ser executado, raramente exigem um driver para sondar seu dispositivo, seja para garantir que o dispositivo esteja pronto para iniciar uma operação de E/S ou que uma operação esteja concluída.
No entanto, alguns dispositivos ainda em uso foram projetados para funcionar com processadores antigos, que tinham barramentos de dados estreitos, taxas de relógio lentas e sistemas operacionais de tarefa única de usuário único que faziam E/S síncrona. Esses dispositivos podem exigir sondagem ou algum outro meio de esperar que o dispositivo atualize seus registros.
Embora possa parecer lógico resolver um problema de dispositivo lento codificando um loop simples que incrementa um contador, assim, "desperdiçando" um intervalo mínimo enquanto o dispositivo atualiza os registradores, é improvável que um driver seja portátil nas plataformas Windows. O máximo do contador de loop exigiria personalização para cada plataforma. Além disso, se o driver for compilado com um bom compilador de otimização, o compilador poderá remover a variável de contador do driver e os loops em que ele é incrementado.
Nota Siga esta diretriz de implementação se o driver precisar parar enquanto o hardware do dispositivo atualizar o estado: um driver pode chamar KeStallExecutionProcessor antes de ler os registros do dispositivo. O driver deve minimizar o intervalo em que ele interrompe brevemente e, em geral, deve especificar um intervalo de interrupção que não ultrapasse 50 microssegundos.
A granularidade de um intervalo KeStallExecutionProcessor é um microssegundo.
Se o dispositivo frequentemente exigir mais de 50 microssegundos para atualizar o estado, considere configurar um thread dedicado ao dispositivo no driver.