自定义USB视频/PID-制作Windows 7&;8自动选择usbser.sys驱动程序
我正在用微控制器为USB设备开发固件。我使用生成了一个裸机(无操作系统)代码库,将该设备设置为USB CDC(通信设备类),以便Windows 7、8和10自动将其检测为VCP(虚拟COM端口)。驱动程序详细信息显示它正在使用Windows自定义USB视频/PID-制作Windows 7&;8自动选择usbser.sys驱动程序,usb,usbserial,cdc,usb-descriptor,Usb,Usbserial,Cdc,Usb Descriptor,我正在用微控制器为USB设备开发固件。我使用生成了一个裸机(无操作系统)代码库,将该设备设置为USB CDC(通信设备类),以便Windows 7、8和10自动将其检测为VCP(虚拟COM端口)。驱动程序详细信息显示它正在使用Windowsusbser.sys驱动程序 当我更改USB供应商ID(VID)或产品ID(PID)或制造商字符串时,Windows 10设备管理器仍会快速将其检测为USB串行设备,但Windows 7或8不会检测到。Windows 7和8花了很长时间在Windows U
usbser.sys
驱动程序
当我更改USB供应商ID(VID)或产品ID(PID)或制造商字符串时,Windows 10设备管理器仍会快速将其检测为USB串行设备,但Windows 7或8不会检测到。Windows 7和8花了很长时间在Windows Update中搜索驱动程序,但找不到驱动程序
当设备的USB VID、PID和制造商字符串具有供应商特定的值时,如何修改设备固件/描述符以使Windows 7和8主机能够自动安装设备的
usbser.sys
驱动程序?问题在于.inf
文件。在win 10中有一个新的(usbser.inf
)在win 7和win 8中自动加载驱动程序usbser.sys
,您必须编写自己的.inf
文件,将PID和VID链接到usbser.sys
驱动程序,请参阅和
在Windows 8.1及更早版本的操作系统中,Usbser.sys
连接USB到串行设备时,不会自动加载
一台计算机。要加载驱动程序,您需要编写一个INF
参考调制解调器INF(mdmcpq.INF),包括[Install]和
[需要]部分。这些部分是实例化
服务,复制收件箱二进制文件,并注册设备接口
应用程序查找设备并与其对话所需的GUID。那个
INF将“Usbser”指定为设备堆栈中的低级筛选器驱动程序
资料来源:
在,,
及
win 7和win 8的.inf文件示例。Windows 10附带了一个名为usbser.inf的新驱动程序,该驱动程序将匹配符合USB CDC ACM规范的设备,并为它们加载usbser.sys驱动程序 要使USB CDC ACM设备在旧版本的Windows上工作,您需要自己提供一个INF文件,当Windows看到带有供应商ID和产品ID的USB设备时,它会告诉Windows加载usbser.sys。对于Windows 7、Vista和XP,只需编写INF文件并将其分发给客户即可。对于Windows 8及更高版本,您将需要购买代码签名证书,然后对INF文件进行签名(或者查看允许您绕过签名检查的软件实用程序,如zadig和libwdi) 请注意,签名与WHQL不同。获得签名证书后,您可以自己对驱动程序进行签名,而无需等待任何时间,也无需获得Microsoft的任何批准 以下是使用usbser.sys的INF文件示例: 我在这篇文章中写了很多关于如何签署驱动程序包的内容:
我是否正确理解在Win7&8中,
.inf
文件是基于{VID,PID,MfrString}选择的,因此我所要求的是不可能的?除非我们获得设备WHQL认证并将其.inf
添加到Windows Update,否则Windows将在枚举设备时自动安装驱动程序,对吗?或者我们可以在设备中使用Microsoft OS描述符来代替WHQL,让它向主机显示WCID,这样主机就知道选择usbser.sys
作为驱动程序,而根本不需要.inf
?您需要.inf文件(WHQL)或MS OS描述符。对于MS OS描述符,不需要.inf()。因此,使用MS OS描述符,这在没有自定义的情况下是可能的。infAn INF文件与WHQL不同。您可以在Windows 7或更低版本上使用未签名的INF文件,即使在Windows 8或更高版本上,签名过程也很简单,您可以在购买代码签名证书后自行完成,无需获得Microsoft的批准。非常感谢您在过去几个月里就USB问题向我提供了多个有用的答案。:)我只想指出,a-star.inf文件确实对我有用。我所要做的就是更改VID/PID值。非常感谢!