Compartir vía


DIF_DETECT

Una solicitud de DIF_DETECT dirige un instalador para detectar dispositivos que no son PnP de una clase determinada y agregar los dispositivos al conjunto de información del dispositivo. Esta solicitud se usa para dispositivos que no son PnP.

Cuándo se envió

Cuando el Asistente para agregar hardware detecta dispositivos que no son PnP.

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. Hay una clase de configuración de dispositivo asociada a DeviceInfoSet.

DeviceInfoData
Ninguno

Parámetros de instalación de dispositivos
Hay parámetros de instalación de dispositivos asociados a DeviceInfoSet.

Parámetros de instalación de clases
Una estructura de SP_DETECTDEVICE_PARAMS está asociada a DeviceInfoSet. Los parámetros contienen una rutina de devolución de llamada a la que llama el instalador de clase para indicar el progreso de la operación de detección.

Salida del instalador

DeviceInfoSet
Un instalador agrega un elemento de información del dispositivo al DeviceInfoSet para cada dispositivo que detecta, independientemente de si un dispositivo se detectó e instaló previamente.

Parámetros de instalación de dispositivos
Un instalador puede modificar los parámetros de instalación del dispositivo para DeviceInfoSet o para los nuevos elementos de información del dispositivo que crea.

Valor devuelto del instalador

Si un co-instalador no detecta dispositivos, devuelve NO_ERROR de su paso de preprocesamiento. Si un coinserador detecta dispositivos, puede hacerlo durante el preprocesamiento o postprocesamiento y devolver NO_ERROR o un código de error win32.

Si un instalador de clase detecta dispositivos, devuelve NO_ERROR o un código de error win32 adecuado. Si un instalador de clase no controla esta solicitud DIF, devuelve ERROR_DI_DO_DEFAULT.

Controlador de código DIF predeterminado

Ninguno

Operación del instalador

En respuesta a una solicitud de DIF_DETECT un instalador puede detectar dispositivos de su clase de instalación.

Si un instalador detecta dispositivos, debe hacer al menos lo siguiente:

  • Llame a la rutina de devolución de llamada DetectProgressNotify en los parámetros de instalación de clase SP_DETECTDEVICE_PARAMS , si la detección puede tardar un período de tiempo notable.

  • Para cada dispositivo que detecta el instalador, debe:

    • Cree un elemento de información del dispositivo (SetupDiCreateDeviceInfo).

    • Proporcione información para la selección de controladores.

      El instalador puede seleccionar manualmente el controlador del dispositivo o el instalador puede establecer el identificador de hardware del dispositivo que Windows usará para buscar un INF para el dispositivo. Un instalador establece el identificador de hardware llamando a SetupDiSetDeviceRegistryProperty con un valor property de SPDRP_HARDWAREID.

    • Posiblemente establezca algunos parámetros de instalación de dispositivos.

  • Devuelve NO_ERROR para la detección correcta o devuelve un código de error win32.

Si uno o varios instaladores detectan dispositivos en respuesta a este código DIF, Windows compara la lista de dispositivos detectados con su lista actual de dispositivos. Si los instaladores detectaron un nuevo dispositivo, Windows intenta instalar el dispositivo. Si los instaladores omiten un dispositivo que aparece en la lista del programa de instalación, Windows normalmente quita el dispositivo.

Para detectar dispositivos que no son PnP durante la configuración del modo gui, un instalador debe controlar la solicitud de DIF_FIRSTTIMESETUP . El programa de instalación en modo GUI no envía una solicitud de DIF_DETECT al instalador.

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

DIF_DETECT

DIF_FIRSTTIMESETUP

SetupDiCreateDeviceInfo

SP_DETECTDEVICE_PARAMS

SP_DEVINSTALL_PARAMS