Compartir a través de


Rutina de descarga del controlador PnP

Un controlador PnP debe tener una rutina de descarga que quite los recursos específicos del controlador, como la memoria, los subprocesos y los eventos, creados por la rutina DriverEntry . Si no hay recursos específicos del controlador para eliminar, el controlador todavía debe tener una rutina de desinstalación, pero simplemente puede devolver.

Se puede llamar a la rutina De descarga de un controlador en cualquier momento después de que se hayan quitado todos los dispositivos del controlador. El administrador de PnP llama a la rutina Unload de un controlador en el contexto de un subproceso del sistema en IRQL = PASSIVE_LEVEL.

Los controladores PnP liberan recursos específicos del dispositivo y objetos de dispositivo en respuesta a los IRP de eliminación de dispositivos PnP. El administrador de PnP envía estos IRP en nombre de cada dispositivo PnP que enumera, así como los dispositivos heredados enumerados en raíz, que un controlador notifica mediante IoReportDetectedDevice.

Por lo tanto, las rutinas de descarga de controladores PnP suelen ser sencillas, que suelen constar solo de una instrucción return . Sin embargo, si el controlador asignó recursos globales del controlador en su rutina DriverEntry, debe desasignar esos recursos en su rutina Unload a menos que ya lo haya hecho. En general, el proceso de descarga de un controlador PnP es una operación sincrónica.

El administrador de E/S libera el objeto de controlador y cualquier extensión de objeto de controlador que el controlador haya asignado mediante IoAllocateDriverObjectExtension.