Compartir vía


Eliminación de coinstaladores de paquetes de controladores

Precaución

A partir de enero de 2023, los paquetes de controladores que contienen un co-instalador ya no están firmados por el portal del Centro para desarrolladores de hardware. Para obtener más información sobre el requisito, consulte Especificaciones y directivas del Programa de compatibilidad de hardware de Windows, específicamente las directivas de la versión 22H2, sección Device.DevFund.INF.Declarative.

En esta página se abordan las razones comunes por las que los co-instaladores están presentes en un paquete de controladores y ofrece mecanismos para realizar la misma tarea sin un co-instalador.

Instaladores de WDF y WinUSB

El co-instalador de WDF y el co-instalador de WinUSB no son necesarios en ningún sistema que ejecute Windows 10 y versiones posteriores. Las referencias del co-instalador de WDF se pueden quitar sin ningún trabajo adicional. Se pueden quitar las referencias del co-instalador de WinUSB y se debe hacer referencia a WinUSB desde el INF del paquete de controladores mediante las directivas Include y Needs.

Guía del paquete de controladores winUSB

Instalación de software que presenta la interfaz de usuario

En lugar de iniciar una aplicación durante una instalación, proporcione una aplicación Plataforma universal de Windows que se instala mediante una directiva AddSoftware de una sección DDInstall.Software del paquete de controladores INF.

Para obtener más información, consulte Emparejamiento de un controlador con una aplicación de Plataforma universal de Windows (UWP). Se admite una directiva AddSoftware en Windows 10, versión 1703 y versiones posteriores de Windows.

Para obtener más información, consulte Instalación de software asociado a continuación.

Establecimiento de nombres descriptivos de dispositivos

Archivo INF

Un paquete de controladores INF puede establecer el nombre descriptivo del dispositivo de la siguiente manera:

[DDInstall.HW]
AddReg = FriendlyName_AddReg

[FriendlyName_AddReg]
HKR,,FriendlyName,, "Device Friendly Name"

Tiempo de ejecución

El nombre descriptivo se puede establecer mediante el controlador durante el IRP de inicio o la fase PrepareHardware estableciendo la propiedad DEVPKEY_Device_FriendlyName con una de las SIGUIENTES API:

Otras configuraciones o configuraciones del dispositivo:

Cuando sea posible, el controlador puede cambiar la configuración y la configuración del dispositivo dentro del controlador Iniciar IRP o la fase PrepareHardware . Al modificar el estado en tiempo de ejecución, el controlador debe seguir los requisitos de aislamiento del paquete de controladores. Estos requisitos contienen las instrucciones sobre la configuración del controlador y el diseño de estado y ayudan a probar el controlador a prueba de futuro, lo que hace que sea más resistente a los cambios externos, sea más fácil de actualizar y sea más sencillo de instalar.

Para la configuración y la configuración que no se pueden establecer dentro del propio controlador, un paquete de controladores también puede incluir componentes en tiempo de ejecución en modo de usuario que modifican la configuración y la configuración. Puede ser una aplicación orientada al usuario o un servicio Win32 que actualice la configuración. Para obtener información sobre cómo incluir software en modo de usuario para su uso con un dispositivo, consulta Usar un archivo INF de componentes.

Si se usa un componente persistente como un servicio, asegúrese de que su funcionalidad es necesaria y no se puede realizar de forma menos intensiva en recursos, como dentro de un paquete de controladores INF o dentro del propio controlador. Para obtener información sobre cómo asegurarse de que un servicio solo se ejecuta cuando los dispositivos pertinentes están conectados, consulta Desencadenadores de servicio, servicios Win32 que interactúan con dispositivos y Registro para notificaciones de interfaz de dispositivo. El servicio también debe cumplir los requisitos más recientes, por ejemplo pasando validador de API.

Instalación de software asociado

La parte "Componentized" de los requisitos del controlador DCH introdujo un concepto denominado SoftwareComponent, que es un mecanismo para desacoplar la instalación de un controlador de dispositivo de su software asociado. Cuando inf crea un componente de software, creará automáticamente un dispositivo secundario que se asigna al componente de software. Este dispositivo secundario existirá con el fin de instalar el software asociado al dispositivo primario. Este software se puede instalar y actualizar independientemente del dispositivo principal y el controlador.

Dentro de un archivo INF del paquete de controladores SoftwareComponent, el mecanismo recomendado para instalar software usa una directiva AddSoftware. Esto desencadenará la descarga e instalación de software de la Tienda Windows.

Dependencias entre controladores y dispositivos

Dependencias de ordenación de inicio y enumeración de dispositivos

En la medida de lo posible, se deben evitar las dependencias entre dispositivos o los requisitos de ordenación de inicio.

En el caso de los dispositivos enumerados por ACPI, el objeto de dependencia (_DEP) se puede usar en el firmware ACPI para aplicar el orden de inicio del dispositivo. Para obtener más información, consulta Administración de dispositivos Espacio de nombres.

Los controladores pueden responder a la IRP_MN_QUERY_DEVICE_RELATIONS IRP para definir relaciones entre dispositivos, como las relaciones de eliminación. Para obtener más información, consulta IRP_MN_QUERY_DEVICE_RELATIONS.

Dependencias de instalación del paquete de controladores

La directiva CopyInf también se puede usar para instalar un paquete de controladores adicional durante la misma llamada API de instalación que otro controlador. El paquete de controladores pasado a la API de instalación se instalará antes de los paquetes de controladores a los que se hace referencia a CopyInf, pero no se garantiza que los paquetes de controladores a los que hace referencia CopyInf se instalen en cualquier orden determinado.

Configuración de componentes de varios proveedores agrupados en un solo paquete de controladores

Los paquetes de controladores admiten un tipo de paquete de controladores INF denominado inf de extensión. Se trata de un archivo INF diseñado específicamente para aumentar y ampliar la funcionalidad de un paquete de controladores "base". Es posible que una extensión no proporcione el controlador de funciones para el dispositivo, pero puede usar otras directivas o escribir otras configuraciones para un dispositivo. Durante la instalación de un controlador, se selecciona un único paquete de controladores base INF mediante la clasificación de controladores para proporcionar la funcionalidad del dispositivo y, a continuación, se seleccionan las INF de extensión para el dispositivo. Para obtener más información, consulta Uso de un archivo INF de extensión.

Un paradigma común para usar infs del paquete de controladores de extensión es para que el fabricante de hardware proporcione el paquete de controladores base INF y para un envío oem que forme parte dentro de un sistema para crear un INF del paquete de controladores de extensión que lo personalice para ese sistema.

Instalación o orquestación de actualizaciones de firmware

Se recomiendan diferentes mecanismos de actualización de firmware en función de la naturaleza del dispositivo que se está actualizando. Cada uno de los siguientes se puede usar para enviar e instalar una actualización de firmware a través de Windows Update.

No extraíble

La plataforma de actualización de firmware UEFI está diseñada para actualizar componentes de un sistema que no se puede quitar, como el firmware del sistema. Para obtener más información, consulta UEFI Firmware Update Platform.

Extraíble

Para dispositivos extraíbles como HID o USB, el modelo CFU permite actualizaciones de firmware seguras. Para obtener más información, consulta Actualización de firmware de componentes.

Implementación personalizada

Como alternativa, se puede escribir un controlador personalizado que actualice el firmware del dispositivo a discreción del controlador. Para obtener más información, consulta Controlador de actualización de firmware personalizado.