Función DiRollbackDriver (newdev.h)
La función DiRollbackDriver revierte el controlador instalado en un dispositivo especificado.
Sintaxis
BOOL DiRollbackDriver(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVINFO_DATA DeviceInfoData,
[in, optional] HWND hwndParent,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
Parámetros
[in] DeviceInfoSet
Identificador del conjunto de información del dispositivo que contiene un elemento de información del dispositivo que representa el dispositivo para el que se realiza la reversión del controlador.
[in] DeviceInfoData
Puntero a una estructura de SP_DEVINFO_DATA que representa el dispositivo específico en el conjunto de información del dispositivo especificado para el que se realiza la reversión del controlador.
[in, optional] hwndParent
Identificador de la ventana de nivel superior que DiRollbackDriver usa para mostrar cualquier componente de interfaz de usuario asociado a una reversión de controladores para el dispositivo especificado. Este parámetro es opcional y se puede establecer en NULL.
[in] Flags
Valor de tipo DWORD que se puede establecer en cero o ROLLBACK_FLAG_NO_UI.
Normalmente, esta marca debe establecerse en cero, en cuyo caso DiRollbackDriver no suprime los componentes de la interfaz de usuario predeterminados asociados a una reversión del controlador. Sin embargo, si esta marca se establece en ROLLBACK_FLAG_NO_UI, DiRollbackDriver suprime la visualización de los componentes de la interfaz de usuario asociados a una reversión del controlador.
[out, optional] NeedReboot
Puntero a un valor de tipo BOOL que DiRollbackDriver establece para indicar si se requiere un reinicio del sistema para completar la reversión. Este parámetro es opcional y puede ser NULL.
Si se proporciona el parámetro y se requiere un reinicio del sistema para completar la reversión, DiRollbackDriver establece el valor en TRUE. En este caso, el autor de la llamada debe pedir al usuario que reinicie el sistema. Si se proporciona este parámetro y no es necesario reiniciar el sistema para completar la instalación, DiRollbackDriver establece el valor en FALSE.
Si el parámetro es NULL y se requiere un reinicio del sistema para completar la reversión, DiRollbackDriver muestra un cuadro de diálogo de reinicio del sistema.
Para obtener más información sobre este parámetro, vea la siguiente sección Comentarios .
Valor devuelto
DiRollbackDriver devuelve TRUE si la función revierte correctamente el controlador del dispositivo; De lo contrario, DiRollbackDriver devuelve FALSE y el error registrado se puede recuperar realizando una llamada a GetLastError. Algunos de los valores de error más comunes que GetLastError podrían devolver son los siguientes:
Código devuelto | Descripción |
---|---|
|
El autor de la llamada no tiene privilegios de administrador. De forma predeterminada, Windows requiere que el autor de la llamada tenga privilegios de administrador para revertir un paquete de controladores. |
|
La aplicación que realiza la llamada es una aplicación de 32 bits que intenta ejecutarse en un entorno de 64 bits, que no está permitido. Para obtener más información, consulte Instalación de dispositivos en sistemas de 64 bits. |
|
El valor especificado para Flags no es igual a cero o ROLLBACK_FLAG_NO_UI. |
|
No se establece un controlador de copia de seguridad para el dispositivo. |
Comentarios
Si se establece un controlador de copia de seguridad instalado anteriormente para un dispositivo, una reversión de controladores para el dispositivo reemplaza al controlador que está instalado actualmente en el dispositivo por el controlador de copia de seguridad. Windows mantiene como máximo un controlador de copia de seguridad para un dispositivo. Windows establece un controlador como controlador de copia de seguridad para un dispositivo inmediatamente después de que el controlador esté instalado correctamente en el dispositivo y Windows determina que el dispositivo funciona correctamente. Sin embargo, si un controlador no se instala correctamente en un dispositivo o el dispositivo no funciona correctamente después de la instalación, Windows no establece el controlador como controlador de copia de seguridad para el dispositivo. Para obtener más información sobre la reversión de controladores, consulte información sobre Administrador de dispositivos en el Centro de ayuda y soporte técnico.
Si el dispositivo especificado tiene un controlador de copia de seguridad, DiRollbackDriver realiza las siguientes operaciones:
- Si Flags está establecido en cero, DiRollbackDriver solicita al usuario que confirme si se debe instalar el controlador de copia de seguridad. De lo contrario, si Flags está establecido en ROLLBACK_FLAG_NO_UI, DiRollbackDriver instala el controlador de copia de seguridad sin pedir al usuario que confirme la instalación del controlador de copia de seguridad.
- DiRollbackDriver instala el controlador de copia de seguridad. El controlador se instala si el controlador de copia de seguridad es una coincidencia mejor para el dispositivo que el controlador que está instalado actualmente en el dispositivo.
- Si el controlador reemplazado por el controlador de copia de seguridad no es un controlador de bandeja de entrada y no está instalado en ningún otro dispositivo del sistema, DiRollbackDriver quita el controlador del sistema. DiRollbackDriver quita el controlador del sistema porque se supone que un usuario reemplazará un controlador solo si hay un problema con el controlador.
En general, las aplicaciones de instalación deben establecer NeedReboot en NULL para que el sistema inicie automáticamente un reinicio del sistema si se requiere un reinicio para completar la reversión. Una aplicación debe proporcionar un puntero NeedReboot solo en los casos siguientes:
- La aplicación debe llamar a DiRollbackDriver varias veces para completar una instalación. En este caso, la aplicación debe registrar si alguna de las llamadas a DiRollbackDriver devuelve un valor TRUE NeedReboot y, si es así, pide al usuario que reinicie el sistema después de la llamada final a DiRollbackDriver.
- La aplicación debe realizar operaciones necesarias, aparte de llamar a DiRollbackDriver, antes de que se produzca un reinicio del sistema. Si se requiere un reinicio del sistema, la aplicación debe finalizar las operaciones necesarias y, a continuación, pedir al usuario que reinicie el sistema.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de Windows. |
Plataforma de destino | Escritorio |
Encabezado | newdev.h (incluya Newdev.h) |
Library | Newdev.lib |
Archivo DLL | Newdev.dll |