Compartilhar via


Erros adicionais na manipulação de IRPs

Os seguintes são erros adicionais que os drivers às vezes cometem ao lidar com IRPs.

IRPs perdidos ou concluídos duas vezes

Esses problemas, juntamente com chamadas ausentes para rotinas do gerenciador de E/S, como IoStartNextPacket, geralmente ocorrem em caminhos de tratamento de erros. Revisões rápidas dos caminhos de driver podem identificar esses problemas.

Convergindo caminhos IOCTL públicos e IOCTL privados

Como regra geral, os drivers devem conter caminhos de execução separados para IOCTLs públicos e privados (ou FSCTLs). Um driver não pode determinar se uma solicitação IOCTL ou FSCTL tem origem no modo kernel ou no modo de usuário examinando o código de controle. Consequentemente, lidar com códigos públicos e privados no mesmo caminho de execução (ou executar a validação mínima e, em seguida, chamar as mesmas rotinas) pode abrir um driver para violações de segurança. Se um IOCTL privado ou FSCTL for privilegiado, os usuários não privilegiados que conhecem os códigos de controle poderão obter acesso a ele. Portanto, se o driver de dispositivo oferecer suporte a solicitações IOCTL ou FSCTL privadas, verifique se ele lida com essas solicitações separadamente de quaisquer IOCTLs ou FSCTLs públicos dos quais ele também deve dar suporte.