Função UpdateDriverForPlugAndPlayDevicesA (newdev.h)
Considerando um arquivo INF e uma ID de hardware, a função UpdateDriverForPlugAndPlayDevices instala drivers atualizados para dispositivos que correspondem à ID de hardware.
Sintaxe
BOOL UpdateDriverForPlugAndPlayDevicesA(
[in, optional] HWND hwndParent,
[in] LPCSTR HardwareId,
[in] LPCSTR FullInfPath,
[in] DWORD InstallFlags,
[out, optional] PBOOL bRebootRequired
);
Parâmetros
[in, optional] hwndParent
Um identificador para a janela de nível superior a ser usada para qualquer interface do usuário relacionada à instalação de dispositivos.
[in] HardwareId
Um ponteiro para uma cadeia de caracteres terminada em NULL que fornece o identificador de hardware para corresponder aos dispositivos existentes no computador. O comprimento máximo de um identificador de hardware terminado em NULL é MAX_DEVICE_ID_LEN. Para obter mais informações sobre identificadores de hardware, consulte Cadeias de caracteres de identificação de dispositivo.
[in] FullInfPath
Um ponteiro para uma cadeia de caracteres terminada em NULL que fornece o nome de arquivo de caminho completo de um arquivo INF. Os arquivos devem estar na mídia de distribuição ou em um diretório criado pelo fornecedor, não em um local do sistema, como %SystemRoot%\inf. UpdateDriverForPlugAndPlayDevices copia arquivos de driver para os locais apropriados do sistema se a instalação for bem-sucedida.
[in] InstallFlags
Um valor fornecido pelo chamador criado usando OR para combinar zero ou mais dos seguintes sinalizadores de bits:
INSTALLFLAG_FORCE
Se esse sinalizador estiver definido e a função encontrar um dispositivo que corresponda ao valor HardwareId , a função instalará novos drivers para o dispositivo, independentemente de os drivers melhores já existirem no computador.
INSTALLFLAG_READONLY
Se esse sinalizador for definido, a função não copiará, renomeará ou excluirá arquivos de instalação. O uso desse sinalizador deve ser limitado a ambientes nos quais o acesso a arquivos é restrito ou impossível, como um sistema operacional "inserido".
INSTALLFLAG_NONINTERACTIVE
Se esse sinalizador for definido, a função retornará FALSE quando qualquer tentativa de exibir a interface do usuário for detectada. Defina esse sinalizador somente se a função for chamada de um componente (como um serviço) que não pode exibir a interface do usuário.
[out, optional] bRebootRequired
Um ponteiro para uma variável do tipo BOOL que indica se uma reinicialização é necessária e quem deve solicitá-la. Esse ponteiro é opcional e pode ser NULL.
Se o ponteiro for NULL, UpdateDriverForPlugAndPlayDevices solicitará uma reinicialização após a instalação de drivers, se necessário. Se o ponteiro for fornecido, a função retornará um valor BOOLEAN que será TRUE se o sistema precisar ser reiniciado. Em seguida, é responsabilidade do chamador solicitar uma reinicialização.
Para obter mais informações, consulte a seção Comentários a seguir.
Retornar valor
A função retornará TRUE se um dispositivo tiver sido atualizado para o driver especificado.
Caso contrário, ele retornará FALSE e o erro registrado poderá ser recuperado com uma chamada para GetLastError. Possíveis valores de erro retornados por GetLastError estão incluídos na tabela a seguir.
Código de retorno | Descrição |
---|---|
|
O caminho especificado para FullInfPath não existe. |
|
O aplicativo de chamada é um aplicativo de 32 bits que tenta executar em um ambiente de 64 bits, o que não é permitido. |
|
O valor especificado para InstallFlags é inválido. |
|
O valor especificado para HardwareId não corresponde a nenhum dispositivo no sistema. Ou seja, o dispositivo não está conectado. |
|
A função encontrou uma correspondência para o valor hardwareid , mas o driver especificado não foi uma correspondência melhor do que o driver atual e o chamador não especificou o sinalizador INSTALLFLAG_FORCE. |
Comentários
UpdateDriverForPlugAndPlayDevices examina os dispositivos no sistema e tenta instalar os drivers especificados por FullInfPath para qualquer dispositivo que corresponda ao valor de HardwareId especificado.
O comportamento padrão é instalar apenas os drivers especificados se eles forem melhores do que os drivers instalados no momento e os drivers especificados também forem uma correspondência melhor do que qualquer driver no %SystemRoot%\inf. Para obter mais informações, consulte Como o Windows seleciona drivers.
UpdateDriverForPlugAndPlayDevices também pode ser usado para determinar se o dispositivo com o valor de HardwareId especificado está conectado. Para obter mais informações, consulte Escrevendo um aplicativo de instalação de dispositivo.
UpdateDriverForPlugAndPlayDevices envia uma solicitação de IRP_MN_QUERY_REMOVE_DEVICE para o dispositivo especificado, todos os filhos do dispositivo e todos os outros dispositivos que fazem parte recursivamente das relações de remoção para o dispositivo. Se algum desses dispositivos falhar em uma solicitação de remoção de consulta, UpdateDriverForPlugAndPlayDevices definirá o sinalizador DI_NEEDREBOOT no membro Flags da estrutura SP_DEVINSTALL_PARAMS do dispositivo. Para obter informações sobre relações de remoção, consulte a solicitação de IRP_MN_QUERY_DEVICE_RELATIONS .
Em geral, os aplicativos de instalação de dispositivo devem fornecer NULL para bRebootRequired. Portanto, o sistema iniciará uma reinicialização, se necessário. Um aplicativo deve especificar um valor de ponteiro somente nos seguintes casos:
- O aplicativo deve chamar UpdateDriverForPlugAndPlayDevices várias vezes para concluir uma instalação.
- O aplicativo deve executar outras operações antes da reinicialização (se necessário).
- O aplicativo é um instalador de classe, que deve definir DI_NEEDREBOOT em SP_DEVINSTALL_PARAMS se uma reinicialização for necessária.
Se a função retornar ERROR_IN_WOW64 em um aplicativo de 32 bits, o aplicativo estará em execução em um sistema de 64 bits, o que não é permitido. Para obter mais informações, consulte Instalando dispositivos em sistemas de 64 bits.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Microsoft Windows 2000 e versões posteriores do Windows. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | newdev.h (inclua Newdev.h) |
Biblioteca | Newdev.lib |