为什么USB CDC设备在windows中需要主机驱动程序?

为什么USB CDC设备在windows中需要主机驱动程序?,usb,driver,Usb,Driver,如果CDC设备被检测为虚拟COM端口,那么开发完整的UMDF windows驱动程序的额外优势是什么 我有一些使用微控制器的嵌入式示例的经验,既可以与teraterm这样的终端通信,也可以使用允许cdc或hid功能的专用USB外围设备 这些驱动程序是您在使用任何USB设备之前下载并安装的吗?目前尚不清楚通过主机驱动程序可以使用哪些功能。通常在Windows上,USB串行设备的“驱动程序”只不过是一个inf文件,用于将设备VID/PID映射到Microsoft usbser.sys CDC/ACM

如果CDC设备被检测为虚拟COM端口,那么开发完整的UMDF windows驱动程序的额外优势是什么

我有一些使用微控制器的嵌入式示例的经验,既可以与teraterm这样的终端通信,也可以使用允许cdc或hid功能的专用USB外围设备

这些驱动程序是您在使用任何USB设备之前下载并安装的吗?目前尚不清楚通过主机驱动程序可以使用哪些功能。

通常在Windows上,USB串行设备的“驱动程序”只不过是一个inf文件,用于将设备VID/PID映射到Microsoft usbser.sys CDC/ACM驱动程序

Windows 10的最新版本似乎已停止坚持要求每个CDC/ACM都有一个特定于VID/PID的inf文件,并将为任何显示为CDC/ACM设备的设备加载标准驱动程序

具有特定于VID/PID的inf文件的优点是,您的设备可以具有特定于供应商的“友好名称”,该名称可以在应用程序中使用,以便更轻松地识别您的设备,而不仅仅是显示为通用的“USB串行设备”

直到最近,Microsoft的usbser.sys驱动程序(Linux和Mac OS也不例外)的一个问题是,如果断开USB设备,即使应用程序打开了COM端口,驱动程序也会被卸载,并且应用程序必须关闭并重新打开端口才能在重新连接时恢复。我以前使用过一个自定义驱动程序(由第三方提供),如果应用程序的端口打开,它不会卸载,因此,当USB电缆重新连接时,数据连接会像RS-232电缆一样正常继续。然而,在最新版本的Windows 10中,我再次注意到usbser.sys在任何情况下都表现出这种行为

请注意,如果您确实提供了自己的驱动程序文件,甚至只是一个自定义的inf文件,则需要进行WHQL测试,以便在Windows 10上允许您的设备,或在早期版本上加载而不发出警告。要做到这一点,您需要一个USB.org分配的VID、一个扩展验证码签名证书,以及执行测试的工具和设施,或者支付测试机构来执行测试。这一切都会变得有些昂贵,并且对于小批量、低价值或非商业产品来说可能是禁止的

微软曾一度对WHQL处理提交文件收费过高,但现在不再收费了。然而,这是一个很小的组合,因为在同一时间,他们改变了要求电动汽车证书,并停止了交易,过去有低成本的证书

WHQL资格认证的优点是您的驱动程序将由Windows Update提供


如果您使用的是USB串行桥接芯片,而不是您自己的USB堆栈和USB控制器,那么有一个成本较低的解决方案。这些芯片可以使用您自己的VID/PID和描述符进行定制,并且供应商现有的WHQL可以与您的设备相关联,因此您可以在不增加成本的情况下获得您自己的驱动程序的所有优势。大多数供应商甚至会允许你使用他们的视频,并会为你分配一个唯一的PID,这样你就可以避免USB.org的费用。我在多产和FTDI设备上都使用过这种方法;这是迄今为止最具成本效益的解决方案。

您是否正在克隆一个已经有驱动程序的现有供应商/产品id?@old_timer否,我对从头开始开发这些应用程序感兴趣。有人写了完整的答案,对于未知的vid/pid,操作系统如何知道它是什么类型的设备?@old_timer:设备描述符包括其他信息,包括USB设备类。对于标准设备类,只要设备正确实现设备类,并且不需要专有驱动程序,这通常就是您需要知道的所有内容。仍然不向主机指示供应商驱动程序的期望/要求。供应商应参与该决策。如果出于安全以外的原因,在没有供应商和/或用户参与的情况下,不应该做出这样的假设。Windows 10是CDC设备不再需要INF文件的版本,因为它与usbser.INF有一些关系。否,您不必通过WHQL测试来生成一个无警告加载的签名驱动程序;这是非常古老的信息。从Windows Vista开始,您就可以在不涉及Microsoft的情况下获得证书并亲自签署驱动程序。我在这里详细介绍了这一点:驱动程序需要WHQL才能从Windows Update获得服务。我的观点与定制司机的“优势”有关。在这一点上,我可能还不太清楚,在电话上而不是在电脑上打字。我会在有机会的时候重新检查措辞。然而,在最近的Windows 10更新中,要求越来越严格,因此可能是新信息而不是旧信息,您上次为Windows部署驱动程序的版本是什么时候?微软最近为内核驱动程序锁定了很多东西。将检查并根据需要进行更新。@DavidGrayson关于Windows 10不需要INF文件,我很肯定我是这么说的。我的观点是,Windows 10不止一个。更改是特定于特定的“更新”(以前称为Service Pack),而不是早期版本的Windows 10。@DavidGrayson:回顾一下,似乎是您的信息太旧了。看见特别是声明:“注意,桌面版(家庭版、专业版、企业版和教育版)的Windows 10和Windows Server 2016内核模式驱动程序必须由Windows硬件开发中心仪表板签署,这需要EV证书。”。跟上微软的政策是一场噩梦——每次我必须鉴定一个驱动程序时,操作系统、工具、政策和费用都发生了变化!