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).
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 .
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.
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 |