Функция UpdateDriverForPlugAndPlayDevicesA (newdev.h)
При использовании INF-файла и идентификатора оборудования функция UpdateDriverForPlugAndPlayDevices устанавливает обновленные драйверы для устройств, соответствующих идентификатору оборудования.
Синтаксис
BOOL UpdateDriverForPlugAndPlayDevicesA(
[in, optional] HWND hwndParent,
[in] LPCSTR HardwareId,
[in] LPCSTR FullInfPath,
[in] DWORD InstallFlags,
[out, optional] PBOOL bRebootRequired
);
Параметры
[in, optional] hwndParent
Дескриптор окна верхнего уровня, используемый для любого пользовательского интерфейса, связанного с установкой устройств.
[in] HardwareId
Указатель на строку с завершением NULL, которая предоставляет идентификатор оборудования, соответствующий существующим устройствам на компьютере. Максимальная длина аппаратного идентификатора, завершаемого значением NULL, MAX_DEVICE_ID_LEN. Дополнительные сведения об идентификаторах оборудования см. в разделе Строки идентификации устройств.
[in] FullInfPath
Указатель на строку с завершением NULL, которая предоставляет полный путь к INF-файлу. Файлы должны находиться на носителе распространения или в каталоге, созданном поставщиком, а не в системном расположении, например %SystemRoot%\inf. UpdateDriverForPlugAndPlayDevices копирует файлы драйверов в соответствующие системные расположения в случае успешной установки.
[in] InstallFlags
Значение, предоставленное вызывающей стороны, созданное с помощью ИЛИ для объединения нуля или нескольких из следующих битовых флагов:
INSTALLFLAG_FORCE
Если этот флаг установлен и функция находит устройство, соответствующее значению HardwareId , функция устанавливает новые драйверы для устройства, если на компьютере уже существуют более качественные драйверы.
INSTALLFLAG_READONLY
Если этот флаг установлен, функция не будет копировать, переименовывать или удалять файлы установки. Использование этого флага должно быть ограничено средами, в которых доступ к файлам ограничен или невозможен, например "внедренной" операционной системой.
INSTALLFLAG_NONINTERACTIVE
Если этот флаг установлен, функция возвращает значение FALSE при обнаружении любой попытки отображения пользовательского интерфейса. Установите этот флаг, только если функция будет вызываться из компонента (например, службы), который не может отображать пользовательский интерфейс.
[out, optional] bRebootRequired
Указатель на переменную типа BOOL, которая указывает, требуется ли перезагрузка и кто должен запрашивать ее. Этот указатель является необязательным и может иметь значение NULL.
Если указатель имеет значение NULL, UpdateDriverForPlugAndPlayDevices при необходимости запрашивает перезагрузку после установки драйверов. Если указан указатель, функция возвращает значение BOOLEAN, равное TRUE , если система должна быть перезапущена. После этого вызывающий объект отвечает за запрос на перезапуск.
Дополнительные сведения см. в следующем разделе Примечаний .
Возвращаемое значение
Функция возвращает значение TRUE , если устройство было обновлено до указанного драйвера.
В противном случае возвращается значение FALSE , а зарегистрированная ошибка может быть получена с помощью вызова Метода GetLastError. Возможные значения ошибок, возвращаемые GetLastError , приведены в следующей таблице.
Код возврата | Описание |
---|---|
|
Путь, указанный для FullInfPath , не существует. |
|
Вызывающее приложение — это 32-разрядное приложение, которое пытается выполнить в 64-разрядной среде, что запрещено. |
|
Недопустимое значение, указанное в параметре InstallFlags . |
|
Значение, указанное для HardwareId , не соответствует ни одному устройству в системе. То есть устройство не подключено. |
|
Функция обнаружила совпадение для значения HardwareId , но указанный драйвер не был лучше, чем текущий драйвер, и вызывающий объект не указал флаг INSTALLFLAG_FORCE. |
Комментарии
UpdateDriverForPlugAndPlayDevices проверяет устройства в системе и пытается установить драйверы, указанные в FullInfPath , для всех устройств, соответствующих указанному значению HardwareId .
Поведение по умолчанию заключается в установке указанных драйверов только в том случае, если они лучше соответствуют установленным в данный момент драйверам, а указанные драйверы также лучше соответствуют любым драйверам в %SystemRoot%\inf. Дополнительные сведения см. в разделе Выбор драйверов в Windows.
UpdateDriverForPlugAndPlayDevices также можно использовать, чтобы определить, подключено ли устройство с указанным значением HardwareId . Дополнительные сведения см. в статье Создание приложения для установки устройств.
UpdateDriverForPlugAndPlayDevices отправляет запрос IRP_MN_QUERY_REMOVE_DEVICE указанному устройству, всем дочерним элементам устройства и всем другим устройствам, которые рекурсивно являются частью отношений удаления для устройства. Если какое-либо из этих устройств не выполняет запрос на удаление, UpdateDriverForPlugAndPlayDevices устанавливает флаг DI_NEEDREBOOT в элементе Flagsструктуры SP_DEVINSTALL_PARAMS для устройства. Сведения о связях удаления см. в запросе на IRP_MN_QUERY_DEVICE_RELATIONS .
Как правило, приложения установки устройств должны указывать значение NULL для bRebootRequired. Таким образом, при необходимости система инициирует перезагрузку. Приложение должно указывать значение указателя только в следующих случаях:
- Чтобы завершить установку, приложение должно несколько раз вызвать UpdateDriverForPlugAndPlayDevices .
- Приложение должно выполнять другие операции перед перезапуском (если это необходимо).
- Приложение является установщиком класса, который должен задать DI_NEEDREBOOT в SP_DEVINSTALL_PARAMS , если требуется перезагрузка.
Если функция возвращает ERROR_IN_WOW64 в 32-разрядном приложении, приложение выполняется в 64-разрядной системе, что запрещено. Дополнительные сведения см. в статье Установка устройств в 64-разрядных системах.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Microsoft Windows 2000 и более поздних версиях Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | newdev.h (включая Newdev.h) |
Библиотека | Newdev.lib |