Detener un dispositivo para deshabilitarlo (Windows 98/Me)
En Windows 98/Me, el administrador de PnP emite problemas para detener irP cuando Administrador de dispositivos deshabilita el dispositivo. (Windows 2000 y versiones posteriores del problema de Windows quitan irP en esta situación).
El administrador de PnP envía los IRP de detención en la siguiente secuencia:
El administrador de PnP emite un IRP_MN_QUERY_STOP_DEVICE para preguntar si los controladores de un dispositivo pueden detener el dispositivo.
Si todos los controladores de la pila de dispositivos devuelven STATUS_SUCCESS, los controladores han puesto el dispositivo en un estado (detención pendiente) desde el que el dispositivo se puede detener rápidamente.
El administrador de PnP consulta tantas pilas de dispositivos como sea necesario para deshabilitar el dispositivo.
Si el IRP_MN_QUERY_STOP_DEVICE se realiza correctamente, el administrador de PnP emite un IRP_MN_STOP_DEVICE para detener el dispositivo.
El administrador de PnP envía el IRP de detención solo si el IRP de detención de consulta anterior para el dispositivo se completó correctamente. En respuesta al IRP de detención, los controladores liberan los recursos de hardware del dispositivo (por ejemplo, sus puertos de E/S) y producen un error en los IRP que requieren acceso al dispositivo.
Si se produce un error en el IRP_MN_QUERY_STOP_DEVICE , el administrador de PnP envía un IRP_MN_CANCEL_STOP_DEVICE para cancelar la consulta.
En respuesta a una IRP_MN_CANCEL_STOP_DEVICE, los controladores de un dispositivo devuelven el dispositivo al estado iniciado y reanudan el procesamiento de solicitudes de E/S para el dispositivo.
El administrador de PnP cancela la detención de consultas de una pila de dispositivos si un controlador de la pila produjo un error en la solicitud. Cuando el administrador de PnP cancela la detención de consultas en una sola pila de dispositivos, envía la solicitud de IRP_MN_CANCEL_STOP_DEVICE porque los controladores conectados encima del controlador que produjo un error en la consulta tienen el dispositivo en estado de detención pendiente. Cuando el IRP_MN_CANCEL_STOP_DEVICE se realiza correctamente, los controladores han devuelto el dispositivo al estado iniciado.
Cuando se deshabilita un dispositivo, sus controladores no pueden poner en cola los IRP entrantes porque no hay ninguna garantía cuando se puede volver a habilitar el dispositivo. Por lo tanto, es posible que se pierdan los datos.