This section contains addition information that relates to the command line functions.
Switching between UPDD and HID drivers forces UPDD to relinquish control in such a manner that the system will re-associate the device to the standard Windows HID driver.
This document describes the mechanics behind this function.
Set the UPDD setting "private.hidmode" = 1
Stop the UPDD service
Start the UPDD service
With the setting above defined then UPDD will:
a) Skip initialisation of libusb interface
b) Call "UPDD Install –devuninst <vid> <pid>" for each UPDD device instance
1. The –devuninst operation is same as used on an uninstall
2. A process manager ensures that only one instance is run at a time.
–devuninst enumerates all devices matching the vid / pid and calls SetupDiRemoveDevice (functionally equivalent to hitting delete in the device manager).
The screen shots below show the device being removed.
The middle one shows we provided the package (INF).
The right one shows the only driver file is the MS provided, being WinUSB.sys
We then call our function ZapOEMInf();
This removes the cached INF file which in some scenarios would be selected in preference to the HID INF
We then call the following;
CM_Locate_DevNode(&dnDevInst, NULL, CM_LOCATE_DEVNODE_NORMAL);
Which is functionally equivalent to "search for new hardware".
Screen shot below shows the USB input device that gets installed at this stage.
There are 3 driver files; all provided by MS.
In the HIDmode function there are no kernel files supplied by Touch-Base in the frame. All we do is delete an MS supplied driver and replace it with another using MS supplied API's