驱动开发学习笔记(4-1)–INF文件-1

2023-02-28 09:22:38 浏览数 (1)

INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。当我们通过“开始→控制面板→添加删除程序→Windows安装程序”来添加系统组件的时候,INF文件将会自动调用。而在其他场合下,则需要在INF文件上点击鼠标右键,然后选择“安装”,你才能顺利安装应用程序。

在C:/Windows/INF文件夹中存放有大量的INF文件。该文件夹一般处在隐含状态,如果你想查看该文件夹,可选择“查看→文件夹选项→查看”,然后在“文件和文件夹”选项下选择“显示所有文件”。

解剖INF文件的结构

INF文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑,如:记事本、写字板等。INF文件有一整套的编写规则,每一个INF文件都是严格按照这些规则来编写的。

*规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。

*规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature=”CHICAGO””的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。

*规则三:INF文件对大小写不敏感。

*规则四:“;”号后面的内容为注释。

*规则五:如果一个条目的内容过多,在一行无法书写完全,则用“”将一行内容书写为多行。 明白了INF文件的规则后,让我们一起来解剖INF文件的结构。 1.Version节 每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature=”CHICAGO””这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统,如果包含“signature=”Windows NT””这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。 另外,该节中“CLASS”条目很重要,它表明了设备的类型,常见的类型有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,通常是网卡)、Modem(调制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)。2.Manufacturer节 该节中的条目主要是描述INF文件可以识别的所有硬件设备,其中包含有设备的生产厂家,以便设备的正确安装。如“%ATi%=ATi”指明设备的生产商为“ATi”,这个大家都不会陌生吧,是显卡的生产商。 3.SourceDisksNames节 该节主要指明安装文件所在的介质。如:“1=”ATi Drivers Release CD””表明所有驱动程序都在零售版的CD盘上。 4.SourceDiskFiles节 驱动程序文件列表及被安装的位置,该节必须结合[SourceDisksNames]节才能知道具体的位置。如“atinbtxx.sys=1”,则你必须到[DestinationDirs]节去查看“1”具体代表那个位置。 5.DestinationDirs节 INF文件会指示安装程序在安装的过程中,将一些文件复制到硬盘上,或者将硬盘上的一些文件删除、重命名等。该节即指定了为实现上述目的的文件所在的目的路径。 6.DefaultInstall节和Install节 在这一节中描述了设备驱动程序与硬件设备的实际属性。默认情况下,首先执行[DefaultInstall]节,该节指定了要复制或删除的文件,注册表的更新,INF文件的更新等等信息,同时又包含指向其他节的指针。 7.String节 这一节中定义了字符串变量,当某些字符串频繁地出现在INF文件中,为简化输入,可以在该节中定义一个字符串变量,代表该字符串出现在INF文件中。 读懂INF文件 下面让我们以ATi显卡的用于Windows XP的WDM驱动程序为例来说明一下INF文件的具体含义,由于INF文件往往很长,为了说明方便,我们删除了一些大部分的信息,仅保留一个INF文件的结构,如图1所示。

INF文件精彩实例

光说不练不行,下面让我们来看几个INF文件的典型应用。

1.打开“锁”定的注册表

第一步:打开记事本程序,输入以下内容:

代码语言:javascript复制
[version]
signature=”$chicago$”
[defaultinstall]
delReg=DeleteMe
[DeleteMe]
HKCU,“SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”,“DisableregstryTools”
HKLM,“SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”,“DisableregstryTools”

输入完毕,另存为UNLOCK.INF,名字任取,扩展名必须是INF。 第二步:在“UNLOCK.INF”文件上右键单击,在弹出的右键菜单中点选“安装”,如图2所示,被锁的注册表即会应声而开。

2.巧妙利用INF文件自动备份重要的文件

大家都知道,注册表是Windows操作系统的命根子,因此,系统启动时会自动运行注册表检查程序,自动更新备份注册表文件。在系统盘的Windows目录中有一个“Scanreg.ini”,Scanregw.exe每天所执行的默认操作都是在它的控制下运行的,我们可以利用这一原理实现对我们重要文件的备份。

第一步:打开资源管理器,找到该文件,用记事本程序打开它。我们可以清楚地看到共有五个参数,如图所示。

(1)Backup 这个参数值可为0或1,默认为1。值为1表示在每天首次启动时扫描注册表,值为0表示不进行任何注册表操作。

(2)Optimize 这个参数值可为0或1,默认为1。值为1表示每次扫描注册表时删除注册表中的多余数据,从而优化注册表数据,值为0表示不进行删除操作。

(3)ScanregVersion=0.0001 程序版本说明。

(4)MaxBackupCopies 这个参数用来设置建立的备份文件的个数,值为5至99中的任一个数,默认值为5,即最大可建立五个备份文件,为更好的保护系统,一般来说设置10个左右为宜。

(5)BackupDirectory 这个参数用来设置备份文件存放的目录,默认存放目录为WindowsSysbckup,注意这里填写的必须是完整路径。

(6)Files 在“Scanreg.ini”的最后有如下注释内容“;Files=[dir code,]file1,file2,file3”,将其前面的注释符号“;”去掉,你就可以自己DIY需要注册表检查程序备份的重要文件了。默认情况下,注册表检查程序创建注册表备份文件时,会将“system.dat”、“system.ini”、“user.dat”和“win.ini”四个文件保存在“cab”压缩文件中,如果你需要将其他重要的系统配置文件添加到此压缩文件中,可在“Files=”后面输入“[目录代码],文件名1,文件名2,文件名3”,文件名之间以逗号相隔,目录代码含义如下:

10 代表C:Windows目录

11 代表C:WindowsSystem目录

30 代表C盘根目录

31 代表Windows系统所在盘的根目录

例如要把Autoexec.bat和Config.sys两个文件放到备份文件中,可设置参数为“File=30,config.sys,autoexec.bat”。 3.硬盘(U盘)也需个性化

第一:给硬盘(U盘)DIY一个可爱的图标

我们首先将硬盘的生硬图标替换为我们喜欢的图标,给硬盘披上美丽的彩衣。首先准备一图标文件,你可以用图标制作程序制作自己的图标文件,也可以使用现成的图标文件,最好是保存到硬盘某一个分区的根目录下。接着打开记事本程序,录入以下内容:

代码语言:javascript复制
[autorun]
ICON=******.ICO

其中“******”是图标文件的路径及图标文件名,请自行修改为具体的图标文件的路径及图标文件名。录入完毕,另存为“Autorun.inf”,并将其剪切到某一个你欲扮酷的分区的根目录下。

第二:让硬盘能歌善舞

想不想当你双击了硬盘分区或是点右键选择右键菜单中的“自动播放”之后,如图3所示,就自动打开音乐播放程序,开始播放音乐文件,让动听的音乐时刻环绕在你的左右。心动了吧,其实十分简单,Come On。

接着在“Autorun.inf”文件中录入以下内容:

代码语言:javascript复制
OPEN=D:Program Filesfoobar2000foobar2000.exe d:qs.fpl

其中“D:Program Filesfoobar2000foobar2000.exe”是笔者喜爱的播放器Foobar2000的具体位置,如果你用的是Winamp或其它的播放器,请替换为具体的播放器所在的位置,“d:qs.fpl”是Foobar2000播放器的播放列表文件,你也可以替换为某一个具体的音乐文件所在的路径。如果你用的是Winamp则播放列表文件应是“*.m3u”。 利用此方法也可以设置当双击硬盘分区时自动播放影视文件。 4.无人值守安装Windows 98

在Windows 98安装光盘中有一个Batch工具,可以制作用于无人值守安装的脚本,即生成一个包含安装Windows 98时需要和安装向导进行交互的各种信息的INF文件——Msbatch.inf。

首先找到位于Windows 98安装光盘“/tools /reskit/batch”目录中的“setup”程序图标安装Batch98工具。

接着,运行Batch工具,按照向导提示生成“msbatch.inf”文件,并将该文件保存到软盘中。具体的生成方法请参考有关资料,这里不再赘述。

当需要重新安装Windows 98时,用启动盘进入到DOS提示符下,将保存有“msbatch.inf”文件的软盘插入软驱,将Windows 98安装光盘插入光驱,在DOS提示符后键入如下命令:“x:/win98/setup a:msbatch.inf”,回车后即可。其中“X”为光驱和盘符。

5.将屏保请进右键菜单

当我们有事暂时离开一会儿,利用设有密码的屏幕保护程序可以保护我们当前的操作不被他人偷看。但是,在默认的设置中,屏幕保护程序最快也要在1分钟以后才能够启动,那么怎样才能快速激活屏幕保护程序呢?

最常见的方法是在桌面上建立一个启动屏保的快捷方式,在需要时双击即可启动。另外,我们还可以将屏保请进右键菜单!

第一步:打开记事本程序,录入以下内容:

代码语言:javascript复制
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shellpingbao",,,"屏幕保护"
HKCR,"CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shellpingbaoCOMMAND",,,"ssstars.scr /S "%1""

录入完毕,经检查无误后,另存为“PingBao.inf”,文件名可任取,扩展名必须是INF。

第二步:在“PingBao.inf”文件上右键单击,在弹出的右键菜单中点选“安装”。

第三步:当需要运行屏幕保护的时候,回到桌面上,在“我的电脑”图标上点击右键选择“屏幕保护”选项,如图4所示。点击一下试试,是不是立即启动屏幕保护程序了。

注意:其中的“ssstars.scr”为欲启动的屏幕保护程序的文件名,请用你喜欢的屏幕保护程序文件来替换;如果你点选右键菜单中的“屏幕保护”选项后,没有反应即没有启动屏幕保护程序,请将文中的“/S “%1″”修改为“”%1” /S”即可。 6.将磁盘管理程序请进右键菜单

对磁盘进行定期的整理是我们经常要做的一项工作,每次都是按部就班地点击“开始→程序→附件→系统工具→磁盘碎片整理程序”,然后在弹出的选择驱动器窗口中选择要整理的分区,再点击“碎片整理”按钮开始整理。这样比较麻烦,我们可以试一试将磁盘管理程序添加到右键菜单。

第一步:打开记事本程序,输入以下内容:

代码语言:javascript复制
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=addMe
[AddMe]
HKCR,"Driveshell磁盘整理command",,,"defrag.exe %1"

输入完毕,另存为AddDefrag.INF,名字任取,扩展名必须是INF。

第二步:在“AddDefrag.INF”文件上右键单击,在弹出的右键菜单中点选“安装”。

第三步:以后要进行磁盘整理,只需打开资源管理器,在相应的盘符上点右键,在弹出的右键菜单中选择“磁盘整理”即可(如图5)。

7.解决ATi显卡无法安装公版驱动的问题

有些第三方的ATi显卡无法安装公版的驱动程序,造成该问题的原因是多方面的,如有些第三方厂商在硬件上做了改动,采用了非公版的PCB设计和BIOS等,这都可能会导致无法安装公版驱动程序的情况发生。当你的显卡遇到这个问题该怎么办呢?

首先将你下载的ATi显卡驱动程序解压缩到硬盘任一目录下,在“ATiDrive”子目录中找到会列出所有的inf文件,ATiixpxx.inf——适用于Windows XP,ATii9xxx.inf——适用于Windows 9x ,ATii2kxx.inf适用于Windows 2000 。

接着打开操作系统对应的INF文件,通过菜单栏的编辑——查找功能,查找“ati.mfg”字符串,随后会看到“RADEON 7000、RADEON 7200、RADEON 7500、RADEON 8500”等条目信息,将其删除。

接着查找与你的显卡匹配的字符串,如笔者的RADEON 7500显卡,就查找“RADEON 7500”,找到如下信息:“RADEON 7500=ati2mtag_RV200,PCIVEN_1002&&&&DEV_5157&&&&SUBSYS_013A1002”,将“&&&&SUBSYS_013A1002”删除,保存文件。

现在再试试,看问题是不是解决了。

8.在命令行下安装INF文件

通常情况下,我们都是在Windows环境下安装INF文件的,但是假如有一天,你需要在命令行运行INF文件该怎么办呢?

在命令行提示符后输入“ rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 INF文件所在的路径及文件名.inf ”,回车后即可安装相应的INF文件。

0 人点赞