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.
Um driver PnP deve ter uma rotina Unload que remove todos os recursos específicos do driver, como memória, threads e eventos, criados pela rotina DriverEntry . Se não houver recursos específicos do driver para remover, o driver ainda deve ter uma rotina de descarga , mas pode simplesmente retornar.
A rotina de descarga do motorista pode ser chamada a qualquer momento depois que todos os dispositivos do motorista tiverem sido removidos. O gerenciador PnP chama a rotina Unload de um driver no contexto de um thread do sistema em IRQL = PASSIVE_LEVEL.
Os drivers PnP libertam recursos e objetos específicos dos dispositivos em resposta aos IRPs de remoção de dispositivos PnP. O gestor PnP envia esses IRPs em nome de cada dispositivo PnP que enumera, bem como quaisquer dispositivos legados enumerados a partir da raiz que um driver reporta usando IoReportDetectedDevice.
Consequentemente, as rotinas de descarga dos drivers PnP são geralmente simples, muitas vezes consistindo apenas em uma instrução de retorno . No entanto, se o driver alocou recursos de âmbito global do driver na sua rotina DriverEntry, ele deve desalocar esses recursos na sua rotina Unload, a menos que já tenha feito isso. Em geral, o processo de descarregamento de um driver PnP é uma operação síncrona.
O gerenciador de E/S libera o objeto de driver e qualquer extensão de objeto de driver que o driver alocou usando IoAllocateDriverObjectExtension.