摘要:本文讨论了仅支持右键安装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文件中其他地方使用的自定义符号。