Compartilhar via


Função DiInstallDriverA (newdev.h)

A função DiInstallDriver pré-instala um driver no do repositório de driver e instala o driver em dispositivos presentes no sistema compatível com o driver.

Sintaxe

BOOL DiInstallDriverA(
  [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 DiInstallDriver usa para exibir qualquer componente de interface do usuário associado à instalação do dispositivo. 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 uma combinação de um ou mais sinalizadores conforme descrito aqui (Sinalizadores normalmente é definido como zero).

Se Flags for zero, DiInstallDriver só instalará o driver especificado em um dispositivo se o driver for uma correspondência melhor para um dispositivo do que o driver instalado no momento em um dispositivo. Para obter informações sobre como o Windows seleciona um driver para um dispositivo, consulte Como o Windows seleciona drivers.

Se Flags incluir DIIRFLAG_FORCE_INF, DiInstallDriver instalará o driver especificado em um dispositivo correspondente se o driver é ou não uma melhor correspondência para o dispositivo do que o driver instalado no momento no dispositivo. Se DIIRFLAG_INSTALL_AS_SET também for especificado, DIIRFLAG_FORCE_INF será ignorado.

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

Se Flags incluir DIIRFLAG_INSTALL_AS_SET (com suporte no Windows 10 versão 1709 e posterior), InfPath deverá especificar um diretório em vez de um caminho totalmente qualificado para um arquivo INF e o DiInstallDriver instalará todos os arquivos INF nesse diretório com comportamento especial. Todos os pacotes de driver serão preparados para o Driver Store, mas ainda não serão disponibilizados para serem instalados em dispositivos. No próximo desligamento do sistema, esses pacotes de driver serão disponibilizados para serem instalados em dispositivos daqui para frente e serão instalados em qualquer dispositivo para os quais sejam a melhor correspondência para que os dispositivos estejam prontos na próxima inicialização do sistema.

[out, optional] NeedReboot

Um ponteiro para um valor do tipo BOOL que diInstallDriver conjuntos para indicar se um sistema é reiniciado é necessário para concluir a instalaçã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 instalação, DiInstallDriver 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 instalação, DiInstallDriver definirá o valor como FALSE. Se o parâmetro for NULL e uma reinicialização do sistema for necessária para concluir a instalação, DiInstallDriver exibirá uma caixa de diálogo de reinicialização do sistema. Para obter mais informações sobre esse parâmetro, consulte a seguinte seção Comentários.

Valor de retorno

DiInstallDriver retornará verdadeiro se a função tiver pré-instalado com êxito o pacote de driver especificado no repositório de driver . DiInstallDriver também retornará VERDADEIRO se a função tiver instalado com êxito o driver em um ou mais dispositivos no sistema. Se o pacote de driver não for instalado com êxito no repositório de driver, DiInstallDriver retornará FALSE e o erro registrado poderá ser recuperado fazendo uma chamada para GetLastError. Alguns dos valores de erro mais comuns que GetLastError podem 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 pré-instalar um pacote de driver de no 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 DIIRFLAG_FORCE_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.

Observações

DiInstallDriver executa as seguintes operações:

  1. Pré-instala a do pacote de driver de nodo repositório de driver de . Se houver uma instância do mesmo pacote de driver já pré-instalado no repositório de driver, DiInstallDriver primeiro removerá essa instância e adicionará a nova instância do pacote de driver ao repositório de driver.
  2. Enumera dispositivos que estão presentes no sistema.
  3. Se Flags for igual a zero, instalará o driver em um dispositivo somente se o driver especificado for uma correspondência melhor para o dispositivo do que o driver instalado no momento no dispositivo.
  4. Se Flags for igual a DIIRFLAG_FORCE_INF, instalará o driver em um dispositivo, independentemente de o pacote de driver de for a melhor correspondência para o dispositivo do que o driver instalado no momento no dispositivo.
Em geral, um aplicativo de instalação deve definir NeedReboot para NULL para direcionar diInstallDriver para solicitar que o usuário reinicie o sistema se for necessária uma reinicialização para concluir a instalação. Um aplicativo deve fornecer um ponteiro NeedReboot somente nos seguintes casos:
  • O aplicativo deve chamar DiInstallDriver várias vezes para concluir uma instalação. Nesse caso, o aplicativo deve registrar se um valor TRUENeedReboot é retornado por qualquer uma das chamadas para diInstallDriver e, nesse caso, solicitar que o usuário reinicie o sistema após a chamada final para o DiInstallDriver retorna.
  • O aplicativo deve executar as operações necessárias, além de chamar DiInstallDriver, 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.
  • O aplicativo é um instalador de classe, nesse caso, o instalador de classe deve definir o sinalizador DI_NEEDREBOOT no Flags membro da estrutura SP_DEVINSTALL_PARAMS para um dispositivo.
Para instalar um driver selecionado em um dispositivo selecionado, chame DiInstallDevice. Para obter mais informações, consulte funções SetupAPI que simplificam a instalação do driver.

Nota

O cabeçalho newdev.h define DiInstallDriver como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível no Windows Vista e versões posteriores do Windows.
da Plataforma de Destino Área de trabalho
cabeçalho newdev.h (inclua Newdev.h)
biblioteca Newdev.lib

Consulte também

DiInstallDevice