Control de códigos DIF

Nota:

Las características descritas en esta sección no son compatibles y los paquetes de controladores que los contienen ya no recibirán una firma de Microsoft. Consulte Uso de un archivo INF universal.

Las aplicaciones de instalación de dispositivos envían códigos de función de instalación de dispositivos (códigos DIF) a instaladores llamando a SetupDiCallClassInstaller. Esta función, a su vez, llama a la función de punto de entrada del instalador. Para obtener una descripción de los puntos de entrada del instalador, consulte:

Interfaz de coinserción

La página de referencia de cada código DIF contiene las secciones siguientes:

Cuando se envía
Describe las horas habituales en las que, y por qué, una aplicación de instalación de dispositivos envía esta solicitud DIF.

Quién controla
Especifica qué instaladores pueden controlar esta solicitud. Los instaladores incluyen instaladores de clase, co-instaladores de clase (coinserciones para toda la clase) y co-instaladores de dispositivos (co-instaladores específicos del dispositivo).

Entrada del instalador
Además del código DIF, SetupDiCallClassInstaller proporciona información adicional relevante para la solicitud concreta. Consulte la página de referencia de cada código DIF para obtener más información sobre la información que se proporciona con cada solicitud. La lista siguiente contiene una descripción general de los parámetros de entrada adicionales y enumera las funciones de instalación de dispositivos (funciones SetupDiXxx ) a las que los instaladores pueden llamar para controlar los parámetros:

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

El identificador es opaco. Use el identificador, por ejemplo, para identificar la información del dispositivo establecida en llamadas a las funciones SetupDiXxx .

DeviceInfoSet podría tener una clase de configuración de dispositivo asociada. Si es así, llame a SetupDiGetDeviceInfoListClass para obtener el GUID de clase.

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

Parámetros de instalación de dispositivos
Estos parámetros indirectos proporcionan información para la instalación del dispositivo en una estructura de SP_DEVINSTALL_PARAMS . Si DeviceInfoData no es NULL, hay parámetros de instalación de dispositivos asociados a DeviceInfoData. Si DeviceInfoData es NULL, los parámetros de instalación del dispositivo se asocian a DeviceInfoSet.

Llame a SetupDiGetDeviceInstallParams para obtener los parámetros de instalación del dispositivo.

Parámetros de instalación de clases
Los parámetros indirectos opcionales son específicos de la solicitud DIF determinada. Estos son básicamente "parámetros de solicitud DIF". Por ejemplo, los parámetros de instalación de clase para una solicitud de instalación de DIF_REMOVE se encuentran en una estructura de SP_REMOVEDEVICE_PARAMS.

Cada estructura SP_XXX_PARAMS comienza con una estructura de SP_CLASSINSTALL_HEADER de tamaño fijo.

Llame a SetupDiGetClassInstallParams para obtener los parámetros de instalación de clase.

Si una solicitud DIF tiene parámetros de instalación de clases, hay un conjunto de parámetros asociados a DeviceInfoSet y otro conjunto de parámetros asociados a DeviceInfoData (si la solicitud DIF especifica DeviceInfoData). SetupDiGetClassInstallParams devuelve los parámetros más específicos disponibles.

Contexto
Los co-instaladores tienen un parámetro de contexto opcional.

Salida del instalador
Describe la salida esperada para este código DIF.

Si un instalador modifica los parámetros de instalación del dispositivo, el instalador debe llamar a SetupDiSetDeviceInstallParams para aplicar los cambios antes de devolverlos. Del mismo modo, si un instalador modifica los parámetros de instalación de clase para el código DIF, el instalador debe llamar a SetupDiSetClassInstallParams.

Valor devuelto del instalador
Especifica los valores devueltos adecuados para el código DIF. Consulte la ilustración siguiente para obtener más información sobre los valores devueltos.

Controlador de código DIF predeterminado
Especifica la función SetupDiXxx que lleva a cabo las operaciones predeterminadas definidas por el sistema para el código DIF. No todos los códigos DIF tienen un controlador predeterminado. A menos que se realice un instalador de coinstalador o un instalador de clase para evitar que se llame al controlador predeterminado, SetupDiCallClassInstaller llama al controlador predeterminado para un código DIF después de llamar al instalador de clase (pero antes de llamar a los coinstaladores registrados para el postprocesamiento).

Si un instalador de clase controla correctamente un código DIF y SetupDiCallClassInstaller debe llamar posteriormente al controlador predeterminado, el instalador de clase devuelve ERROR_DI_DO_DEFAULT.

Si el instalador de clase controla correctamente un código DIF, incluida la llamada directa al controlador predeterminado, el instalador de clase debe devolver NO_ERROR y SetupDiCallClassInstaller no volverá a llamar al controlador predeterminado. Tenga en cuenta que el instalador de clase puede llamar directamente al controlador predeterminado, pero el instalador de clase nunca debe intentar reemplazar las operaciones del controlador predeterminado.

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.

Los co-instaladores no deben llamar a controladores de código DIF predeterminados.

Operación del instalador
Describe los pasos típicos que un instalador puede llevar a cabo para controlar la solicitud DIF.

Consulte también
Enumera los orígenes de información relacionada.

En la ilustración siguiente se muestra la secuencia de eventos en SetupDiCallClassInstaller para procesar un código DIF.

diagrama que ilustra el flujo de procesamiento de código dif en setupdicallclassinstaller.

El sistema operativo realiza algunas operaciones para cada código DIF. Los coinstaladores y instaladores de clase proporcionados por el proveedor pueden participar en las actividades de instalación. Tenga en cuenta que SetupDiCallClassInstaller llama a co-installers que se registraron para el postprocesamiento incluso si se produce un error en el código DIF.