
When the EVT_WDF_DEVICE_D0_ENTRY callback of the WDF filter driver is called at a later point, the filter driver issues a vendor specific command to the device that places it in firmware update mode. The device disconnects and reconnects, exposing the firmware update interface.
The system enumerates the firmware update device interface. A custom firmware update WDF driver supplied by the vendor, in the firmware update package, will be load for this firmware update interface. This driver updates the firmware.
While installing the driver update package, the firmware update WDF filter driver's AddDevice routine is called. From this routine, the WDF filter driver gets for the device firmware version from the device HW registry key. The device firmware should place the firmware version using the MSOS descriptor onto the device HW registry key.
The method of using a "firmware update filter driver", is recommended for devices that have enough resources to hold two full firmware images (the update image and a backup image) on the device memory. The reason is if there were failures during downloading the updated firmware, the device can abandon the update and boot into its original firmware. Thus, not bricking the device.
USB devices like UVC cameras are released with in-field updatable firmware. There's no standard method to update the firmware today. One item that is common to all existing update mechanisms is that some custom software suite runs on the client and downloads the firmware to the device. Typically, as part of the device installation process, the firmware updating software suite is installed. The co-installer kick starts the firmware update process. The absence of co-installers on Windows 10 prevents device vendors from updating the firmware on these devices in the field.
