Функция DiRollbackDriver (newdev.h)
Функция DiRollbackDriver откатывает драйвер, установленный на указанном устройстве.
Синтаксис
BOOL DiRollbackDriver(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVINFO_DATA DeviceInfoData,
[in, optional] HWND hwndParent,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
Параметры
[in] DeviceInfoSet
Дескриптор набора сведений об устройстве , который содержит элемент сведений об устройстве, представляющий устройство, для которого выполняется откат драйвера.
[in] DeviceInfoData
Указатель на структуру SP_DEVINFO_DATA , представляющую конкретное устройство в указанном наборе сведений об устройстве, для которого выполняется откат драйвера.
[in, optional] hwndParent
Дескриптор окна верхнего уровня, которое DiRollbackDriver использует для отображения любого компонента пользовательского интерфейса, связанного с откатом драйвера для указанного устройства. Этот параметр является необязательным и может иметь значение NULL.
[in] Flags
Значение типа DWORD, которое может быть равно нулю или ROLLBACK_FLAG_NO_UI.
Как правило, этот флаг должен быть равен нулю, и в этом случае DiRollbackDriver не подавляет компоненты пользовательского интерфейса по умолчанию, связанные с откатом драйвера. Однако если для этого флага задано значение ROLLBACK_FLAG_NO_UI, DiRollbackDriver подавляет отображение компонентов пользовательского интерфейса, связанных с откатом драйвера.
[out, optional] NeedReboot
Указатель на значение типа BOOL, заданное DiRollbackDriver , чтобы указать, требуется ли перезагрузка системы для завершения отката. Этот параметр является необязательным и может иметь значение NULL.
Если параметр указан и для завершения отката требуется перезагрузка системы, DiRollbackDriver устанавливает значение TRUE. В этом случае вызывающий объект должен предложить пользователю перезапустить систему. Если этот параметр указан и для завершения установки не требуется перезапуск системы, DiRollbackDriver устанавливает значение FALSE.
Если параметр имеет значение NULL и для завершения отката требуется перезагрузка системы, DiRollbackDriver отображает диалоговое окно перезапуска системы.
Дополнительные сведения об этом параметре см. в следующем разделе Примечаний .
Возвращаемое значение
DiRollbackDriver возвращает значение TRUE , если функция успешно откатила драйвер для устройства; В противном случае DiRollbackDriver возвращает значение FALSE , а зарегистрированную ошибку можно получить, выполнив вызов GetLastError. Ниже приведены некоторые из наиболее распространенных значений ошибок, которые может возвращать GetLastError .
Код возврата | Описание |
---|---|
|
Вызывающий объект не имеет прав администратора. По умолчанию Windows требует, чтобы вызывающий объект был иметь права администратора для отката пакета драйвера. |
|
Вызывающее приложение — это 32-разрядное приложение, которое пытается выполнить в 64-разрядной среде, что запрещено. Дополнительные сведения см. в статье Установка устройств в 64-разрядных системах. |
|
Значение, указанное для параметра Flags , не равно нулю или ROLLBACK_FLAG_NO_UI. |
|
Драйвер резервного копирования не задан для устройства. |
Комментарии
Если для устройства установлен ранее установленный драйвер резервного копирования, откат драйвера для устройства заменяет драйвер, установленный в данный момент на устройстве, драйвером резервного копирования. Windows поддерживает не более одного драйвера резервного копирования для устройства. Windows устанавливает драйвер в качестве драйвера резервного копирования для устройства сразу после успешной установки драйвера на устройстве, и Windows определяет, что устройство работает правильно. Однако если драйвер не установлен на устройстве или устройство работает неправильно после установки, Windows не устанавливает драйвер в качестве драйвера резервного копирования для устройства. Дополнительные сведения о откате драйверов см. в разделе сведения о диспетчер устройств в центре справки и поддержки.
Если на указанном устройстве есть драйвер резервного копирования, DiRollbackDriver выполняет следующие операции:
- Если параметр Flags равен нулю, DiRollbackDriver предложит пользователю подтвердить, следует ли установить драйвер резервного копирования. В противном случае, если для параметра Flags задано значение ROLLBACK_FLAG_NO_UI, DiRollbackDriver установит драйвер резервного копирования, не запрашивая у пользователя подтверждение установки драйвера резервного копирования.
- DiRollbackDriver устанавливает драйвер резервного копирования. Драйвер устанавливается, если драйвер резервного копирования лучше подходит для устройства, чем драйвер, установленный на устройстве в данный момент.
- Если драйвер, заменяемый драйвером резервного копирования, не является драйвером папки "Входящие" и не установлен на других устройствах в системе, DiRollbackDriver удаляет драйвер из системы. DiRollbackDriver удаляет драйвер из системы, так как предполагается, что пользователь заменит драйвер только при наличии проблем с драйвером.
Как правило, приложения установки должны задать для параметра NeedRebootзначение NULL , чтобы система автоматически инициировала перезагрузку системы, если для завершения отката требуется перезагрузка. Приложение должно предоставлять указатель NeedReboot только в следующих случаях:
- Чтобы завершить установку, приложение должно вызвать DiRollbackDriver несколько раз. В этом случае приложение должно зафиксировать, возвращается ли значение TRUENeedReboot любым из вызовов DiRollbackDriver , и, если да, предложить пользователю перезапустить систему после возврата окончательного вызова DiRollbackDriver .
- Приложение должно выполнять необходимые операции, кроме вызова DiRollbackDriver, прежде чем произойдет перезагрузка системы. Если требуется перезагрузка системы, приложение должно завершить необходимые операции, а затем предложить пользователю перезапустить систему.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | newdev.h (включая Newdev.h) |
Библиотека | Newdev.lib |
DLL | Newdev.dll |