inf文件内容说明

安装usb等驱动时发现都有inf文件,关于里面定义的一些字段内容。参考自:
http://blog.sina.com.cn/s/blog_48d4c5f601012tv0.html
https://baike.baidu.com/item/INF

Inf简介

Inf(Device information File)是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,Inf文件中包含硬件设备的信息或脚本以控制硬件操作。在Inf文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等。
在C:/Windows/INF文件夹中存放有大量的inf文件。Inf文件其实是一种纯文本文件,可以用任意一款文本编辑器打开进行编辑。
INF的功能
1. 复制文件、删除文件、或重新命名文件。
2. 新增或删除注册表(Registry)中的项目。
3. 修改重要的系统设置文件(如Autoexec.bat、Config.sys、.INI等)

Inf文件的编写规则:

  1. 每个inf文件有许多节(section)组成,节名用方括号括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符,节与节之间没有先后顺序的区别,另外,同一个Inf文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。
  2. 在节与节之间的内容叫条目,每一个节又是由许多的条目组成,每个条目都是由形如”signature=” WINDOWSNT ””的形式。如果每一个条目的等号后面有多个值,则每一个值之间用“,”号分隔开。
  3. Inf文件对大小写不敏感。
  4. “;”后面的内容为注释。
  5. 如果一个条目的内容过多,在一行无法书写完全,则用“\”将一行内容书写多行。
    关键section有:
    [Version]版本描述信息,主要用于版本控制。
    [Strings]字符串信息,用于常量定义。
    [DestinationDirs]定义系统路径信息,指定CopyFiles、RenFiles或DelFiles入口的缺省操作目录。
    [SourceDisksNames]指明源盘信息。
    [SourceDisksFiles]指明源盘文件名。
    [DefaultInstall]执行安装

INF文件路径:

Windows 98/Me:操作系统会把驱动程序中包含安装信息的I N F 文件直接拷贝到自身的inf文件夹中( 位于C :\Windows\INF),因此,只需知道驱动程序原来使用的INF 文件名就能在Windows 的INF 文件夹中找到对应文件。
Windows 2000/XP:Windows 2000/XP 却不是直接拷贝INF 文件,它们对没有经过微软认证的驱动程序的INF 文件都会改名存放,而且目前不少驱动程序都没经过认证,所以要找到它们还要费些功夫。如果你注意观察,会发现在INF 文件夹中有很多以OEM 开头的文件,这就是Windows2000/XP 的杰作。它们把没有经过认证的安装信息文件改名为OEMx.INF 和OEMx.PNF(PNF 为预编译信息文件)来存放。我们只需要根据上面关于INF文件的内容介绍便可以轻松找到相应文件。x是从数字0开始的正整数,例如:OEM0.inf和OEM0.PNF表示第一个没有认证的驱动程序安装信息文件,依此类推。

Inf文件详细说明:

一、Version样例:
[Version]
Signature=” CHICAGO
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
provider=%MSFT%
DriverVer=03/21/2012,1.0.0.1
说明:
Signature:此条目主要描述此INF文件支持的设备类型和适用的操作系统,只能取值为 WindowsNT Chicago Windows95 。如果不是以上这些字符,则不被认可为inf文件。该条目如果是 Windows95 表示该INF文件只适用于Windows95/98的系统,如果是 Chicago 表示该INF文件适用于Windows95/98及Windows2000以上的操作系统,如果是 WindowsNT 表示该INF文件只适用于Windows 2000/XP/2003及以上的操作系统。
Class:此条目表明设备的类型,常见的有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,如网卡)、Modem(调制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)、USB(通用串行总线控制器)。
ClassGUID:设备的GUID,如果设备是一个标准类别,使用标准类的名称和GUID,否则创建一个自定义的类别名称,并自定义它的GUID。
Provider:设备提供商,对应设备管理器中显示的设备提供商的信息。
DriverVer:对应设备管理器中显示的驱动程序版本的信息。

二、DestinationDirs样例:

[DestinationDirs]
DefaultDestDir=DRID[,subdir]
目录位置DRID说明:
DRID值
目录
10
C:\WINDOWS目录
11
C:\WINDOWS\System目录
12
C:\WINDOWS\System32\drivers目录

三、SourceDisksNames样例:

[SourceDisksNames]
disk-ordinal=”disk-description”,disk-label,disk-serial-number
罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。
其中disk-ordinal是盘符序列码,标识一个源盘,具有唯一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。disk-description是盘描述符,用双引号括起来的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。disk-label为源盘的卷标识。disk-serial-number被设置为0。

四、DefaultInstall节说明

此节指定包含的安装指令节,其中每一个条目将会成为一节。
[DefaultInstall]节中定义的操作:
LogConfig=log-config-section-name[,log-config-section-name]… ;Log日志文件配置
Copyfiles=file-list-section[,file-list-section]… ;复制文件
Renfiles=file-list-section[,file-list-section]… ; 文件改名
Delfiles=file-list-section[,file-list-section]… ; 删除文件
UpdateInis=update-ini-section[,update-ini-section]… ; 更新Inis
UpdateIniFields=update-inifields-section[,update-inifields-section]… ; 更新Ini字段
AddReg=add-registry-section[,add-registry-section]… ; 添加注册项
DelReg=del-registry-section[,del-registry-section]… ; 删除注册项
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]… ; Ini文件转换为Reg文件
以上各条目并非全部必须。节名必须为可见字符。每一个条目包含一到多个节,第一个命名之后的所有命名必须以“,”引导。
以下介绍几个经常用到的操作:

1. Copyfiles

样例:
[DefaultInstall]
CopyFiles = copyfile_list_section[,copyfile_list_section]

[copyfile_list_section]
dest_filename,[source_filename],[,flags]
[dest_filename,[source_filename],[,flags]]
说明:
dest_filename
必选项。用于指定目标文件名的字符串。如果不提供 source_filename,则使用 dest_filename 作为源文件名。
source_filename
必选项。用于指定源文件名的字符串。如果 source_filename 与 dest_filename 相同,则可省略 source_filename。
flags
可选项。用于指定在复制进程期间执行某个操作的数字值。下表列出了 Windows CE 支持的值。
标志

说明
COPYFLG_WARN_IF_SKIP
0x00000001
用户尝试跳过发生错误后产生的文件时警告他。
COPYFLG_NOSKIP
0x00000002
不允许用户跳过复制文件的操作。
COPYFLG_NO_OVERWRITE
0x00000010
不改写目标目录中的现有文件。
COPYFLG_REPLACEONLY
0x00000400
仅当源文件存在于目标目录中时才将它复制到目标目录中。
CE_COPYFLG_NO_DATE_DIALOG
0x20000000
如果目标文件比源文件新,请勿复制此文件。
CE_COPYFLG_NODATECHECK
0x40000000
改写目标文件时忽略数据。
CE_COPYFLG_SHARED
0x80000000
考虑共享 DLL 时,创建一个引用。

2 AddReg

样例:
[DefaultInstall]
AddReg = add_registry_section[,add_registry_section]

[add_registry_section]
reg_root_string,subkey,[value_name],flags,value[,value]
[reg_root_string,subkey,[value_name],flags,value[,value]]
reg_root_string
必选项。用于指定注册表根位置的字符串。下表显示了注册表根及其缩写。
注册表根字符串
注册表根
HKCR
HKEY_CLASSES_ROOT
HKCU
HKEY_CURRENT_USER
HKLM
HKEY_LOCAL_MACHINE
HKR
与注册表关键子有关,最适合AddReg命令出现的地方。比如,注册表中每个设备的“硬件”子键:…/Enum/枚举器ID/设备ID,与此相对的注册表中每个驱动程序指定的“软件”子键:…/CLASS/类GUID/设备ID等。
subkey
必选项。用于指定如 Strings 节中定义的字符串关键字或 reg_root_key 下要设置的注册表路径的值。此值可以指定以下项:
· 将添加到给定注册表路径末尾处的注册表的新子项。
· 将写入其他指定值的现有子项,这些值可能替换给定子项的现有值。
· 要和其初始值项一起添加到注册表中的新子项。
value_name
可选项。用于指定现有子项值中的值名称或创建要添加的新值名称的字符串。如果被省略,则使用默认注册表值名称。
flags
必选项。用于指定注册表项的数据类型和/或控制添加注册表根项的操作的值。下表列出了 Windows CE 支持的标志值。
标志

数据类型说明
FLG_ADDREG_NOCLOBBER
0x00000002
如果注册表项存在,请不要改写它。您可以将此标志与表中的其他标志组合。
FLG_ADDREG_TYPE_SZ
0x00000000
REG_SZ 注册表数据类型。通常为默认类型,这样在注册表项操作此类型的 value 时可省略此标志。
FLG_ADDREG_TYPE_MULTI_SZ
0x00010000
REG_MULTI_SZ 注册表数据类型。其后的 value 字段可以包含由逗号隔开的字符串列表。不需要字符串值的 NULL 结束符。
FLG_ADDREG_TYPE_BINARY
0x00000001
REG_BINARY 注册表数据类型。其后的 value 字段必须是由逗号分隔(每个字段为一字节)的数值列表且不能使用 0x 十六进制前缀。
FLG_ADDREG_TYPE_DWORD
0x00010001
REG_DWORD 注册表数据类型。只支持 Win32 Setup .inf 文档中的非兼容格式。
value
必选项。用于指定由 value_name 给出并添加到注册表项中的实际数据的值。对指定的类型应该使用合适的格式。

五、[Manufacturer]节说明

该节标志一个或者多个用INF文件安装的设备的制造商,它也为制造商的设备即驱动程序的安装定义Models节名。每个INF文件都必须有Manufacturer节。
样例:
[Manufacturer]
%MfgName%=Microsoft

[Microsoft]
%USB/VID_045E&PID_930A.DeviceDesc%=BULKUSB.Dev, USB/VID_045E&PID_930A
说明:
在Strings节中可以找到%MfgName%定义的字符串,例如在Strings节中定义MfgName=”Intel”,表明设备制造商是Intel。而右边的Microsoft也是制造商的Models节的节名。该节名是有Inf编写者自己定义的,不属于系统节名。每个制造商的Models节至少标识一个设备,并规定设备的VID和PID。同时引用这个设备inf文件的Install节。该节也可以规定一个或多个附加设备ID。当设备管理器发现设备检测ID与此节定义ID相符时,设备管理器就知道找到了正确的INF文件。

六、[install.Service]节说明

该节包含一个或多个AddService命令,用以控制一个特定驱动程序的服务装载的时间和方式,控制本服务对其他服务和下一级驱动程序的依赖等。
样例:
[BULKUSB.Dev.NT.Services]
Addservice = BULKUSB, 0x00000002, BULKUSB.AddService

[BULKUSB.AddService]
DisplayName = %BULKUSB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %\System32\Drivers\BULKUSB.sys
LoadOrderGroup = Base
说明:
其中BULKUSB是指定的所需安装服务的名称。对一个设备,这个值通常是该设备驱动程序的属性。0x00000002是一个系统指定的标记,不同的标记有不同的服务功能。BULKUSB.AddService是inf文件编写者定义的特定节,其中包括了所需要添加的服务项目,该节的定义可以在服务子键中观察其对应的子项。
针对不同安装平台,需要对其完成节名修饰,如
[BULKUSB.DEV.NT.Services]
[BULKUSB.DEV.NTAMD64.Services]

七、节名修饰

Install节通常包含指导安装程序安装所需软件的实际指示。该节必须在一个设备或者型号(Models)的条目中引用。根据节名的修饰,选择驱动相应的工作平台。
样例:
[install-section-name]
……
无修饰表示在Windows 9x平台中选择安装的条目。
[install-section-name.nt]
……
.nt修饰表示在Windows 2000平台中选择安装的条目。
[install-section-name.ntx86]
……
.ntx86表示限定在x86为基础的Windows 2000平台上安装的驱动。
Windows Server 2003 SP1 和更高 Windows 版本上的驱动程序 INF 文件必须使用 .ntia64 或 .ntamd64 正确修饰 [Manufacturer] 节和 [Models] 节名称中的条目,以指定非 x86 系统上的操作系统版本。此更改不会影响基于 x86 的系统的 INF 文件或非 PnP 驱动程序的 INF 文件(包括基于 x64 的体系结构的文件系统驱动程序 INF 文件)。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值