


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、安装一个驱动程序 一个后缀是inf的文本文件控制设备驱动程序自动的安装。inf格式类似于win 3.x下的老式的.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的值。 version 部分 一个有效的inf文件从一个命名为version的部分开始,它像一个inf文件的头和标识。 entry value signature “$windows nt$ $windows 95$ $chicago$的其中一个 class 驱动程序的整个家族的类名一些名字是预先确定的例如net或者display classguid 一个类的独一无二的guid provider inf文件提供者的名字 layoutfile 只有在系统支持的inf文件中使用oem支持的inf文件用sourcedisks
4、names 和 sourcedisksfiles代替 driverver mm/dd/yyyy,x,y,v,z,必须的条目包含可选的版本信息 表15.1. version部分的条目 manufacturers部分 另一个必须的部分是manufacturers这个部分的条目列出了可以使用这个inf文件安装的设备和驱动程序条目的形式是: manufacturer=model manufacturer列出被安装的硬件的制造商的inf文件的唯一名字model提供指向inf文件中另一个进一步安装这个模型的部分的指针 models 部分 罗列在manufacturers部分的每一个模型在文件中必须有相应的
5、部分model部分的每个条目的形式是: device-description=install-section-name,hw-id,compatible-id. device-description描述了设备模型的列表和一个短描述这个字符串在安装的时候在对话框中提供给用户因此它需要提供多种语言的文本 install-section-name的值参考ddinstall部分也描述了inf文件的另一个进一步安装的部分hw-id是硬件设备在pnp兼容的总线上声明的时候返回的pnp标识符号例如usbvid_045e&pid_00b标识微软hid(human input device)的usb键盘设备co
6、mpatible-id可以是任何表示用于任何的包含在列表中的相同安装脚本的数值 ddinstall 部分 它的名字独一无二的指定从models部分列出的每个制造商的每个模型 addreg条目在语法上是必须的copyfiles条目对于ddinstall部分是重要的它的形式是: copyfiles=file-list-section,file-list-section. 或者 copyfiles=filename 前者是更普通的版本它允许一个指向另一个包含一个安装文件列表的部分的指针然而对于简单的驱动程序的安装可以直接的使用文件名 entry value driverver mm/dd/yyyy,
7、x,y,v,z必须的条目包含可选择的版本号码 copyfiles 另一个指定需要复制的文件列表的部分或者一个单独的有”为前缀的文件名 addreg 必须的另一个包含需要的注册表信息的部分 include 指向其它的inf文件名指针列表 needs include条目的子集列出了它的inf文件中需要的部分 delfiles 指定另一个需要删除的文件列表的部分(一般是升级的目的) renfiles 指定另一个需要重命名的文件列表的部分(一般是存储安装之前的状态) delreg 指定另一个需要删除的系统注册表信息的部分 profileitems 指定另一个需要更改系统开始菜单的部分 表15.2. d
8、dinstall部分条目 copyfiles部分 inf文件的copyfiles部分是唯一的名字并且copyfiles的指示器在ddinstall部分它的条目的形式是: destination-filename,source-filename,temp-filename,flag 二进制值 符号名 描述 0x0400 copyflg_replaceonly 如果已经有目标文件则复制 0x0800 copyflg_nodecomp 不解压直接复制 0x0008 copyflg_force_file_in_use 复制源文件为临时的名字强制重新激活 重命名临时文件 0x0010 copyflg_n
9、o_overwrite 不替换已存在的文件 0x1000 copyflg_replace_boot_file 文件是系统加载的一部分强制重新激活 0x2000 copyflg_noprune 强制复制甚至安装者认为不需要 0x0020 copyflg_no_version_dialog 不重写更新的文件 0x0004 copyflg_noversioncheck 总是重写目标文件 0x0040 copyflg_overwrite_ older_only 重写老的目标文件 0x0001 copyflg_warn_if_skip 如果用户跳过文件则警告 0x0002 copyflg_noskip
10、不允许用户跳过文件 表15.3. copyfiles flag的定义 destination-filename是需要复制的文件名如果与源文件名不同source-filename必须被指定temp-filename在win98中是为新文件指定一个中间的文件名直到系统重新激活对于win2000来说它是无用的 flag值指定新的目标文件的部署这些值可以or起来使它有多个性质应该确认没有互斥的项目 因为copyfiles条目的语法不包含指定源文件的磁盘或者路径选项所以必须使用其它的inf文件的部分sourcedisksnames和sourcedisksfilescopyfiles是复制的源文件名复制的
11、目标则在destinationdirs部分 addreg部分 inf文件的addreg部分是唯一的名字并且引用addreg的指示器在ddinstall部分这个部分的目的是提供在系统注册表中添加或者修改条目形式是 reg-root,subkey,value-name,flags,value reg-root是注册表根的缩写子键描述根键下的键名使用反斜线字符()分开子键例如softwarew2kdriverbook driversetting是有效的hkcu或者hklm根键的子键 缩写 意义 hkcr hkey_classes_root hkcu hkey_current_user hklm hk
12、ey_local_machine hku hkey_users hkr 设备安装的硬件子键 表15.4. addreg reg-root缩写的意义 value-name指定被添加或者修改注册表值每个系统注册表键包含零个或者多个不同数据类型的值注册表编辑器在右边的窗格列出了子键的值值的名字和值的数据也一起显示出来左边的窗格仅仅显示子键flags指定数据的类型 二进制值 符号 意义 0x00000 flg_addreg_type_sz 以零为结束的字符串 0x00001 flg_addreg_binvaluetype 二进制数据 0x00002 flg_addreg_noclobber 不替换现有
13、的值 0x00004 flg_addreg_delvalue 删除子键或者值的名字 0x00010 flg_addreg_keyonly 创建子键不顾值 0x00020 flg_addreg_overwriteonly 如果值存在替换它否则什幺也不作 0x10000 flg_addreg_type_multi_sz reg_multi_sz值(数组) 0x00008 flg_addreg_append 附加到存在的reg_multi_sz数组 0x20000 flg_addreg_type_expand_sz reg_expand_sz数据 0x10001 flg_addreg_type_dw
14、ord dword值 0x20001 flg_addreg_type_none reg_none值 表15.5. addreg flags定义 系统注册表对于驱动程序安装的重要性将在后面讨论 sourcedisksnames 部分 如果inf文件包含的驱动程序文件分布在多个磁盘上inf文件就必须包含source-disksnames部分这个部分包含文件分布的每个磁盘的人口 diskid=disk-description,tagfile,unused,path diskid是唯一的分配设置中的名字通常磁盘号从1开始disk-description是一个提示用户合适的磁盘的字符串 tagfile值
15、有双重的作用确定在安装过程中用户提供正确的磁盘tagfile值在安装过程继续进行之前被检验如果tagfile文件不存在用户被重新提示插入正确的磁盘如果agfile值包含.cab的扩展名表示磁盘上的驱动程序文件是压缩文件 path值是一个以root-relative为磁盘根目录的驱动程序文件的路径像tagfile值一样是可选择的 sourcedisksfiles 部分 inf文件必须包含一个sourcedisksfiles部分这个部分列出了在安装驱动程序过程中使用的文件名每个文件都有相应的条目 filename=diskid,subdir,size diskid值是一个sourcedisksna
16、mes部分指定的可以找到文件名的磁盘可选的subdir值指定文件的路径可选的size值指定解压缩文件的字节大小安装过程使用这个数据在尝试复制文件之前决定目标系统是否适合安装 destinationdirs部分 这是个必须的提供目标路径的部分 file-list-section=dirid,subdir 或者 defaultdestdir=dirid,subdir file-list-section是一个被copyfiles的指示器唤起的部分它指定所有的被指示器复制的文件安装到指定的路径对于defaultdestdir用于copyfiles中所有的指示器通常与file-list-section联
17、合使用 值 意义 12 %windir%system32drivers 对于 windows 2000 %windir%systemiosubsys 对于 windows 98 10 %windir% 11 %windir%system32 对于 windows 2000 %windir%system对于 windows 98 30 根驱动器的根路径 54 windows 2000的根路径 01 这个inf文件的路径 17 inf文件的路径 20 fonts的路径 51 假脱机的路径 52 假脱机的驱动程序路径 55 打印机处理机路径 23 color (icm) -1 绝对路径 21 vie
18、wers路径 53 user profile路径 24 应用软件路径 25 共享路径 18 帮助路径 16406 all usersstart menu 16407 all usersstart menuprograms 16408 all usersstart menuprogramsstartup 16409 all usersdesktop 16415 all usersfavorites 16419 all usersapplication data 16422 program files 16427 program filescommon 16429 all userstemplat
19、es 16430 all usersdocuments 表15.6. destinationdirsdirid定义 ddinstall.services 部分 为了让复制的文件在目标系统中起驱动程序的作用必须通知服务控制管理器(scm)在win2000中安装的每个驱动程序在注册表的hklmsystemcurrentcontrolsetservices下面servicetype值是1表示内核模式的驱动程序starttype指出在系统引导过程中在何时加载驱动程序errorcontrol值决定在驱动程序加载的过程中如果遇到错误后如何是好servicebinary值指出驱动程序的位置(.sys文件)但
20、是可能会被遗漏如果二进制文件在%windir%system32drivers路径并且与hklm.services下面的子键名的名字相同的时候就发生这种情况 ddinstall.services部分条目的形式是 addservice=servicename,flags,service-install- section,eventlog-install-section servicename描述服务的名字典型的是驱动程序的名字(没有.sys扩展名)二进制值 符号名 意义 0x0002 assocservice 驱动程序是一个fdo不是滤波驱动程序 0x0008 noclobber_displayn
21、ame 不重写friendly名字 0x0100 noclobber_description 不重写description 0x0010 noclobber_starttype 不重写starttype 0x0020 noclobber_errorcontrol 不重写错误控制 表15.7. addservice flags定义 service-install部分和可选的eventlog-install部分唤起附加的控制服务值条目的inf部分(例如servicetype和starttype) serviceinstall 部分 serviceinstall部分它的名字在ddinstall.se
22、rvices部分的addservice条目中唯一指定控制和安装驱动程序到服务控制管理器 条目 值 displayname 驱动程序的friendly名字显示在设备管理器中 description 简短的描述驱动程序或者服务的目的显示在设备管理器中 servicetype 驱动程序类型: 0x01 -内核驱动程序0x02 -文件系统驱动程序 starttype 何时驱动程序加载: 0 -引导时1 -系统开始时 2 -系统开始后自动加载3 -需要时手动4 -禁止使用 errorcontrol 驱动程序加载时错误部署: 0 -忽视所有错误1 -显示错误给用户 2 -使用最后的良好状态重新激活忽视错误
23、 3 -使用最后的良好状态重新激活调试错误 servicebinary 驱动程序的全路径名可能包含dirid值 表15.8. serviceinstall 部分条目 inf 例子 前面介绍的inf文件好象非常复杂这里使用一个例子说明它在下面的例子中inf控制一个由两个文件组成的驱动程序launcher.sys被复制到系统的驱动程序路径launcher.hlp被复制到系统的帮助路径(例如 winntsystem32drivers和winnthelp) version signature=$windows nt$ class=missiles classguid=c9b3d080-6889-11d
24、4-93fc-444553540000 provider=w2kdriverbook driverver=07/04/2000,1.00.2468.1 ; 注释在分号(;)后面 destinationdirs ; 指定文件复制的目的地 defaultdestdir=12 ; %windir%system32drivers copylaunchhelp=18 ; standard help directory manufacturer w2kdriverbook=mymfgname ; 唤起model部分 mymfgname ; 开始一个models部分 isa missile launcher
25、=installlauncher,isalauncher ; 我们的设备列表 installlauncher ; 开始ddinstall 部分 copyfiles=copylaunchfiles ; 唤起copyfiles 部分. copyfiles=copylaunchhelp ; 另一个是help的 addreg=launchregsection ; 唤起addreg 部分 copylaunchfiles ; 开始copyfiles部分 launcher.sys copylaunchhelp ; help文件的copyfiles部分 launcher.hlp launchregsectio
26、n ; 开始addreg 部分 hkr,parameters,coordinates,flg_addreg_type_dword,0 ; 给设备提供一个是0的dword值 sourcedisksnames ; 这个部分不是真的需要 1=missile launcher driver files ; 因为只有两个文件并且在同一个磁盘上 sourcedisksfiles launcher.sys=1 ; 类似的因为它们在同一个磁盘上 launcher.hlp=1 ;所以不是真正的需要这个部分 installlauncher.services ; ddinstall.services部分 addse
27、rvice=launcher,2,launchservice launchservice ; 设置scm这样驱动程序就可以运行了 servicetype=1 ; 驱动程序 starttype=3 ; 需要时手动加载 errorcontrol=1 ; 汇报错误 servicebinary=%12%launcher.sys ; 驱动程序路径 使用inf文件 一旦驱动程序的inf创建完成必须处理它使它有用 手动安装 手动的处理inf文件必须使用windows的文件管理器选择inf文件右击这个文件选择安装 在真正的即插即用环境中插入或者移除设备触发相应的驱动程序的安装加载和卸载因此保留手动的安装是为了
28、最初的测试和调试驱动程序 自动安装 当一个即插即用的设备被插入到一个系统数个子系统相互作用来加载新的驱动程序 1. 当设备被插入硬件使用自动侦测和自动配置告诉总线驱动程序设备出现依赖于总线硬件这可能涉及通知总线驱动程序一个新的总线设备列举发生在这一步的最后驱动程序发现新的设备出现并且有一个指定的设备id 2. 内核模式pnp管理器通知用户模式pnp管理器一个新的有一个指定id的设备出现在系统中 3. 用户模式pnp管理器使用win2000的setup api库为新的设备提供一个类似的驱动程序列表为了合适的驱动程序系统使用新设备的class和model查找系统的inf目录(例如winntinf)
29、 4. 如果不能找到合适的inf文件系统不进行进一步的动作直到一个有特权的用户进入系统用户被提供一个新的硬件向导用户提供驱动程序的位置和合适的inf文件位置 5. 一旦找到inf文件它被使用cfgmgr api库处理驱动程序文件和注册表条目被安装和修改内核模式的pnp管理器主要执行这个步骤 6. 基于inf文件的指导内核模式pnp管理器加载任何低层的滤波驱动程序然后是functional驱动程序最后是高层的驱动程序在堆栈中的高层的驱动程序然后发送适当的pnp信息包括irp_mn_start_device. 添加/移除硬件向导 在安装过程中主要的与用户的交互是添加新硬件向导注意有一个制造商的列表
30、(来自于inf文件的manufacturers部分)和models列表(来自于inf文件的models部分) 通常用户手动选择适当的驱动程序去安装和加载如果驱动程序被安装它的driverentry和adddevice例程必须仍然有效这样使请求驱动的硬件满意新代码的设置换句话说手动的选择可能成功的安装但是初始化是失败的 class名字和设备ids 即插即用设备自动安装的过程很大程度上依赖安装程序的定位合适驱动程序的inf文件和文件中各个部分的能力这个部分文章的目的是解释class名字和设备ids还有定位inf文件的过程 每个即插即用设备应该有一个唯一的指定硬件模型的标识符号因此提供设备id给即插
31、即用总线硬件和总线驱动程序当然总线驱动程序在新的设备被插入后的很短时间内请求设备id设备id的形式与总线类型有关但是一般看起来是: (例如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名字 类名 意义 guid 1394 1394火线控制器 6bdd1fc1-810f-11d0-bec7-08002be2092f battery 电池设备 72631e54-78a4-11d0-bcf7-00aa00b7b32a cdrom cd-rom设备 4d36e965-e325-11ce-bfc1
33、-08002be10318 diskdrive 磁盘设备 4d36e967-e325-11ce-bfc1-08002be10318 display 显示适配器 4d36e968-e325-11ce-bfc1-08002be10318 floppydisk 软盘控制器 4d36e980-e325-11ce-bfc1-08002be10318 hdc 硬盘控制器 4d36e96a-e325-11ce-bfc1-08002be10318 hidclass 人性化的输入设备 745a17a0-74d3-11d0-b6fe-00a0c90f57da image 成像设备 6bdd1fc6-810f-11
34、d0-bec7-08002be2092f infrared irda设备 6bdd1fc5-810f-11d0-bec7-08002be2092f keyboard 键盘 4d36e96b-e325-11ce-bfc1-08002be10318 mtd 存储器技术驱动程序 4d36e970-e325-11ce-bfc1-08002be10318 media 多媒体设备 4d36e96c-e325-11ce-bfc1-08002be10318 modem 调制解调器 4d36e96d-e325-11ce-bfc1-08002be10318 monitor 监视器 4d36e96e-e325-11
35、ce-bfc1-08002be10318 mouse 鼠标器 4d36e96f-e325-11ce-bfc1-08002be10318 multifunction 多功能设备 4d36e971-e325-11ce-bfc1-08002be10318 network 网络适配器 4d36e972-e325-11ce-bfc1-08002be10318 netclient 网络客户机 4d36e973-e325-11ce-bfc1-08002be10318 netservice 网络服务器 4d36e974-e325-11ce-bfc1-08002be10318 nettrans 网络传输 4d3
36、6e975-e325-11ce-bfc1-08002be10318 pcmcia pcmcia适配器 4d36e977-e325-11ce-bfc1-08002be10318 ports 端口(com & lpt) 4d36e978-e325-11ce-bfc1-08002be10318 printer 打印机设备 4d36e979-e325-11ce-bfc1-08002be10318 volume 存储卷 71a27cdd-812a-11d0-bec7-08002be2092f system 系统设备 4d36e97d-e325-11ce-bfc1-08002be10318 usb usb 36fc9e60-c465-11cf-8056-444553540000 表15.9. 安装类: 名字和guids 自定义安装 驱动程序一般提供两个定制驱动程序安装的信息第一提供一个自定义的安装程序代替新硬件安装程序为了提供这个功能自定义的安装程序需要使用setupapi.dll提供的例程这个库中的每个函数的形式是setupdixxxddk提供使用这个库的详细资料 第二驱动程序可以提供一个自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国文化产业园行业市场深度研究及发展趋势预测报告
- 2025至2030年中国小型波动开关市场调查研究报告
- 2025至2030年中国商业室内楼梯行业投资前景及策略咨询报告
- 2018-2024年中国ISP 市场运营趋势分析及投资潜力研究报告
- 2025至2030年中国双面铝牌行业投资前景及策略咨询报告
- 2025至2030年中国双罐真空热处理电炉数据监测研究报告
- 2025至2030年中国双层弯脚玻璃托盘行业投资前景及策略咨询报告
- 2025至2030年中国原木炭行业发展研究报告
- 2025年中国高温纤维除尘滤管行业市场调查研究及投资潜力预测报告
- 2025年中国有机薄膜电容器行业市场调查研究及投资前景预测报告
- 拐杖及助行器的使用方法课件
- 2024年黄芩素行业分析报告及未来发展趋势
- 风湿免疫科学教学设计案例
- 金属风管预制安装施工技术
- 2023年数学竞赛AMC8真题D卷(含答案)
- 宴席设计实务(烹饪专业高职)全套教学课件
- 牙刷的营销方案和策略
- 公路工程项目管理重点
- 2023小米年度报告
- 公司招聘面试工作方案三篇
- 设计交底记录表
评论
0/150
提交评论