Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция 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 |