Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Эта функция доступна для использования в операционных системах, указанных в разделе "Требования". Он может быть изменен или недоступен в последующих версиях. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]
Функция setupInstallFromInfSection выполняет все директивы в разделе INF-файла Install.
Если реестр или файл изменен, вызывающий эту функцию, должен иметь права на запись в системный или целевой каталог.
WINSETUPAPI BOOL SetupInstallFromInfSectionA(
HWND Owner,
HINF InfHandle,
PCSTR SectionName,
UINT Flags,
HKEY RelativeKeyRoot,
PCSTR SourceRootPath,
UINT CopyFlags,
PSP_FILE_CALLBACK_A MsgHandler,
PVOID Context,
HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData
);
Owner
Необязательный указатель на дескриптор окна, которому принадлежат все диалоговые окна, созданные во время установки, например для запроса диска или копирования файлов. Если владелец не указан, эти диалоговые окна становятся окнами верхнего уровня.
InfHandle
Обработайте INF-файл, содержащий обрабатываемый раздел.
SectionName
Имя раздела установки
Flags
Управляет выполнением действий. Флаги могут быть сочетанием следующих значений.
Выполнение операций INI-file (UpdateInis, UpdateIniFields строк в разделе установки).
Выполнение операций реестра (AddReg, строк DelReg в разделе "Установка".
Выполнение операций реестра INI-file (строки Ini2Reg в разделе Install.
Этот флаг используется только при установке драйвера устройства.
Выполнение логических операций конфигурации (строк LogConf в разделе Установка. Этот флаг используется только в том случае, если указаны DeviceInfoSet и DeviceInfoData.
Дополнительные сведения об установке драйверов устройств
Выполнение операций с файлами (CopyFiles, DelFiles, строк RenFiles в разделе Install.
Выполните все операции установки.
При использовании директивы INF RegisterDlls INF для самостоятельной регистрации библиотек DLL в Windows 2000 вызывающие элементы SetupInstallFromInfSection могут получать уведомления о каждом файле по мере регистрации или отмены регистрации. Чтобы отправить уведомление SPFILENOTIFY_STARTREGISTRATION или SPFILENOTIFY_ENDREGISTRATION в подпрограмму обратного вызова, включите SPINST_REGISTERCALLBACKAWARE плюс SPINST_REGSVR или SPINST_UNREGSVR. Вызывающий объект также должен задать параметр MsgHandler.
Чтобы отправить уведомление в подпрограмму обратного вызова при регистрации файла, включите SPINST_REGISTERCALLBACKAWARE плюс SPINST_REGSVR в Флаги. Вызывающий объект также должен указать параметр MsgHandler.
Чтобы отправить уведомление в подпрограмму обратного вызова при отмене регистрации файла, включите SPINST_REGISTERCALLBACKAWARE плюс SPINST_UNREGSVR в Флаги. Вызывающий объект также должен указать параметр MsgHandler.
RelativeKeyRoot
Необязательный параметр, который необходимо указать, если флаги включают SPINST_REGISTRY или SPINST_INI2REG. Обработка ключа реестра, который будет использоваться в качестве корневого элемента, когда INF-файл указывает HKR в качестве ключа. Обратите внимание, что этот параметр игнорируется, если setupInstallFromInfSection вызывается с необязательным набором DeviceInfoSet и DeviceInfoData.
SourceRootPath
Корневой каталог исходного кода для копий файлов. Примером будет A:\ или \pegasus\win\install. Если флаги включают SPINST_FILES и SourceRootPath имеет значение NULL, система предоставляет корневой путь по умолчанию.
CopyFlags
Необязательный параметр, который необходимо указать, если флаги
Удалите исходный файл после успешной копии. Вызывающий объект не уведомляется, если удаление завершается ошибкой.
Скопируйте файл только в том случае, если это приведет к перезаписи файла в пути назначения.
Проверьте каждый файл, копируемый, чтобы узнать, указывает ли его ресурсы версии на то, что она является той же версией или не более новой, чем существующая копия в целевом объекте.
Сведения о версии файла, используемые во время проверок версий, указываются в dwFileVersionMS и dwFileVersionLS членов структуры VS_FIXEDFILEINFO, как указано в функциях версии. Если у одного из файлов нет ресурсов версии или если они имеют идентичные сведения о версии, исходный файл считается более новым.
Если исходный файл не равен версии или более поздней версии, а указана CopyMsgHandler, вызывающий объект уведомляется и может отменить копию. Если CopyMsgHandler не указан, файл не копируется.
Проверьте каждый файл, копируемый, чтобы узнать, являются ли его ресурсы версии более новой, чем существующую копию в целевом объекте. Если исходный файл является более новым, но не равен в версии существующего целевого объекта, файл копируется.
Проверьте, существует ли целевой файл, и, если да, уведомите вызывающего абонента, который может ветоить копию. Если CopyMsgHandler не указан, файл не перезаписывается.
Не распаковывайте файл. Если этот флаг задан, целевой файл не получает несжатую форму исходного имени (при необходимости). Например, копирование f:/x86\cmd.ex_ в \install\temp приводит к целевому файлу \install\temp\cmd.ex_. Если флаг SP_COPY_NODECOMP не указан, файл будет распаковлен, а целевой объект будет вызываться \install\temp\cmd.exe. Часть имени файла DestinationName, если указано, удаляется и заменяется именем файла исходного файла. При указании SP_COPY_NODECOMP нет сведений о языке или версии.
Изучите каждый файл, копируемый, чтобы узнать, отличается ли его язык от языка любого существующего файла, уже размещенного в целевом объекте. Если это так, и указана CopyMsgHandler, вызывающий объект уведомляется и может отменить копию. Если CopyMsgHandler не указан, файл не копируется.
SourceFile — это полный путь к источнику. Не ищите его в разделе INF-файла SourceDisksNames.
SourcePathRoot является полной частью исходного файла. Игнорируйте относительный источник, указанный в разделе SourceDisksNames INF-файла для исходного носителя, где находится файл. Этот флаг игнорируется, если указан SP_COPY_SOURCE_ABSOLUTE.
Если целевой объект существует, ведет себя так, как будто он используется и помещается в очередь файла для копирования на следующую перезагрузку системы.
Если файл использовался во время операции копирования, сообщите пользователю о необходимости перезагрузки системы. Этот флаг используется только при последующем вызове SetupPromptReboot или SetupScanFileQueue.
Не предоставляйте пользователю возможность пропускать файл.
Проверьте, существует ли целевой файл и, если да, файл не перезаписан. Вызывающий объект уведомляется.
Просмотрите каждый файл, копируемый, чтобы узнать, являются ли его ресурсы версии (или метки времени для файлов, не являющихся изображениями), что это не более новая копия в целевом объекте. Если копируемый файл не является более новым, файл не копируется. Вызывающий объект уведомляется.
Если пользователь пытается пропустить файл, предупредите их о том, что пропуск файла может повлиять на установку. (Используется для системных критически важных файлов.)
MsgHandler
Указатель на подпрограмму обратного вызова. Подпрограмма обратного вызова должна быть в формате FileCallback. Дополнительные сведения см. в уведомлениях.
Этот параметр является необязательным, только если параметр флагов
msgHandler необходимо задать, если флаги включают SPINST_REGISTERCALLBACKAWARE плюс SPINST_REGSVR или SPINST_UNREGSVR. В этом случае SPFILENOTIFY_STARTREGISTRATION или SPFILENOTIFY_ENDREGISTRATION отправляется в подпрограмму обратного вызова каждый раз при регистрации или отмене регистрации файла с помощью директивы RegisterDlls INF в Windows 2000.
Context
Значение, передаваемое функции обратного вызова при внутренней фиксации очереди файлов, созданной этой подпрограммой, через SetupCommitFileQueue. Параметр контекста
DeviceInfoSet
Необязательный указатель на дескриптор набора сведений об устройстве. Дополнительные сведения о функциях установки установщика устройств см. в руководстве по программе DDK программиста.
DeviceInfoData
Необязательный указатель на указатель на структуру SP_DEVINFO_DATA, которая предоставляет контекст определенному элементу в наборе, указанному DeviceInfoSet. Дополнительные сведения о функциях установки установщика устройств см. в руководстве программиста DDK.
Если функция выполнена успешно, возвращаемое значение является ненулевое значение.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Если каталог UNC указан в качестве целевого каталога операции копирования файлов, необходимо убедиться, что он существует перед вызовом SetupInstallFromInfSection. Функции установки не проверяют наличие и не создают каталоги UNC. Если целевой каталог UNC не существует, установка файла завершится ошибкой.
Для этой функции требуется INF-файл Windows. Некоторые старые форматы INF-файлов могут не поддерживаться.
Примечание
Заголовок setupapi.h определяет SetupInstallFromInfSection как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
LogLevel
, как описано в разделе Настройка уровней ведения журнала SetupAPI. По соображениям производительности этот файл журнала следует включить только при устранении неполадок. Если файл журнала включен, его можно найти в %windir%\inf\setupapi.app.log
.
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | setupapi.h |
библиотеки |
Setupapi.lib |
DLL | Setupapi.dll |
набор API | ext-ms-win-setupapi-classinstallers-l1-1-2 (представлено в Windows 10 версии 10.0.14393) |
Обзор