Función SetupDiCallClassInstaller (setupapi.h)

La función SetupDiCallClassInstaller llama al instalador de clase adecuado y a los coinstaladores registrados, con la solicitud de instalación especificada (código DIF).

Sintaxis

WINSETUPAPI BOOL SetupDiCallClassInstaller(
  [in]           DI_FUNCTION      InstallFunction,
  [in]           HDEVINFO         DeviceInfoSet,
  [in, optional] PSP_DEVINFO_DATA DeviceInfoData
);

Parámetros

[in] InstallFunction

La solicitud de instalación del dispositivo (solicitud DIF) para pasar a los coinstaladores y al instalador de clase. Los códigos DIF tienen el formato DIF_XXX y se definen en Setupapi.h. Consulte Códigos de función de instalación de dispositivos para obtener más información.

Nota Para determinadas solicitudes de DIF, el autor de la llamada debe ser miembro del grupo Administradores. Para estas solicitudes de DIF, este requisito aparece en la página de referencia del controlador predeterminado asociado.
 

[in] DeviceInfoSet

Identificador de un conjunto de información de dispositivo para el equipo local. Este conjunto contiene un elemento de instalación de dispositivo que representa el dispositivo para el que se va a realizar la función de instalación especificada.

[in, optional] DeviceInfoData

Puntero a una estructura de SP_DEVINFO_DATA que especifica el elemento de información del dispositivo en deviceInfoSet que representa el dispositivo para el que se va a realizar la función de instalación especificada. Este parámetro es opcional y se puede establecer en NULL. Si se especifica este parámetro, SetupDiCallClassInstaller realiza la función especificada en el elemento DeviceInfoData . Si DeviceInfoData es NULL, SetupDiCallClassInstaller llama a los instaladores para la clase de instalación asociada a DeviceInfoSet.

Valor devuelto

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

Cuando GetLastError devuelve ERROR_IN_WOW64, esto significa que la aplicación que realiza la llamada es una aplicación de 32 bits que intenta ejecutarse en un entorno de 64 bits, que no está permitido.

Comentarios

SetupDiCallClassInstaller llama al instalador de clase y a los coinstaladores registrados para un dispositivo o una clase de instalación de dispositivo. Esta función carga los instaladores si aún no se han cargado. La función también llama al controlador predeterminado para la solicitud DIF, si hay un controlador predeterminado y si los instaladores devuelven un estado que indica que se debe llamar al controlador predeterminado.

Las aplicaciones de instalación de dispositivos llaman a esta función con una variedad de códigos de función de instalación de dispositivos (códigos DIF). La función garantiza que se llame a todos los instaladores y controladores predeterminados adecuados, en el orden correcto, para una solicitud DIF determinada. Para obtener más información, consulte Control de códigos DIF.

Después de que SetupDiCallClassInstaller devuelva TRUE, la aplicación de instalación del dispositivo debe llamar a SetupDiGetDeviceInstallParams para obtener una estructura SP_DEVINSTALL_PARAMS . Si se establece la marca DI_NEEDREBOOT o DI_NEEDRESTART de la estructura, el autor de la llamada debe pedir al usuario que reinicie el sistema. Por ejemplo, el autor de la llamada puede hacerlo llamando a SetupPromptReboot.

Sin embargo, tenga en cuenta que una aplicación de instalación de dispositivos debe solicitar un reinicio del sistema una vez como máximo. Por lo tanto, cualquier aplicación de instalación de dispositivos que cree varias llamadas a SetupDiCallClassInstaller y SetupDiGetDeviceInstallParams debe guardar las marcas DI_NEEDREBOOT y DI_NEEDRESTART después de cada llamada. Sin embargo, debe preguntar al usuario solo después de que se devuelva la última llamada.

En respuesta a un código DIF proporcionado por SetupDiCallClassInstaller, los instaladores de clase y los coinstaladores pueden realizar operaciones que requieren que se reinicie el sistema. En tales situaciones, el instalador o el coins installer deben hacer lo siguiente:

  1. Llame a SetupDiGetDeviceInstallParams para obtener la estructura SP_DEVINSTALL_PARAMS .
  2. Establezca la marca DI_NEEDREBOOT o DI_NEEDRESTART en el miembro Flags de la estructura.
  3. Llame a SetupDiSetDeviceInstallParams, proporcionando la estructura de SP_DEVINSTALL_PARAMS actualizada, para guardar el miembro Flags revisado.
Después de que setupDiCallClassInstaller vuelva, la aplicación de instalación del dispositivo que la llamó debe llamar a SetupDiGetDeviceInstallParams, comprobar las marcas y solicitar un reinicio si es necesario.

La información del dispositivo especificada por DeviceInfoSet solo debe contener elementos para los dispositivos del equipo local.

Para obtener información sobre el diseño y el funcionamiento de los co-instaladores, consulte Escritura de un co-instalador.

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
Conjunto de API ext-ms-win-setupapi-classinstallers-l1-1-0 (introducido en Windows 8)

Consulte también

SP_DEVINFO_DATA