Compartilhar via


Função InstallHinfSectionA (setupapi.h)

[Essa função está disponível para uso nos sistemas operacionais indicados na seção Requisitos. Ele poderá ser alterado ou ficar indisponível em versões subsequentes. SetupAPI não deve mais ser usado para instalar aplicativos. Em vez disso, use o Windows Installer para desenvolver instaladores de aplicativos. SetupAPI continua a ser usado para instalar drivers de dispositivo.]

InstallHinfSection é uma função de ponto de entrada exportada por Setupapi.dll que você pode usar para executar uma seção de um arquivo .inf. InstallHinfSection pode ser invocado chamando o utilitário Rundll32.exe conforme descrito na seção Comentários.

O protótipo da função InstallHinfSection segue a forma de todas as funções de ponto de entrada usadas com Rundll32.exe.

Se um arquivo for copiado ou modificado, o chamador dessa função precisará ter privilégios para gravar no diretório de destino. Se houver serviços sendo instalados, o chamador dessa função precisará ter acesso ao Gerenciador de Controle de Serviço.

Sintaxe

void InstallHinfSectionA(
  [in] HWND      Window,
  [in] HINSTANCE ModuleHandle,
  [in] PCSTR     CommandLine,
  [in] INT       ShowCommand
);

Parâmetros

[in] Window

O identificador da janela pai. Normalmente , hwnd é Null.

[in] ModuleHandle

Reservado e deve ser Null.

[in] CommandLine

Ponteiro para buffer que contém a linha de comando. Você deve usar uma cadeia de caracteres terminada em nulo.

[in] ShowCommand

Reservado e deve ser zero.

Retornar valor

Nenhum

Comentários

Observe que existem três exportações: InstallHinfSection (para RunDll32), InstallHinfSectionA e InstallHinfSectionW.

Para executar uma seção Install de um arquivo .inf especificado, você pode invocar InstallHinfSection com o Rundll32.exe usando a sintaxe a seguir.

RUNDLL32.EXE SETUPAPI.DLL, caminho> do modo<>de seção<>InstallHinfSection<

Isso passa "caminho> do modo<>de seção<>" para CmdLineBuffer.<

Como alternativa, seu programa pode chamar InstallHinfSection, InstallHinfSectionA ou InstallHinfSectionW diretamente, definindo o parâmetro CmdLineBuffer como o seguinte.

"<section> <mode> <path>"

Onde path é o caminho completo para o arquivo .inf, mode é o parâmetro de modo de reinicialização e section é qualquer seção Install no arquivo .inf. O separador de vírgulas entre SETUPAPI.DLL e InstallHinfSection na linha de comando é necessário. Observe que não pode haver espaço em branco na linha de comando entre a vírgula e SETUPAPI.DLL ou InstallHinfSection.

É recomendável que você especifique o caminho completo para o arquivo .inf como caminho.

Você pode especificar qualquer seção Instalar no arquivo .inf como seção. Espaços não são permitidos.

Você deve usar uma combinação dos valores a seguir para o modo . Você deve incluir 128 para definir o caminho padrão da instalação para o local do INF, caso contrário, um INF fornecido pelo sistema será assumido. Adicione valores para especificar a reinicialização. Observe que somente os valores 128 ou 132 são recomendados, outros valores podem fazer com que o computador seja reinicializado desnecessariamente ou não reinicialize quando necessário.

Valor Descrição
0 INF fornecido pelo sistema.
128 Defina o caminho padrão da instalação para o local do INF. Essa é a configuração típica.
+0 Nunca reinicie o computador.
+1 Reinicialize o computador em todos os casos.
+2 Sempre pergunte aos usuários se eles querem reinicializar.
+3 Reinicie o computador, se necessário, sem solicitar permissão ao usuário.
+4 Se uma reinicialização do computador for necessária, peça permissão ao usuário antes de reinicializar.
 
 

Por exemplo, a linha de comando a seguir executa a seção DefaultInstall do arquivo Shell.inf. Se a Instalação determinar que uma reinicialização é necessária, o usuário será solicitado com uma caixa de diálogo "Reinicializar o computador, Sim/Não".

RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 C:\WINDOWS\INF\SHELL. INF

Observação

O cabeçalho setupapi.h define InstallHinfSection como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Cuidado

Quando usado em uma arquitetura diferente de x86 ou amd64 ou quando usado em um sistema no modo S, InstallHInfSection requer que o arquivo INF tenha uma seção versão INF com uma diretiva CatalogFile que aponte para um arquivo de catálogo assinado que contém o hash do arquivo INF e todos os arquivos que o arquivo INF referencia por meio de uma seção SOURCEDisksFiles do INF.

Cuidado

Quando usado em um sistema cuja arquitetura nativa não é x86 nem amd64, InstallHInfSection deve ser usado de um processo de arquitetura nativa. InstallHInfSection bloqueará muitos tipos de operações de alteração de estado do sistema quando usadas de um processo de arquitetura não nativa.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho setupapi.h
Biblioteca Setupapi.lib
DLL Setupapi.dll