DDK中INF文件资料详解_第1页
DDK中INF文件资料详解_第2页
DDK中INF文件资料详解_第3页
DDK中INF文件资料详解_第4页
DDK中INF文件资料详解_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、实用标准文案安装一个驱动程序一个后缀是INF的文本文件控制设备驱动程序自动的安装。INF格式类似于WIN 3.x下 的老式的NI文件,但是复杂些。一个INF文件允许自动的或者在对话框的帮助下安装驱动 程序文件。驱动程序安装结束后对系统产生两个持久的影响:1. 描述驱动程序的系统注册表入口,它的加载顺序和任何适当的配置数据。2. 驱动程序文件被拷贝到适当的系统路径。INF文件是影响这些改变的标准的机制,它可以提供定制安装。使用INF文件自动安装INF文件随着硬件和驱动程序一起提供,INF文件的结构和内容是驱动程序作者的责任。 INF文件结构INF文件是被分(section)成几个部分的文本文件,

2、每个部分被指定一个标识符号,它被 中括号()括起来一些部分的命名是必须的,而其它部分是驱动程序特定的每个部分是 一些安装动作,或者连接或者列举其它部分.文件中各个部分的顺序是不重要的,因为每个部分都是被命名和连接的一个部分继续 直到另一个部分或者遇到文件结束每个部分的标识符号是独一无二的名字,为了保持与 WIN98的兼容,它的长度被限制在28个字符之内,可以包含下划线和圆点字符,在引用整个 名字的前提下,可以包含空格字符.文件内容的一般格式如下:entry = value , value.entry是指令,关键词或者文件名,value是entry被应用的属性.entry或者value名字可以指

3、定为一个使用百分号()的代替一些具体数据的字符串,分 割INF文件的Strings提供一个特殊语言ID的值。Version 部分一个有效的INF文件从一个命名为Version的部分开始,它像一个INF文件的头和标识。En tryValueSig nature“ $Windows NT$ $Windows 95$ $Chicago$的其中一个Class驱动程序的整个家族的类名一些名字是预先确定的,例如,Net或者DisplayClassGuid一个类的独一无二的GUIDProviderINF文件提供者的名字LayoutFile只有在系统支持的INF文件中使用,OEM支持的INF文件用 Sourc

4、eDisksNames和 SourceDisksFiles代替DriverVermm/dd/yyyy,x,y,v,z,必须的条目,包含可选的版本信息表15.1. Versio n 部分的条目Manufacturers 部分另一个必须的部分是Manufacturers,这个部分的条目列出了可以使用这个INF文件 安装的设备和驱动程序,条目的形式是:manu facturer=modelmanufacturer列出被安装的硬件的制造商的INF文件的唯一名字.model提供指向INF 文件中另一个进一步安装这个模型的部分的指针,Models部分罗列在Manufacturers部分的每一个模型,在文件

5、中必须有相应的部分,modeI部分的每个条目的形式是:device-descriptio n=in stall-sectio n-n ame,hw-id,compatible-id.device-description描述了设备模型的列表和一个短描述这个字符串在安装的时候在对话框中提供给用户,因此它需要提供多种语言的文本.install-section-name的值参考DDInstall部分,也描述了 INF文件的另一个进一步安装的部分.hw-id是硬件设备在PnP兼容的总线上声明的时候返回的 PnP标识符号例如,USBVID_045E&PID_0 0标识微软 HID(Human In put

6、 Device)的 USB键盘设备. compatible-id可以是任何表示用于任何的包含在列表中的相同安装脚本的数值.DDI nstall 部分它的名字独一无二的指定从Models部分列出的每个制造商的每个模型,AddReg条目在语法上是必须的,CopyFiles条目对于DDInstall 部分是重要的,它的 形式是:CopyFiles=file-list-sectio n ,file-list-sectio n.或者CopyFiles=file name前者是更普通的版本,它允许一个指向另一个包含一个安装文件列表的部分的指针然 而对于简单的驱动程序的安装,可以直接的使用文件名.En tr

7、yValueDriverVermm/dd/yyyy,x,y,v,z,必须的条目,包含可选择的版本号码CopyFiles另一个指定需要复制的文件列表的部分或者一个单独的有”为前缀的文件名AddReg必须的,另一个包含需要的注册表信息的部分In clude指向其它的INF文件名指针列表NeedsInclude条目的子集,列岀了它的INF文件中需要的部分DelFiles指定另一个需要删除的文件列表的部分(一般是升级的目的)Ren Files指定另一个需要重命名的文件列表的部分(一般是存储安装之前的状态)DelReg指定另一个需要删除的系统注册表信息的部分ProfileItems指定另一个需要更改系统

8、开始菜单的部分表 15.2. DDI nstall部分条目CopyFiles 部分INF文件的CopyFiles部分是唯一的名字并且 CopyFiles的指示器在DDInstall部分 ,它的条目的形式是:destination-filename,source-filename,temp-filename,flag二进制值符号名描述0x0400COPYFLG_REPLACEONLY如果已经有目标文件,则复制0x0800COPYFLG_NODECOMP不解压,直接复制0x0008COPYFLG_FORCE_FILEN _USE复制源文件为临时的名字,强制重新激活, 重命名临时文件0x0010CO

9、PYFLG_NO_OVERWRITE不替换已存在的文件0x1000COPYFLG_REPLACE_BOOT_FILE文件是系统加载的一部分,强制重新激活0x2000COPYFLG_NOPRUNE强制复制,甚至安装者认为不需要0x0020COPYFLG_NO_VERSION_DIALOG不重写更新的文件0x0004COPYFLG_NOVERSIONCHECK总是重写目标文件0x0040COPYFLG_OVERWRITE_OLDER_ONLY重写老的目标文件0x0001COPYFLG_WARN_IF_SKIP如果用户跳过文件,则警告0x0002COPYFLG_NOSKIP不允许用户跳过文件表 15

10、.3. CopyFiles flag 的定义dest in atio n-file name是需要复制的文件名,如果与源文件名不同,source-file name必须被指定,temp-file name在WIN98中是为新文件指定一个中间的文件名直到系统重新激 活,对于 WIN2000来说,它是无用的.flag值指定新的目标文件的部署这些值可以OR起来使它有多个性质应该确认没有互斥的项目.因为CopyFiles条目的语法不包含指定源文件的磁盘或者路径选项,所以,必须使用 其它的 INF 文件的部分SourceDisksNames和SourceDisksFiles CopyFiles是复制的

11、源文件名,复制的目标则在DestinationDirs部分.AddReg部分INF文件的AddReg部分是唯一的名字,并且引用 AddReg的指示器在DDInstall部分 这个部分的目的是提供在系统注册表中添加或者修改条目,形式是:reg-root,subkey,value-name,flags,valuereg-root是注册表根的缩写,子键描述根键下的键名,使用反斜线字符()分开子键.例如,SoftwareW2KDriverBook DriverSetting是有效的 HKCI或者 HKLM艮键的子键.缩写意义HKCRHKEY_CLASSES_ROOTHKCUHKEY_CURRENT_U

12、SERHKLMHKEY_LOCAL_MACHINEHKUHKEY USERSHKR设备安装的硬件子键表 15.4. AddReg reg-root缩写的意义value-name指定被添加或者修改注册表值每个系统注册表键包含零个或者多个不同数 据类型的值注册表编辑器在右边的窗格列出了子键的值值的名字和值的数据也一起显示 出来.左边的窗格仅仅显示子键.flags指定数据的类型.二进制值符号意义0x00000FLG_ADDREG_TYPE_SZ以零为结束的字符串0x00001FLG_ADDREG_BINVALUETYPE二进制数据0x00002FLG_ADDREG_NOCLOBBER不替换现有的值0

13、x00004FLG_ADDREG_DELVALUE删除子键或者值的名字0x00010FLG_ADDREG_KEYONLY创建子键,不顾值0x00020FLG_ADDREG_OVERWRITEONLY如果值存在,替换它,否则什幺也不作0x10000FLG_ADDREG_TYPE_MULTI_SZREG_MULTI_SZt (数组)0x00008FLG_ADDREG_APPEND附加到存在的 REG_MULTI_SZ数组0x20000FLG_ADDREG_TYPE_EXPAND_SZREG_EXPAND_S数 据0x10001FLG_ADDREG_TYPE_DWORDDW0R 值0x20001FL

14、G_ADDREG_TYPE_NONEREG_NON值表 15.5. AddReg flags 定义系统注册表对于驱动程序安装的重要性将在后面讨论.SourceDisksNames 部分如果INF文件包含的驱动程序文件分布在多个磁盘上,INF文件就必须包含 Source-DisksNames部分,这个部分包含文件分布的每个磁盘的人口.diskid=disk-descripti on ,tagfile, unu sed,pathdiskid是唯一的分配设置中的名字通常,磁盘号从1开始,disk-description 是一个提示用户合适的磁盘的字符串.tagfile值有双重的作用.确定在安装过程中

15、用户提供正确的磁盘,tagfile 值在安装过程继续进行之前被检验,如果tagfile文件不存在,用户被重新提示插入正确的磁盘如果agfile值包含.CAB的扩展名,表示磁盘上的驱动程序文件是压缩文件.path值是一个以root-relative为磁盘根目录的驱动程序文件的路径像 tagfile 值一样是可选择的.SourceDisksFiles 部分INF文件必须包含一个SourceDisksFiles 部分这个部分列出了在安装驱动程序过程 中使用的文件名.每个文件都有相应的条目.file name=diskid,subdir,sizediskid值是一个SourceDisksNames部分

16、指定的可以找到文件名的磁盘,可选的subdir值指定文件的路径可选的size值指定解压缩文件的字节大小,安装过程使用这个 数据在尝试复制文件之前决定目标系统是否适合安装.Desti natio nDirs 部分这是个必须的提供目标路径的部分.file-list-sect ion=dirid,subdir或者DefaultDestDir=dirid,subdirfile-list-section是一个被CopyFiles的指示器唤起的部分它指定所有的被指示器复制的文件安装到指定的路径对于 DefaultDestDir ,用于CopyFiles中所有的指示器, 通常与file-list-secti

17、on联合使用.值意义12%windir%system32drivers对于 Windows 2000%windir%systemloSubsys对于 Windows 9810%wi ndir%11%windir%system32 对于 Windows 2000 ,%windir%system 对于 Windows 9830根驱动器的根路径54Windows 2000的根路径01这个INF文件的路径17INF文件的路径20Fonts的路径51假脱机的路径52假脱机的驱动程序路径55打印机处理机路径23Color (ICM)-1绝对路径21Viewers 路径53User Profile路径24应

18、用软件路径25共享路径18帮助路径16406All UsersStart Menu16407All UsersStart Men uPrograms16408All UsersStart Men uProgramsStartup16409All UsersDesktop16415All UsersFavorites16419All UsersApplicati on Data16422Program Files16427Program FilesCo mmon16429All UsersTemplates16430All UsersDocume nts表 15.6. Dest in atio

19、nDirsdirid定义DDI nstall.Services 部分为了让复制的文件在目标系统中起驱动程序的作用,必须通知服务控制管理器(SCM),在WIN200C中安装的每个驱动程序在注册表的 HKLMSystemCurre ntCo ntrolSetServices下面,ServiceType值是1表示内核模式的驱动程序.StartType指出在系统引导过程中在何时 加载驱动程序.ErrorControl值决定在驱动程序加载的过程中如果遇到错误后如何是好. ServiceBinary值指出驱动程序的位置(.SYS文件)但是可能会被遗漏,如果二进制文件在windir%system32driv

20、ers路径并且与HKLM.Services 下面的子键名的名字相同的时候就发生这种情况.DDI nstall.Services部分条目的形式是:AddService=ServiceName,flags,service-i nstall-sectio n ,eve ntlog-i nstall-sectio nServiceName描述服务的名字,典型的是驱动程序的名字(没有.SYS扩展名)二进制值符号名意义0x0002ASSOCSERVICE驱动程序是一个 FDO,不是滤波驱动程序0x0008NOCLOBBER_DISPLAYNAME不重写friendly名字0x0100NOCLOBBER_D

21、ESCRIPTION不重写 Description0x0010NOCLOBBER_STARTTYPE不重写starttype0x0020NOCLOBBER_ERRORCONTROL不重写错误控制表 15.7. AddService flags 定义service-install部分和可选的eventlog-install部分唤起附加的控制服务值条目的INF 部分(例如,ServiceType 和 StartType)Service In stall部分ServiceInstall 部分,它的名字在 DDInstall.Services部分的 AddService 条目中唯一指定,控制和安装驱动

22、程序到服务控制管理器.条目值DisplayName驱动程序的Frie ndly 名字,显示在设备管理器中Descripti on简短的描述驱动程序或者服务的目的,显示在设备管理器中ServiceType驱动程序类型:0x01 -内核驱动程序,0x02 -文件系统驱动程序StartType何时驱动程序加载:0 -引导时,1 -系统开始时2 -系统开始后自动加载,3 -需要时手动,4 -禁止使用ErrorC on trol驱动程序加载时错误部署:0-忽视所有错误,1 -显示错误给用户,2 -使用最后的良好状态重新激活,忽视错误,3 -使用最后的良好状态重新激活,调试错误ServiceB inary

23、驱动程序的全路径名,可能包含dirid 值表 15.8. Service In stall部分条目INF例子前面介绍的INF文件好象非常复杂,这里使用一个例子说明它在下面的例子中,INF控制一个由两个文件组成的驱动程序.Lau ncher.SYS被复制到系统的驱动程序路径,Launcher.HLP 被复制到系统的帮助路径(例如,WINNTSystem32Drivers 和 WINNTHelp) Versio nSignature=$Windows NT$Class=MissilesClassGUID=C9B3D080-6889-11d4-93FC-444553540000 Provider=W

24、2KDriverBookDriverVer=07/04/2000,1.00.2468.1注释在分号(;)后面DestinationDirsDefaultDestDir=12CopyLaunchHelp=18指定文件复制的目的地; %windir%system32drivers; standard help directoryManufacturer唤起 model 部分我们的设备列表W2KDriverBook=MyMfgNameInstallLauncherCopyFiles=CopyLaunchFiles CopyFiles=CopyLaunchHelp AddReg=LaunchRegSe

25、ctionCopyLaunchFiles开始 DDInstall 部分 唤起 CopyFiles 部分 . 另一个是 help 的唤起 AddReg 部分开始 CopyFiles 部分MyMfgName;开始一个 Models 部分ISA Missile Launcher=InstallLauncher,ISALauncher ;文档Launcher.sysCopyLaunchHelp ; Help 文件的 CopyFiles 部分 Launcher.hlpLaunchRegSection ; 开始 AddReg 部分 HKR,Parameters,Coordinates,FLG_ADDREG

26、_TYPE_DWORD,0; 给设备提供一个是 0 的 DWORD 值SourceDisksNames;这个部分不是真的需要,1=Missile Launcher Driver Files ;因为只有两个文件并且在同一个磁盘上SourceDisksFilesLauncher.sys=1;类似的,因为它们在同一个磁盘上Launcher.hlp=1;所以不是真正的需要这个部分InstallLauncher.Services; DDInstall.Services部分AddService=Launcher,2,LaunchServiceLaunchService;设置SCM这样驱动程序就可以运行了S

27、erviceType=1;驱动程序StartType=3;需要时手动加载ErrorControl=1;汇报错误ServiceBinary=%12%Launcher.sys ;驱动程序路径使用 INF 文件一旦驱动程序的INF创建完成,必须处理它,使它有用.手动安装手动的处理INF文件,必须使用 Windows的文件管理器选择INF文件,右击这个文件, 选择安装.在真正的即插即用环境中,插入或者移除设备触发相应的驱动程序的安装,加载和卸载因此,保留手动的安装是为了最初的测试和调试驱动程序.自动安装当一个即插即用的设备被插入到一个系统,数个子系统相互作用来加载新的驱动程序.1. 当设备被插入,硬件

28、使用自动侦测和自动配置,告诉总线驱动程序设 备出现依赖于总线硬件,这可能涉及通知总线驱动程序一个新的总线设备列举发生. 在这一步的最后,驱动程序发现新的设备出现并且有一个指定的设备ID 2. 内核模式PnP管理器通知用户模式PnP管理器一个新的有一个指定ID的设备出现在 系统中.3. 用户模式PnP管理器使用WIN2OO0勺Setup API库为新的设备提供一个类似的驱动程序列表为了合适的驱动程序,系统使用新设备的class和model查找系统的INF目录(例如,WINNTINF).4. 如果不能找到合适的 INF 文件,系统不进行进一步的动作直到一个有 特权的用户进入系统用户被提供一个新的硬

29、件向导用户提供驱动程序的位置和合适 的INF文件位置.5. 一旦找到INF文件,它被使用CfgMgr API库处理驱动程序文件和注册表条目被安装和修改内核模式的PnP管理器主要执行这个步骤.6. 基于INF文件的指导,内核模式PnP管理器加载任何低层的滤波驱动 程序,然后是functional驱动程序,最后是咼层的驱动程序在堆栈中的咼层的驱动 程序然后发送适当的PnP信息,包括IRP_MN_START_DEVICE.添加/ 移除硬件向导在安装过程中,主要的与用户的交互是添加新硬件向导注意有一个制造商的列表(来自于INF文件的Manufacturers 部分),和Models列表(来自于INF文

30、件的Models部分)通常,用户手动选择适当的驱动程序去安装和加载如果驱动程序被安装,它的DriverEntry 和AddDevice例程必须仍然有效,这样使请求驱动的硬件满意新代码的设置. 换句话说,手动的选择可能成功的安装,但是初始化是失败的.Class名字和设备IDs即插即用设备自动安装的过程很大程度上依赖安装程序的定位合适驱动程序的INF文件和文件中各个部分的能力这个部分文章的目的是解释 Class名字和设备Ids ,还有定位INF 文件的过程.每个即插即用设备应该有一个唯一的指定硬件模型的标识符号因此提供设备ID给即插即用总线硬件和总线驱动程序当然,总线驱动程序在新的设备被插入后的很

31、短时间内请 求设备ID 设备ID的形式与总线类型有关但是,一般看起来是:venu merator(例如,PCIVEN_1000&DEV_0001 &SUBSYS_00000000&REV_02)对于驱动程序代码,一个硬件设备可能汇报多个设备ID,它是设备功能上的与很多models兼容的陈述因为INF文件的Models部分包含一个hw-id值,所以,寻找与新安装 的设备返回的设备ID相匹配的INF文件中的条目非常简单.同样的INF条目允许相兼容硬件 的列表的规范有附加的设备Ids形式如果设备ID不能在INF文件中定位精确的匹配,就使 用兼容的ID 另一个为设备定位合适的驱动程序的关键元素是安装类

32、(Setup Class)的观念一系列相关的设备可以共享分层的驱动程序(例如,upper或者lower滤波器),甚至在堆栈中个别的驱动程序安装类被GUID和name唯一的标识微软定义了一系列驱动程序类,新的类可 能被定义新的硬件组创建新的组之前,必须选择一个新的GUID和 class名字.类名意义GUID13941394火线控制器6bdd1fc1-810f-11d0-bec7-08002be2092fBattery电池设备72631e54-78a4-11d0-bcf7-00aa00b7b32aCDROMCD-ROM 备4d36e965-e325-11ce-bfc1-08002be10318Di

33、skDrive磁盘设备4d36e967-e325-11ce-bfc1-08002be10318Display显示适配器4d36e968-e325-11ce-bfc1-08002be10318FloppyDisk软盘控制器4d36e980-e325-11ce-bfc1-08002be10318HDC硬盘控制器4d36e96a-e325-11ce-bfc1-08002be10318HIDClass人性化的输入设备745a17a0-74d3-11d0-b6fe-00a0c90f57daImage成像设备6bdd1fc6-810f-11d0-bec7-08002be2092fInf raredIrDA

34、设备6bdd1fc5-810f-11d0-bec7-08002be2092fKeyboard键盘4d36e96b-e325-11ce-bfc1-08002be10318MTD存储器技术驱动程序 4d36e970-e325-11ce-bfc1-08002be10318Media多媒体设备4d36e96c-e325-11ce-bfc1-08002be10318Modem调制解调器4d36e96d-e325-11ce-bfc1-08002be10318Mon itor监视器4d36e96e-e325-11ce-bfc1-08002be10318Mouse鼠标器4d36e96f-e325-11ce-b

35、fc1-08002be10318Multifu ncti on多功能设备4d36e971-e325-11ce-bfc1-08002be10318Network网络适配器4d36e972-e325-11ce-bfc1-08002be10318NetClie nt网络客户机4d36e973-e325-11ce-bfc1-08002be10318NetService网络服务器4d36e974-e325-11ce-bfc1-08002be10318NetTra ns网络传输4d36e975-e325-11ce-bfc1-08002be10318PCMCIAPCMCIA适配器4d36e977-e325-

36、11ce-bfc1-08002be10318Ports端口 (COM & LPT)4d36e978-e325-11ce-bfc1-08002be10318Prin ter打印机设备4d36e979-e325-11ce-bfc1-08002be10318Volume存储卷71a27cdd-812a-11d0-bec7-08002be2092fSystem系统设备4d36e97d-e325-11ce-bfc1-08002be10318USBUSB36fc9e60-c465-11cf-8056-444553540000表159 安装类:名字和GUIDs自定义安装驱动程序一般提供两个定制驱动程序安装的信息第一,提供一个自定义的安装程序代 替新硬件安装程序,为了提供这个功能,自定义的安装程序需要使用setupapi.DLL!供的例程这个库中的每个函数的形式是SetupDiXxx DDK提供使用这个库的详细资料.第二,驱动程序可以提供一个自定义的设置设备的向导页在它的工作要完成之前,安 装程序发送一个 DIF_NEWDEV

温馨提示

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

评论

0/150

提交评论