Функция SetupCopyOEMInfA (setupapi.h)
[Эта функция доступна для использования в операционных системах, указанных в разделе "Требования". Он может быть изменен или недоступен в последующих версиях. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]
Функция setupCopyOEMInf
Вызывающий объект этой функции требуется иметь права администратора, в противном случае функция завершается ошибкой.
Синтаксис
WINSETUPAPI BOOL SetupCopyOEMInfA(
[in] PCSTR SourceInfFileName,
[in] PCSTR OEMSourceMediaLocation,
[in] DWORD OEMSourceMediaType,
[in] DWORD CopyStyle,
[out, optional] PSTR DestinationInfFileName,
[in] DWORD DestinationInfFileNameSize,
[out, optional] PDWORD RequiredSize,
[out, optional] PSTR *DestinationInfFileNameComponent
);
Параметры
[in] SourceInfFileName
Полный путь к исходному INF-файлу. Следует использовать строку, завершаемую значением NULL. Этот путь не должен превышать MAX_PATH размера, включая завершение NULL.
[in] OEMSourceMediaLocation
Сведения о расположении источника, хранящиеся в предварительно скомпилированного INF-файла (PNF). Эти сведения о расположении относятся к указанному типу исходного носителя. Следует использовать строку, завершаемую значением NULL. Этот путь не должен превышать MAX_PATH размера, включая завершение NULL.
[in] OEMSourceMediaType
Тип исходного носителя, на который ссылается информация о расположении. Этот параметр может быть одним из следующих значений.
[in] CopyStyle
Указывает, как INF-файл копируется в inf-каталог. Следующие флаги можно объединить.
Ценность | Значение |
---|---|
|
Удалите исходный файл при успешном копировании. |
|
Скопируйте только в том случае, если этот файл уже существует в каталоге Inf. Этот флаг можно использовать для обновления сведений о расположении источника для существующего INF-файла. |
|
Скопируйте только в том случае, если указанные файлы в настоящее время не существуют в каталоге Inf. Если в настоящее время существует INF-файл, этот API завершается ошибкой и GetLastError возвращает ERROR_FILE_EXISTS. В этом случае имя файла INF-файла существующего INF-файла помещается в соответствующее поле в буферах выходных данных целевого INF-файла. |
|
Указанный INF-файл соответствующих файлов каталога копируется в %windir%\Inf. Если этот флаг указан, то при успешном возвращении указанный INF-файл уже существует в каталоге Inf. |
[out, optional] DestinationInfFileName
Указатель на буфер для получения имени INF-файла, назначенного ему в момент его копирования в каталог Inf. Буфер, если он указан, обычно должен быть MAX_PATH длиной. Если указан флаг SP_COPY_NOOVERWRITE , а функция setupCopyOEMIn f завершается ошибкой с кодом возврата ERROR_FILE_EXISTS, этот буфер содержит имя существующего INF-файла. Если указан флаг SP_COPY_OEMINF_CATALOG_ONLY, этот буфер содержит имя целевого INF-файла, если INF-файл уже присутствует в каталоге Inf. В противном случае этот буфер имеет пустую строку. Этот параметр может быть NULL.
[in] DestinationInfFileNameSize
Размер буфера destinationInfFileName в символах или ноль, если буфер не указан. Если указан DestinationInfFileName, а этот размер буфера меньше размера, необходимого для возврата имени целевого INF-файла (включая полный путь), эта функция завершается ошибкой. В этом случае GetLastError возвращает ERROR_INSUFFICIENT_BUFFER.
[out, optional] RequiredSize
Указатель на переменную, которая получает размер (в символах), необходимую для хранения имени целевого INF-файла, включая завершающийся NULL. Если указан флаг SP_COPY_OEMINF_CATALOG_ONLY, эта переменная получает строку только в том случае, если inf-файл уже существует в каталоге Inf. В противном случае эта переменная имеет значение нулю. Этот параметр может быть NULL.
[out, optional] DestinationInfFileNameComponent
Указатель на строку, заданную при успешном возвращении (или ERROR_FILE_EXISTS), чтобы указать начало компонента имени файла пути, хранящегося в параметре DestinationInfFileName. Если указан флаг SP_COPY_OEMINF_CATALOG_ONLY, параметр DestinationInfFileName может быть пустой строкой. В этом случае указатель символа имеет значение NULL при успешном возвращении. Этот параметр может быть NULL.
Возвращаемое значение
Эта функция возвращает BOOL WINSETUPAPI.
Замечания
Функция setupCopyOEMIn f
SetupCopyOEMInf использует следующую процедуру, чтобы определить, существует ли INF-файл в каталоге Inf:
Перечисляются все INF-файлы с именами формы OEM*.inf и все файлы с одинаковым размером файла, что и указанный INF-файл, сравниваются двоичными файлами.
В каталоге Inf выполняется поиск исходного имени файла INF-файла. Если INF-файл с тем же именем существует и имеет тот же размер, что и указанный INF-файл, эти два файла являются двоичными по сравнению с определением того, совпадают ли они.
Если указанный INF-файл уже существует, чтобы определить, содержит ли указанный INF-файл запись CatalogFile= в разделе [Версия]. В противном случае используется inf-файл %windir%\Inf primary filename with a .cat", чтобы определить, установлен ли каталог. Если установлен каталог, но он не совпадает с каталогом, связанным с исходным INF- файлом, он не считается совпадением и перечислениями продолжается. Можно использовать несколько идентичных INF-файлов с уникальными каталогами, содержащимися в каталоге %windir%\Inf. Если существующее совпадение не найдено, файлы INF и CAT устанавливаются под новым и уникальным именем.
OEM .inf-файлы, которые не указывают запись CatalogFile=, считаются недопустимыми в отношении проверки цифровой подписи.
В случаях, когда INF-файл должен быть скопирован в каталог %windir%\Inf, сообщается о любых сбоях проверки цифровой подписи.
Если файлы INF и CAT уже существуют, используются эти существующие имена файлов, а поведение замены файла основано на указанных флагах CopyStyle. Поведение замены относится только к данным исходного носителя, хранящимся в PNF. Существующие ФАЙЛЫ INF, PNF и CAT не изменяются.
Заметка
Заголовок setupapi.h определяет SetupCopyOEMInf как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | 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) |
См. также
Обзор