Поделиться через


Функция InstallHinfSectionW (setupapi.h)

[Эта функция доступна для использования в операционных системах, указанных в разделе "Требования". Он может быть изменен или недоступен в последующих версиях. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]

InstallHinfSection — это функция точки входа, экспортируемая Setupapi.dll, которую можно использовать для выполнения раздела INF-файла.

Заметка

Для многих сценариев рекомендуется использовать примитивный пакет драйвера вместо использования INF-файла с InstallHinfSection

installHinfSection можно вызвать, вызвав служебную программу Rundll32.exe, как описано в разделе "Примечания". Прототип функции InstallHinfSection следует форме всех функций точки входа, используемых с Rundll32.exe.

Если файл копируется или изменяется, вызывающий эту функцию, имеет права на запись в целевой каталог. Если установлены службы, вызывающий эту функцию, требуется доступ к Service Control Manager.

Синтаксис

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

Параметры

[in] Window

Дескриптор родительского окна. Как правило, имеет значение NULL.

[in] ModuleHandle

Зарезервировано и должно иметь значение NULL.

[in] CommandLine

Указатель на буфер, содержащий командную строку. Следует использовать строку, завершаемую значением NULL.

[in] ShowCommand

Зарезервировано и должно быть равно нулю.

Возвращаемое значение

Никакой

Замечания

Обратите внимание, что существует три экспорта: InstallHinfSection (для RunDll32), InstallHinfSectionAи InstallHinfSectionW.

Чтобы запустить раздел install указанного INF-файла, можно вызвать InstallHinfSection с помощью Rundll32.exe с помощью следующего синтаксиса.

RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection <section> <mode> <path>

В этом разделепути CmdLineBufferпередается раздел.

Кроме того, программа может вызывать InstallHinfSection, InstallHinfSectionAили InstallHinfSectionW напрямую, установив параметр CmdLineBuffer следующим образом.

"<section> <mode> <path>"

Где пути — это полный путь к INF-файлу, режима является параметром режима перезагрузки, а раздел — это любой раздел install в INF-файле. Требуется разделитель запятых между SETUPAPI.DLL и InstallHinfSection в командной строке. Обратите внимание, что в командной строке между запятой и SETUPAPI.DLL или InstallHinfSectionневозможно.

Рекомендуется указать полный путь к INF-файлу в виде пути.

Вы можете указать любой раздел Установить в INF-файле как раздел. Пробелы не допускаются.

Следует использовать сочетание следующих значений для режима. Необходимо включить 128, чтобы задать путь по умолчанию установки к расположению INF, в противном случае предполагается, что inf предоставляется системой. Добавьте значения для указания перезагрузки. Обратите внимание, что рекомендуется использовать только значения 128 или 132, другие значения могут привести к перезагрузке компьютера без необходимости или не перезагрузиться при необходимости.

Ценность Описание
0 Предоставленная система INF.
128 Задайте путь по умолчанию для установки в расположение INF. Это типичный параметр.
+0 Никогда не перезагружайте компьютер.
+1 Перезагрузите компьютер во всех случаях.
+2 Всегда спрашивайте пользователей, хотите ли они перезагрузиться.
+3 При необходимости перезагрузите компьютер, не запрашивая разрешения пользователя.
+4 Если требуется перезагрузка компьютера, попросите пользователя предоставить разрешение перед перезагрузкой.
 
 

Например, следующая командная строка запускает раздел DefaultInstall файла Shell.inf. Если программа установки определяет, что требуется перезагрузка, пользователю будет предложено открыть диалоговое окно "Перезагрузить компьютер, да или нет".

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

Заметка

Заголовок setupapi.h определяет InstallHinfSection как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Осторожность

При использовании в архитектуре, отличной от x86 или amd64, или при использовании в системе в режиме S, installHInfSection требует, чтобы в INF-файле был раздел INF-версии с директивой CatalogFile, указывающей на подписанный файл каталога, содержащий хэш INF-файла и все файлы, ссылки на INF-файлы с помощью раздела INF-файла INF SourceDisksFiles.

Осторожность

При использовании в системе, собственная архитектура которой не x86 или amd64, следует использовать InstallHInfSection из собственного процесса архитектуры. InstallHInfSection блокирует многие типы операций изменения состояния системы при использовании из процесса архитектуры, отличного от машинного кода.

InstallHinfSection будет записывать диагностические сведения втекстовый журнал установки приложения SetupAPI. Этот файл журнала обычно отключен по умолчанию. Его можно включить, изменив уровни ведения журнала общие часть значения setupAPI LogLevel, как описано в разделе Настройка уровней ведения журнала SetupAPI. По соображениям производительности этот файл журнала следует включить только при устранении неполадок. Если файл журнала включен, его можно найти в %windir%\inf\setupapi.app.log.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка setupapi.h
библиотеки Setupapi.lib
DLL Setupapi.dll