Compartilhar via


Função SetupDiInstallDevice (setupapi.h)

A função SetupDiInstallDevice é o manipulador padrão para a solicitação de instalação DIF_INSTALLDEVICE .

Sintaxe

WINSETUPAPI BOOL SetupDiInstallDevice(
  [in]      HDEVINFO         DeviceInfoSet,
  [in, out] PSP_DEVINFO_DATA DeviceInfoData
);

Parâmetros

[in] DeviceInfoSet

Um identificador para o conjunto de informações do dispositivo para o sistema local que contém um elemento de informações do dispositivo que representa o dispositivo a ser instalado.

[in, out] DeviceInfoData

Um ponteiro para uma estrutura SP_DEVINFO_DATA que especifica um elemento de informações do dispositivo em DeviceInfoSet. Esse é um parâmetro IN-OUT porque DeviceInfoData.O DevInst pode ser atualizado com um novo valor de identificador no retorno.

Retornar valor

A função retornará TRUE se for bem-sucedida. Caso contrário, ele retornará FALSE e o erro registrado poderá ser recuperado com uma chamada para GetLastError.

Comentários

SetupDiInstallDevice instala um driver do arquivo INF. A definição de SetupAPI do "driver" é realmente um "nó de driver". Portanto, quando essa função instala um driver, ela também instala os itens na lista a seguir:

  • Os serviços para o dispositivo.
  • Os arquivos de driver.
  • Co-instaladores específicos do dispositivo (se houver).
  • Provedores de página de propriedades (se houver).
  • Miniaplicativos do painel de controle (se houver).
Essa função também registra todas as interfaces de dispositivo necessárias.

Uma instalação bem-sucedida inclui, mas não se limita a, as seguintes etapas:

  • Crie uma chave de driver no registro e escreva as entradas apropriadas (como InfPath e ProviderName).
  • Localize e processe a seção INF DDInstall para o dispositivo. A seção pode ser específica do sistema operacional/da arquitetura. As entradas AddReg e DelReg da seção DDInstall são direcionadas para a chave de software do dispositivo. Localize e processe o DDInstall. Seção HW cujas entradas AddReg e DelReg são direcionadas para a chave de hardware do dispositivo. Localize e processe a seção INF DDInstall.LogConfigOverride, se presente, para fornecer uma configuração de substituição para o dispositivo. Localize e processe a seção INF DDInstall.Services para adicionar serviços ao dispositivo (e potencialmente remover todos os serviços antigos que não são mais necessários).
  • Copie o arquivo INF para o diretório INF do sistema.
  • Possivelmente, execute as outras operações de arquivo, com base nas configurações de sinalizador nos parâmetros de instalação do dispositivo.

    Se o sinalizador DI_NOFILECOPY e o sinalizador DI_NOVCP estiverem claros, execute todas as operações de arquivo especificadas na seção DDInstall . Se o sinalizador DI_NOVCP estiver definido, enfileira todas as operações de arquivo.

    Se o sinalizador DI_NOFILECOPY estiver definido, não copie os arquivos. Esse sinalizador poderá ser definido se, por exemplo, uma operação de DIF_INSTALLDEVICEFILES já tiver sido executada para esta instalação do dispositivo.

  • Carregue os drivers para o dispositivo. Isso inclui o driver de função e quaisquer drivers de filtro superior ou inferior.
  • Chame as rotinas addDevice dos drivers.
  • Inicie o dispositivo enviando um IRP (pacote de solicitação de E/S ) IRP_MN_START_DEVICE .
O Windows não iniciará o dispositivo se o sinalizador DI_NEEDRESTART, DI_NEEDREBOOT ou DI_DONOTCALLCONFIGMG estiver definido na estrutura SP_DEVINSTALL_PARAMS .

Um instalador de classe deve retornar ERROR_DI_DO_DEFAULT ou chamar essa função ao lidar com uma solicitação de DIF_INSTALLDEVICE . Essa função executa muitas tarefas para instalação do dispositivo e essa lista de tarefas pode ser expandida em versões futuras. Se um instalador de classe executar a instalação do dispositivo sem chamar essa função, o instalador de classe poderá não funcionar corretamente em versões futuras do sistema operacional.

Se o Windows não conseguir localizar um arquivo INF para o dispositivo, ele enviará DIF_INSTALLDEVICE na tentativa de instalar um driver nulo. SetupDiInstallDevice instala um driver nulo somente se o dispositivo der suporte ao modo bruto ou for um dispositivo não PnP (relatado por IoReportDetectedDevice). Para obter mais informações, consulte DIF_INSTALLDEVICE.

Se o sinalizador DI_FLAGSEX_SETFAILEDINSTALL estiver definido na estrutura SP_DEVINSTALL_PARAMS , SetupDiInstallDevice apenas definirá o sinalizador FAILEDINSTALL no valor do registro ConfigFlags do dispositivo.

Nota Somente um instalador de classe deve chamar SetupDiInstallDevice e somente nas situações em que o instalador de classe deve executar operações de instalação do dispositivo depois que SetupDiInstallDevice concluir a operação de instalação do dispositivo padrão. Nessas situações, o instalador de classe deve chamar diretamente SetupDiInstallDevice quando o instalador processa uma solicitação de DIF_INSTALLDEVICE. Para obter mais informações sobre como chamar o manipulador padrão, consulte Chamando manipuladores de código DIF padrão.
 
O chamador de SetupDiInstallDevice deve ser membro do grupo Administradores.

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 setupapi.h (inclua Setupapi.h)
Biblioteca Setupapi.lib
DLL Setupapi.dll

Confira também

DIF_INSTALLDEVICE

SetupDiCallClassInstaller

SetupDiInstallDriverFiles