Compartir a través de


Actualización del firmware del dispositivo mediante Windows Update

En este artículo se describe cómo actualizar el firmware de un dispositivo extraíble o en chasis mediante el servicio Windows Update (WU). Para obtener información sobre cómo actualizar el firmware del sistema, consulta Plataforma de actualización de firmware de UEFI de Windows.

Para actualizar el firmware del dispositivo mediante Windows Update, proporcione un controlador de dispositivo que incluya la carga del firmware. Si proporciona un controlador de función para el dispositivo, puede agregar la lógica de actualización de firmware y la carga al controlador existente, o puede proporcionar un paquete de controladores de actualización de firmware independiente. Si el dispositivo usa un controlador proporcionado por Microsoft, debe proporcionar un paquete para la actualización de firmware independiente. En ambos casos, el paquete del controlador de actualización de firmware debe ser Universal.

Para obtener más información sobre los controladores universales, consulta Usar un archivo INF universal. El binario del controlador puede usar KMDF, UMDF 2 o el modelo de controlador de Windows.

Dado que WU no puede ejecutar software, el controlador de actualización de firmware debe entregar el firmware a Plug and Play (PnP) para la instalación.

Acciones del controlador de actualización de firmware

Normalmente, el controlador de actualización de firmware es un controlador de dispositivo ligero que implementa los procedimientos siguientes:

  • Al iniciar el dispositivo o en la función de devolución de llamada del controlador EVT_WDF_DRIVER_DEVICE_ADD:

    1. Identifique el dispositivo al que está conectado el controlador.
    2. Determine si el controlador tiene una versión de firmware más reciente que la versión del firmware actualmente instalada en el hardware del dispositivo.
    3. Si es necesaria una actualización de firmware, establezca un temporizador de eventos para programar la actualización.
    4. De lo contrario, no haga nada hasta que el controlador vuelva a iniciarse.
  • Durante el tiempo de ejecución del sistema:

    1. Si se ha puesto en cola una actualización, espere a que se cumpla un conjunto de condiciones.
    2. Cuando se cumplan las condiciones, realice la actualización de firmware en el dispositivo.

Contenido de la actualización del controlador de firmware

Normalmente, el paquete del controlador de actualización de firmware contiene los siguientes elementos:

  • Controlador universal INF
  • Catálogo de controladores
  • Controlador de función (.sys o .dll)
  • Archivo binario de carga de actualización de firmware

Envíe el paquete de actualización firmware como una presentación de controlador independiente.

Adición de lógica de actualización de firmware a un controlador proporcionado por el proveedor

El controlador de función existente puede implementar el mecanismo de actualización de firmware, como se muestra en el diagrama siguiente:

Usar Windows Update para entregar la actualización de firmware a través del controlador de funciones existente.

Como alternativa, si desea actualizar el controlador de función y el controlador de actualización de firmware por separado, cree un segundo nodo de dispositivo en el que instale el controlador de actualización de firmware. En el diagrama siguiente se muestra cómo un dispositivo puede tener dos nodos de dispositivo independientes:

Usar Windows Update para entregar la actualización de firmware a través de un nodo de dispositivo independiente.

Los nodos de dispositivos de firmware y de función deben tener identificadores de hardware diferentes para que puedan ser dirigidos de manera independiente.

Hay un par de maneras de crear un segundo nodo de dispositivo. Algunos tipos de dispositivos tienen la capacidad de exponer un segundo nodo de dispositivo en un dispositivo físico, como USB. Puede usar esta funcionalidad para crear un nodo de dispositivo dirigido por WU e instalar un controlador de actualización de firmware en él. Sin embargo, muchos tipos de dispositivos no permiten que un único dispositivo físico enumere más de un nodo de dispositivo.

En ese caso, use una extensión INF que especifique la directiva AddComponent para crear un nodo de dispositivo destinado a Windows Update e instalar el controlador de actualización de firmware en él. El siguiente fragmento de código de un archivo INF muestra cómo puede hacerlo:

[Manufacturer]
%Contoso%=Standard,NTamd64
[Standard.NTamd64]
%DeviceName%=Device_Install, PCI\DEVICE_ID
[Device_Install.Components]
AddComponent=ComponentName,,AddComponentSection
[AddComponentSection]
ComponentIDs = ComponentDeviceId

En el ejemplo INF, ComponentIDs = ComponentDeviceId indica que el dispositivo secundario tiene un identificador de hardware de SWC\ComponentDeviceId. Cuando se instala, este INF crea la siguiente jerarquía de dispositivos:

Dispositivo padre, dispositivo primario, dispositivo AddComponent.

Para futuras actualizaciones de firmware, actualice el archivo INF y binario que contiene la carga del firmware.

Adición de lógica de actualización de firmware a un controlador proporcionado por Microsoft

Para actualizar el firmware de los dispositivos que usan un controlador proporcionado por Microsoft, cree un segundo nodo de dispositivo, como se muestra.

procedimientos recomendados

  • En el controlador de actualización de firmware INF, especifique DIRID 13 para que PnP deje los archivos en el paquete de controladores en DriverStore:

    [Firmware_AddReg]
    ; Store location of firmware payload
    HKR,,FirmwareFilename,,"%13%\firmware_payload.bin"
    

    PnP resuelve esta ubicación cuando instala el dispositivo. A continuación, el controlador puede abrir esta clave del Registro para determinar la ubicación de la carga.

  • Los controladores de actualización de firmware especifican las siguientes entradas INF:

    Class=Firmware
    ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
    
  • Para localizar otro nodo de dispositivo, el controlador de firmware debe recorrer el árbol de dispositivos en relación consigo mismo, evitando enumerar todos los nodos de dispositivo para encontrar una coincidencia. Un usuario podría haber conectado varias instancias del dispositivo y el controlador de firmware solo debe actualizar el dispositivo con el que está asociado. Normalmente, el nodo de dispositivo que se va a ubicar es el nodo principal o hermano del nodo de dispositivo en el que está instalado el controlador de firmware. Por ejemplo, en el diagrama con dos nodos de dispositivo, el controlador de actualización de firmware puede buscar un dispositivo hermano para encontrar el controlador de función. En el diagrama siguiente, el controlador de firmware puede buscar el dispositivo primario para encontrar el dispositivo principal con el que necesita comunicarse.

  • El controlador debe ser robusto para varias instancias del dispositivo presentes en el sistema, posiblemente con varias versiones de firmware diferentes. Por ejemplo, puede haber una instancia del dispositivo que se ha conectado y actualizado varias veces. Puede conectarse un dispositivo completamente nuevo, aunque tenga varias versiones de firmware antiguas. Esto significa que el estado (como la versión actual) debe almacenarse en el dispositivo y no en una ubicación global.

  • Si hay un método existente para actualizar el firmware (EXE o co-instalador, por ejemplo), puede reutilizar en gran medida el código de actualización dentro de un controlador UMDF.