




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、安装一个驱动程序一个后缀是INF的文本文件控制设备驱动程序自动的安装。INF格式类似于WIN下的老 式的.INI文件,但是复杂些。一个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的值。Versio n 部分一个有效的INF文件从一个命名为Version的部分开始,它像一个INF文件的头和标识。En tryValueSig nature“ $Windows NT$" "$Windows 95$" "$Chicago$"的其中一个Class驱动程序的整个家族的类名一些名字是预先确定的,例如,Net或者DisplayClassGuid一个类的独一无二的GUIDProviderINF文件提供者的名字LayoutFile只有在系统支持的INF文
4、件中使用,OEM支持的INF文件用SourceDisksNames和 SourceDisksFiles 代替DriverVermm/dd/yyyy,x,y,v,z,必须的条目,包含可选的版本信息表.Version部分的条目Manufacturers 部分另一个必须的部分是Manufacturers,这个部分的条目列出了可以使用这个INF文件安装的设备和驱动程序,条目的形式是:manu facturer=modelmanufacturer列出被安装的硬件的制造商的INF文件的唯一名字.model提供指向INF文 件中另一个进一步安装这个模型的部分的指针,Models部分罗列在Manufactur
5、ers部分的每一个模型,在文件中必须有相应的部分,model部分的每个条目的形式是:device-descriptio n=in stall-sectio n-n ame,hw-id,compatible-id.device-description描述了设备模型的列表和一个短描述这个字符串在安装的时候在对 话框中提供给用户,因此它需要提供多种语言的文本.in stall-sectio n-n ame的值参考DD In stall部分,也描述了 INF文件的另一个进一步安装的 部分.hw-id是硬件设备在PnP兼容的总线上声明的时候返回的 PnP标识符号.例如, USBVID_045E&
6、PID_0 0标识微软 HID(Huma n In put Device的 USB 键盘设备.compatible-id 可 以是任何表示用于任何的包含在列表中的相同安装脚本的数值.DDI nstall 部分它的名字独一无二的指定从Models部分列出的每个制造商的每个模型,AddReg条目在语法上是必须的,CopyFiles条目对于DDInstall部分是重要的,它的形式 是:CopyFiles=file-list-section,file-list-section.或者CopyFiles=file name前者是更普通的版本,它允许一个指向另一个包含一个安装文件列表的部分的指针然 而对于简
7、单的驱动程序的安装,可以直接的使用文件名.En tryValueDriverVermm/dd/yyyy,x,y,v,z,必须的条目,包含可选择的版本号码CopyFiles另一个指定需要复制的文件列表的部分或者一个单独的有” 为前缀的文件名AddReg必须的,另一个包含需要的注册表信息的部分In clude指向其它的INF文件名指针列表NeedsInclude条目的子集,列岀了它的INF文件中需要的部分DelFiles指定另一个需要删除的文件列表的部分(一般是升级的目的)Ren Files指定另一个需要重命名的文件列表的部分(一般是存储安装之前的状态 )DelReg指定另一个需要删除的系统注册表
8、信息的部分ProfileItems指定另一个需要更改系统开始菜单的部分表.DD In stall部分条目CopyFiles 部分INF文件的CopyFiles部分是唯一的名字并且 CopyFiles的指示器在DDInstall部分,它的 条目的形式是:destination-filename,source-filename,temp-filename,flag二进制值符号名描述0x0400COPYFLG_REPLACEONLY如果已经有目标文件,则复制0x0800COPYFLG_NODECOMP不解压,直接复制0x0008COPYFLG_FORCE_FILEN _USE复制源文件为临时的名字,
9、强制重新激活, 重命名临时文件0x0010COPYFLG_NO_OVERWRITE不替换已存在的文件0x1000COPYFLG REPLACE BOOT FILE文件是系统加载的一部分,强制重新激活0x2000COPYFLG NOPRUNE强制复制,甚至安装者认为不需要0x0020COPYFLG_NO_VERSION_DIALOG不重写更新的文件0x0004COPYFLG_NOVERSIONCHECK总是重写目标文件0x0040COPYFLG_OVERWRITE_OLDER ONLY重写老的目标文件0x0001COPYFLG WARN IF SKIP如果用户跳过文件,则警告0x0002COPY
10、FLG_NOSKIP不允许用户跳过文件表.CopyFiles flag 的定义desti natio n-file name是需要复制的文件名,如果与源文件名不同,source-file name必须被指定,temp-file name在WIN98中是为新文件指定一个中间的文件名直到系统重新激活, 对于WIN2000来说,它是无用的.flag值指定新的目标文件的部署这些值可以OR起来使它有多个性质应该确认没有互斥的项目.因为CopyFiles条目的语法不包含指定源文件的磁盘或者路径选项,所以,必须使用其 它的 INF文件的部分SourceDisksNames和SourceDisksFiles
11、CopyFiles是复制的源文件名, 复制的目标则在DestinationDirs部分.AddReg部分INF文件的AddReg部分是唯一的名字,并且引用 AddReg的指示器在DDInstall部分这 个部分的目的是提供在系统注册表中添加或者修改条目,形式是:reg-root,subkey,value-name,flags,valuereg-root是注册表根的缩写,子键描述根键下的键名,使用反斜线字符()分开子键例如,SoftwareW2KDriverBook DriverSetting 是有效的 HKCU或者 HKLM根键的子键.缩写意义HKCRHKEY CLASSES ROOTHKCU
12、HKEY CURRENT USERHKLMHKEY LOCAL MACHINEHKUHKEY USERSHKR设备安装的硬件子键表.AddReg reg-root缩写的意义value-name指定被添加或者修改注册表值每个系统注册表键包含零个或者多个不同数 据类型的值注册表编辑器在右边的窗格列出了子键的值值的名字和值的数据也一起显示 出来.左边的窗格仅仅显示子键.flags指定数据的类型.二进制值符号意义0x00000FLG_ADDREG_TYPE_SZ以零为结束的字符串0x00001FLG ADDREG BINVALUETYPE二进制数据0x00002FLG_ADDREG_NOCLOBBER
13、不替换现有的值0x00004FLG_ADDREG_DELVALUE删除子键或者值的名字0x00010FLG_ADDREG_KEYONLY创建子键,不顾值0x00020FLG_ADDREG_OVERWRITEONLY如果值存在,替换它,否则什幺也不作0x10000FLG ADDREG TYPE MULTI SZREG MULTI SZ值(数组)0x00008FLG ADDREG APPEND附加到存在的 REG MULTI SZ数组0x20000FLG ADDREG TYPE EXPAND SZREG EXPAND S敎据0x10001FLG ADDREG TYPE DWORDDWORD 值0x
14、20001FLG ADDREG TYPE NONEREG NONE值表.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值是一个SourceDisksNam
16、es部分指定的可以找到文件名的磁盘,可选的 subdir值 指定文件的路径可选的size值指定解压缩文件的字节大小,安装过程使用这个数据在尝试 复制文件之前决定目标系统是否适合安装.DestinationDirs 部分这是个必须的提供目标路径的部分.file-list-section=dirid,subdir或者DefaultDestDir=dirid,subdirfile-list-section是一个被CopyFiles的指示器唤起的部分它指定所有的被指示器复制的 文件安装到指定的路径对于DefaultDestDir,用于CopyFiles中所有的指示器,通常与file-list-sect
17、ion 联合使用.值意义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
18、路径24应用软件路径25共享路径18帮助路径16406All Users'Start Menu16407All UsersStart Men u'Programs16408All UsersStart Men uProgramsStartup16409All UsersDesktop16415All UsersFavorites16419All UsersApplicati on Data16422Program Files16427Program FilesCo mmon16429All UsersTemplates16430All UsersDocume nts表.Dest
19、inationDirsdirid 定义部分为了让复制的文件在目标系统中起驱动程序的作用,必须通知服务控制管理器(SCM),在 WIN2000中安装的每个驱动程序在注册表的HKLMSystemCurrentControlSet'Services下面,ServiceType值是1表示内核模式的驱动程序.StartType指出在系统引导过程中在何时加载 驱动程序.ErrorControl值决定在驱动程序加载的过程中如果遇到错误后如何是好.ServiceBinary值指出驱动程序的位置(.SYS文件)但是可能会被遗漏,如果二进制文件 在windir%system32drivers路径并且与HK
20、LM.Services下面的子键名的名字相同的时候就 发生这种情况.部分条目的形式是:AddService=ServiceName,flags,service-i nstall-sectio n ,eve ntlog-i nstall-sectio nServiceName描述服务的名字,典型的是驱动程序的名字(没有.SYST展名)二进制值符号名意义0x0002ASSOCSERVICE驱动程序是一个 FDO,不是滤波驱动程序0x0008NOCLOBBER DISPLAYNAME不重写 friendly 名字0x0100NOCLOBBER DESCRIPTION不重写 Description0x
21、0010NOCLOBBER STARTTYPE不重写starttype0x0020NOCLOBBER ERRORCONTROL不重写错误控制表.AddService flags 定义service-install部分和可选的eventlog-install部分唤起附加的控制服务值条目的INF部分(例 如,ServiceType和 StartType)-ServiceI nstall 部分ServiceI nstall部分,它的名字在部分的 AddService条目中唯一指定,控制和安装驱动程 序到服务控制管理器.条目值DisplayName驱动程序的Friendly名字,显示在设备管理器中De
22、scripti on简短的描述驱动程序或者服务的目的,显示在设备管理器中ServiceType驱动程序类型:0x01 -内核驱动程序,0x02 -文件系统驱动程序StartType何时驱动程序加载:0 -引导时,1 -系统开始时2 -系统开始后自动加载,3 -需要时手动,4 -禁止使用ErrorC on trol驱动程序加载时错误部署:0 -忽视所有错误,1 -显示错误给用户,2 -使用最后的良好状态重新激活,忽视错误,3 -使用最后的良好状态重新激活,调试错误ServiceB inary驱动程序的全路径名,可能包含dirid值表.Service!nstall部分条目INF例子前面介绍的INF
23、文件好象非常复杂,这里使用一个例子说明它在下面的例子中,INF控制一个由两个文件组成的驱动程序被复制到系统的驱动程序路径,被复制到系统的帮助路径(例如,WINNTSystem32Drivers和 WINNT'Help) Versio nSignature="$Windows NT$"Class=MissilesClassGUID=C9B3D080-6889-11d4-93FC-0000 Provider=W2KDriverBookDriverVer=07/04/2000,;注释在分号(;)后面DestinationDirsDefaultDestDir=12CopyL
24、aunchHelp=18; 指定文件复制的目的地; %windir%system32driversManufacturerW2KDriverBook=MyMfgName唤起 model 部分MyMfgName开始一个 Models 部分"ISA Missile Launcher"=InstallLauncher,ISALauncher ; 我们的设备列表InstallLauncherCopyFiles=CopyLaunchFiles CopyFiles=CopyLaunchHelp AddReg=LaunchRegSectionCopyLaunchFiles; 开始 DDI
25、nstall 部分 唤起 CopyFiles 部分 .另一个是 help 的; 唤起 AddReg 部分开始CopyFiles部分CopyLaunchHelpLaunchRegSectionHKR,"Parameters","Coordinates",DWORD 值SourceDisksNames1="Missile Launcher Driver Files"SourceDisksFiles=1=1; 部分AddService=Launcher,2,LaunchService;Help文件的CopyFiles部分开始 AddReg
26、部分ADDREG_TYPE_DWORD,0; 给设备提供一个是 0 的;这个部分不是真的需要,; 因为只有两个文件并且在同一个磁盘上; 类似的,因为它们在同一个磁盘上,;所以不是真正的需要这个部分; standard help directoryLaunchService行了ServiceType=1StartType=3ErrorControl=1ServiceBinary=%12%;设置SCM,这样驱动程序就可以运; 驱动程序; 需要时手动加载; 汇报错误; 驱动程序路径使用 INF 文件一旦驱动程序的INF创建完成,必须处理它,使它有用.手动安装手动的处理INF文件,必须使用 Windo
27、ws的文件管理器选择INF文件,右击这个文件,选择安装.在真正的即插即用环境中,插入或者移除设备触发相应的驱动程序的安装,加载和卸载 因此,保留手动的安装是为了最初的测试和调试驱动程序.自动安装当一个即插即用的设备被插入到一个系统,数个子系统相互作用来加载新的驱动程序.1. 当设备被插入,硬件使用自动侦测和自动配置,告诉总线驱动程序设备出现依赖 于总线硬件,这可能涉及通知总线驱动程序一个新的总线设备列举发生.在这一步的最 后,驱动程序发现新的设备出现并且有一个指定的设备 ID 2. 内核模式PnP管理器通知用户模式PnP管理器一个新的有一个指定ID的设备出现在 系统中.3. 用户模式PnP管理
28、器使用 WIN2000的Setup API库为新的设备提供一个类似的驱动程序列表.为了合适的驱动程序,系统使用新设备的class和model查找系统的INF目录(例如,WINNT'INF) 4.如果不能找到合适的INF文件,系统不进行进一步的动作直到一个有特权的用户进 入系统用户被提供一个新的硬件向导用户提供驱动程序的位置和合适的INF文件位5. 一旦找到INF文件,它被使用CfgMgr API库处理驱动程序文件和注册表条目被安 装和修改内核模式的PnP管理器主要执行这个步骤.6. 基于INF文件的指导,内核模式PnP管理器加载任何低层的滤波驱动程序,然后是 functional驱动程
29、序,最后是高层的驱动程序在堆栈中的高层的驱动程序然后发送适 当的 PnP信息,包括 IRP_MN_START_DEVICE.添加/移除硬件向导在安装过程中,主要的与用户的交互是添加新硬件向导注意有一个制造商的列表(来自于INF文件的Manufacturers部分),和Models列表(来自于INF文件的Models部分)通常,用户手动选择适当的驱动程序去安装和加载如果驱动程序被安装,它的DriverEntry和AddDevice例程必须仍然有效,这样使请求驱动的硬件满意新代码的设置换 句话说,手动的选择可能成功的安装,但是初始化是失败的.Class名字和设备IDs即插即用设备自动安装的过程很大
30、程度上依赖安装程序的定位合适驱动程序的INF文件和文件中各个部分的能力.这个部分文章的目的是解释 Class名字和设备Ids,还有定位INF 文件的过程.每个即插即用设备应该有一个唯一的指定硬件模型的标识符号因此提供设备ID给即插即用总线硬件和总线驱动程序当然,总线驱动程序在新的设备被插入后的很短时间内请求 设备ID 设备ID的形式与总线类型有关但是,一般看起来是:venu merator><e nu merator-specific-device-ID>(例如,PCIVEN_1000&DEV_0001 &SUBSYS_OOOOOOOO&REV_02)
31、对于驱动程序代码,一个硬件设备可能汇报多个设备ID,它是设备功能上的与很多models兼容的陈述因为INF文件的Models部分包含一个hw-id值,所以,寻找与新安装的 设备返回的设备ID相匹配的INF文件中的条目非常简单.同样的INF条目允许相兼容硬件的 列表的规范有附加的设备Ids形式如果设备ID不能在INF文件中定位精确的匹配,就使用 兼容的ID 另一个为设备定位合适的驱动程序的关键元素是安装类(Setup Class的观念一系列相关的设备可以共享分层的驱动程序(例如,upper或者lower滤波器),甚至在堆栈中个别的驱动程序安装类被GUID和name唯一的标识微软定义了一系列驱动程
32、序类,新的类可 能被定义新的硬件组创建新的组之前,必须选择一个新的GUID和class名字.类名意义GUID13941394火线控制器6bdd1fc1-810f-11d0-bec7-08002be2092fBattery电池设备72631e54-78a4-11d0-bcf7-00aa00b7b32aCDROMCD-ROM设备4d36e965-e325-11ce-bfc1-08002be10318DiskDrive磁盘设备4d36e967-e325-11ce-bfc1-08002be10318Display显示适配器4d36e968-e325-11ce-bfc1-08002be10318Flop
33、pyDisk软盘控制器4d36e980-e325-11ce-bfc1-08002be10318HDC硬盘控制器4d36e96a-e325-11ce-bfc1-08002be10318HIDClass人性化的输入设备745a17a0-74d3-11d0-b6fe-00a0c90f57daImage成像设备6bdd1fc6-810f-11d0-bec7-08002be2092fInf raredIrDA设备6bdd1fc5-810f-11d0-bec7-08002be2092fKeyboard键盘4d36e96b-e325-11ce-bfc1-08002be10318MTD存储器技术驱动程序4d3
34、6e970-e325-11ce-bfc1-08002be10318Media多媒体设备4d36e96c-e325-11ce-bfc1-08002be10318Modem调制解调器4d36e96d-e325-11ce-bfc1-08002be10318Mon itor监视器4d36e96e-e325-11ce-bfc1-08002be10318Mouse鼠标器4d36e96f-e325-11ce-bfc1-08002be10318Multifu ncti on多功能设备4d36e971-e325-11ce-bfc1-08002be10318Network网络适配器4d36e972-e325-11
35、ce-bfc1-08002be10318NetClie nt网络客户机4d36e973-e325-11ce-bfc1-08002be10318NetService网络服务器4d36e974-e325-11ce-bfc1-08002be10318NetTra ns网络传输4d36e975-e325-11ce-bfc1-08002be10318PCMCIAPCMCIA适配器4d36e977-e325-11ce-bfc1-08002be10318Ports端口 (COM & LPT)4d36e978-e325-11ce-bfc1-08002be10318Prin ter打印机设备4d36e9
36、79-e325-11ce-bfc1-08002be10318Volume存储卷71a27cdd-812a-11d0-bec7-08002be2092fSystem系统设备4d36e97d-e325-11ce-bfc1-08002be10318USBUSB36fc9e60-c465-11cf-40000表.安装类:名字和GUIDs自定义安装驱动程序一般提供两个定制驱动程序安装的信息第一,提供一个自定义的安装程序代 替新硬件安装程序,为了提供这个功能,自定义的安装程序需要使用提供的例程这个库中 的每个函数的形式是SetupDiXxx. DDK提供使用这个库的详细资料.第二,驱动程序可以提供一个自定义的设置设备的向导页在它的工作要完成之前,安 装程序发送一个 DIF_NEWDEVICEWIZARD_FINIS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甘肃省白银市靖远县重点中学2024年中考数学模试卷含解析
- 广东沧江中学2024届中考数学仿真试卷含解析
- 2025部门级安全培训考试试题含答案(培优A卷)
- 2025年新工人入场安全培训考试试题研优卷
- 2024-2025管理人员岗前安全培训考试试题【典优】
- 2025年新入职工入职安全培训考试试题含完整答案(有一套)
- 2025公司级安全培训考试试题【突破训练】
- 2025企业主要负责人安全培训考试试题附参考答案【培优A卷】
- 2025年公司三级安全培训考试试题ab卷
- 工业分析 第三版 课件全套 盛晓东 第1-6章 试样的采集和制备 - 安全分析和实验室安全知识
- 克服厌学情绪的有效策略主题班会
- 2025年陕西延长石油集团矿业公司招聘笔试参考题库含答案解析
- 加油站的物联网技术应用
- 《跟上兔子》绘本五年级第1季A-Magic-Card教学课件
- 安全文明离校主题班会
- 2025-2030全球稠油行业调研及趋势分析报告
- GB/T 44994-2024声学助听器验配管理
- 银行成立网点可行性报告范文银行网点新增的可行性报告
- 2025年职教高考对口升学 护理类 专业综合模拟卷(2)(四川适用)(原卷版)
- 《Hadoop技术原理》课件-1.初识Hadoop
- 《关于严格规范涉企行政检查》知识培训
评论
0/150
提交评论