структура SP_DEVINSTALL_PARAMS_W (setupapi.h)
Структура SP_DEVINSTALL_PARAMS содержит параметры установки устройства, связанные с определенным элементом сведений об устройстве или связанным глобально с набором сведений об устройстве.
typedef struct _SP_DEVINSTALL_PARAMS_W {
DWORD cbSize;
DWORD Flags;
DWORD FlagsEx;
HWND hwndParent;
PSP_FILE_CALLBACK InstallMsgHandler;
PVOID InstallMsgHandlerContext;
HSPFILEQ FileQueue;
ULONG_PTR ClassInstallReserved;
DWORD Reserved;
WCHAR DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
cbSize
Размер структуры SP_DEVINSTALL_PARAMS в байтах.
Flags
Флаги, управляющие операциями установки и пользовательского интерфейса. Некоторые флаги можно задать перед отправкой запроса на установку устройства, а другие флаги задаются автоматически во время обработки некоторых запросов. Флаги могут быть сочетанием следующих значений.
Значения флагов перечислены в группах: записываемые приложениями установки устройств и установщиками, только для чтения (только для ОС), зарезервированными и устаревшими. Первая группа перечисляет флаги, которые доступны для записи:
Задайте для использования параметров установки класса. SetupDiSetClassInstallParams задает этот флаг, когда вызывающий объект задает параметры и очищает флаг, когда вызывающий объект задает указатель NULL.
Задайте для принудительного SetupDiBuildDriverInfoList для создания списка совместимых драйверов устройства из списка драйверов классов вместо INF-файла.
Устанавливается установщиком класса или со установщиком, если установщик предоставляет страницу, которая заменяет страницу свойств драйвера, предоставленной системой. Если этот флаг задан, операционная система не отображает страницу драйвера, предоставляемую системой.
Задайте, если диспетчер конфигурации не должен вызываться для удаления или повторного удаления устройств во время выполнения определенных функций установки устройства (например, 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_ExCM_Enable_DevNodeCM_Enable_DevNode_ExCM_Disable_DevNodeCM_Disable_DevNode_Ex
Если установщики и другие компоненты установки устройств должны выполнять поиск только в INF-файле, указанном SP_DEVINSTALL_PARAMS.DriverPath. Если этот флаг задан, DriverPath содержит путь к одному INF-файлу вместо пути к каталогу.
Задайте для указания, что страница выбора устройств должна содержать список драйверов в порядке, в котором они отображаются в INF-файле, а не отсортировать их в алфавитном порядке.
Установите значение, если устройство должно быть установлено в отключенном состоянии по умолчанию. Чтобы распознать, этот флаг необходимо задать перед вызовом обработчика по умолчанию для запроса DIF_INSTALLDEVICE.
Для операционных систем на основе NT этот флаг устанавливается, если устройство требует перезагрузки компьютера после установки устройства или изменения состояния устройства. Установщик классов или со установщик может задать этот флаг в любое время во время установки устройства, если установщик определяет, что требуется перезапуск.
То же, что и DI_NEEDREBOOT.
Установите для отключения просмотра, когда пользователь выбирает путь к диску OEM. Приложение установки устройства задает этот флаг, чтобы ограничить пользователя только установкой из расположения установочного носителя.
Установите, если SetupDiCallClassInstaller не должно выполнять никаких действий по умолчанию, если установщик класса возвращает ERR_DI_DO_DEFAULT или нет установщика классов.
Установите, если приложения и компоненты установки устройства, такие как SetupDiInstallDevice, должны пропускать копирование файлов.
Установите для отключения создания новой очереди копирования. Используйте очередь копирования, предоставляемую вызывающим абонентом, в SP_DEVINSTALL_PARAMS.FileQueue.
Установите для предотвращения setupDiInstallDevice записи идентификаторов оборудования и совместимых идентификаторов устройства для узла устройства (devnode). Этот флаг должен быть задан только для устройств, перечисляемых корнем.
Этот флаг переопределяет флаг DI_FLAGSEX_ALWAYSWRITEIDS.
Устанавливается диспетчером устройств, если свойства устройства были изменены, что требует обновления пользовательского интерфейса установщика.
Задайте, если функции установщика устройств должны быть автоматически и использовать варианты по умолчанию, где это возможно. Установщики классов и совместно установщики не должны отображать пользовательский интерфейс, если этот флаг установлен.
Устанавливается установщиком класса или со установщиком, если установщик предоставляет страницу, которая заменяет страницу свойств ресурса, предоставленной системой. Если этот флаг задан, операционная система не отображает страницу ресурсов, предоставленной системой.
Установите флажок, чтобы разрешить поддержку дисков OEM. Если этот флаг задан, операционная система отображает кнопку "Иметь диск" на странице выбора устройства. Этот флаг устанавливается по умолчанию в системных мастерах.
Задайте значение, если установщик класса или совместно предоставленные строки, которые следует использовать во время SetupDiSelectDevice.
Следующие флаги доступны только для чтения (только для ОС):
Задайте, если SetupDiBuildDriverInfoList уже создал список драйверов для этого класса устройства. Если этот список уже создан, он содержит все сведения о драйвере, и этот флаг всегда задан. SetupDiDetydriverInfoList очищает этот флаг при удалении списка драйверов для класса.
Этот флаг доступен только для чтения. Только операционная система задает этот флаг.
Задайте, если SetupDiBuildDriverInfoList уже создал список совместимых драйверов для этого устройства. Если этот список уже создан, он содержит все сведения о драйвере, и этот флаг всегда задан. SetupDiDedriverInfoList очищает этот флаг при удалении совместимого списка драйверов.
Этот флаг устанавливается только в параметрах установки устройства, связанных с определенным элементом сведений об устройстве, а не в параметрах для набора сведений об устройстве в целом.
Этот флаг доступен только для чтения. Только операционная система задает этот флаг.
Задает 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 может быть сочетанием следующих значений.
Значения флага перечислены в группах: записываемые приложениями и установщиками устройств, доступными только для чтения (только для ОС), зарезервированными и устаревшими.
Первая группа перечисляет флаги, которые доступны для записи:
Если задано, включите драйверы, помеченные как "Исключить из выбора".
Например, если этот флаг задан, SetupDiSelectDevice отображает драйверы с состоянием "Исключить из выбора" и SetupDiBuildDriverInfoList включает в себя исключение из списка запрошенных драйверов.
Драйвер является "Исключить из выбора", если ExcludeFromSelect в INF-файле или драйвер для устройства, целое класс установки которого помечен NoInstallClass или NoUseClass в установщике классов INF. Драйверы для устройств PnP обычно являются "Исключить из выбора"; Устройства PnP не должны быть установлены вручную. Чтобы создать список файлов драйверов для устройства PnP, вызывающий объект SetupDiBuildDriverInfoList должен задать этот флаг.
Если задано и флаг DI_NOWRITE_IDS ясно, всегда записывает аппаратные и совместимые идентификаторы в свойства устройства для devnode. Этот флаг должен быть задан только для устройств, перечисляемых корнем.
Если задано, SetupDiBuildDriverInfoList добавляет новый список драйверов в существующий список. Этот флаг имеет значение при поиске в нескольких расположениях.
Если задано, создайте список драйверов из INF(s), полученный из URL-адреса, указанного в SP_DEVINSTALL_PARAMS.DriverPath. Если DriverPath является пустой строкой, используйте веб-сайт Центра обновления Windows.
В настоящее время операционная система не поддерживает URL-адреса. Используйте этот флаг для прямого SetupDiBuildDriverInfoList для поиска веб-сайта Центра обновления Windows.
Не устанавливайте этот флаг, если установлен DI_QUIETINSTALL.
Если задано, не включайте старые драйверы Интернета при создании списка драйверов. Этот флаг следует задать в любое время, когда вы создаете список потенциальных драйверов для устройства. Этот флаг можно очистить, только если вы только получаете список драйверов, установленных в настоящее время для устройства.
Если задано, SetupDiBuildClassInfoList проверяет наличие фильтров включения классов. Это означает, что устройство не будет включено в список классов, если его класс помечен как NoInstallClass.
(Windows XP и более поздние версии.) Если задано, SetupDiBuildDriverInfoList включает "аналогичные" драйверы при создании списка драйверов классов. Драйвер "аналогичный" — это драйвер, для которого один из аппаратных идентификаторов или совместимых идентификаторов в INF-файле частично (или полностью) соответствует одному из аппаратных идентификаторов или совместимых идентификаторов оборудования.
(Windows Vista и более поздние версии.) Дополнительные сведения см. в маркировке устройства как действия Finish-Install для выполнения.
Если задано, драйвер был получен из Интернета. Windows не будет использовать INF устройства для установки будущих устройств, так как Windows не может гарантировать, что он может получить файлы драйверов снова из Интернета.
(Windows XP и более поздние версии.) Если задано, SetupDiBuildDriverInfoList включает только текущий установленный драйвер при создании списка драйверов классов или драйверов, совместимых с устройствами.
(Windows XP и более поздние версии.) Если задано, при создании списка драйверов классов SetupDiBuildDriverInfoList не будет объединять узлы в списке драйверов, которые находятся в том же INF и имеют то же описание драйвера и ранг.
Не обработайте записи AddReg и DelReg для ключей оборудования и программного обеспечения (драйвера) устройства. То есть записи AddReg и DelReg в INF-файле DDInstall и DDInstall. Разделы HW.
Если задано, установщик добавил собственную страницу для диалогового окна свойств питания. Операционная система не отображает страницу свойств питания, предоставленных системой. Этот флаг имеет значение только в том случае, если устройство поддерживает управление питанием.
Если задано, пользователь внесли изменения в одну или несколько листов свойств устройства. Поставщик страниц свойств обычно задает этот флаг.
Когда пользователь закрывает лист свойств устройства, диспетчер устройств проверяет флаг DI_FLAGSEX_PROPCHANGE_PENDING. Если он задан, диспетчер устройств очищает этот флаг, задает флаг DI_PROPERTIES_CHANGE и отправляет DIF_PROPERTYCHANGE запрос установщикам, чтобы уведомить их о том, что что-то изменилось.
(Windows Vista и более поздние версии.) Если задано, если SetupDiBuildDriverInfoList выполняет поиск INFS в пути, указанном в значении DriverPath, поиск будет рекурсивным.
(Windows Vista и более поздние версии.) Если задано значение, если SetupDiBuildDriverInfoList используется для поиска INFs без пути INF или пути поиска, это ограничивает поиск только inFs, импортированных в хранилище драйверов.
Установите, если установка завершилась ошибкой. Если этот флаг задан , функция установки SetupDiInstallDevice просто задает флаг FAILEDINSTALL в ConfigFlags устройства значение реестра. Если задано DI_FLAGSEX_SETFAILEDINSTALL, то в ответ на DIF_INSTALLDEVICE установщики классов должны возвращать NO_ERROR, а установщики классов должны возвращать NO_ERROR или ERROR_DI_DO_DEFAULT.
Фильтрация INF-файлов в классе установки устройства при создании списка совместимых драйверов. Если класс установки устройства известен, установка этого флага сокращает время, необходимое для создания списка совместимых драйверов при поиске INF-файлов, которые не предварительно компилируются. Этот флаг игнорируется, если задано DI_COMPAT_FROM_CLASS.
Следующие флаги доступны только для чтения; Только операционная система задает следующие флаги:
Устанавливается операционной системой, если установщик класса не удалось загрузить или запустить. Этот флаг доступен только для чтения.
Windows создал список узлов драйвера , совместимых с устройством. Этот флаг доступен только для чтения.
Windows создал список узлов драйверов, включающих все драйверы, перечисленные в INF-файлах указанного класса установки. Если указанный класс установки NULL, так как набор HDEVINFO или устройство не имеет связанного класса, список включает все узлы драйверов из всех доступных INF-файлов. Этот флаг доступен только для чтения.
Если задано, во время начальной установки системы выполняется установка. Этот флаг доступен только для чтения.
Следующие флаги зарезервированы и не должны использоваться:
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 (include Setupapi.h) |