Функция SetupDiInstallDevice (setupapi.h)
Функция SetupDiInstallDevice является обработчиком по умолчанию для запроса на установку DIF_INSTALLDEVICE.
Синтаксис
WINSETUPAPI BOOL SetupDiInstallDevice(
[in] HDEVINFO DeviceInfoSet,
[in, out] PSP_DEVINFO_DATA DeviceInfoData
);
Параметры
[in] DeviceInfoSet
Дескриптор набора сведений об устройстве для локальной системы, который содержит элемент сведений об устройстве, представляющий устанавливаемое устройство.
[in, out] DeviceInfoData
Указатель на структуру SP_DEVINFO_DATA , указывающую элемент сведений об устройстве в DeviceInfoSet. Это параметр IN-OUT, так как DeviceInfoData.При возврате в DevInst может быть обновлено новое значение дескриптора.
Возвращаемое значение
Функция возвращает ЗНАЧЕНИЕ TRUE , если оно выполнено успешно. В противном случае возвращается значение FALSE , а зарегистрированная ошибка может быть получена с помощью вызова Метода GetLastError.
Комментарии
SetupDiInstallDevice устанавливает драйвер из INF-файла. Определение "драйвера" в SetupAPI на самом деле является "узлом драйвера". Поэтому, когда эта функция устанавливает драйвер, она также устанавливает элементы из следующего списка:
- Службы для устройства.
- Файлы драйверов.
- Совместные установщики для конкретных устройств (если таковые есть).
- Поставщики страниц свойств (если таковые есть).
- Апплеты панели управления (при наличии).
Успешная установка включает в себя, помимо прочего, следующие действия:
- Создайте раздел драйвера в реестре и запишите соответствующие записи (например , InfPath и ProviderName).
- Найдите и обработайте раздел INF DDInstall для устройства. Раздел может быть специфичным для ОС или архитектуры. Записи AddReg и DelReg раздела DDInstall направлены на программный ключ устройства. Найдите и обработайте DDInstall. Раздел HW , записи AddReg и DelReg которого направлены на аппаратный ключ устройства. Найдите и обработайте раздел INF DDInstall.LogConfigOverride, если он имеется, чтобы предоставить конфигурацию переопределения для устройства. Найдите и обработайте раздел INF DDInstall.Services , чтобы добавить службы для устройства (и, возможно, удалить все старые службы, которые больше не нужны).
- Скопируйте INF-файл в системный каталог INF.
-
Возможно, выполните другие операции с файлами на основе параметров флага в параметрах установки устройства.
Если флаг DI_NOFILECOPY и флаг DI_NOVCP снят, выполните любые операции с файлами, указанные в разделе DDInstall . Если установлен флаг DI_NOVCP, поставить все операции с файлами в очередь.
Если установлен флаг DI_NOFILECOPY, не копируйте файлы. Этот флаг может быть установлен, например, если для установки этого устройства уже была выполнена DIF_INSTALLDEVICEFILES операция.
- Загрузите драйверы для устройства. Сюда входит драйвер функции и все драйверы верхнего или нижнего фильтров.
- Вызовите процедуры AddDevice драйверов.
- Запустите устройство, отправив IRP_MN_START_DEVICE пакет запроса ввода-вывода (IRP).
Установщик класса должен возвращать ERROR_DI_DO_DEFAULT или вызывать эту функцию при обработке запроса DIF_INSTALLDEVICE . Эта функция выполняет множество задач для установки устройства, и этот список задач может быть расширен в будущих выпусках. Если установщик класса выполняет установку устройства без вызова этой функции, установщик класса может работать неправильно в будущих версиях операционной системы.
Если Windows не удается найти INF-файл для устройства, она отправит DIF_INSTALLDEVICE при попытке установить драйвер NULL. SetupDiInstallDevice устанавливает драйвер null только в том случае, если устройство поддерживает необработанный режим или является устройством без PnP (сообщает IoReportDetectedDevice). Дополнительные сведения см. в разделе DIF_INSTALLDEVICE.
Если флаг DI_FLAGSEX_SETFAILEDINSTALL задан в структуре SP_DEVINSTALL_PARAMS , SetupDiInstallDevice просто устанавливает флаг FAILEDINSTALL в значении реестра ConfigFlags устройства.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Microsoft Windows 2000 и более поздних версиях Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | setupapi.h (включая Setupapi.h) |
Библиотека | Setupapi.lib |
DLL | Setupapi.dll |