Función DiUninstallDriverA (newdev.h)

La función DiUninstallDriver quita un paquete de controladores de cualquier dispositivo en el que se instala mediante la instalación de esos dispositivos con otro paquete de controladores coincidente, si está disponible, o el controlador NULL si no hay ningún otro paquete de controladores coincidente disponible. A continuación, el paquete de controladores especificado se quita del almacén de controladores.

Sintaxis

BOOL DiUninstallDriverA(
  [in, optional]  HWND   hwndParent,
  [in]            LPCSTR InfPath,
  [in]            DWORD  Flags,
  [out, optional] PBOOL  NeedReboot
);

Parámetros

[in, optional] hwndParent

Identificador de la ventana de nivel superior que DiUninstallDriver debe usar para mostrar cualquier componente de interfaz de usuario asociado a la desinstalación del controlador. Este parámetro es opcional y se puede establecer en NULL.

[in] InfPath

Puntero a una cadena terminada en NULL que proporciona la ruta de acceso completa del archivo INF para el paquete de controladores.

[in] Flags

Valor de tipo DWORD que especifica cero o uno o varios de los siguientes marcadores: DIURFLAG_NO_REMOVE_INF. Normalmente, esta marca debe establecerse en cero.

Si esta marca es cero, DiUninstallDriver quita el paquete de controladores de cualquier dispositivo en el que se instala mediante la instalación de esos dispositivos con otro paquete de controladores coincidente, si está disponible, o el controlador NULL si no hay ningún otro paquete de controladores coincidente disponible. Sin embargo, si esta marca está establecida en DIURFLAG_NO_REMOVE_INF, DiUninstallDriver quita el paquete de controladores de los dispositivos en los que está instalado, pero no quita el paquete de controladores del Almacén de controladores.

Precaución: Forzar la desinstalación del paquete de controladores puede dar lugar a reemplazar un paquete de controladores más compatible o más reciente por un controlador menos compatible o anterior.
 

Para obtener información sobre cómo Windows selecciona un paquete de controladores para un dispositivo, consulte Cómo Selecciona Windows Controladores.

[out, optional] NeedReboot

Puntero a un valor de tipo BOOL que DiUninstallDriver establece para indicar si se requiere un reinicio del sistema para completar la desinstalació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 desinstalación, DiUninstallDriver 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 desinstalación, DiUninstallDriver establece el valor en FALSE. Si el parámetro es NULL y se requiere un reinicio del sistema para completar la desinstalación, DiUninstallDriver 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

DiUninstallDriver devuelve TRUE si la función quita correctamente el paquete de controladores de los dispositivos en los que está instalado y se quita correctamente del almacén de controladores del sistema. Si el paquete de controladores no se desinstala correctamente del almacén de controladores, DiUninstallDriver 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
ERROR_ACCESS_DENIED
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 desinstalar un paquete de controladores del almacén de controladores.
ERROR_FILE_NOT_FOUND
La ruta de acceso del archivo INF especificado no existe.
ERROR_INVALID_FLAGS
El valor especificado para Flags no es igual a cero o DIURFLAG_NO_REMOVE_INF.
ERROR_IN_WOW64
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.

Comentarios

En general, una aplicación de desinstalación debe establecer NeedReboot en NULL para dirigir a DiUninstallDriver para pedir al usuario que reinicie el sistema si se requiere un reinicio para completar la eliminación. Una aplicación debe proporcionar un puntero NeedReboot solo en los casos siguientes:

  • La aplicación debe llamar a DiUninstallDriver varias veces para completar una desinstalación. En este caso, la aplicación debe registrar si alguna de las llamadas a DiUninstallDriver devuelve un valor TRUE NeedReboot y, si es así, pide al usuario que reinicie el sistema después de la llamada final a DiUninstallDriver.
  • La aplicación debe realizar operaciones necesarias, aparte de llamar a DiUninstallDriver, 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 10 versión 1703 y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado newdev.h (incluya Newdev.h)
Library Newdev.lib

Consulte también

DiUninstallDevice