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


структура 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)

См. также раздел

SetupDiBuildClassInfoList

SetupDiBuildDriverInfoList

SetupDiCallClassInstaller

SetupDiGetDeviceInstallParams

SetupDiInstallDevice

SetupDiSelectDevice

SetupDiSetDeviceInstallParams