没有合适的资源?快使用搜索试试~ 我知道了~
INF說明、介紹,會對驅動INF檔有所了解
资源推荐
资源详情
资源评论
INF 文件详解
INF 文件是什么
.INF 是 Device Information File 的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展
的———许多硬件设备的驱动程序都是使用 .INF 文件来安装的。.INF 文件从 Windows3.X 时代就开始
大量被使用了。
.INF 文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然 .INF
只是纯文本文件,但是当我们在文件管理器 explorer 对 .INF 文件按鼠标右键後,如图 inf 右键.PNG,
在右键菜单上就会出现“安装 I”命令,这是因为微软公司已在其操作系统 Windows 中内置提供了 Setu
p 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=Val
ue”这样的形式,在这些节中定义的项目可以完成硬件的自动检测和软件(包括驱动程序)的安装。.INF
文件中分号后面的字符串是注释。在一个 .INF 文件中,所有跟随在分号(;)后的文字都会被视为注释。
注释并不一定要在新行开始,可以在一行文字後面加入注释。
.INF 文件案格式和作用如下所示:
[Version] 节: 包含对此 .INF 文件的简短描述与此 .INF 文件支持的设备类型的信息。用于确认 .INF
文件的基本版本信息。任何.INF 文件都必须 包括这个节。
在图 usbinfpng.png 中,[Version] 节中的语句 Signature="$CHICAGO$"表明这个.INF 文件可以用
于 windows 95 以后的所有平台上,目前来说就是 win98,winme,winnt4,win2k,winxp,win2k
3。这种.INF 文件比较多见。如果[Version]节中的签名条目是 Signature="$Windows 95$",表明这
个.INF 文件可以用于 windows 95 以后的 Win9x 平台上,目前来说就是 win98,winme。 如果[Vers
ion]节中的签名条目是 Signature="$WINDOWS NT$",表明这个.INF 文件可以用于 WindowsNT 系
列的平台上,包括 winnt4,win2k,winxp,win2k3。WIN9x 系列的操作系统的 SetupAPI 将会拒绝
执行这种类型的.INF 文件。
[Manufacturer] 与 [Manufacturer Name] 节: 列出此 .INF 文件可辨识的所有硬件设备,并列出了
开发该硬件的厂商名称,主要用于硬件设备的安装。在设备驱动程序的.INF 文件中必须包括[Manufactur
er]节与 [Manufacturer Name] 节。对应到图 usbinfpng.png 中就是[Manufacturer]节和[Microsof
t]节,安装新硬件的向导中列出来的厂商名字和设备名称就是来自这两个节。这行语句“%MfgName%=
Microsoft” 的等号右边的名字指明设备制造商是 Microsoft,等号左边是厂商的名字,图中的厂商名称是
"Microsoft"(在后面讲到的[Strings]节中)。在一个.INF 文件中可以有多个设备制造商的名字,都必须
放在[Manufacturer]节中,同时[Manufacturer Name] 节可以列出该厂商的多种设备。 [Manufactu
rer Name] 节区含有对要安装的设备的描述,并为要安装的设备指出 [Install] 节区。 [Manufacture
r 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 Sto
rage 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 右键.PN
G 中,Install 操作就会执行[DefaultInstall] 节。[DefaultInstall] 节中包含指向其他节的指针,该节
可用于指定要复制和删除的文件、注册表的更新、.INF 文件的更新等。
对应到图 usbinfpng.png 中,[Install] 节就是[USBSTOR_BULK]节,其中要执行复制文件 CopyFiles
和添加注册表项目 AddReg2 种操作。
如果是安装普通的软件的.INF 文件,可以通过鼠标右键菜单上的“安装”命令来安装(图 inf 右键.PNG),
这个时候.INF 文件必须包括[DefaultInstall]节,也可以包括其他的[Install]节,用 RUNDLL32.EXE S
ETUPAPI.DLL,InstallHinfSection [Install]节的名字,这样类似的命令来安装。
[Install]节的语法:
[install-section-name]
Copyfiles=file-list-section[,file-list-section]...
LogConfig=log-config-section-name
Renfiles=file-list-section[,file-list-section]...
Delfiles=file-list-section[,file-list-section]...
UpdateInis=update-ini-section[,update-ini-section]...
UpdateIniFields=update-inifields-section[,update-inifields-section]...
AddReg=add-registry-section[,add-registry-section]...
DelReg=del-registry-section[,del-registry-section]...
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
UpdateCfgSys=update-config-section
UpdateAutoBat=update-autoexec-section
[Install] 节定义了安装程式与硬体驱动需要的资源,以便安装新的驱动程式或者软件。此节中每个条目都
有其特定格式与意义,并非每个条目都是必要的。无论是安装驱动程序还是普通的软件,最后都要从某一
个[Install] 节开始执行。
[DestinationDirs] 节: 指定硬盘上复制、删除或重命名节文件的位置(例如 \Windows 或 Windows
\System)。 .INF 文件通过[DestinationDirs]节来指定操作的目标路径,语法如下:
[DestinationDirs]
file-list-section =ldid[, subdir ]
DefaultDestDir=ldid[, subdir ]
[DestinationDirs] 节定义了 [file-list-section] 节中指定的操作(可以是 CopyFiles、RenFiles 或
DelFiles 节)的目标目录。DefaultDestDir 命令可以为 .INF 文件中的任何没有明确在[DestinationDi
rs]节中命名的 CopyFiles、RenFiles 或 DelFiles 节指定默认目标文件夹。
在.INF 文件中,使用逻辑磁盘标识符 (LDID) 来表示路径,如下表:
00 Null LDID - 可用于创建新的 LDID
01 Source Drive:\pathname
10 Windows 文件夹(等价于%windir%目录 )
11 System 文件夹
12 IOSubsys 文件夹
13 Command 文件夹
17 Inf 文件夹
18 Help 文件夹
剩余15页未读,继续阅读
资源评论
nattierblue
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
- 基于Node.js的Express框架与MySQL的后台管理系统设计源码
- 基于Java的Flink流批一体数据处理快速集成开发框架设计源码
- FirstFilterOrderCompare
- Screenshot_2024-03-28-19-17-25-020_com.ss.android.lark.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功