структура SP_DEVINSTALL_PARAMS_A (setupapi.h)
Структура SP_DEVINSTALL_PARAMS содержит параметры установки устройства, связанные с определенным элементом сведений об устройстве или глобально связанные с набором сведений об устройстве.
Синтаксис
typedef struct _SP_DEVINSTALL_PARAMS_A {
DWORD cbSize;
DWORD Flags;
DWORD FlagsEx;
HWND hwndParent;
PSP_FILE_CALLBACK InstallMsgHandler;
PVOID InstallMsgHandlerContext;
HSPFILEQ FileQueue;
ULONG_PTR ClassInstallReserved;
DWORD Reserved;
CHAR DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
Члены
cbSize
Размер структуры SP_DEVINSTALL_PARAMS в байтах.
Flags
Флаги, управляющие операциями установки и пользовательского интерфейса. Некоторые флаги можно установить перед отправкой запроса на установку устройства, а другие — автоматически во время обработки некоторых запросов. Флаги могут быть сочетанием следующих значений.
Значения флагов перечислены в группах: записываемые приложениями и установщиками установки устройств , доступные только для чтения (только в ОС), зарезервированные и устаревшие. В первой группе перечислены флаги, доступные для записи:
DI_CLASSINSTALLPARAMS
Задайте для использования параметров Class Install. SetupDiSetClassInstallParams устанавливает этот флаг, когда вызывающий объект задает параметры, и очищает флаг, когда вызывающий объект задает указатель на параметры NULL .
DI_COMPAT_FROM_CLASS
Установите значение , чтобы принудить SetupDiBuildDriverInfoList создать список совместимых драйверов устройства из списка драйверов класса вместо INF-файла.
DI_DRIVERPAGE_ADDED
Устанавливается установщиком класса или совместным установщиком, если установщик предоставляет страницу, которая заменяет предоставленную системой страницу свойств драйвера. Если этот флаг установлен, операционная система не отображает страницу драйвера, предоставляемую системой.
DI_DONOTCALLCONFIGMG
Установите значение , если диспетчер конфигурации не должен вызываться для удаления или повторной регистрации устройств во время выполнения определенных функций установки устройств (например, SetupDiInstallDevice).
Если этот флаг установлен, приложения установки устройств, установщики классов и со-установщики не должны вызывать следующие функции:
CM_Reenumerate_DevNodeCM_Reenumerate_DevNode_ExCM_Query_And_Remove_SubTreeCM_Query_And_Remove_SubTree_ExCM_Setup_DevNodeCM_Setup_DevNode_ExCM_Set_HW_Prof_FlagsCM_Set_HW_Prof_Flags_Ex CM_Enable_DevNodeCM_Enable_DevNode_ExCM_Disable_DevNode CM_Disable_DevNode_Ex
DI_ENUMSINGLEINF
Установите значение , если установщики и другие компоненты установки устройств должны выполнять поиск только в INF-файле, указанном в SP_DEVINSTALL_PARAMS. DriverPath. Если этот флаг установлен, DriverPath содержит путь к одному INF-файлу вместо пути к каталогу.
DI_INF_IS_SORTED
Задайте значение , указывающее, что на странице Выбор устройства должны отображаться драйверы в порядке, в котором они отображаются в INF-файле, а не сортировать их в алфавитном порядке.
DI_INSTALLDISABLED
Установите значение , если устройство должно быть установлено в отключенном состоянии по умолчанию. Для распознавания этот флаг необходимо установить, прежде чем Windows вызовет обработчик по умолчанию для запроса DIF_INSTALLDEVICE .
DI_NEEDREBOOT
Для операционных систем на основе NT этот флаг устанавливается, если устройство требует перезагрузки компьютера после установки устройства или изменения состояния устройства. Установщик класса или совместный установщик может установить этот флаг в любое время во время установки устройства, если установщик определит, что требуется перезагрузка.
DI_NEEDRESTART
То же, что и DI_NEEDREBOOT.
DI_NOBROWSE
Параметр отключает просмотр, когда пользователь выбирает путь к диску изготовителя оборудования. Приложение установки устройства устанавливает этот флаг, чтобы ограничить пользователя установкой только из расположения установочного носителя.
DI_NODI_DEFAULTACTION
Установите значение , если SetupDiCallClassInstaller не должен выполнять какие-либо действия по умолчанию, если установщик класса возвращает ERR_DI_DO_DEFAULT или нет установщика класса.
DI_NOFILECOPY
Установите значение, если приложения и компоненты установки устройства, такие как SetupDiInstallDevice, должны пропускать копирование файлов.
DI_NOVCP
Установите значение , чтобы отключить создание новой очереди копирования. Используйте предоставленную вызывающей стороны очередь копирования в SP_DEVINSTALL_PARAMS. FileQueue.
DI_NOWRITE_IDS
Установите значение , чтобы запретить SetupDiInstallDevice записывать указанные INF-идентификаторы оборудования и совместимые идентификаторы в свойства устройства узла устройства (devnode). Этот флаг следует устанавливать только для устройств с корневым перечислением.
Этот флаг переопределяет флаг DI_FLAGSEX_ALWAYSWRITEIDS.
DI_PROPERTIES_CHANGE
Задается диспетчер устройств, если свойства устройства были изменены, что требует обновления пользовательского интерфейса установщика.
DI_QUIETINSTALL
Установите значение , если функции установщика устройств должны быть автоматическими и использовать варианты по умолчанию везде, где это возможно. Установщики классов и со-установщики не должны отображать пользовательский интерфейс, если установлен этот флаг.
DI_RESOURCEPAGE_ADDED
Устанавливается установщиком класса или совместным установщиком, если установщик предоставляет страницу, которая заменяет предоставленную системой страницу свойств ресурса. Если этот флаг установлен, операционная система не отображает страницу предоставленного системой ресурса.
DI_SHOWOEM
Задайте значение , чтобы разрешить поддержку дисков OEM. Если этот флаг установлен, операционная система отображает кнопку "Иметь диск" на странице Выбор устройства. Этот флаг установлен по умолчанию в мастерах, предоставляемых системой.
DI_USECI_SELECTSTRINGS
Задайте, предоставляются ли установщиком класса или со-установщиком строки, которые следует использовать во время SetupDiSelectDevice.
Следующие флаги доступны только для чтения (устанавливаются только операционной системой):
DI_DIDCLASS
Установите значение , если SetupDiBuildDriverInfoList уже создал список драйверов для этого класса устройств. Если этот список уже создан, он содержит все сведения о драйвере, и этот флаг всегда устанавливается. SetupDiDetraitsDriverInfoList удаляет этот флаг при удалении списка драйверов для класса.
Этот флаг доступен только для чтения. Только операционная система устанавливает этот флаг.
DI_DIDCOMPAT
Установите значение , если SetupDiBuildDriverInfoList уже создал список совместимых драйверов для этого устройства. Если этот список уже создан, он содержит все сведения о драйвере, и этот флаг всегда устанавливается. SetupDiDebaseDriverInfoList удаляет этот флаг при удалении совместимого списка драйверов.
Этот флаг устанавливается только в параметрах установки устройства, связанных с определенным элементом сведений об устройстве, но не в параметрах для набора сведений об устройстве в целом.
Этот флаг доступен только для чтения. Только операционная система устанавливает этот флаг.
DI_MULTMFGS
Задайте с помощью SetupDiBuildDriverInfoList , если список драйверов для класса установки устройства содержит драйверы, предоставляемые несколькими производителями.
Этот флаг доступен только для чтения. Только операционная система устанавливает этот флаг.
Зарезервированы следующие флаги:
DI_AUTOASSIGNRES
DI_DISABLED
DI_FORCECOPY
DI_GENERALPAGE_ADDED
DI_OVERRIDE_INFFLAGS
DI_SHOWALL
DI_SHOWCLASS
DI_SHOWCOMPAT
Следующие флаги устарели:
DI_NOSELECTICONS
DI_PROPS_NOCHANGEUSAGE
FlagsEx
Дополнительные флаги, обеспечивающие контроль над операциями установки и пользовательского интерфейса. Некоторые флаги можно установить перед вызовом функций установщика устройств, а другие — автоматически во время обработки некоторых функций. FlagsEx может быть сочетанием следующих значений.
Значения флагов перечислены в группах: доступные для записи приложениями установки устройств и установщиками, доступные только для чтения (только в ОС), зарезервированные и устаревшие.
В первой группе перечислены флаги, доступные для записи:
DI_FLAGSEX_ALLOWEXCLUDEDDRVS
Если задано значение , включите драйверы с пометкой "Исключить из выбора".
Например, если этот флаг установлен, setupDiSelectDevice отображает драйверы с состоянием "Исключить из выбора", а SetupDiBuildDriverInfoList включает драйверы "Исключить из выбора" в список запрошенных драйверов.
Драйвер имеет значение "Исключить из выбора", если он помечен как ExcludeFromSelect в INF-файле или это драйвер для устройства, весь класс установки которого помечен как NoInstallClass или NoUseClass в inf установщика класса. Драйверы для устройств PnP обычно являются "Исключить из выбора"; Устройства PnP не следует устанавливать вручную. Чтобы создать список файлов драйверов для устройства PnP, вызывающий объект SetupDiBuildDriverInfoList должен установить этот флаг.
DI_FLAGSEX_ALWAYSWRITEIDS
Если задано и флаг DI_NOWRITE_IDS не задан, всегда записывайте аппаратные и совместимые идентификаторы в свойства устройства для devnode. Этот флаг следует устанавливать только для устройств с корневым перечислением.
DI_FLAGSEX_APPENDDRIVERLIST
Если этот параметр задан, SetupDiBuildDriverInfoList добавляет новый список драйверов к существующему списку. Этот флаг применяется при поиске в нескольких расположениях.
DI_FLAGSEX_DRIVERLIST_FROM_URL
Если задано значение , создайте список драйверов из INF-файлов, полученных из URL-адреса, указанного в SP_DEVINSTALL_PARAMS. DriverPath. Если DriverPath является пустой строкой, используйте веб-сайт клиентский компонент Центра обновления Windows.
В настоящее время операционная система не поддерживает URL-адреса. Используйте этот флаг, чтобы направить SetupDiBuildDriverInfoList для поиска на веб-сайте клиентский компонент Центра обновления Windows.
Не устанавливайте этот флаг, если задано DI_QUIETINSTALL.
DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS
Если этот параметр задан, не включайте старые интернет-драйверы при создании списка драйверов. Этот флаг следует устанавливать каждый раз, когда вы создаете список потенциальных драйверов для устройства. Этот флаг можно снять, если вы только получаете список драйверов, установленных для устройства.
DI_FLAGSEX_FILTERCLASSES
Если этот параметр задан, SetupDiBuildClassInfoList будет проверка для фильтров включения классов. Это означает, что устройство не будет включено в список классов, если его класс помечен как NoInstallClass.
DI_FLAGSEX_FILTERSIMILARDRIVERS
(Windows XP и более поздние версии.) Если этот параметр задан, setupDiBuildDriverInfoList включает "аналогичные" драйверы при создании списка драйверов класса. "Аналогичный" драйвер — это драйвер, для которого один из идентификаторов оборудования или совместимых идентификаторов в INF-файле частично (или полностью) соответствует одному из идентификаторов оборудования или совместимых идентификаторов оборудования.
DI_FLAGSEX_FINISHINSTALL_ACTION
(Windows Vista и более поздние версии.) Дополнительные сведения см. в статье Маркировка устройства как Finish-Install действия для выполнения .
DI_FLAGSEX_INET_DRIVER
Если задано значение , драйвер был получен из Интернета. Windows не будет использовать inf устройства для установки будущих устройств, так как Windows не может гарантировать, что сможет снова получить файлы драйверов из Интернета.
DI_FLAGSEX_INSTALLEDDRIVER
(Windows XP и более поздние версии.) Если этот параметр задан, setupDiBuildDriverInfoList включает только текущий установленный драйвер при создании списка драйверов класса или совместимых с устройством драйверов.
DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE
(Windows XP и более поздние версии.) Если задано значение , при создании списка драйверов класса SetupDiBuildDriverInfoList не будет объединять узлы в списке драйверов, которые относятся к одному и тому же inf и имеют одинаковое описание и ранг драйвера.
DI_FLAGSEX_NO_DRVREG_MODIFY
Не обрабатывайте записи AddReg и DelReg для аппаратных и программных ключей (драйверов) устройства. То есть записи AddReg и DelReg в INF-файле DDInstall и DDInstall. Разделы HW .
DI_FLAGSEX_POWERPAGE_ADDED
Если задано значение , установщик добавил собственную страницу для диалогового окна свойств питания. Операционная система не будет отображать страницу предоставленных системой свойств питания. Этот флаг применяется только в том случае, если устройство поддерживает управление питанием.
DI_FLAGSEX_PROPCHANGE_PENDING
Если задано значение , пользователь внес изменения в одну или несколько страниц свойств устройства. Поставщик страниц свойств обычно устанавливает этот флаг.
Когда пользователь закрывает страницу свойств устройства, диспетчер устройств проверяет флаг DI_FLAGSEX_PROPCHANGE_PENDING. Если он установлен, диспетчер устройств очищает этот флаг, устанавливает флаг DI_PROPERTIES_CHANGE и отправляет установщикам запрос DIF_PROPERTYCHANGE, чтобы уведомить их о том, что что-то изменилось.
DI_FLAGSEX_RECURSIVESEARCH
(Windows Vista и более поздние версии.) Если задано значение , то при поиске infs по пути, указанному в значении DriverPath, при выполнении setupDiBuildDriverInfoList поиск будет рекурсивным.
DI_FLAGSEX_SEARCH_PUBLISHED_INFS
(Windows Vista и более поздние версии.) Если задано значение , то при использовании SetupDiBuildDriverInfoList для поиска infs без указания пути INF или пути поиска поиск ограничивается только infs, импортированными в хранилище драйверов.
DI_FLAGSEX_SETFAILEDINSTALL
Установите значение , если установка завершилась сбоем. Если этот флаг установлен, функция SetupDiInstallDevice просто устанавливает флаг FAILEDINSTALL в значении реестра ConfigFlags устройства. Если задано DI_FLAGSEX_SETFAILEDINSTALL, совместные установщики должны возвращать NO_ERROR в ответ на DIF_INSTALLDEVICE, а установщики классов — NO_ERROR или ERROR_DI_DO_DEFAULT.
DI_FLAGSEX_USECLASSFORCOMPAT
Фильтрация INF-файлов в классе установки устройства при создании списка совместимых драйверов. Если класс установки устройства известен, установка этого флага сокращает время, необходимое для создания списка совместимых драйверов при поиске в INF-файлах, которые не предварительно скомпилированы. Этот флаг игнорируется, если задано DI_COMPAT_FROM_CLASS.
Следующие флаги доступны только для чтения. только операционная система устанавливает следующие флаги:
DI_FLAGSEX_CI_FAILED
Устанавливается операционной системой, если установщик класса не удалось загрузить или запустить. Этот флаг доступен только для чтения.
DI_FLAGSEX_DIDCOMPATINFO
Windows создала список узлов драйверов, совместимых с устройством. Этот флаг доступен только для чтения.
DI_FLAGSEX_DIDINFOLIST
Windows создала список узлов драйверов, включающий все драйверы, перечисленные в INF-файлах указанного класса установки. Если указанный класс установки имеет значение NULL , так как набор HDEVINFO или устройство не имеет связанного класса, список включает все узлы драйверов из всех доступных INF-файлов. Этот флаг доступен только для чтения.
DI_FLAGSEX_IN_SYSTEM_SETUP
Если задано значение , установка выполняется во время начальной установки системы. Этот флаг доступен только для чтения.
Следующие флаги зарезервированы и не должны использоваться:
DI_FLAGSEX_ALTPLATFORM_DRVSEARCH
DI_FLAGSEX_BACKUPONREPLACE
DI_FLAGSEX_DEVICECHANGE
DI_FLAGSEX_OLDINF_IN_CLASSLIST
DI_FLAGSEX_PREINSTALLBACKUP
DI_FLAGSEX_RESTART_DEVICE_ONLY
DI_FLAGSEX_USEOLDINFSEARCH
Следующие флаги устарели:
DI_FLAGSEX_AUTOSELECTRANK0
DI_FLAGSEX_NOUIONQUERYREMOVE
hwndParent
Дескриптор окна, которому будут принадлежать диалоговые окна пользовательского интерфейса, связанные с этим устройством.
InstallMsgHandler
Обратный вызов, используемый для обработки событий во время копирования файлов. Установщик может использовать обратный вызов, например, для выполнения специальной обработки при фиксации очереди файлов.
InstallMsgHandlerContext
Частные данные, используемые обратным вызовом InstallMsgHandler .
FileQueue
Дескриптор очереди файлов, предоставленной вызывающим абонентом, в которой операции с файлами должны быть помещены в очередь, но не зафиксированы.
Если вы связываете очередь файлов с набором сведений об устройстве (SetupDiSetDeviceInstallParams), перед удалением набора сведений об устройстве необходимо отменить связь очереди с набором сведений об устройстве. Если не удается отменить связь с очередью файлов, Windows не сможет уменьшать количество ссылок в наборе сведений об устройстве и не сможет освободить память.
Эта очередь используется только в том случае, если установлен флаг DI_NOVCP, указывающий, что операции с файлами должны быть помещены в очередь, но не зафиксированы.
ClassInstallReserved
Указатель на данные установщика класса. Совместное установщики не должны использовать это поле.
Reserved
Зарезервировано. Только для внутреннего использования.
DriverPath[MAX_PATH]
Этот путь используется функцией SetupDiBuildDriverInfoList .
Комментарии
Примечание
Заголовок setupapi.h определяет SP_DEVINSTALL_PARAMS как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Заголовок | setupapi.h (включая Setupapi.h) |