WDM驱动程序 INF文件格式解析

INF文件全称Information File文件,是Winodws操作系统下用来描述设备或文件 等数据信息的文件。INF文件是由标准的ASCII码组成,您可以用任何一款文字编辑器查 看修改其中的内容。一般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的 认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设 备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说 明书安装电脑硬件一样,我们就是Windows系统,说明书就是INF文件。INF文件功能非 常强大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系统底下的超强
批初理。要熟练掌握和理解甚至是编写INF文件需要对其内部结构有相当的认识。下面 就让我们来深入到INF文件中的内部一窥其真面貌吧!
  INF文件的组成有节(Sections),键(Key)和值(value)三部分。
关键节有[Version]版本描述信息,主要用于版本控制。
      [Strings]字符串信息,用于常量定义。
    [DestinationDirs]定义系统路径信息。
    [SourceDisksNames]指明源盘信息。
    [SourceDisksFiles]指明源盘文件名。
               [DefaultInstall]开始执行安装。

其它的节可以自定义


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

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

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

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

  *规则五:如果一个条目的内容过多,在一行无法书写完全,则用“\”将一行内容书写为多行。

  明白了INF文件的规则后,让我们一起来解剖INF文件的结构。



;指定版本和签名节
[VERSION]
;系统根据Signuture看是不是适合当前版本,如果适合的话就执行,否则不执行,当然强制安装是可以的
;用于WIN9X
Signature="$CHICAGO$"
;WINNT+
;Signature="$Windows NT$"
;指定安装文件布局,该行是可选的,如果没有提供布局信息文件,则在INF文件内必须包含[SourceDisksNames]和[SourceDisksFiles]节
LayoutFile=filename.inf
[SourceDisksNames]节 
[SourceDisksNames]节罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。 
[SourceDisksNames]节内语句的语法为: 
disk-ordinal=“disk-description”,disk-label,disk-serial-number 
其中disk-ordinal为必选项,是盘符序列码,标识一个源盘,具有惟一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。 
disk-description为必选项,是盘描述符,用双引号括起的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。 
disk-label为源盘的卷标识。 
disk-serial-number未使用,但必须被设置为0。 
[SourceDisksFiles]节 
[SourceDisksFiles]节指定安装时使用的源文件和盘符序列码、盘描述符。 [SourceDisksFiles]节内语句的语法为:
file-name=disk-number[,subdir] [,file-size] 
其中file-name为必选项,是源盘上文件的名称。 
disk-number是包含file-name指定文件所在源盘的盘符序列码,该盘符序列码需在[SourceDisksNames]节中列出,并大于或等于1。 
Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。 
file-size为可选项,表明文件的大小,以字节为单位。

[DestinationDirs]
;指定CopyFiles、RenFiles或DelFiles入口的缺省操作目录
;语法file-list-section=LDID,[Subdir]
;LDID列表如下:
;01 ;current directory
;04 ;backup directory
;10 ;windows directory
;11 ;system dir
;12 ;iosubsys
;13 ;command
;14 ;control panel directory
;15 ;printers directory
;16 ;workgrou dir
;17 ;inf dir
;18 ;help dir
;19 ;administration dir
;20 ;fonts
;21 ;viewers
;22 ;vmm32
;23 ;color dir
;25 ;shared dir
;26 ;winboot
;28 ;host winboot
;30 ;root of boot drive
;31 ;root of host drive of a virtual boot drive
;32 ;old windows dir if exists

;以下例子为安装到window\web目录下
;DefaultDestDir=10,"web"


;--------- Manufacturer and Models Sections ----------------------------------
;Mfg0为设备,MfgName是厂商
[Manufacturer]
%MfgName%=Mfg0

; Manufacurer Name  对要安装的设备的描述,并为要安装的设备指出 [Install] 节区。
;[manufacturer-name] 
;device-description=install-section-name,device-id[,compatible-device-id]... 
;device-description 就是对要安装的设备的描述。
;install-section-name 就是此设备的 [Install] 节区名称,
;manufacturer-name 节区名称必须已在[Manufacturer] 节区中被定义。
;device-id 是此设备 的硬件标志符,每个厂家的不同的硬件对应着不同的设备标志符。

[Mfg0]

; PCI hardware Ids use the form
; PCI\VEN_aaaa&DEV_bbbb&SUBSYS_cccccccc&REV_dd
;改成你自己的ID
;DeviceDesc为设备名称的变量,在[String]中定义;PCI\VEN_9999&DEV_9999 为设备标志符
%DeviceDesc%=YouMark_DDI, PCI\VEN_9999&DEV_9999

[YouMark_DDI]
CopyFiles=YouMark_Files_Driver
AddReg=YouMark_9X_AddReg


[YouMark_9X_AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,HelloWDM.sys
HKR, "Parameters", "BreakOnEntry", 0x00010001, 0

; --------- Files (common) -------------

[YouMark_Files_Driver]
HelloWDM.sys


;--------- Strings Section ---------------------------------------------------
[Strings]
MfgName=“Microsoft
"DeviceDesc="MyDevice"

你可能感兴趣的:(WDM驱动程序 INF文件格式解析)