【改自lg2lh】EZ-USB 68013 学习笔记--设备信息安装文件CyUSB.inf详细说明

首先要明白一个INF文件的基本结构:INF由节组成,即一个个段组成。每个段的功能不一样。(大部分书上把这个段叫作""

[Version]段:主要用说明版本信息的。

[Strings]段:字符串信息,用于常量定义,用于显示。凡在其他段中出现的%XXXX%(就是两个百分号夹着一组字母),则对应的就会在Strings段里对应着它的一个字符串。

[SourceDisksNames]段:定义安装源文件所在磁盘,一般为1,表示在第一个磁盘。此节可无。

[SourceDiskFiles]段:驱动程序文件列表及被安装的位置,该节必须结合[SourceDisksNames]节才能知道具体的位置。如"atinbtxx.sys=1",则你必须到[DestinationDirs]节去查看"1"具体代表那个位置。

[DestinationDirs]: 这里表示的就是上述驱动文件安装到什么地方。

[Defaultinstall]段和[Install]段:这里表示安装段,对实际文件进行操作,比如说复制,删除,添加注册表等,但是安装段的名字不一定是这两个,可以通过Model段中指明哪个段是安装段。

[Model] 此段用来指明安装段的名称。即说明哪个段是安装段。格式:%xxxx%=安装段名,USBVID_04B4&PID_8613.所以这里不仅指明了安装段,还设置了引导安装的VIDPID,当与检测到设备的PIDVID相同时,则设备管理器认为该设备找到了自己的安装信息文件(INF文件),从而开始引导安装。(新的通用驱动CyUSB.inf文件并不带Model段而是针对多种平台的Device段,同样也制订了VID/PID信息)

[Manufacturer]段:此段用来指定设备供应商的名称,这个名称同时也是Model段。

关于INF文件的相关语法:

1、最后应该明白这8个段,有两个段不是直接显示出来的,就是[Model][Install],都是通过别的段指明的。

2、关于段的定义:我个人认为,只要在INF文件中将自己的段名用中括号包起来即可,如[MySection]...... 则这个MySection就可以认为是一个段了。

3、各个段之间的关系是并行的关系。如果两个段名相同,则接成一个段。不区分大小写

4、字符串标记,格式%xxxxxx%,这是一个字符串的标记,并不是字符串,他只是代表一个字符串,这个字符串在Srtings段定义,当然可以把这个字符串和一个段名关联起来。

例如:[Manufacturer]
%MFGNAME%=Cypress
[Cypress]

......

[Strings]

MFGNAME="Cypress" // %MFGNAME%是个字符串标记,代表的字符串为"Cypress"。这个字符串和model段名关联了。

下面是CyUSB.inf文件

[Version] //版本段
Signature="$CHICAGO$" //Signature必须一般为此值
Class=USB //驱动程序的类别,说明此为USB设备
ClassGUID={36FC9E60-C465-11CF-8056-444553540000} //对应USB设备的GUID值。不同设备的GUID值不同。
provider=%PROVIDER% //INF文件的提供者,%PROVIDER%是一个字符串标记,在Strings段可以看到它所指的字符串为"Cypress"

[SourceDisksNames]
1=%CYUSB_INSTALL%,,, 表示安装在磁盘1

[SourceDisksFiles] //待安装的源文件,即待安装的驱动程序
CyUsbME.sys = 1 //1表示要安装到哪个目录,具体那个目录在[DestinationDirs]说明
CyUsb.sys = 1
CyUsb.spd = 1

[Manufacturer] //指定设备供应商,同时也指定了那一段为Model段
%MFGNAME%=Cypress //Cypress为Model段

[Cypress] //此为Model段,并列出相应的安装段,可以列写多个设备PID,VID。用来表示响应不同的固件。
; Cypress FX2LP default ID

%VID_04B4&PID_8613.DeviceDesc%=CyUsb, USBVID_04B4&PID_8613//CyUsb被设置为安装段

; Cypress FX1 default ID

%VID_04B4&PID_6473.DeviceDesc%=CyUsb, USBVID_04B4&PID_6473

; Cypress FX2LP Example Device. DVK firmware examples use this VID/PID

%VID_04B4&PID_1004.DeviceDesc%=CyUsb, USBVID_04B4&PID_1004

[DestinationDirs]
CyUsbME.Files.Ext = 10,System32Drivers //意思是把CyUsbME.Files.Ext ,CyUsb.Files.Ext里的东西指定了方向,即右边的路径。这里没有操作,只是,10,表示C盘下的windows目录
CyUsb.Files.Ext = 10,System32Drivers //CyUsbME.Files.Ext ,CyUsb.Files.Ext是两个段,在后面定义了,可以看到这两个段代表了两个驱动文件CyUsbME.sys

[CyUsb]//此段为安装段,开始向[DestinationDirs]所示路径安装文件
CopyFiles=CyUsbME.Files.Ext //CopyFiles是个指令,即将=后面的文件CyUsbME.Files.Ext安装到DestinationDirs]所示路径安装文件,
AddReg=CyUsbME.AddReg//在注册表中添加相应的新的子健,进行相应操作,操作在CyUsbME.AddReg段中放着

[CyUsb.HW]
AddReg=CyUsb.AddReg.Guid //在HW下的注册

[CyUsb.NT] //在NT(大于win98的平台)平台下的安装及注册
CopyFiles=CyUsb.Files.Ext
AddReg=CyUsb.AddReg

[CyUsb.NT.HW]
AddReg=CyUsb.AddReg.Guid

[CyUsb.NT.Services]//添加安装文件的服务信息

Addservice = CyUsb, 0x00000002, CyUsb.AddService //Addservice 是个操作指令格式:Addservice =需要服务的安装的安装段名,0x00000002是固定值,安装服务信息段名
[CyUsb.AddService]//安装服务信息段

DisplayName = %CyUsb.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START//2值表示为自动安装
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %System32DriversCyUsb.sys //这个表示驱动所在路径,最终可在设备管理器中看到
LoadOrderGroup = Base //不知道干嘛的

[CyUsbME.AddReg] //不同安装段的注册表操作
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CyUsbME.sys

[CyUsb.AddReg] //不同安装段的注册表操作
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CyUsb.sys

[CyUsbME.Files.Ext] //待安装的驱动程序文件
CyUsbME.sys

[CyUsb.Files.Ext] //待安装的驱动程序文件
CyUsb.sys

[CyUsb.AddReg.Guid] //不同安装段的注册表操作
;HKR,,DriverGUID,,%CyUsb.GUID%

;---------------------------------------------------------------;
[Strings] //一些显示的字符串,在设备管理器中可以看到
PROVIDER="Cypress"
MFGNAME="Cypress"
CYUSB_INSTALL="Cypress Generic USB Driver Installation Disk"
VID_04B4&PID_8613.DeviceDesc="Cypress EZ-USB FX2LP - EEPROM missing"
VID_04B4&PID_6473.DeviceDesc="Cypress EZ-USB FX1 - EEPROM missing"
VID_04B4&PID_1004.DeviceDesc="Cypress EZ-USB Example Device"
CyUsb.SvcDesc="Cypress Generic USB Driver"

;CyUsb.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"

原文地址:https://www.cnblogs.com/sunmaoduo/p/3915972.html