Inf文件指导说明书_第1页
Inf文件指导说明书_第2页
Inf文件指导说明书_第3页
Inf文件指导说明书_第4页
Inf文件指导说明书_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Inf文件INF文件全称Information File文件,是Winodws操作系统下用来描述设备或文件等数据信息的文件。INF文件是由标准的ASCII码组成,您可以用任何一款文字编辑器查看修改其中的内容。一般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说明书安装电脑硬件一样,我们就是Windows系统,说明书就是INF文件。INF文件功能非常强大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系统底

2、下的超强批初理。要熟练掌握和理解甚至是编写INF文件需要对其内部结构有相当的认识。下面就让我们来深入到INF文件中的内部一窥其真面貌吧!INF文件的组成有段(Sections),键(Key)和值(value)(图示一)三部分。关键节有:Version版本描述信息,主要用于版本控制。Strings字符串信息,用于常量定义。DestinationDirs定义系统路径信息。SourceDisksNames指明源盘信息。SourceDisksNames指明源盘文件名。DefaultInstall开始执行安装。其它的节可以自定义,下面用一实例来具体讲解。 1Version节 每一个INF文件都包含一个这

3、样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature="$CHICAGO$"”这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统,如果包含“signature="$Windows NT$"”这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。另外,该节中“CLASS”条目很重要,它表明了设备的类型,常见的类型有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,通常是网卡)、Modem(调

4、制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)。 2Manufacturer节 该节中的条目主要是描述INF文件可以识别的所有硬件设备,其中包含有设备的生产厂家,以便设备的正确安装。如“%ATi%=ATi”指明设备的生产商为“ATi”,这个大家都不会陌生吧,是显卡的生产商。 3SourceDisksNames节 该节主要指明安装文件所在的介质。如:“1="ATi Drivers Release CD"”表明所有驱动程序都在零售版的CD盘上。 4SourceDiskFiles节 驱动程序文件列表及被安装的位置,该节必须结合SourceDisksN

5、ames节才能知道具体的位置。如“atinbtxx.sys=1”,则你必须到DestinationDirs节去查看“1”具体代表那个位置。 5DestinationDirs节 INF文件会指示安装程序在安装的过程中,将一些文件复制到硬盘上,或者将硬盘上的一些文件删除、重命名等。该节即指定了为实现上述目的的文件所在的目的路径。 6DefaultInstall节和Install节 在这一节中描述了设备驱动程序与硬件设备的实际属性。默认情况下,首先执行DefaultInstall节,该节指定了要复制或删除的文件,注册表的更新,INF文件的更新等等信息,同时又包含指向其他节的指针。 7String节

6、这一节中定义了字符串变量,当某些字符串频繁地出现在INF文件中,为简化输入,可以在该节中定义一个字符串变量,代表该字符串出现在INF文件中。VersionSignature=$Chicago$Provider=%Author%StringsProduct="添加文件关联演示"Version="1.0"Author="薛飞"Copyright="Copyright?2002 by Rainsoft"CustomFile="inf" ;修改您需要的文件名后缀Program="NOTEPAD

7、.EXE"  修改您需要关联的应用程序名Add.RegHKCR,"."%CustomFile%,"",FLG_ADDREG_TYPE_SZ ,%CustomFile%FileHKCR,%CustomFile%File,"",FLG_ADDREG_TYPE_SZ,安装信息HKCR,%CustomFile%"Fileshell","",FLG_ADDREG_TYPE_SZ,openHKCR,%CustomFile%"Fileshellopencommand&q

8、uot;,"",FLG_ADDREG_TYPE_SZ,%program% %1DefaultInstallAddReg=Add.Reg在Version节中"Signature"项定义了该INF文件需要运行在何种操作系统版本中。有$Windows NT$, $Chicago$, or $Windows 95$三个值供选择,一般选择$Chicago$即可。项Provider中定义了该文件的创作来源,%Author%指引用Author项的值。您也可自定其它项来描述该INF文件的版本信息。该INF文件的作用是关联文件,所以主要是对注册表的操作,我们来看Add.R

9、eg节,共四条语句,格式都是一样。HKCR表示根HKEY_CLASSES_ROOT,第二个参数是子键的路径名,第三个参数是表明值的类型,最后是值(具体见附表)。以上都是对操作的定义与过程,在节DefaultInstall中是开始执行要安装的流程,AddReg表明是对注册表进行操作,操作对象是Add.Reg节中的定义。如果您把AddReg换成DelReg则是删除注册表中的键值。当鼠标单击该INF文件在弹出的菜单中选择“安装”就开始执行您所定义的操作。该示例在系统的INF文件右键菜单中增加了查看编辑功能并设置了默认动作,因为在安装了不了解的INF文件有可能对系统产生不良的影响,这样双击文件就可打开

10、编辑该文件了。在看看INF文件在文件操作方面的能力吧。请看下面的一个例子。VersionSignature=$Chicago$Provider=%Author%StringsProduct="文件复制和安装演示"Version="1.0"Author="薛飞"Copyright="Copyright?2002 for Rainstorey"FileListProcessList.exe ;此文件已在当前目录下,下同。FileList1Wordpad.exeDestinationDirsFileList=11 ;安装

11、到Windows的系统目录FileList1=10 ;安装到Windows目录DefaultInstallCopyfiles=FileList,FileList1相同的节的作用与上一例类似,请注意新出现的节FileList,这是我自定义的节名,它表示了一个文件组,FileList1也类似。在节DestinationDirs中需定义每个文件组复制到的目录(各个常量的意义见附表)。Copyfiles指明了需要进行复制的文件组。INF文件的操作还包括服务(NT系统)程序的安装和卸载,INI文件的转换等。由于这些操作都比较的复杂和繁琐,且有一定的危险性故下次有机会再向大家进行深入探讨。最后我们来看一下

12、INF文件的执行机制,这时你也许要问不就是简单的执行一下“安装”吗?知其然不知其所以然知识水平是不会提高的。在“文件夹选项”中的“文件类型”找到INF文件的“安装”命令看到一串命令。“rundll32.exe setupapi,InstallHinfSection DefaultInst_all 132 %1”它表示了运行Dll文件setupapi.dll中的命令InstallHinfSection并传递给它起始节的名字 DefaultInstall。可见起始节是可以自定义的。INF文件的执行也可用在各种支持API调用的编程工具中。注册表操作的常量定义:-常量   

13、;       根值 HKCR HKEY_CLASSES_ROOT.HKCU HKEY_CURRENT_USER.HKLM HKEY_LOCAL_MACHINE.HKU HKEY_USERS.- FLG_ADDREG_APPEND            在多字符串后添加字符FLG_ADDREG_TYPE_SZ        &#

14、160;   字符类型FLG_ADDREG_TYPE_MULTI_SZ         字符串类型FLG_ADDREG_TYPE_EXPAND_SZ         扩展字符串类型FLG_ADDREG_TYPE_BINARY          二进制值FLG_ADDREG_TYPE_DWORD

15、60;         DWord值FLG_ADDREG_TYPE_NONE           NULL值-DestinationDirs节中所定义的常量路径-01 源目录(后跟路径)10 Windows目录11 Windows系统目录12 驱动目录17 INF文件目录18 帮助文件目录20 字体目录21 根目录24 应用程序目录25 共享目录30 当前根目录50 System目录51 Spoo

16、l 目录52 Spool 驱动目录53 用户配置目录-DefaultInstall节中定义的操作-LogConfig                Log日志文件配置Copyfiles                复制文件Renfiles   &#

17、160;             文件改名Delfiles                 删除文件UpdateInis               更新InisUpdateIni

18、Fields          更新Ini字段AddReg                   添加注册项DelReg                 

19、;  删除注册项Ini2Reg                  Ini文件转换为Reg文件-一个普遍的INF文件安装可以预见的是,每次都有同样的结果。安装的结果不依赖于系统的运行时行为。例如,引用无效co-installer普遍INF文件因为代码在一个额外的DLL不能离线系统上执行。因此,驱动程序包和普遍的INF文件可以提前配置和添加到离线系统。您可以使用InfVerif工具来测试如果你的驱动的INF文件

20、是通用的。大部分人都会安装驱动程序,但不是每个会安装驱动的人都可以看的懂inf文件格式,甚至很多写过一点驱动的人都不是很明白,结合网上看到的关于inf文件的介绍和WDM书籍的介绍,写一些自己的理解。INF是DeviceInformation File的缩写,是微软公司为硬件厂商发布硬件驱动开发的一种文件格式,INF文件包含硬件信息和控制脚本以控制硬件驱动的安装。copyright注释在设备级的驱动中应该包含一个“copyright”的注释(以分号开头的行),以满足CHKINF程序的检查,操作系统可以接受没有这个注释的INF文件,但Microsoft不会认证没有这项内容的驱动程序。(是不是说没有

21、这项内容,微软数字签名是不成功的呢?)INF文件结构INF文件包含一些由方括号括起来的段(或称节),有些段是必须的,而其它是驱动程序特定的,每个部分是一些安装动作或者连接或者列举其它部 分。文件中的顺序是不重要的,但每个段名长度被限制在28个字符内,大小写是不敏感的,这样做是为了与win98兼容,段名可以包含下划线和圆点字符。文件内容的一般格式如下:entry = value, value.entry是指令,关键词或者文件名。value是被entry应用的属性。entry和value都可以指定为用百分号(%)代替的表示符,标示符必须在Strings段中给出定义。把一个大的INF文件看成是一个树

22、结构的线形描述可以更容易理解INF文件。一个段就是树上的一个节点,而每个指令就是指向另一个段的指针。  Version 一个有效的inf文件从一个命名为Version的段开始,它想一个inf文件的头和标示,但并不一定要在文件的最顶端。EntryValueSignature“$Windws NT$”,”$Windows 95$”和”$Chicago$”中的一个。Class驱动程序类名,下表列出ClassGUID一个类的独一无二的GUID。其格式为:nnnnnnnn-nnnn-nnnn-nnnnnnnnnnnn注:n代表一个16进制数ProviderInf文件的供应商

23、,一般在Strings指定CatalogFile一般指定数字签名文件DriverVermm/dd/yyyy,x,y,v,z,必须的条目包含版本信息。(可选)LayoutFile仅由操作系统内部提供的INF文件使用  INF类名描述1394IEEE 1394总线控制器(不是外设)Battery电池设备CDROMCD-ROM驱动器,包括SCSI和IDEDiskDrive硬盘驱动器Display显示适配器FDC软盘控制器FloppyDisk软盘驱动器HDC硬盘控制器HIDClass人机接口设备Image静态图象捕捉设备,包括数码相机和扫描仪InfraredSerial-IR和Fa

24、st-IR红外端口的NDIS miniport驱动程序Keyboard键盘MediumChangerSCSI媒体交换器设备Media多媒体设备,包括音频、DVD、游戏杆、全动态视频捕捉设备Modem调制解调器Monitor监视器Mouse鼠标和其它指点设备MTD内存设备的内存技术驱动程序Multifunction多功能设备MultiportSerial智能多端口串行卡Net网络适配器NetClient网络文件系统和打印提供者(客户方)NetService网络文件系统的服务器方支持NetTrans网络协议驱动程序PCMCIAPCMCIA和CardBus主机控制器(不是外设)Ports串行和并行口

25、Printer打印机SCSIAdapterSCSI和RAID控制器,主机总线适配器miniports,和磁盘阵列控制器SmartCardReader智能卡读写器System系统设备TapeDrive磁带驱动器USBUSB主控制器和hub(不是外设)Volume逻辑存储卷驱动程序 Class和ClassGuid项:指明驱动程序所属的设备类别及其GUID,其取值情况见下表。常用设备类别及其GUIDClassClassGuid说明13946BDD1FC1-810F-11D0-BEC7-08002BE2092F1394主控制器CDROM4D36E965-E325-11CE-BFC1-0800

26、2BE10318CD-ROM驱动器DiskDrive4D36E967-E325-11CE-BFC1-08002BE10318磁盘驱动器Display4D36E968-E325-11CE-BFC1-08002BE10318显示适配器FDC4D36E969-E325-11CE-BFC1-08002BE10318软盘驱动器HDC4D36E96A-E325-11CE-BFC1-08002BE10318硬盘控制器HIDClass745a17a0-74d3-11d0-b6fe-00a0c90f57da人机接口设备Keyboard4D36E96B-E325-11CE-BFC1-08002BE10318键盘M

27、odem4d36e96c-e325-11ce-bfc1-08002be10318调制解调器Monitor4d36e96e-e325-11ce-bfc1-08002be10318监视器Mouse4d36e96f-e325-11ce-bfc1-08002be10318鼠标Net4d36e972-e325-11ce-bfc1-08002be10318网络适配器Ports4d36e978-e325-11ce-bfc1-08002be10318端口(COM&LPT)Printer4d36e979-e325-11ce-bfc1-08002be10318打印机System4d36e97d-e325-

28、11ce-bfc1-08002be10318系统设备TapeDrive6D807884-7D21-11CF-801C-08002BE10318磁带驱动器USB36FC9E60-C465-11CF-8056-444553540000USB Manufacturers必须段。列出硬件描述的所有公司。条目形式:manufacturer=model可以包含多个条目。安装多个驱动,甚至是不同厂家的驱动。model是硬件型号段。一般指向另一个继续安装的段。例如:manufacturer"Walter Oney Software"=DeviceList"Finest

29、Organization On Earth Yet"=FOOEYDeviceList.FOOEY.在model后面可以跟NTx86, NTia64, NTamd64等,用逗号隔开。是为了区分不同平台的安装。(不要也可以?)这样做也可以在model根据平台的不同,提供不同的Desciption或InstallSectionName,或是DeviceID。 Manufacturer节指明供应商及其对应Models接的名称,其各项的格式如下:%strkey%=models-section-name    其中,“strkey”代表设备制造的名字,其字符串值在S

30、tring节中定义;“models-section-name”指出Models节的名称model每个model段描述了一个或多个设备。条目形式如下:device-description=install-section-name,hw-id,compatible-id.device-description描述了设备列表,install-section-name指向的是DDInstall的部分DeviceList"AMCC S5933 Development Board(DMA)"=DriverInstall,PCIVEN_10E8&DEV_4750 

31、0;DDInstall它的名字是model段指定的install-section-name,可能再加上.NTx86或.NTia64或是.NTamd64。用后缀来控制平台的最佳安装条目。例如,假设你有三个install段,第一个无后缀,后两个分别带有.NT后缀和.NTx86后缀。如果你安装到x86平台的Windows 2000系统中,安装程序会使用.NTx86段。如果安装到在非Intel平台上运行的Windows 2000中,它将使用.NT段。如果windows支持ARM等处理器,可能要用到.NT段了。 EntryValueDriverVermm/dd/yyyy,x,y,v,z必须的条

32、目包含可选择的版本号码CopyFiles另一个指定需要复制的文件列表的部分或者一个单独的有”为前缀的文件名AddReg必须的另一个包含需要的注册表信息的部分Include指向其它的INF文件名指针列表NeedsInclude条目的子集列出了它的INF文件中需要的部分DelFiles指定另一个需要删除的文件列表的部分(一般是升级的目的)RenFiles指定另一个需要重命名的文件列表的部分(一般是存储安装之前的状态)DelReg指定另一个需要删除的系统注册表信息的部分ProfileItems指定另一个需要更改系统开始菜单的部分 AddReg条目在语法上是必须的CopyFiles条目对于D

33、DInstall部分是重要的。 CopyFiles语法如下:CopyFiles=file-list-section,file-list-section.或者CopyFiles=filename。前者是更普通的版本它允许一个指向另一个包含一个安装文件列表的部分的指针然而对于简单的驱动程序的安装可以直接的使用文件名。 CopyFiles即上面的file-list-section。CopyFiles条目形式如下:destination-filename,source-filename,temp-filename,flagdestination-filename是需要复制的文件名如

34、果与源文件名不同source-filename必须被指定temp-filename在WIN98中是为新文件指定一个中间的文件名直到系统重新激活对于WIN2000来说它是无用的。flag值指定新的目标文件的部署这些值可以OR起来使它有多个性质应该确认没有互斥的项目因为CopyFiles条目的语法不包含指定源文件的磁盘或者路径选项所以必须使用其它的INF文件的部分 SourceDisksNames和SourceDisksFilesCopyFiles是复制的源文件名复制的目标则在 DestinationDirs部分。 二进制值符号名描述 0x0400COPYFLG_REPLACE

35、ONLY如果已经有目标文件则复制 0x0800COPYFLG_NODECOMP不解压直接复制 0x0008COPYFLG_FORCE_FILE_IN_USE复制源文件为临时的名字强制重新激活重命名临时文件   0x0010COPYFLG_NO_OVERWRITE不替换已存在的文件 0x1000COPYFLG_REPLACE_BOOT_FILE文件是系统加载的一部分强制重新激活 0x2000COPYFLG_NOPRUNE强制复制甚至安装者认为不需要 0x0020COPYFLG_NO_VERSION_DIALOG不重写

36、更新的文件 0x0004COPYFLG_NOVERSIONCHECK总是重写目标文件 0x0040COPYFLG_OVERWRITE_OLDER_ONLY重写老的目标文件  0x0001COPYFLG_WARN_IF_SKIP如果用户跳过文件则警告 0x0002COPYFLG_NOSKIP不允许用户跳过文件   AddRegAddReg段在DDInstall中指定。这个部分的目的是提供在系统注册表中添加或者修改条目形式是reg-root,subkey,value-name,flags,value reg-

37、root是注册表根的缩写子键描述根键下的键名使用反斜线字符()分开子键例如SoftwareW2KDriverBookDriverSetting是有效的HKCU或者HKLM根键的子键 缩写意义HKCRHKEY_CLASSES_ROOTHKCUHKEY_CURRENT_USERHKLMHKEY_LOCAL_MACHINEHKUHKEY_USERSHKR设备安装的硬件子键 value-name指定被添加或者修改注册表值每个系统注册表键包含零个或者多个不同数据类型的值注册表编辑器在右边的窗格列出了子键的值值的名字和值的数据也一起显示出来左边的窗格仅仅显示子键flags指定数据的类型

38、flags类型如下:二进制值符号意义0x00000FLG_ADDREG_TYPE_SZ以零为结束的字符串0x00001FLG_ADDREG_BINVALUETYPE二进制数据0x00002FLG_ADDREG_NOCLOBBER不替换现有的值0x00004FLG_ADDREG_DELVALUE删除子键或者值的名字0x00010FLG_ADDREG_KEYONLY创建子键不顾值0x00020FLG_ADDREG_OVERWRITEONLY如果值存在替换它否则什幺也不作0x10000FLG_ADDREG_TYPE_MULTI_SZREG_MULTI_SZ值(数组)0x00008FLG_ADDREG

39、_APPEND附加到存在的REG_MULTI_SZ数组0x20000FLG_ADDREG_TYPE_EXPAND_SZREG_EXPAND_SZ数据0x10001FLG_ADDREG_TYPE_DWORDDWORD值0x20001FLG_ADDREG_TYPE_NONEREG_NONE值 SourceDisksNames如果INF文件包含的驱动程序文件分布在多个磁盘上INF文件就必须包含Source-DisksNames部分这个部分包含文件分布的每个磁盘的人口.diskid=disk-description,tagfile,unused,pathdiskid是唯一的分配设置中的名字通

40、常磁盘号从1开始disk-description是一个提示用户合适的磁盘的字符串。tagfile值有双重的作用确定在安装过程中用户提供正确的磁盘tagfile值在安装过程继续进行之前被检验如果tagfile文件不存在用户被重新提示插入正确的磁盘如果agfile值包含.CAB的扩展名表示磁盘上的驱动程序文件是压缩文件。path值是一个以root-relative为磁盘根目录的驱动程序文件的路径像tagfile值一样是可选择的 SourceDisksFilesINF文件必须包含一个SourceDisksFiles部分这个部分列出了在安装驱动程序过程中使用的文件名每个文件都有相应的条目。f

41、ilename=diskid,subdir,sizediskid值是一个SourceDisksNames部分指定的可以找到文件名的磁盘可选的subdir值指定文件的路径可选的size值指定解压缩文件的字节大小安装过程使用这个数据在尝试复制文件之前决定目标系统是否适合安装。 DestinationDirs这是个必须的提供目标路径的部分。file-list-section=dirid,subdir 或者DefaultDestDir=dirid,subdir 其中,“DefaultDestDir”是一个项名称,代表文件复制、删除、重命名操作的缺色很难干目标目录;“fil

42、e-list-section”指 出CopyFiles、DelFiles、RenFiles指令所引用的节;“dirid”指出目标目录值,见下表;“subdir”指出dirid目录 下的子目录。file-list-section是一个被CopyFiles的指示器唤起的部分它指定所有的被指示器复制的文件安装到指定的路径对于 DefaultDestDir用于CopyFiles中所有的指示器通常与file-list-section联合使用。以下是 DestinationDirsIDdirid指出目标目录值定义:值意义12%windir%system32drivers 对于 Wind

43、ows 2000%windir%systemIoSubsys 对于 Windows 9810%windir%11%windir%system32 对于 Windows 2000%windir%system对于 Windows 9830根驱动器的根路径54Windows 2000的根路径1这个INF文件的路径17INF文件的路径20Fonts的路径51假脱机的路径52假脱机的驱动程序路径55打印机处理机路径23Color (ICM)-1绝对路径21Viewers路径53User Profile路径24应用软件路径25共享路径18帮助路径16406All UsersStart Menu16407All UsersStart MenuPrograms16408All UsersStart MenuProgramsStartup16409All UsersDesktop16415All UsersFavorites16419All UsersApplication Data16422Program Files16427Program FilesCommon16429All UsersTemplates16430All UsersDocuments DDIns

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论