UPDD USB considerations
UPDD is a general purpose touch driver that works with 100’s of controllers (current and old legacy hardware) in a number of operating systems. It also works with multiple touch devices and catering for all these combinations brings certain challenges. It is also utilised on systems where there may be competing drivers that are registered to handle the device.
USB devices also bring issues in that there are HID and non-HID devices and the driver has to cater for, and integrate with, PnP management. To further complicate matters our driver can be delivered in Windows as a signed or non-signed driver. Given the above it is important to understand how drivers are associated with USB devices.
Basics for Windows
When a USB device is plugged into Windows the PnP manager is passed the USB device descriptor and using this information the PnP manager passes the device to the current registered driver or seeks to locate a matching driver and registers the device with the driver if one is found. If more than one driver is found it will favour signed drivers over non-signed drivers and select the most suitable driver.
If a driver is not currently registered with the device the hardware wizard is run to help the user locate the appropriate driver from the internet, locally on the system or via external media, such a CD. It does this by processing appropriate INF files that match the device identifiers of the plugged in device and builds up a list of drivers from which to select. This is sometimes referred to as an INF install.
However, with UPDD we pre install the software components prior to device use, including the INF file and associated files (.INF, .CAT, .PNF) which are placed in the [Windows]\INF folder and replicated in c:\program files\updd.
When the software is installed the UPDD device handler function (built into the user mode element of the driver) will search for any USB supported devices and, if found, will automatically register them in the UPDD Console program and link to the device. Thereafter, on reboot or unplug/replug, UPDD will handle the device.
However, if devices are not plugged in at the time of UPDD installation then the PnP manager will be invoked at the time the device is plugged in for the first time (Hot plugged) to handle driver selection. At the same time UPDD will process the Windows 'Device change message' and will take certain actions depending on system driver selection:
If a previous device driver was installed and handling the device this will be selected. Manual intervention will be required to switch to UPDD.
The operating systems HID driver will be selected. No action is needed to switch to UPDD as this is performed automatically.
UPDD will take control back from HID and register the device in such a manner that subsequent hot plugs will select UPDD. It will not take control from any other driver.
Non HID devices
If a previous OEM device driver was installed and handling the device this will be selected. Manual intervention will be required to switch to UPDD.
The UPDD will be selected.
In some cases, especially after a UPDD reinstall (over an existing UPDD install), the Windows hardware wizard will run to select the driver. Use the wizard to select UPDD and complete installation (locate the UPDD driver). If you cancel the wizard you will get a Warning that the device may not be working and the driver may not be correctly registered to handle the device resulting in an unknown USB device or a named device appearing in the Windows device manager showing a yellow exclamation mark. In this case unplug and replug the device and complete the wizard or manually update the USB device entry to associate the device with UPDD.
Signed driver note
UPDD INF and associated files are written to [windows]\INF and are also placed c:\program files\updd. If using the hardware wizard to install UPDD and the driver is known to be a signed driver it is important to point the Wizard to the files in c:\program files\updd and NOT [windows]\INF. Using the files in [windows]\INF the wizard ignores the digital signature file and installs the driver as unsigned.