Error al validar objetos de dispositivo
Muchos controladores crean más de un tipo de objeto de dispositivo llamando a IoCreateDevice. Algunos controladores crean objetos de dispositivo de control en sus rutinas driverEntry para permitir que las aplicaciones se comuniquen con el controlador, incluso antes de que el controlador cree un FDO. Por ejemplo, los controladores del sistema de archivos crean objetos de dispositivo para controlar las notificaciones del sistema de archivos cuando se registran como sistemas de archivos con IoRegisterFileSystem.
Un controlador debe estar listo para IRP_MJ_CREATE solicitudes de cualquier objeto de dispositivo que cree. Después de completar la solicitud con un estado correcto, el controlador debe esperar recibir las solicitudes de E/S accesibles por el usuario en el objeto de archivo creado. Por lo tanto, cualquier controlador que cree más de un objeto de dispositivo debe comprobar qué objeto de dispositivo especifica cada solicitud de E/S.
Por ejemplo, supongamos que un controlador crea objetos de dispositivo de control general en DriverEntry y, a continuación, crea otro conjunto de objetos de dispositivo en su rutina AddDevice . Supongamos que la rutina AddDevice inicializa la extensión de dispositivo con información sobre los controladores de nivel inferior, pero los objetos de dispositivo de control no contienen esta información. En este caso, todas las rutinas de envío deben tener cuidado de comprobar cada objeto de dispositivo que reciben. De lo contrario, el controlador podría bloquearse al intentar usar la información de extensión del dispositivo.