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


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

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

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

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

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

Синтаксис

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

Параметры

[in] Window

Дескриптор родительского окна. Обычно hwnd имеет значение Null.

[in] ModuleHandle

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

[in] CommandLine

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

[in] ShowCommand

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

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

None

Remarks

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

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

RUNDLL32.EXE SETUPAPI.DLL,путь к> режиму<>раздела<>InstallHinfSection<

В cmdLineBuffer передается путь> режима раздела<<>>.<

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

"<section> <mode> <path>"

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

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

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

Для параметра mode следует использовать сочетание следующих значений. Необходимо включить значение 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:\WINDOWS\INF\SHELL. INF

Примечание

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

Внимание!

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

Внимание!

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header setupapi.h
Библиотека Setupapi.lib
DLL Setupapi.dll