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.
Antes que um driver elimine um dispositivo ou objeto controlador, ele deve liberar suas referências a recursos externos, como ponteiros para objetos de outros drivers ou para interromper objetos, armazenadas na extensão correspondente do dispositivo ou controlador. Em seguida, ele pode chamar IoDeleteDevice para cada objeto de dispositivo que o driver criou. Um driver não-WDM que anteriormente chamou IoCreateController também deve chamar IoDeleteController.
Qualquer objeto definido pelo kernel para o qual o driver fornece armazenamento em uma extensão de dispositivo é liberado automaticamente quando a rotina Unload chama IoDeleteDevice com o objeto de dispositivo correspondente. Em geral, qualquer objeto que a rotina DriverEntry ou Reinitialize configurada chamando KeInitializeXxx pode ser liberado por uma chamada para IoDeleteDevice se o driver forneceu armazenamento para esse objeto em sua extensão de dispositivo. Por exemplo, se um driver tiver uma rotina CustomTimerDpc e tiver fornecido armazenamento para os objetos DPC e temporizador necessários em sua extensão de dispositivo, a chamada para IoDeleteDevice liberará esses recursos do sistema.
Da mesma forma, qualquer objeto definido pelo kernel para o qual o driver fornece armazenamento em uma extensão de controlador é automaticamente liberado quando a rotina Unload chama IoDeleteController com o objeto controller correspondente.
Se a rotina DriverEntry ou Reinitialize chamou IoGetConfigurationInformation para incrementar a contagem para um determinado tipo de dispositivo, a rotina Unload também deverá chamar IoGetConfigurationInformation e diminuir a contagem de seus dispositivos na estrutura de informações de configuração global do gerenciador de E/S enquanto exclui os objetos de dispositivo correspondentes.
Antes de retornar o controle, uma rotina de Descarga também é responsável por liberar quaisquer outros recursos alocados pelo motorista que ainda não tenham sido liberados por outras rotinas do motorista.