Compartilhar via


Erros adicionais na manipulação de IRPs

Veja a seguir 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 de gerente de E/S, como IoStartNextPacket, geralmente ocorrem em caminhos de tratamento de erros. Revisões rápidas de caminhos de driver podem encontrar 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 se origina 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 validação mínima e, em seguida, chamar as mesmas rotinas) pode abrir um driver para violações de segurança. Se um IOCTL ou FSCTL privado tiver privilégios, os usuários sem privilégios que conhecem os códigos de controle poderão obter acesso a ele. Portanto, se o driver der suporte a solicitações IOCTL ou FSCTL privadas, verifique se ele lida com essas solicitações separadamente de quaisquer IOCTLs ou FSCTLs públicos com suporte.