Errores adicionales en el control de IRP
A continuación se muestran errores adicionales que los controladores a veces realizan al controlar los IRP.
IRP perdidos o completados por dos veces
Estos problemas, junto con las llamadas que faltan a las rutinas del administrador de E/S, como IoStartNextPacket, a menudo se producen en rutas de acceso de control de errores. Las revisiones rápidas de las rutas de acceso de los controladores pueden encontrar estos problemas.
Converging public IOCTL and private IOCTL paths
Como regla general, los controladores deben contener rutas de ejecución independientes para ioCTLs públicos y privados (o FSCTLs). Un controlador no puede determinar si una solicitud IOCTL o FSCTL se origina en modo kernel o en modo de usuario examinando el código de control. Por lo tanto, controlar los códigos públicos y privados en la misma ruta de acceso de ejecución (o realizar una validación mínima y, a continuación, llamar a las mismas rutinas) puede abrir un controlador para las infracciones de seguridad. Si un IOCTL privado o FSCTL tiene privilegios, es posible que los usuarios sin privilegios que conozcan los códigos de control puedan obtener acceso a él. Por lo tanto, si el controlador admite solicitudes IOCTL o FSCTL privadas, asegúrese de que controla dichas solicitudes por separado de las ICTLs públicas o FSCTLs que también debe admitir.