Função DiUninstallDriverA (newdev.h)

A função DiUninstallDriver remove um pacote de driver de todos os dispositivos em que está instalado instalando esses dispositivos com outro pacote de driver correspondente, se disponível, ou o driver nulo se nenhum outro pacote de driver correspondente estiver disponível. Em seguida, o pacote de driver especificado é removido do repositório de driver.

Sintaxe

BOOL DiUninstallDriverA(
  [in, optional]  HWND   hwndParent,
  [in]            LPCSTR InfPath,
  [in]            DWORD  Flags,
  [out, optional] PBOOL  NeedReboot
);

Parâmetros

[in, optional] hwndParent

Um identificador para a janela de nível superior que o DiUninstallDriver deve usar para exibir qualquer componente de interface do usuário associado à desinstalação do driver. Esse parâmetro é opcional e pode ser definido como NULL.

[in] InfPath

Um ponteiro para uma cadeia de caracteres terminada em NULL que fornece o caminho totalmente qualificado do arquivo INF para o pacote de driver.

[in] Flags

Um valor do tipo DWORD que especifica zero ou um ou mais dos seguintes sinalizadores: DIURFLAG_NO_REMOVE_INF. Normalmente, esse sinalizador deve ser definido como zero.

Se esse sinalizador for zero, o DiUninstallDriver removerá o pacote de driver de todos os dispositivos em que ele está instalado instalando esses dispositivos com outro pacote de driver correspondente, se disponível, ou o driver nulo se nenhum outro pacote de driver correspondente estiver disponível. No entanto, se esse sinalizador estiver definido como DIURFLAG_NO_REMOVE_INF, o DiUninstallDriver removerá o pacote de driver de todos os dispositivos em que ele está instalado, mas não removerá o pacote de driver do Repositório de Driver.

Cuidado: Forçar a desinstalação do pacote de driver pode resultar na substituição de um pacote de driver mais compatível ou mais recente por um driver menos compatível ou mais antigo.
 

Para obter informações sobre como o Windows seleciona um pacote de driver para um dispositivo, consulte Como o Windows seleciona drivers.

[out, optional] NeedReboot

Um ponteiro para um valor do tipo BOOL que DiUninstallDriver define para indicar se uma reinicialização do sistema é necessária para concluir a desinstalação. Esse parâmetro é opcional e pode ser NULL. Se o parâmetro for fornecido e uma reinicialização do sistema for necessária para concluir a desinstalação, DiUninstallDriver definirá o valor como TRUE. Nesse caso, o chamador deve solicitar que o usuário reinicie o sistema. Se esse parâmetro for fornecido e uma reinicialização do sistema não for necessária para concluir a desinstalação, DiUninstallDriver definirá o valor como FALSE. Se o parâmetro for NULL e uma reinicialização do sistema for necessária para concluir a desinstalação, o DiUninstallDriver exibirá uma caixa de diálogo de reinicialização do sistema. Para obter mais informações sobre esse parâmetro, consulte a seção Comentários a seguir.

Retornar valor

DiUninstallDriver retornará TRUE se a função remover com êxito o pacote de driver de todos os dispositivos em que ele está instalado e for removido com êxito do repositório de drivers do sistema. Se o pacote de driver não for desinstalado com êxito do repositório de driver, DiUninstallDriver retornará FALSE e o erro registrado poderá ser recuperado fazendo uma chamada para GetLastError. Alguns dos valores de erro mais comuns que GetLastError pode retornar são os seguintes:

Código de retorno Descrição
ERROR_ACCESS_DENIED
O chamador não tem privilégios de Administrador. Por padrão, o Windows exige que o chamador tenha privilégios de Administrador para desinstalar um pacote de driver do repositório de driver.
ERROR_FILE_NOT_FOUND
O caminho do arquivo INF especificado não existe.
ERROR_INVALID_FLAGS
O valor especificado para Flags não é igual a zero ou DIURFLAG_NO_REMOVE_INF.
ERROR_IN_WOW64
O aplicativo de chamada é um aplicativo de 32 bits que está tentando executar em um ambiente de 64 bits, o que não é permitido. Para obter mais informações, consulte Instalando dispositivos em sistemas de 64 bits.

Comentários

Em geral, um aplicativo de desinstalação deve definir NeedReboot como NULL para direcionar o DiUninstallDriver para solicitar que o usuário reinicie o sistema se for necessária uma reinicialização para concluir a remoção. Um aplicativo deve fornecer um ponteiro NeedReboot somente nos seguintes casos:

  • O aplicativo deve chamar DiUninstallDriver várias vezes para concluir uma desinstalação. Nesse caso, o aplicativo deve registrar se um valor TRUENeedReboot é retornado por qualquer uma das chamadas para DiUninstallDriver e, nesse caso, solicitar que o usuário reinicie o sistema após o retorno da chamada final para DiUninstallDriver .
  • O aplicativo deve executar as operações necessárias, além de chamar DiUninstallDriver, antes que uma reinicialização do sistema ocorra. Se uma reinicialização do sistema for necessária, o aplicativo deverá concluir as operações necessárias e solicitar que o usuário reinicie o sistema.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows 10 versão 1703 e versões posteriores do Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho newdev.h (inclua Newdev.h)
Biblioteca Newdev.lib

Confira também

DiUninstallDevice