inf
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
INF文件简介
INF文件即设备信息文件(Device Information File),是Windows操作系统下用来描述设备或文件等数据信息的文件,其是一个文本文件。INF文件是由标准的ASCII 码组成,可以用任何一款文字编辑器查看或修改其中的内容。INF 文件功能非常强大,几乎能完成日常操作的所有功能,可以把它看成是Windows 系统底下的超强批处理。
INF文件的任务
inf文件可以做很多事情,但97%的inf文件是三个任务
一、识别特定的设备。主要是通过硬件ID和兼容ID号,系统从总线驱动读到的硬件ID号和inf文件中的硬件ID号进行比对,当匹配上后,系统知道这个inf文件就是为了这个设备来用的。(匹配不上了,当然不要进行后面的工作)
二、将文件从介质((如安装光盘))拷贝到系统。主要是sys文件。
三、在注册表中添加一个入口。这是描述设备和它相关的设备,提供设备或驱动指定配置信息,描述给服务驱动管理器的"服务".(这个服务,并不同于一个开机运行的一个应用程序)
两个容易混淆的问题!
一、inf文件并不是同一个语言文件一样,从文件开头运行到文件结束,inf 文件的运行顺序是基于安装阶段的不同。
二、绝大多数的节(Section)是被层次定义好的。(也就是说,这个节的名字是以前某个节定义的,或者系统定义的)
INF文件的结构
Inf文件类使用了一个叫做节的Section东西。Inf文件并不是按照文件中的顺序来运行的,所以节可以放在任何地方,但是有个节是必须在最前面的,它是[Version],有个节一直在最后,它是[Strings]
因为在设备管理器和驱动中要使用一些字符串,所以在Inf文件中定义了[Strings]这个节。
[SectionName]
节名称说明
[Version] INF文什的开始,描述版本信息,主要用于版本控制
[Strings] 字符串信息,用于常量定义
[SoureDiskName] 指明驱动程序所在的磁盘
[SoureDiskFiles] 指明驱动程序的文件名
[DestinationDirs] 指明INF 文件和驱动程序的目标目录
[Manufacturer] 指明供应商及其对应的Models 节的名称
[Models] 指明Install 节的名称,设备的硬件ID 等信息
[Install. Component] 一般用于拷贝文件,添加注册表入口
[Install. Services] 用于在注册表中“services ”键添加入口
[HW] 用于给硬件键在注册表中添加入口
在定义INF 文件时,应遵循如下语法规则:
(1)节名称和项外称都不区分大小写;
(2)节名称必须有“[]"括起来;
(3)各个节的顺序是任意的,但节中各项可能是固定的;
(4)使用反斜线“\”作为续行符;
(5)使用分号“;”表示注释行;
(6)使用%%表示一个字符串。
[Version]
这是.INF 文件标准的头,而且它指定什么样的操作系统和什么样的类安装器可以匹配这个.INF文件.
Signature="$CHICAGO$" Signature指定什么样的操作系统可以匹配这个.INF文件。$Chicago$指示所有的版本可以匹配
Class=USB 指定设备是哪个类的类名
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
指定设备类的GUID. 类和类GUID最好一致,否则安装会失败. 如果你创建你自己的类,使用DDK或SDK中GUIDGEN工具创建一个新的GUID.如果你使用一个已知的类,可以到DevGUID.H中去找GUID.
provider=%YourCompany% Provider指定谁写了这个.INF文件.
[SourceDisksNames]
1=%Cyload_INSTALL%,这里面的“1”是指磁盘序列号。磁盘是从1号开始, 而后每次加一
%Cyload_INSTALL%是一个字符串表示磁盘. 这个字符串将显示给用户,什么时候系统设备安装器需要插入磁盘到系统。
[SourceDisksFiles]
CyLoadME.sys = 1
CyLoad.sys = 1
%CyLoad.SCRIPTFILE% = 1
这个节中, 每个文件都要拷贝到系统中去, 磁盘上有什么文件要标识出来. 这个节联合SourceDisksNames节一起来工作.
CyLoadMEsys,CyLoad.sys ,%CyLoad.SCRIPTFILE% 安装在磁盘中的文件名。
“1”是一个包含该文件的磁盘的ID号, 而且在SourceDisksNames节中列有对应的磁盘.
[DestinationDirs]
CyLoadME.Files = 10, System32\Drivers
CyLoad.Files = 10, System32\Drivers
CyLoadFW.Files = 10, System32\CyLoad
CyLoadME.Files,CyLoad.Files,CyLoadFW.Files是创建的3个节的名字,它们所包含的文件名的列表,文件会被拷贝到指定的目录。
为驱动写的最常用的目录ID是:10 = %WinDir%\System32, 和12=%WinDir%\System32\Drivers, %WinDir%是预定义环境变量, 它指向你的系统目录, 而不是指向你的strings节中的宏.后面的对应是子目录。
[Manufacturer]
%MfgName%=YourCompany
它列出了这个.INF文件支持的设备的制造厂商。
如果你看这个指令, 它显示一个引用的字符串(通过宏替换)给了一个标识符作为它的值. 但, 不是那么回事. 等号标识("=") 不是一个作为赋值操作符使用, 而是作为一个分隔符. 分隔符后面是一个节的名字。它包含了一个设备模型的列表。
这个节是在安装过程的早期使用的,是当系统设备安装器搜索.INF文件去匹配硬件ID或兼容ID的时候.
[YourCompany]
%DeviceDesc%=CyLoad, USB\VID_04B4&PID_0084
[YourCompany]是一个描述设备的字符串
%DeviceDesc%是个.INF文件创建者起的节的名称, 它包含了安装设备驱动的属性.
CyLoad, USB\VID_04B4&PID_0084是一个硬件ID或兼容ID
当为一个特定的设备搜索一个.INF文件时,系统设备安装器将会在Manufacturer节开始. 它会搜索.INF文件的包含了.INF文件支持的那个厂商的设备列表.去检测硬件ID 和兼容ID列表. 如果它发现了一个匹配的, 那么它认定这个.INF文件支持这个设备, 然后去安装驱动。