inf文件初探

摘要:本文讨论了仅支持右键安装Windows WDM驱动的inf文件的格式,介绍了相关规则、执行顺序和必需Section。

 

关键词:WDM驱动,INF

 

一、简介

INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。通过inf文件可以指示安装程序完成:1、文件的复制、删除和重命名操作;2、添加或删除注册表项;3、更新系统设置文件(如:Autoexec.bat、Config.sys、*.ini等)。

 

二、规则

2.1、文件大小

在2000及以后版本的系统中,inf文件的大小仅仅受限于磁盘剩余空间的大小,而在Windows 95/98/Me中inf文件的大小不能超过64K。

2.2、Section的名称

  • inf文件中Section的位置可以根据习惯进行安排,安装程序通过名称而不是其在inf文件中的位置来找到Section的;
  • inf文件中每个Section都是通过前后被方括号包含的Section名称开始的,在基于NT架构的系统中,Section名称最大不超过255个字节;在Windows 98/Me中,名称不应长于28个字符;
  • 如果同一inf文件中有多个同名Section,则系统会自动合并其下各入口(entry)或条目(directive)到一个Section下;

2.3、长度限制

inf文件中任何域的最大长度为512个字符(包括NULL结尾符)。

 

2.4、inf文件不区分大小写。

 

三、几个关键的节(Section)

若要能够正常安装驱动,以下几个Section比较关键:

3.1、Version

该Section是所有inf文件必需包含的,其中指明了驱动适用的系统版本、驱动的版本信息等。如果该Section中不包含LayoutFile条目,则该inf文件中必需再包含SourceDisksNames和SourceDisksFiles两个Section。

 

3.2、DestinationDirs

该Section指明了分发介质中提供的或者layout文件中列出的文件的目标目录。该Section只有在安装如猫或者显示器这种除了inf文件其他啥都不安装的设备时不需要。其格式:

[DefaultDestDir= dirid [, subdir ]]
[file -list -section = dirid [, subdir ]] ...

 

DefaultDestDir指定拷贝、删除和重命名那些没有在其他条目file -list -section 对应的Section中出现的文件的默认目录。

file-list-section

指定inf文件中其他地方被CopyFiles、RenFiles和DelFiles引用到的inf文件编写者定义的Section名称。当对应的Section包含DefaultDestDir入口(entry)并且该inf文件指定的所有拷贝文件操作有相同的目的目录时该入口(entry)是可选的。不过,任何inf文件中被其他地方的RenFiles和DelFiles条目引用到的Section必需列在这里。

 

dirid

为目录ID,具体请大家查阅相应的对照表。

 

subdir

指定操作所在的子目录。

 

3.3、DefaultInstall和DefaultInstall.Services

DefaultInstall节在用户右键点击inf文件并选择“安装”时被访问。

DefaultInstall.Services一般包含AddService、AddReg等入口(entry),用来指定要安装的服务和添加的注册表项等操作,其值为inf文件中一个或多个节(section)。该节是必需的,否则在右键安装时会弹出odbc配置窗口并报错。

 

3.4、ClassInstall或ClassInstall32

非系统提供设备安装类的inf文件必需该节,ClassInstall32用于windows2000及以后的平台,且可以加上后缀来指明平台,如.ntx86的后缀是指基于NT的x86架构平台。通常,该节包含一个或多个AddReg条目,包括指明该类的友好名称、图标等等信息。

除了AddReg和CopyFiles,其他条目很少用于该节。

 

3.5、Manufacturer

改节指出设备制造商,设备的安装从该节开始执行。格式如下:

manufacturer-name |
% strkey % =models-section-name |
% strkey % =models-section-name  [, TargetOSVersion ] [, TargetOSVersion ] ...    (Windows XP and later)

 

3.6、inf模型节

[ models-section-name ] |
[ models-section-name. TargetOSVersion ]     (Windows XP and later)
 

device-description = install-section-name , hw-id [, compatible-id ...]
[device-description = install-section-name , hw-id [, compatible-id ]...] ...

 

3.7、inf DDInstall和[DDInstall.Services]

DDInstall节指出了真正的安装操作。经观察,若DDInstall.Services不存在,在安装时会报错,说某函数未指定,错误号是0xe0000219,不知是什么原因?

 

3.8、Strings

该节用来定义一些供inf文件中其他地方使用的自定义符号。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值