Problem: the usb device (CDC) works fine on Windows 7 and does not work on windows 10 (did not check on others). The device is built on the stm32f103 microcontroller. At the same time, when the SPL library was used, the device worked fine, and when I switched to CubeMX (in fact, I completely rewrote the firmware), this problem began to be observed. I don’t see the possibility of putting the code in this case, as it will be a ton.
The symptoms of a device malfunctioning are as follows. Opening the device with the libusb driver is successful, but all subsequent data packets (bulk) are not sent. With the debugger, too, neponyatki: when I run the controller under the debugger and interact with it from Win7, everything is fine, the device opens, the data exchange goes. When the controller is launched under the debugger and interacts with Win10, it stops opening, and the firmware does not fall into the breakpoint function, which returns the configuration descriptor.
In this regard, the question is: what are the features of observance / non-observance of the usb standard by the operating systems of the Windows NT family, the libusb library, the SPL libraries and the CubeMX?
I can call one of them myself: Windows 7 can continue to work with the device if the wrong length is specified in the configuration descriptor. In Windows 10, an unknown device appears in the device manager in this case. But I have already eliminated this joint. What other options might there be?