

Certain device types have the ability to expose a second device node on one physical device, such as USB. There are a couple ways to create a second device node. In this case, the function and firmware device nodes must have different hardware IDs in order to be targeted independently. The following diagram shows how one device can have two separate device nodes: The existing function driver can implement the firmware update mechanism, as shown in the following diagram:Īlternatively, if you want to update the function driver and the firmware update driver separately, create a second device node, on which you'll install the firmware update driver. Add firmware update logic to a vendor-supplied driver Submit your firmware update package as a separate driver submission. Typically, the firmware update driver package contains the following items: When conditions are met, perform the firmware update on the device. If an update is queued, wait for a set of conditions to be met. Otherwise, do nothing until the driver is started again. If a firmware update is necessary, set an event timer to schedule the update. Identify the device to which it's attached.ĭetermine whether the driver has a firmware version that is more recent than the version on the firmware currently flashed on device hardware. Typically, the firmware update driver is a lightweight device driver that implements the following procedures:Īt device start or in the driver's EVT_WDF_DRIVER_DEVICE_ADD callback function:

The driver binary can use KMDF, UMDF 2 or the Windows Driver Model.īecause WU can't execute software, the firmware update driver must hand the firmware to Plug and Play (PnP) for installation. In both cases, the firmware update driver package must be universal.įor more info about universal drivers, see Getting started with Windows drivers. If your device uses a Microsoft-supplied driver, you must provide a separate firmware update driver package.

If your device uses a vendor-supplied driver, you have the option of adding the firmware update logic and payload to your existing function driver, or providing a separate firmware update driver package. To do this, you'll provide an update mechanism, implemented as a device driver that includes the firmware payload. For information about updating system firmware, see Windows UEFI firmware update platform. This article describes how to update a removable or in-chassis device's firmware using the Windows Update (WU) service.
