Функция DiUninstallDriverW (newdev.h)

Функция DiUninstallDriver удаляет пакет драйвера с любых устройств, на которых он установлен, устанавливая эти устройства с другим пакетом соответствующего драйвера (если он доступен) или драйвер null, если другой соответствующий пакет драйверов недоступен. Затем указанный пакет драйверов удаляется из хранилища драйверов.

Синтаксис

BOOL DiUninstallDriverW(
  [in, optional]  HWND    hwndParent,
  [in]            LPCWSTR InfPath,
  [in]            DWORD   Flags,
  [out, optional] PBOOL   NeedReboot
);

Параметры

[in, optional] hwndParent

Дескриптор окна верхнего уровня, который DiUninstallDriver должен использовать для отображения любого компонента пользовательского интерфейса, связанного с удалением драйвера. Этот параметр является необязательным и может иметь значение NULL.

[in] InfPath

Указатель на строку с завершением NULL, которая предоставляет полный путь к INF-файлу для пакета драйвера.

[in] Flags

Значение типа DWORD, указывающее ноль или один или несколько следующих флагов: DIURFLAG_NO_REMOVE_INF. Как правило, этот флаг должен быть равен нулю.

Если этот флаг равен нулю, DiUninstallDriver удаляет пакет драйвера с любых устройств, на которых он установлен, устанавливая эти устройства с другим пакетом соответствующего драйвера , если он доступен, или драйвер NULL, если другой соответствующий пакет драйверов недоступен. Однако если для этого флага задано значение DIURFLAG_NO_REMOVE_INF, DiUninstallDriver удаляет пакет драйверов с любых устройств, на которые он установлен, но не удаляет пакет драйверов из хранилища драйверов.

Осторожностью: Принудительное удаление пакета драйверов может привести к замене более совместимого или более нового пакета драйверов менее совместимым или более старым драйвером.
 
Сведения о том, как Windows выбирает пакет драйверов для устройства, см. в разделе Выбор драйверов в Windows.

[out, optional] NeedReboot

Указатель на значение типа BOOL, заданное DiUninstallDriver , чтобы указать, требуется ли перезагрузка системы для завершения удаления. Этот параметр является необязательным и может иметь значение NULL. Если параметр указан и для завершения удаления требуется перезагрузка системы, DiUninstallDriver устанавливает значение TRUE. В этом случае вызывающий объект должен предложить пользователю перезапустить систему. Если этот параметр указан и для завершения удаления не требуется перезапуск системы, DiUninstallDriver устанавливает значение FALSE. Если параметр имеет значение NULL и для завершения удаления требуется перезагрузка системы, DiUninstallDriver отображает диалоговое окно перезапуска системы. Дополнительные сведения об этом параметре см. в следующем разделе Примечаний .

Возвращаемое значение

DiUninstallDriver возвращает значение TRUE , если функция успешно удаляет пакет драйверов с любых устройств, на которые он установлен, и успешно удаляется из хранилища драйверов системы. Если пакет драйверов не был успешно удален из хранилища драйверов, DiUninstallDriver возвращает значение FALSE , а зарегистрированную ошибку можно получить, выполнив вызов GetLastError. Ниже приведены некоторые из наиболее распространенных значений ошибок, которые может возвращать GetLastError .

Код возврата Описание
ERROR_ACCESS_DENIED
Вызывающий объект не имеет прав администратора. По умолчанию Windows требует, чтобы вызывающий объект был иметь права администратора для удаления пакета драйверов из хранилища драйверов.
ERROR_FILE_NOT_FOUND
Путь к указанному INF-файлу не существует.
ERROR_INVALID_FLAGS
Значение, указанное для параметра Flags , не равно нулю или DIURFLAG_NO_REMOVE_INF.
ERROR_IN_WOW64
Вызывающее приложение — это 32-разрядное приложение, которое пытается выполнить в 64-разрядной среде, что запрещено. Дополнительные сведения см. в статье Установка устройств в 64-разрядных системах.

Комментарии

Как правило, приложение удаления должно задать для параметра NeedRebootзначение NULL , чтобы направить DiUninstallDriver , чтобы предложить пользователю перезапустить систему, если для завершения удаления требуется перезагрузка. Приложение должно предоставлять указатель NeedReboot только в следующих случаях:

  • Чтобы завершить удаление, приложение должно вызвать DiUninstallDriver несколько раз. В этом случае приложение должно зафиксировать, возвращается ли значение TRUENeedReboot любым из вызовов DiUninstallDriver , и, если да, предложите пользователю перезапустить систему после окончательного вызова DiUninstallDriver .
  • Перед перезагрузкой системы приложение должно выполнять необходимые операции, кроме вызова DiUninstallDriver. Если требуется перезагрузка системы, приложение должно завершить необходимые операции, а затем предложить пользователю перезапустить систему.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 10 версии 1703 и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть newdev.h (включая Newdev.h)
Библиотека Newdev.lib

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

DiUninstallDevice