Función SetupDiInstallDevice (setupapi.h)

La función SetupDiInstallDevice es el controlador predeterminado para la solicitud de instalación de DIF_INSTALLDEVICE .

Sintaxis

WINSETUPAPI BOOL SetupDiInstallDevice(
  [in]      HDEVINFO         DeviceInfoSet,
  [in, out] PSP_DEVINFO_DATA DeviceInfoData
);

Parámetros

[in] DeviceInfoSet

Identificador del conjunto de información del dispositivo para el sistema local que contiene un elemento de información del dispositivo que representa el dispositivo que se va a instalar.

[in, out] DeviceInfoData

Puntero a una estructura de SP_DEVINFO_DATA que especifica un elemento de información del dispositivo en DeviceInfoSet. Se trata de un parámetro IN-OUT porque DeviceInfoData.DevInst puede actualizarse con un nuevo valor de identificador tras la devolución.

Valor devuelto

La función devuelve TRUE si se realiza correctamente. De lo contrario, devuelve FALSE y el error registrado se puede recuperar con una llamada a GetLastError.

Comentarios

SetupDiInstallDevice instala un controlador desde el archivo INF. La definición de SetupAPI del "controlador" es realmente un "nodo de controlador". Por lo tanto, cuando esta función instala un controlador, también instala los elementos de la lista siguiente:

  • Los servicios del dispositivo.
  • Los archivos del controlador.
  • Coins instaladores específicos del dispositivo (si los hay).
  • Proveedores de páginas de propiedades (si existen).
  • Applets del panel de control (si existe).
Esta función también registra las interfaces de dispositivo necesarias.

Una instalación correcta incluye, entre otros, los pasos siguientes:

  • Cree una clave de controlador en el Registro y escriba las entradas adecuadas (como InfPath y ProviderName).
  • Busque y procese la sección INF DDInstall del dispositivo. La sección puede ser específica del sistema operativo o la arquitectura. Las entradas AddReg y DelReg de la sección DDInstall se dirigen a la clave de software del dispositivo. Busque y procese el DDInstall. Sección HW cuyas entradas AddReg y DelReg se dirigen a la clave de hardware del dispositivo. Busque y procese la sección INF DDInstall.LogConfigOverride, si está presente, para proporcionar una configuración de invalidación para el dispositivo. Busque y procese la sección INF DDInstall.Services para agregar servicios para el dispositivo (y potencialmente quite los servicios antiguos que ya no sean necesarios).
  • Copie el archivo INF en el directorio INF del sistema.
  • Posiblemente realice las otras operaciones de archivo, en función de la configuración de la marca en los parámetros de instalación del dispositivo.

    Si la marca DI_NOFILECOPY y la marca DI_NOVCP están claras, realice las operaciones de archivo especificadas en la sección DDInstall . Si se establece la marca DI_NOVCP, pone en cola las operaciones de archivo.

    Si se establece la marca DI_NOFILECOPY, no copie los archivos. Esta marca podría establecerse si, por ejemplo, ya se realizó una operación de DIF_INSTALLDEVICEFILES para esta instalación del dispositivo.

  • Cargue los controladores para el dispositivo. Esto incluye el controlador de función y los controladores de filtro superior o inferior.
  • Llame a las rutinas AddDevice de los controladores.
  • Inicie el dispositivo enviando un paquete de solicitud de E/S (IRP ) de IRP_MN_START_DEVICE .
Windows no inicia el dispositivo si la marca DI_NEEDRESTART, DI_NEEDREBOOT o DI_DONOTCALLCONFIGMG está establecida en la estructura de SP_DEVINSTALL_PARAMS .

Un instalador de clase debe devolver ERROR_DI_DO_DEFAULT o llamar a esta función al controlar una solicitud de DIF_INSTALLDEVICE . Esta función realiza muchas tareas para la instalación de dispositivos y esa lista de tareas se puede expandir en futuras versiones. Si un instalador de clase realiza la instalación del dispositivo sin llamar a esta función, es posible que el instalador de clase no funcione correctamente en versiones futuras del sistema operativo.

Si Windows no encuentra un archivo INF para el dispositivo, enviará DIF_INSTALLDEVICE en un intento de instalar un controlador NULL. SetupDiInstallDevice instala un controlador null solo si el dispositivo admite el modo sin formato o es un dispositivo que no es PnP (notificado por IoReportDetectedDevice). Para obtener más información, consulte DIF_INSTALLDEVICE.

Si la marca DI_FLAGSEX_SETFAILEDINSTALL se establece en la estructura SP_DEVINSTALL_PARAMS , SetupDiInstallDevice solo establece la marca FAILEDINSTALL en el valor del Registro ConfigFlags del dispositivo.

Nota Solo un instalador de clase debe llamar a SetupDiInstallDevice y solo en aquellas situaciones en las que el instalador de clase debe realizar operaciones de instalación de dispositivos después de que SetupDiInstallDevice complete la operación de instalación del dispositivo predeterminada. En tales situaciones, el instalador de clase debe llamar directamente a SetupDiInstallDevice cuando el instalador procesa una solicitud de DIF_INSTALLDEVICE. Para obtener más información sobre cómo llamar al controlador predeterminado, vea Llamar a controladores de código DIF predeterminados.
 
El autor de la llamada de SetupDiInstallDevice debe ser miembro del grupo Administradores.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Microsoft Windows 2000 y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado setupapi.h (incluya Setupapi.h)
Library Setupapi.lib
Archivo DLL Setupapi.dll

Consulte también

DIF_INSTALLDEVICE

SetupDiCallClassInstaller

SetupDiInstallDriverFiles