Compartir a través de


DIF_SELECTBESTCOMPATDRV

Nota

Esta solicitud está en desuso en Windows 10 versión 1703 (Redstone 2). En versiones más recientes de Windows, esta devolución de llamada ya no se invoca.

Una solicitud de DIF_SELECTBESTCOMPATDRV permite a un instalador seleccionar el mejor controlador de la lista de controladores compatibles del elemento de información del dispositivo.

Cuándo se envió

Cuando el sistema operativo se prepara para instalar un nuevo dispositivo PnP o está realizando una operación de controlador de cambios en un dispositivo PnP.

Esta solicitud DIF se usa normalmente durante una configuración de PnP. Si un dispositivo se instala manualmente, Windows envía una solicitud de DIF_SELECTDEVICE .

Quién controla

Co-instalador de clase

Puede controlar

Instalador co-instalador del dispositivo

No controla

Instalador de clase

Puede controlar

Entrada del instalador

DeviceInfoSet
Proporciona un identificador al conjunto de información del dispositivo que contiene el dispositivo.

DeviceInfoData
Proporciona un puntero a una estructura de SP_DEVINFO_DATA que identifica el dispositivo en el conjunto de información del dispositivo.

Parámetros de instalación de dispositivos
Hay parámetros de instalación de dispositivos (SP_DEVINSTALL_PARAMS) asociados a DeviceInfoData.

Parámetros de instalación de clases
None

Salida del instalador

Parámetros de instalación de dispositivos
Un instalador puede modificar los parámetros de instalación del dispositivo. Sin embargo, normalmente no lo hacen al controlar esta solicitud DIF.

DeviceInfoData
Como efecto secundario, un instalador puede modificar la lista de controladores asociada a DeviceInfoData, en particular, el SP_DRVINSTALL_PARAMS.

Valor devuelto del instalador

Un co-instalador puede devolver NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED o un código de error Win32.

Si un instalador de clase controla correctamente esta solicitud y SetupDiCallClassInstaller debe llamar posteriormente al controlador predeterminado, el instalador de clase devuelve ERROR_DI_DO_DEFAULT.

Si el instalador de clase controla correctamente esta solicitud, incluida la llamada directa al controlador predeterminado, el instalador de clase debe devolver NO_ERROR y SetupDiCallClassInstaller no volverá a llamar al controlador predeterminado.

Nota El instalador de clase puede llamar directamente al controlador predeterminado, pero el instalador de clase nunca debe intentar reemplazar las operaciones del controlador predeterminado.

Para obtener más información sobre cómo llamar al controlador predeterminado, vea Llamar a controladores de código DIF predeterminados.

Si el instalador de clase encuentra un error, el instalador debe devolver un código de error win32 adecuado y SetupDiCallClassInstaller no llamará posteriormente al controlador predeterminado.

Controlador de código DIF predeterminado

SetupDiSelectBestCompatDrv

Operación del instalador

Un instalador controla esta solicitud de DIF para participar en la selección de un controlador para un dispositivo PnP. Normalmente, un instalador responde a esta solicitud DIF de una de las siguientes maneras:

  • No haga nada.

    Si un instalador no tiene requisitos especiales de selección, no hace nada en respuesta a esta solicitud DIF. Un instalador de clase devuelve ERROR_DI_DO_DEFAULT y un co-instalador devuelve NO_ERROR.

  • Modifique los parámetros de uno o varios controladores de la lista de controladores.

    Por ejemplo, un instalador podría quitar un controlador de consideración para el dispositivo marcandolo DNF_BAD_DRIVER. Un instalador modifica los parámetros del controlador siguiendo estos pasos:

    1. Obtenga la información sobre el primer controlador de la lista llamando a SetupDiEnumDriverInfo y SetupDiGetDriverInstallParams. Si procede, modifique los parámetros del controlador y aplique el cambio mediante una llamada a SetupDiSetDriverInstallParams.

      Si un controlador es una opción en el peor de los casos, establezca el rango del controlador en 0xFFFF o superior en los parámetros de instalación del controlador. Consulte Cómo Selecciona Windows Controladores para obtener más información.

    2. Repita el paso anterior hasta que haya procesado todos los controladores de la lista. Asegúrese de incrementar el parámetro MemberIndex a SetupDiEnumDriverInfo como se describe en la página de referencia de esa función.

    Una vez que un instalador de clase modifica la lista de controladores, devuelve ERROR_DI_DO_DEFAULT. Si un co-instalador modifica la lista de controladores, debe hacerlo en el preprocesamiento y devolver NO_ERROR.

  • Seleccione el mejor controlador para el dispositivo.

    Esta acción es menos común, pero un instalador puede elegir el mejor controlador para el dispositivo. Este instalador examinaría los datos de cada controlador, elegiría un controlador y llamaría a SetupDiSetSelectedDriver para establecer el controlador. Una vez que un instalador establece el controlador seleccionado, devuelve NO_ERROR.

    Si un co-instalador selecciona un controlador, debe hacerlo en el posprocesamiento.

Para obtener más información sobre los códigos DIF, consulte Control de códigos DIF.

Requisitos

Versión

Compatible con Microsoft Windows 2000 y versiones posteriores de Windows.

Encabezado

Setupapi.h (incluir Setupapi.h)

Consulte también

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS