Compartir a través de


Descargar entorno de rutina

El sistema operativo descarga un controlador cuando el controlador se reemplaza o cuando se han quitado todos los dispositivos que los servicios del controlador han quitado. El administrador de PnP llama a una rutina de descarga del controlador PnP si el controlador no tiene más objetos de dispositivo después de controlar una solicitud de IRP_MN_REMOVE_DEVICE .

Al principio de la secuencia de descarga, el administrador de E/S o el administrador de PnP marca el objeto de controlador y sus objetos de dispositivo como "Descarga pendiente". Después de que un controlador se haya marcado como "Unload Pending", no se puede adjuntar ningún controlador adicional a ese controlador, ni ninguna referencia adicional a los objetos de dispositivo del controlador. El controlador puede completar irP pendientes, pero el sistema no enviará ningún IRP nuevo al controlador.

El administrador de E/S llama a la rutina Unload de un controlador cuando se cumplen todas las siguientes condiciones:

  • No quedan referencias a ninguno de los objetos de dispositivo creados por el controlador. En otras palabras, ningún archivo asociado con el dispositivo subyacente puede estar abierto, ni ningún IRP puede estar pendiente para cualquiera de los objetos de dispositivo del controlador.

  • Ningún otro conductor permanece conectado a este controlador.

  • El controlador ha llamado a IoUnregisterPlugPlayNotification para anular el registro de todas las notificaciones PnP para las que se registró anteriormente.

Tenga en cuenta que no se llama a la rutina Unload si la rutina DriverEntry de un controlador devuelve un estado de error. En este caso, el administrador de E/S simplemente libera el espacio de memoria ocupado por el controlador.

Ni el administrador de PnP ni el administrador de E/S llaman a rutinas de descarga en el tiempo de apagado del sistema. Un controlador que debe realizar el procesamiento de apagado debe registrar una rutina DispatchShutdown .