驱动INF文件解析和 为自己的设备安装指定驱动

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

目的:为自己的设备安装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

### 回答1: C 自动安装 inf 是指使用 C 语言编写的程序,在安装设备驱动程序时自动执行 inf 文件安装操作。 在 Windows 操作系统中,设备驱动程序通常使用 infInformation)文件来描述设备安装信息和配置。自动安装 inf 文件意味着无需人工干预,通过编写 C 程序可实现自动完成设备驱动程序的安装过程。 实现自动安装 inf 的方法一般包括以下步骤: 1. 打开设备管理器:使用 C 语言的相关函数或 API,可以打开 Windows设备管理器,以便进行设备的管理和配置。 2. 定位设备信息:通过设备管理器的相关函数或 API,可以定位到待安装设备,并获取设备的相关信息,例如设备标识符、硬件 ID、供应商 ID 等。 3. 搜索 inf 文件:根据设备的信息,使用 C 语言编写的程序可以搜索已下载或存储在指定位置的 inf 文件,并找到与设备匹配的 inf 文件。 4. 解析安装 inf 文件:通过解析 inf 文件,我们可以获取设备安装信息、驱动程序文件等。然后,使用 C 语言的文件操作函数或 API,将驱动程序文件复制到适当的位置,并修改注册表等操作,完成驱动程序的安装。 5. 完成安装:当所有的文件复制和配置操作完成后,我们可以通过 C 语言的相关函数或 API,向操作系统发送信号,表示设备驱动程序已成功安装。 通过以上步骤,我们可以使用 C 语言编写的程序自动实现 inf 文件安装。这样可以节省人力和时间,提高设备驱动程序安装的效率。 ### 回答2: C自动安装INFInformation File)是一种自动化安装驱动程序和软件组件的方法。INF文件包含了安装驱动所需要的信息,包括了硬件设备的描述、驱动程序的路径和文件名等。通过自动安装INF的方式,用户可以方便地安装新的硬件设备或者更新现有设备驱动程序。 在使用C语言进行自动安装INF时,可以通过使用相关的系统API函数来实现。首先,需要获取到INF文件的路径和文件名,这可以通过人工输入、或者从一个预定的位置读取。然后,可以使用系统API函数打开INF文件,并解析其中的内容,提取出驱动程序的相关信息。接下来,可以根据获取到的信息执行相应的操作,如拷贝驱动程序文件指定的目录,注册驱动程序等。最后,可以进行必要的清理工作,如关闭INF文件句柄,删除临时文件等。 通过C自动安装INF,可以大大简化驱动程序的安装过程,提高用户的使用体验。用户只需提供INF文件的路径和文件名,剩下的工作都可以由程序自动完成。这样可以避免用户操作繁琐的驱动程序安装步骤,同时减少了用户的出错概率。 总而言之,C自动安装INF是一种方便高效的驱动程序安装方法。它通过解析INF文件并执行相应的操作,自动完成了驱动程序的安装工作,为用户提供了便捷的使用体验。 ### 回答3: C自动安装INF是指在计算机中使用C语言程序自动安装或加载INF文件(信息文件)的过程。 INF文件是一种用来描述和配置硬件设备驱动程序和操作系统之间关系的文件。在Windows操作系统中,INF文件被广泛应用于硬件设备安装过程中。INF文件通常包含了设备的描述信息、驱动程序的版本和文件路径等内容。 使用C语言编写程序实现自动安装INF文件可以简化用户手动安装驱动的步骤,提高安装效率和用户体验。具体步骤如下: 1. 程序打开INF文件:使用C语言的文件操作函数,打开要安装INF文件。 2. 解析INF文件内容:读取INF文件中的信息,获取设备的描述、驱动程序的路径和版本等信息。 3. 检查设备是否存在:程序可以通过操作系统提供的API函数,检查计算机中是否已经存在相同设备驱动。 4. 安装驱动程序:如果设备不存在对应的驱动,程序会通过操作系统提供的API函数将驱动程序文件复制到指定的目录,并注册设备的相关信息。 5. 更新系统配置:安装完成后,程序可以通过调用操作系统提供的API函数,更新系统配置信息,使操作系统能够正确识别和启用新安装的硬件设备。 6. 安装完成提示:程序可以输出安装成功或失败的信息,以便用户了解安装的结果。 通过使用C语言编写的程序自动安装INF文件,可以方便地实现设备驱动安装和更新,不需要用户手动操作,提高了安装效率和便利性。同时,程序员可以根据自己的需求制定更多的安装流程和逻辑,以满足不同的应用场景。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪天鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值