Функция 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 удаляет пакет драйверов с любых устройств, на которые он установлен, но не удаляет пакет драйвера из хранилища драйверов.
[out, optional] NeedReboot
Указатель на значение типа BOOL, которое DiUninstallDriver задает значение, указывающее, требуется ли перезагрузка системы для завершения удаления. Этот параметр является необязательным и может быть null. Если параметр указан, а для завершения удаления требуется перезагрузка системы, DiUninstallDriver задает значение TRUE. В этом случае вызывающий объект должен заставить пользователя перезапустить систему. Если этот параметр указан, а для завершения удаления не требуется перезагрузка системы, DiUninstallDriver задает значение FALSE. Если параметр null и для завершения удаления требуется перезагрузка системы, DiUninstallDriver отобразит диалоговое окно перезагрузки системы. Дополнительные сведения об этом параметре см. в следующем разделе Примечания.
Возвращаемое значение
DiUninstallDriver возвращает TRUE, если функция успешно удаляет пакет драйвера с любых устройств, на которые он установлен, и успешно удаляется из хранилища драйверов системы. Если пакет драйверов не удален из хранилища драйверов, DiUninstallDriver возвращает false, а ошибка журнала может быть получена путем вызова GetLastError. Ниже приведены некоторые распространенные значения ошибок, которые GetLastError:
Возвращаемый код | Описание |
---|---|
|
Вызывающий объект не имеет прав администратора. По умолчанию Windows требует, чтобы вызывающий объект имеет права администратора, чтобы удалить пакет драйвера |
|
Путь к указанному INF-файлу не существует. |
|
Значение, указанное для флагов , не равно нулю или DIURFLAG_NO_REMOVE_INF. |
|
Вызывающее приложение — это 32-разрядное приложение, которое пытается выполнить в 64-разрядной среде, которая не допускается. Дополнительные сведения см. в разделе Установка устройств на 64-разрядных системах. |
Замечания
В общем случае приложение удаления должно задать NeedRebootNULL для прямого DiUninstallDriver, чтобы запросить пользователю перезапустить систему, если для завершения удаления требуется перезагрузка. Приложение должно предоставить указатель NeedReboot только в следующих случаях:
- Приложение должно вызывать DiUninstallDriver несколько раз, чтобы завершить удаление. В этом случае приложение должно записать, возвращается ли значение TRUENeedReboot любым из вызовов DiUninstallDriver и, если да, предложите пользователю перезапустить систему после окончательного вызова DiUninstallDriver.
- Приложение должно выполнять необходимые операции, кроме вызова DiUninstallDriver, прежде чем будет выполняться перезагрузка системы. Если требуется перезагрузка системы, приложение должно завершить необходимые операции, а затем предложите пользователю перезапустить систему.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows 10 версии 1703 и более поздних версиях Windows. |
целевая платформа | Настольный |
заголовка | newdev.h (include Newdev.h) |
библиотеки |
Newdev.lib |