A major client is planning to roll out Windows 10 next year, and in compatibility testing our existing USBDevice/WinUSB devices we found Win10’s requirement for signed drivers to be a problem.
Having the in-box drivers load automatically seemed to be the way to go, and I spent some time getting the descriptors right (easy in C, not so easy in C# where everything is hidden away under the hood), but eventually I had the special string descriptor, WCID descriptor and an extended property descriptor working on our EMX based hardware in test programs on 4.2 (GHI.Premium.USBClient) and 4.3 firmware.
The xusb test program (on a Linux test box to avoid polluting the Windows registry) showed my device was returning everything needed to automatically install the driver when the device was plugged in, the same as other commercial devices did.
However when I tried it on test Win10 systems, it wasn’t recognized, and it took a bit more searching to to find that GHI had basically hard-coded the USB version 1.1 (bcdUSB = 0x0110) in, while Windows required USB >= 2.0 (bcdUSB = 0x0200) for it to query these descriptors.
After much mucking around trying to find a way to override/extend this value (I really do prefer C to C#!) I came here to ask the forum for help. And then I found the question had been asked before, added to the task tracker, and then closed with no reason given.
It seems more than a VERY nice to have feature, almost essential these days, so why was it closed without any reason at all being given?
The previous comment thread on this is at:
Custom USB device with WinUSB and no INF file required to install
This is the closed Task Tracker Entry