㈠、INF文件是什么
.INF是Device Information File(设备信息文件)的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用.INF文件来安装的。.INF文件从Windows3.X时代就开始大量被使用了。(说明:绿部分可以忽略,仅做说明。蓝部分为重点突出,文中要点,红部分为特别注意,看仔细哦。)先看这个最常见的.INF文件哈:
;示例04寒夜孤星AutoRun.inf【自动播放】
[AutoRun]
icon=%SystemRoot%\system32\SHELL32.dll,27
怎么样?没有比这个再简单的.INF文件了吧?这个就是所有.INF中最知名的啦!用于自动播放滴.INF,通常位于根目录下。那么.INF是不是就很简单了捏?也不是。如果你不怕头晕的话,就接着看下去哈。。。
.INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然.INF只
是纯文本文件,但是当我们在文件管理器explorer对.INF文件按鼠标右键后,在右键菜单上就会出现“安装I”命令。
此“安装”动作关联命令行程序基本形式为:
RunDll/rundll32setupx.dll/SetupAPI.DLL,InstallHinfSection section reboot-mode inf-name
其中,rundll/rundll32程序以命令行的形式调用Windows的动态链接库,其命令格式为:
setupx.dll/SetupAPI.DLL是安装API(Setup API)函数库,setupx.dll/SetupAPI.DLL与其后的入口点用逗号(,)分开,入口点是大小写敏感的。
Section是INF文件内初始执行节名,首先执行该节内容,默认情况下名称为“DefaultInstall”,系统用户一般不宜对此做任何改动,如被改动,则在后续INF文件的Install节使用相应修改后的名称。reboot-mode是重启动参数,指示在INF文件执行后对系统的设置进行了改变,操作系统是否重新启动。该参数一般设为132或4,即由安装程序决定是否必须重启动,因为某些设置的改变必须在重启动后才能生效。
inf-name是INF文件的名称,“%1”即为所选中文件本身。
Windows XP SP3下为(示例):%SystemRoot%\ setupapi,InstallHinfSection DefaultInstall132%1
说明:rundll及Setupx.dll在win9x系列的操作系统使用。在以后的讲解中不再区分这些。。。
这是因为微软公司已在其操作系统Windows中内置提供了Setup API(可以解释.INF 脚本文件setupx.dll/SetupAPI.DLL,setupx.dll/SetupAPI.DLL是安装API(Setup API)函数库,包含了InstallHinfSection、SetupGetInfSections、SetupInstallFromInfSection、SetupPromptForDisk、SetupDiCreateDevRegKey等INF文件内部语法检查、节名搜索、注册键创建等功能函数。),我们只需用文本编辑软件编写.INF文件,便可完成大部份的安装工作,所以尤其是在软体的大小并不是很大的情况下,安装工作不是很复杂的时候,使用.INF文件来进行安装工作将会是一个好选择。而且如果要安装设备驱动程序,.INF文件是目前唯一的选择。可以用.INF文件创建包括注册表条目和目的目录的自定义软件安装指令。.INF文件可以提供有限的平台独立性,并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安装硬件设备的驱动程序服务的,本文的目的就是介绍.INF文件的功能、结构、并提供了几个事例来说明如何用.INF文件,如何扩展.INF文件的用途,比如制作绿软件,仅供参考。
驱动层次模型:
I/O管理器
文件驱动
中间层驱动
设备驱动
硬件抽象层
下面首先给出一个驱动程序的.INF文件的例子,华尔特F18型摄像头驱动(本人滴),是我从摄像头驱动安装程序中抽取出来的用于WinXP的系统安装的usbvm31b.INF文件,删除了大部分内容,紧紧保留了一个基本的.INF文件的框架。
安装INF文件
通常情况下,硬件厂商已经将驱动程序打包为一个安装程序或自解压程序,我们只需直接执行或即可,不过笔者建议还是安装.INF文件为好,这样不会同时安装一些无用的垃圾文件。
第一步:解压缩驱动程序
如果下载回来的驱动程序是一个ZIP格式的压缩包,首先将其解压缩;如果下载回来的驱动程序是一个EXE格式的自解压文件,请使用WinRAR或WinZIP释放到一个临时文件夹中,然后查到其中的.INF文件。
第二步:安装INF
在“我的电脑”或“资源管理器”中右击刚才到的.INF文件,执行“安装”命令就可以了。这是因为微软在Windows中提供了Setup API,驱动程序开发人员不需要考虑接口、安装等事情。
.INF文件的格式
usbvm31b.INF中,可以看到.INF文件是由许多节(Section)组成,与.INI文件类似,整个.INF文件由几个节组成,节名用方括号扩起来,如[version]节,[Manufacturer]节,和[Strings]节等等。而每个节又由一系列的条目组成,每个条目都是是由一个键(Key)与一个值(Value)组成,都是“Key=Value”这样的形式,在这些节中定义的项目可以完成硬件的自动检测和软件(包括驱动程序)的安装。.INF文件中分号后面的字符串是注释。在一个.INF文件中,所有跟随在分号(;)后的文字都会被视为注释。注释并不一定要在新行开始,可以在一行文字后面加入注释。
节的名称节的作用
[Version]INF文件头,提供有效INF文件的版本信息
[DefaultInstall]
包含安装所关联动作(文件拷贝或删除,注册表键值的更新、子键增删等),在INF 文件内的节名指针,默认情况下首先执行该节内容
[OtherInstall]与[DefaultInstall]节遵循相同的语法,但必须被显示地调用,常被用来定义反安装
动作
[DestinationDirs]指定罗列于一个节内将被拷贝、删除或重命名的文件在盘上的位置
[FileCopy/Delete/RenameSection(s)]罗列被拷贝、删除或重命名的文件
[RegistryUpDate RenameSection(s)]罗列对注册表键值的更新、子键增删等动作
[IniFileUpDate RenameSection(s)]指定对ini文件的更新,快捷方式可通过该节进行创建[SourceDisksNames]罗列文件所在盘的盘名、盘卷标、盘序列号
[SourceDisksFiles]罗列安装时使用的源文件极其所在盘
[Strings]罗列本地化字符串(或称宏字符串)
说明:表中黑体节名是保留关键字,名称固定,大小写不敏感,斜体节名名称任意,由INF
文件编写者确定。每节的标题字符均用括号([])括起。限于篇幅本文只对黑体节名做进一步
的解释,斜体节名将根据情况而定。黑体和斜体仅用于本表,在以后的内容中不做区分。
.INF文件的语法是统一的分节语法,随着操作系统的更新,微软逐渐增加了一些必要的关键字,但是整个的.INF文件的结构不会变化。从语法上来说,.INF文件都是一个类别。
按照.INF文件的版本来分类,可以分为2类:
1AdvancedINF,在[Version]节中有“AdvancedINF=2.5,"您需要新版本的AdvPack.dll"”或
者是“AdvancedINF=2.5,"You need a newer version of AdvPack.DLL!"”这么一行语句,表
明此.INF文件需要AdvPack.dll这个动态链接库来解释执行,AdvancedINF有一些高级特
性,但是在目前用的不太多。
2普通INF,没有指明需要AdvPack.dll的.INF文件,使用SetupAPI.DLL来解释执行(win9x
系列的操作系统使用Setupx.dll),系统中缺省使用的就是这种普通INF。
.INF文件的功能
从前面的介绍,能够看出使用.INF文件可以完成如下功能:
1复制文件、删除文件、或重新命名文件。
2新增或删除注册表(Registry)中的项目。
3修改重要的系统设置文件(如Autoexec.bat、Config.sys、.INF等)。
.INF文件的生成方法
可以直接手工用一个纯文本的编辑器书写.INF文件,当相对应的.REG文件非常庞大,条目比较多时候,可以用小工具来自动的把.REG文件转换为.INF文件,然后再
进行相应的路径修改,把绝对路径替换为用逻辑磁盘标识符(LDID)来表示的路径。
如果涉及到文件操作的时候,只好手工写了,目前还没有自动化的工具。
.
INF文件的好处是,不像vbs那么强大,甚至有可能由危险的格式化代码。.INF的限制很强,这样比其他的脚本文件安全,当然相对的功能就弱,但是也足够了。
.INF文件格式和作用如下所示:
;示例01寒夜孤星usbvm31b.inf【华尔特F18型摄像头驱动】
;Installation File(.inf)for USB PC Camera
;zxy add coinstaller2004/6/17
[Version]
Signature="$CHICAGO$"
LayoutFile=Layout.inf,Layout1.inf,Layout2.inf
Class=Image
ClassGUID={6bdd1fc6-810f-11d0-bec7-08002be2092f}
Provider=%SoftMfg%
DriverVer=11/26/2003,4.2.1126.72
CatalogFile=usbvm31b.cat
[ControlFlags]
ExcludeFromSelect=*
vbs小程序代码大全[Manufacturer]
%HwMfg%=VM,NT
[DestinationDirs]
DefaultDestDir=11
VM.APP.CopyFiles=10
VM.XPAPP.CopyFiles=10
VM.STI.CopyFiles=11
VM.CustomPrp.CopyFiles=11
VM.TWAIN.CopyFiles=10,twain_32\VM301b
VM.XPTWAIN.CopyFiles=10,twain_32\VM301b
VM.USBDCam.Files.Ext=10,System32\Drivers
VM.Config.CopyFiles=10,inf
CoInstallers.CopyFiles=11
[VM]
%USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302,USB\VID_0AC8&PID_301B %USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302,USB\VID_0AC8&PID_305B [VM.NT]
%USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302.XP,USB\VID_0AC8&PID_30 1B
%USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302.XP,USB\VID_0AC8&PID_30 5B
;****************************************

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。