RNDIS on Windows 10 to connect to CE7 running on T20

@samuel.tx, thanks for making that patched DLL for me to test. I did also download and install Platform Builder and used it to build the Toradex image 1.4. I also found the line of code in rndisfn.cpp that looked like it needed to be changed to change the USB subclass. But I realized that building an OS image is not the same as building that DLL so it saved me quite a bit of time to use your DLL instead.

The patched DLL worked as expected in that the Subclass changed from 2 to 0. This stopped Windows 10 from loading the virtual COM port driver as we hoped, but Windows 10 still did not load my driver instead. I learned that the reason for that is the technique I have been using for a long time of putting .inf files into C:\Windows\Inf so that Windows can find. This technique no longer works on Windows 10. I have to actually install the driver into the the Windows Driver Store using the API call DiDriverInstall(). If I install the driver this way then Windows 10 finds it when I plug in my USB cable and everything works correctly.

This discovery made me wonder if using DiDriverInstall() would have worked with the unpatched driver as well. It turned out that it did. By installing a signed driver I made Windows 10 use my driver to match my VID and PID instead of using the class driver for class 2 and subclass 2. That means that my driver now works with the standard Toradex image and you do not need to patch it. My new driver works with Windows 10, Windows 7 and Windows XP. Some of my customers still use XP. It probably works with Windows 8 as well but I didn’t have a Windows 8 PC available to test it.

This is a good outcome as it means that I do not need to update the OS image in the products I have already shipped, I just need to update my Windows code to install the driver correctly. Thanks for helping me to figure this out.