Explorar el Código

USB CDC驱动在win11下无法识别,看了微软的描述修改子类后正常 (#6783)

这是微软关于此问题的链接:
 https://learn.microsoft.com/zh-cn/windows-hardware/drivers/usbcon/usb-driver-installation-based-on-compatible-ids#usbsersys-installation
Windows 10 及更高版本
从 Windows 10 开始,Usbser.inf 已添加到 %Systemroot%\INF 目录,该目录加载 Usbser.sys 作为设备堆栈中功能设备对象 (FDO) 。 如果设备属于通信和 CDC 控制设备类, Usbser.sys 加载。 无需编写自己的 INF 来引用驱动程序。 驱动程序是基于与包含在 Windows 中的其他 USB 设备类驱动程序相似的兼容 ID 匹配来加载的。

USB\Class_02

USB\Class_02&SubClass_02

如果要自动 加载Usbser.sys, 在设备描述符中将类代码设置为 02,将子类代码 设置为 02。 有关详细信息,请参阅 USB 通信设备类。 使用此方法时,无需为设备分发 INF 文件,因为系统使用的是 Usbser.inf。
如果设备指定类代码 02,但子类代码值不是 02,则 Usbser.sys不会自动加载 。 即插即用管理器尝试查找驱动程序。 如果找不到合适的驱动程序,则设备可能未加载驱动程序。 在这种情况下,你可能需要加载自己的驱动程序或编写引用另一个内置驱动程序的 INF。
kylongmu hace 2 años
padre
commit
0b58637a49
Se han modificado 1 ficheros con 2 adiciones y 2 borrados
  1. 2 2
      components/drivers/usb/usbdevice/class/cdc_vcom.c

+ 2 - 2
components/drivers/usb/usbdevice/class/cdc_vcom.c

@@ -98,7 +98,7 @@ static struct udevice_descriptor dev_desc =
     USB_DESC_TYPE_DEVICE,       //type;
     USB_BCD_VERSION,            //bcdUSB;
     USB_CLASS_CDC,              //bDeviceClass;
-    0x00,                       //bDeviceSubClass;
+    0x02,                       //bDeviceSubClass;
     0x00,                       //bDeviceProtocol;
     CDC_MAX_PACKET_SIZE,        //bMaxPacketSize0;
     _VENDOR_ID,                 //idVendor;
@@ -118,7 +118,7 @@ static struct usb_qualifier_descriptor dev_qualifier =
     USB_DESC_TYPE_DEVICEQUALIFIER,  //bDescriptorType
     0x0200,                         //bcdUSB
     USB_CLASS_CDC,                  //bDeviceClass
-    0x00,                           //bDeviceSubClass
+    0x02,                           //bDeviceSubClass
     0x00,                           //bDeviceProtocol
     64,                             //bMaxPacketSize0
     0x01,                           //bNumConfigurations