Compartir a través de


Función DiUninstallDriverW (newdev.h)

La función DiUninstallDriver quita un paquete de controladores de los dispositivos en los 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 de .

Sintaxis

BOOL DiUninstallDriverW(
  [in, optional]  HWND    hwndParent,
  [in]            LPCWSTR 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 de .

[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 los dispositivos en los 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 Windows selecciona 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 se puede 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, consulte la siguiente sección Comentarios.

Valor devuelto

DiUninstallDriver devuelve TRUE si la función quita correctamente el paquete del controlador 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 se puede recuperar el error registrado realizando una llamada a GetLastError. Algunos de los valores de error más comunes que GetLastError pueden 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 de .
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.

Observaciones

En general, una aplicación de desinstalación debe establecer NeedReboot en NULL para dirigir 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 TRUE NeedRe boot devuelve el valor de cualquiera de las llamadas a DiUninstallDriver 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 Valor
cliente mínimo admitido Disponible en Windows 10 versión 1703 y versiones posteriores de Windows.
de la plataforma de destino de Escritorio
encabezado de newdev.h (incluya Newdev.h)
biblioteca de Newdev.lib

Consulte también

DiUninstallDevice