转载请注明出处!
作者:雪天鱼

目的:为自己的设备安装CyUSB驱动,然后用CyAPI进行一些读写测试。
首先Windows为USB设备安装驱动是根据硬件ID和兼容ID来进行匹配的。
我的设备的硬件ID和要安装的驱动分别如下所示:
设备:AL-Link

一、修改INF文件

在这里插入图片描述
驱动:Cyusb
在这里插入图片描述
直接为设备安装该驱动安装不上,需要修改 cyusb.inf 文件。
打开 cyusb.inf文件,有:

[Manufacturer]
%CYUSB_Provider%=Device,NT,NTx86,NTamd64

;for all platforms
[Device]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for windows 2000 non intel platforms
[Device.NT]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for x86 platforms
[Device.NTx86]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for x64 platforms
[Device.NTamd64]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX

这里将最后三行按照实际的硬件ID改为:

;for x64 platforms
[Device.NTamd64]
%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_336C&PID_1001
  • 其中变量 %VID_XXXX&PID_XXXX.DeviceDesc%是自定义的设备描述,在INF文件末尾的[Strings]节中定义;这里我设置为“XUE-Link V1.0”
  • CyUsb 是安装节的名称,不区分大小写
  • USB\VID_336C&PID_1001 是设备的硬件ID,由生成商设置

INF文件修改好了,然后在设备管理器中为AL-Link安装该驱动,安装结果如下:
在这里插入图片描述
出现这个界面就说明INF文件修改有效,Window将其和设备匹配起来了,但似乎还有东西需要修改。
经过查阅资料,发现需要数字签名,看了下有两种解决方法,第一种是自己给INF驱动文件签名,第二种是取消Windows的强制数字签名设置。想了想,后期驱动开发应该还是要学习如何给驱动签名,所以这里我采用第一种方法了。
成功后,进行测试,测试结果如下图所示:
在这里插入图片描述
成功检测到了使用cyusb.sys驱动的设备,并列举了出来。

二、给INF驱动文件签名

2.1 工具准备

需要使用到 Inf2Cat,makecert,Signtool,CertMgr 等工具,需要下载Windows 10 SDK来获取,可以通过Visual Studio Installer下载,也可以直接在官网下载。
这里不知道为啥下载下来的SDK中没有Inf2Cat工具
在这里插入图片描述
试了安装8.0版本的Window SDK也不管用,最终是通过沃通代码签名精灵来生成的 cat文件

2.2 制作签名证书

(1)打开Visual Studio的命令行工具
在这里插入图片描述
在这里插入图片描述

(2)制作证书,输入下列命令:

makecert -r -pe -ss root -n CN="Company XUE CA" -$ commercial -b 01/01/2020 -e 01/01/2100 Cert1.cer

makecert 命令使用说明如下:
https://docs.microsoft.com/en-us/windows/win32/seccrypto/makecert
在这里插入图片描述
选择"是"
此时产生了Cert1.cer根证书
(3)导出PFX格式证书
在Windows搜索栏输入MMC并打开:
在这里插入图片描述
在"文件"->“添加管理单元"中添加"证书"至我的用户账户,并确认,
在"受信任的根证书颁发机构”->“证书"中找到刚才安装的证书"Company XUE CA”,右击"所有任务"->“导出"进入证书导出向导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里我直接导出到桌面,生成了cert1.pfx文件

2.3 给INF文件签名

先生成Cat目录文件
下载好沃通代码签名精灵,以管理员身份运行,再把inf文件和其[SourceDisksFiles]节中调用的驱动文件都添加到 CAB/CAT中

在这里插入图片描述
在这里插入图片描述
生成的CAT文件和 inf文件放在同一目录下即可。
再签名Cat文件
同样在命令行工具下执行:、

Signtool sign /v /fd sha256 /f cert1.pfx /p 123456 /n "Company XUE CA" /t http://timestamp.digicert.com *.cat

signtool 命令使用说明如下:
https://docs.microsoft.com/zh-cn/dotnet/framework/tools/signtool-exe

其中"/p 123456"是导出pfx时设置的密码
命令执行成功后,如下图所示,且在cat文件的属性中能够看到已经被签名:
在这里插入图片描述
在这里插入图片描述
至此,驱动已经签名成功,驱动可以在设备管理器中手动安装完成

三、驱动安装

3.1手动安装

若手动安装驱动,需要将inf,cat以及cer文件拷贝至目标电脑,首先需要安装证书,用管理员身份运行CMD,输入如下命令:

CertMgr /add cert1.cer /s /r localMachine root /all

其中cert1.cer为之前生成的根证书
安装证书成功后,即可在设备管理器中手动安装驱动

参考博客:
https://blog.csdn.net/qq_29729577/article/details/113537243

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐