Compartilhar via


Função InstallHinfSectionW (setupapi.h)

[Essa função está disponível para uso nos sistemas operacionais indicados na seção Requisitos. Ele pode estar alterado ou 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 será necessário para ter acesso ao Service Control Manager.

Sintaxe

void InstallHinfSectionW(
  [in] HWND      Window,
  [in] HINSTANCE ModuleHandle,
  [in] PCWSTR    CommandLine,
  [in] INT       ShowCommand
);

Parâmetros

[in] Window

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

[in] ModuleHandle

Reservado e deve ser Nulo.

[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.

Valor de retorno

Nenhum

Observações

Observe que existem três exportações: InstallHinfSection (para RunDll32), InstallHinfSectionAe 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, seção <InstallHinfSection><modo><caminho>

Isso passa "<seção><modo><caminho>" para cmdLineBuffer.

Como alternativa, seu programa pode chamar InstallHinfSection, InstallHinfSectionAou InstallHinfSectionW diretamente, definindo o parâmetro CmdLineBuffer para o seguinte.

"<section> <mode> <path>"

Onde caminho é o caminho completo para o arquivo .inf, modo é o parâmetro de modo de reinicialização e seção é qualquer seção Instalar no arquivo .inf. O separador de vírgula 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 o 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. Nenhum espaço é permitido.

Você deve usar uma combinação dos seguintes valores para 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 reinicialize desnecessariamente ou não reinicialize quando necessário.

Valor Descrição
0 Sistema fornecido INF.
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

Nota

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. 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.

Cuidado

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

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
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho setupapi.h
biblioteca Setupapi.lib
de DLL Setupapi.dll