Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O sistema operativo descarrega um driver quando o driver está a ser substituído ou quando todos os dispositivos que o driver serve foram removidos. O gestor PnP chama a rotina Unload de um driver PnP se o driver não tiver mais objetos de dispositivo após tratar um pedido IRP_MN_REMOVE_DEVICE.
No início da sequência de descarga, o gestor de E/S ou o gestor de PnP marca o objeto de driver e os seus objetos de dispositivo como "Descarregar pendente". Depois de um controlador ter sido marcado como "Descarregar pendente", nenhum controlador adicional pode ser ligado a esse controlador, nem podem ser feitas quaisquer referências adicionais aos objetos do dispositivo do controlador. O controlador pode completar os IRPs pendentes, mas o sistema não enviará novos IRPs ao controlador.
O gerenciador de E/S chama a rotina Unload de um driver quando todas as seguintes opções forem verdadeiras:
Nenhuma referência permanece para qualquer um dos objetos de dispositivo que o driver criou. Em outras palavras, nenhum ficheiro associado ao dispositivo subjacente pode estar aberto, nem podem existir IRPs pendentes para qualquer um dos objetos de dispositivo do controlador.
Nenhum outro controlador permanece ligado a este controlador.
O driver chamou IoUnregisterPlugPlayNotification para desregistar todas as notificações PnP para as quais se registou anteriormente.
Observe que a rotina Unload não é chamada se a rotina DriverEntry de um driver retornar um status de falha. Neste caso, o gestor de E/S liberta simplesmente o espaço de memória ocupado pelo controlador.
Nem o gestor PnP nem o gestor de E/S chamam as rotinas Unload no momento do desligamento do sistema. Um driver que deve executar o processamento de desligamento deve registrar uma rotina DispatchShutdown .