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

.INF文件是设备信息文件,用于硬件设备驱动的安装,它包含安装脚本,可创建注册表条目和目录。文章详细介绍了.INF文件的结构,如[Version]、[Manufacturer]、[Install]等节的作用,并通过实例解析了.INF文件如何指导驱动程序安装,包括文件复制、注册表更新等操作。此外,还讨论了.INF文件在编辑注册表、.INI文件以及处理正在使用的文件等方面的优势。
摘要由CSDN通过智能技术生成

.INF文件是什么

.INF是 Device Information File 的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用 .INF文件来安装的。.INF文件从 Windows3.X 时代就开始大量被使用了。
.INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然 .INF 只是纯文本文件,但是当我们在文件管理器explorer对 .INF文件按鼠标右键後,如图inf右键.PNG,在右键菜单上就会出现“安装I”命令,这是因为微软公司已在其操作系统 Windows 中内置提供了 Setup API(可以解释.INF脚本文件),我们只需用文本编辑软件编写 .INF文件,便可完成大部份的安装工作,所以尤其是在软体的大小并不是很大的情况下,安装工作不是很复杂的时候,使用 .INF文件来进行安装工作将会是一个好选择。而且如果要安装设备驱动程序,.INF文件是目前唯一的选择。 可以用 .INF文件创建包括注册表条目和目的目录的自定义软件安装指令。.INF文件可以提供有限的平台独立性,并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安装硬件设备的驱动程序服务的,本文的目的就是介绍 .INF文件的功能、结构、并提供了几个 事例来说明如何用.INF文件,如何扩展.INF文件的用途,比如制作绿色软件,仅供参考。

下面首先给出一个驱动程序的.INF文件的例子,如图usbinfpng.png,是我从Windows2000中抽取出来的用于Win98se的USB存储设备驱动的usbstor.INF文件,删除了大部分内容,紧紧保留了一个基本的.INF文件的框架。

.INF文件的格式

在图usbinfpng.png中,可以看到.INF文件是由许多节(Section)组成,与.INI文件类似,整个.INF文件由几个节组成,节名用方括号扩起来,如version 节,Manufacturer节,和Strings节等等。而每个节又由一系列的条目组成,每个条目都是是由一个键(Key)与一个值(Value)组成,都是“Key=Value”这样的形式,在这些节中定义的项目可以完成硬件的自动检测和软件(包括驱动程序)的安装。.INF文件中分号后面的字符串是注释。在一个 .INF文件中,所有跟随在分号(;)后的文字都会被视为注释。注释并不一定要在新行开始,可以在一行文字後面加入注释。

.INF文件案格式和作用如下所示:

[Version] 节: 包含对此 .INF文件的简短描述与此 .INF文件支持的设备类型的信息。用于确认 .INF文件的基本版本信息。任何.INF文件都必须 包括这个节。
在图usbinfpng.png中,[Version] 节中的语句 Signature=”$CHICAGO$”表明这个.INF文件可以用于windows 95以后的所有平台上,目前来说就是win98,winme,winnt4,win2k,winxp,win2k3。这种.INF文件比较多见。如果[Version]节中的签名条目是 Signature=”$Windows 95$”,表明这个.INF文件可以用于windows 95以后的Win9x平台上,目前来说就是win98,winme。 如果[Version]节中的签名条目是 Signature=”$WINDOWS NT$”,表明这个.INF文件可以用于WindowsNT系列的平台上,包括winnt4,win2k,winxp,win2k3。WIN9x系列的操作系统的SetupAPI将会拒绝执行这种类型的.INF文件。

[Manufacturer] 与 [Manufacturer Name] 节: 列出此 .INF文件可辨识的所有硬件设备,并列出了开发该硬件的厂商名称,主要用于硬件设备的安装。在设备驱动程序的.INF文件中必须包括[Manufacturer]节与 [Manufacturer Name] 节。对应到图usbinfpng.png中就是[Manufacturer]节和[Microsoft]节,安装新硬件的向导中列出来的厂商名字和设备名称就是来自这两个节。这行语句“%MfgName%=Microsoft” 的等号右边的名字指明设备制造商是Microsoft,等号左边是厂商的名字,图中的厂商名称是”Microsoft”(在后面讲到的[Strings]节中)。在一个.INF文件中可以有多个设备制造商的名字,都必须放在[Manufacturer]节中,同时[Manufacturer Name] 节可以列出该厂商的多种设备。 [Manufacturer Name] 节区含有对要安装的设备的描述,并为要安装的设备指出 [Install] 节区。 [Manufacturer Name]节语法:
[manufacturer-name]
device-description=install-section-name,device-id[,compatible-device-id]…
device-description就是对要安装的设备的描述。install-section-name就是此设备的 [Install] 节区名称,manufacturer-name 节区名称必须已在 [Manufacturer] 节区中被定义。device-id是此设备的硬件标志符,每个厂家的不同的硬件对应着不同的设备标志符。
对应到图usbinfpng.png中,就是这行语句“%GenericBulkOnly.DeviceDesc%=USBSTOR_BULK, USB\Class_08&SubClass_02&Prot_50”等号左边是设备的描述,也就是设备名字是”USB Mass Storage Device”,而等号右边的USB\Class_08&SubClass_02&Prot_50是设备标志符,这个标志符是对应到一类的硬件设备,就是USB存储设备,操作系统检测到USB存储设备,安装相应的驱动的时候,就会从设备驱动的安装节即[USBSTOR_BULK]节开始安装驱动。可以看出来此.INF文件可以用于通用的USB存储设备”USB Mass Storage Device”的驱动程序的安装。
普通的安装软件的.INF文件中,不包括[Manufacturer] 与 [Manufacturer Name] 节,即使包含,也不会执行它们,这2个节仅仅用于硬件的设备驱动中起作用。

[Install] 节: 描述设备驱动程序与硬件设备的实际属性。它也定义了所有 [Install] 节的名称,在此定义的节中包含了安装该设备的信息和命令。默认情况下,会执行 [DefaultInstall] 节,在图inf右键.PNG中,Install操作就会执行[DefaultInstall] 节。[DefaultInstall] 节中包含指向其他节的指针,该节可用于指定要复制和删除的文件、注册表的更新、.INF文件的更新等。
对应到图usbinfpng.png中,[Install] 节就是[USBSTOR_BULK]节,其中要执行复制文件CopyFiles和添加注册表项目AddReg2种操作。
如果是安装普通的软件的.INF文件,可以通过鼠标右键菜单上的“安装”命令来安装(图inf右键.PNG),这个时候.INF文件必须包括[DefaultInstall]节,也可以包括其他的[Install]节,用RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection [Install]节的名字,这样类似的命令来安装。
[Install]节的语法:

1
2
3
4
5
6
7
8
9
10
11
12
[install-section-name]
Copyfiles=file-list-section[,file-list-section]...
LogConfig=log-config-section-name
Renfiles
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值