I have a HID-USB device that shows up in Device Manager under “Human
Interface Devices” as both a HID compliant vendor defined service and a USB
input device. I have written a WDF UMDF 2 virtual hidmini driver, based on
the vhidmini2 sample driver, that masquerades as both the device and the
system that the device connects to. The driver successfully interacts with
the user application, written for the device, such that the software thinks
it is attached to the device and communicating with the system to which the
device would be attached. I now want to have the virtual hidmini driver act
as a filter driver for the device default driver stack (no vendor supplied
driver is required) so that request commands not native to the device
(intended for an alternate device) can be translated into a compatible
format and responses from the device translated into the format that the
user app is expecting. This is necessary because the user app supports two
different devices and uses the alternate device for what it considers to be
“enhanced” commands. However, the device that I have can support at least a
subset of these “enhanced” commands.
What I don’t understand is how to insert my driver into the default driver
stack so that it will capture the IO traffic to and from the device. If I
load my driver as I do during testing and development and then connect the
device, the IO traffic goes directly to the device and bypasses my driver. I
have tried “updating” the device driver using Device Manager, but I don’t
know which of the two drivers (HID compliant or USB input) to update.
Regardless, efforts to update either fail with the message that no
compatible driver was found. I am using the vhidmini2 sample driver INF
file and I suspect that I need to make changes to this. I did add the
directive UmdfDispatcher=NativeUSB (I am using UMDF 2.15) to the INF file.
Any help would be greatly appreciated.