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


Функция 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
Значение, указанное для флагов , не равно нулю или DIURFLAG_NO_REMOVE_INF.
ERROR_IN_WOW64
Вызывающее приложение — это 32-разрядное приложение, которое пытается выполнить в 64-разрядной среде, которая не допускается. Дополнительные сведения см. в разделе Установка устройств на 64-разрядных системах.

Замечания

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows 10 версии 1703 и более поздних версиях Windows.
целевая платформа Настольный
заголовка newdev.h (include Newdev.h)
библиотеки Newdev.lib

См. также

DiUninstallDevice