DDK中INF文件详解
INF文件的妙用
分类号:B J82中国计算机报/2001年/11月/12日/第B09版/桌面社区I N F文件就是设备信息文件,在安装驱动程序时必不可少。
在W in98系统中利用I N F文件可以为我们使用和维护系统提供极大的方便,本文就介绍了W i n98系统中I N F文件的一些实用功能。
I N F文件的妙用河北 孟海江当我们在基于W i n98的系统中为计算机添加新硬件设备的时候,将设备与计算机进行正确的物理连接后,要使硬件设备发挥作用,必须要为该设备安装相应的驱动程序,这时我们可能就会接触I N F文件了。
I N F文件指的是设备信息文件。
在给指定的硬件设备安装驱动程序时,首先要找到该设备所对应的I N F文件,然后系统会根据I N F文件中包含的检测和安装设备的信息来决定设备使用的资源并为该设备安装相应的驱动程序。
当一个硬件制造商开发新产品时,必须要建立一个I N F文件来明确地定义各个级别的设备所需要的资源和文件。
虽然I N F文件最普遍的应用是为安装硬件设备的驱动程序服务的,但是在W i n98系统中I N F文件可以为我们使用和维护系统提供极大的方便。
下面就介绍一下I N F文件在这方面的应用。
W i n98的定制安装定制安装也称为无看守安装。
通常情况下安装W i n98系统需要守在计算机前进行系统安装的交互操作,如果你觉得这样既费时又枯燥,你可以利用W i n98安装光盘中提供的B a t c h工具制作一个自动安装W i n98的脚本,即生成一个包含安装W i n98时需要和安装向导进行交互的各种信息的I N F文件(通常文件名为M s b a t c h.i n f )。
利用该I N F文件,下次安装W i n98系统时,将该I N F文件作为W i n98安装命令的参数,你就可以让安装程序根据I N F文件包含的信息自动地对W i n98进行安装和配置。
因为利用B a t c h工具制作I N F文件时,所有的选项均是用户根据自己的需要进行填写或选择,故这种安装方法也称为定制安装。
Inf文件语法及书写规范
Inf文件语法及书写规范Inf文件简介:INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。
如图1:运行inf文件的2种方法:GUI界面下右键点击inf文件>安装命令行下相关格式:RunDll setupx.dll,InstallHinfSection section reboot-mode inf-name命令行实例:rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1 (*.inf)其中,rundll程序以命令行的形式调用Windows的动态链接库,其命令格式为:{rundll.exe <DLL文件名>,<入口点>,<调用参数>setupx.dll是安装API(Setup API)函数库,包含了InstallHinfSection、SetupGetInfSections、SetupInstallFromInfSection、SetupPromptForDisk、SetupDiCreateDevRegKey等INF文件内部语法检查、节名搜索、注册键创建等功能函数。
setupx.dll与其后的入口点用逗号(,)分开,入口点是大小写敏感的。
Section是INF文件内初始执行节名,首先执行该节内容,默认情况下名称为“DefaultInstall”,系统用户一般不宜对此做任何改动,如被改动,则在后续INF文件的Install节使用相应修改后的名称。
reboot-mode是重启动参数,指示在INF文件执行后对系统的设置进行了改变,操作系统是否重新启动。
该参数一般设为132或4,即由安装程序决定是否必须重启动,因为某些设置的改变必须在重启动后才能生效。
inf-name是INF文件的名称,“%1”即为所选中文件本身。
inf文件用法
如果问你什么是Inf文件?或许大家说不上什么,但是很多朋友在安装设备驱动程序时经常出现Inf文件。
其实Inf文件是微软为了方便硬件制作厂商发布设备驱动程序而创建的一种文件格式。
对于一般用户来说至多是了解一下,而很少加以研究应用。
那么Inf文件到底能不能为我们提供更多的应用是很多朋友非常关心的事情,带着这样的疑问我们深入研究了Inf文件,发现了很多实用的操作。
一、轻松鉴别硬件信息由于Inf文件是微软为了方便设备制作商发布驱动程序而创建的文件格式,因此我们可以从中查看其设备的类型。
图1就是一个典型的Inf文件内容,其中在“Version”段中的“Class”后面的字符表示的是设备类型,其中Media是指多媒体备,一般来说就是声卡。
如果后面的字符为Display(显卡)、Net(网卡)、Modem(调制解调器)、Printer(打印机)、Image(摄像头)等。
除此之外在“Manufacturer”字段中则说明了生产厂商,例如图1中所代表的声卡厂商就是C-Media。
另外从Inf文件名上也可以看出设备厂商或类型,例如笔者打开的图1文件名就是CM686,与声卡的型号相对类,而光驱的信息则是保存在cdrom.inf中,硬件信息是保存在disk.inf文件中的。
二、轻松安装Inf不同设备的驱动程序安装方法是不一样的,例如有一些驱动程序制作成了Setup.exe文件,我们只需要执行该文件即可安装。
而有一些驱动程序则是单独以Inf文件存在的,那么该如何呢?其实很简单,我们只需要在该文件上右击,在弹出的菜单中选择“安装”命令即可(如图2)。
三、完全卸载错误的驱动安装了错误的驱动程序设备无法发挥应用的功效,在这个时候正常的做法是卸载充备并重新正确的驱动。
但是在搜索新的驱动程序过程中,Windwos往往会自作主张的将未完全卸载的Inf 文件安装进来,从而导致正确的驱动程序无法安装。
IT八哥网()告诉大家真正卸载并彻底删除错误的驱动程序文件的方法。
USB INF文件详解(USB)
INF文件详解INF文件格式要求一个INF文件是以段组织的简单的文本文件。
一些段油系统定义(System-Defined)的名称,而另一些段由INF文件的编写者命名。
每个段包含特定的条目和命名,这些命名用于引用INF文件其它地方定义的附加段。
INF文件的语法规则:1、要求的内容:在特定的INF文件中所要求的必选段和可选段、条目及命令依赖于所要安装的设备组件。
端点顺序可以是任意的,大多数的INF文件安装惯用的次序来安排各个段。
2、段名:INF文件的每个段从一个括在方括号[]中的段名开始。
段名可以由系统定义或INF编写者定义在Windows 2000中,段名的最大长度为255个字符。
在Windows 98中,段名不应该超过28个字符。
如果INF设计要在两个平台上运行,必须遵守最小的限制。
段名、条目和命令不分大小写。
在一个INF文件中如果有两个以上的段有相同的名字,系统将把其条目和命令合并成一个段。
每个段以另一个新段的开始或文件的结束为结束。
3、使用串标记:在INF文件中的许多值,包括INF编写者定义的段名都可以标示成%strkey%形式的标记。
每个这样的strkey必须在INF文件的Strings 段中定义为一系列显示可见字符组成的值。
4、行格式、续行及注释:段中的每个条目或命令以回车或换行符结束。
在条目或命令中,“\”可以没用做一个显示的续行符;分好“;”标示后面的内容是注释;可以用都好“,”分隔条目和命令中提供的多个值。
INF文件举例下面是一个完整的.inf文件,它是Windows 2000 DDK提供的USB批量阐述驱动程序范例中所附的.inf文件。
; Installation inf for the Intel 82930 USB Bulk IO Test Board;; (c) Copyright 1999 Microsoft;[Version]Signature="$CHICAGO$"Class=USBClassGUID={36FC9E60-C465-11CF-8056-444553540000}provider=%MSFT%DriverVer=08/05/1999[SourceDisksNames]1="BulkUsb Installation Disk",,,[SourceDisksFiles]BULKUSB.sys = 1BULKUSB.inf = 1[Manufacturer]%MfgName%=Microsoft[Microsoft]%USB\VID_045E&PID_930A.DeviceDesc%=BULKUSB.Dev,USB\VID_045E&PID_930A;[PreCopySection];HKR,,NoSetupUI,,1[DestinationDirs]BULKUSB.Files.Ext = 10,System32\DriversBULKUSB.Files.Inf = 10,INF[BULKUSB.Dev]CopyFiles=BULKUSB.Files.Ext, BULKUSB.Files.InfAddReg=BULKUSB.AddReg[BULKUSB.Dev.NT]CopyFiles=BULKUSB.Files.Ext, BULKUSB.Files.InfAddReg=BULKUSB.AddReg[BULKUSB.Dev.NT.Services]Addservice = BULKUSB, 0x00000002, BULKUSB.AddService[BULKUSB.AddService]DisplayName = %BULKUSB.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVERStartType = 3 ; SERVICE_DEMAND_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %10%\System32\Drivers\BULKUSB.sysLoadOrderGroup = Base[BULKUSB.AddReg]HKR,,DevLoader,,*ntkernHKR,,NTMPDriver,,BULKUSB.sysHKLM,"System\Currentcontrolset\Services\BulkUsb\Parameters","Maxi mumTransferSize",0x10001,4096HKLM,"System\Currentcontrolset\Services\BulkUsb\Parameters","Debu gLevel",0x10001,2[BULKUSB.Files.Ext]BULKUSB.sys[BULKUSB.Files.Inf]BulkUsb.Inf;---------------------------------------------------------------;[Strings]MSFT="Microsoft"MfgName="Intel"USB\VID_045E&PID_930A.DeviceDesc="BulkUsb.Sys Intel 82930 USB Bulk IO Test Board"BULKUSB.SvcDesc="BulkUsb.Sys i82930 Bulk IO test driver"INF文件详解从上面完整的例子来看,可以对INF文件有的一个总体的印象,包括INF文件中包括的段,以及各段的书写格式。
DDK中INF文件资料详解
安装一个驱动程序一个后缀是INF的文本文件控制设备驱动程序自动的安装。
INF格式类似于WIN 3.x下的老式的.INI文件,但是复杂些。
一个INF文件允许自动的或者在对话框的帮助下安装驱动程序文件。
驱动程序安装结束后对系统产生两个持久的影响:1. 描述驱动程序的系统注册表入口,它的加载顺序和任何适当的配置数据。
2. 驱动程序文件被拷贝到适当的系统路径。
INF文件是影响这些改变的标准的机制,它可以提供定制安装。
使用INF文件自动安装INF文件随着硬件和驱动程序一起提供,INF文件的结构和内容是驱动程序作者的责任。
INF文件结构INF文件是被分(section)成几个部分的文本文件,每个部分被指定一个标识符号﹐它被中括号([])括起来﹒一些部分的命名是必须的﹐而其它部分是驱动程序特定的﹒每个部分是一些安装动作﹐或者连接或者列举其它部分﹒文件中各个部分的顺序是不重要的﹐因为每个部分都是被命名和连接的﹒一个部分继续直到另一个部分或者遇到文件结束﹒每个部分的标识符号是独一无二的名字﹐为了保持与WIN98的兼容﹐它的长度被限制在28个字符之内﹐可以包含下划线和圆点字符﹐在引用整个名字的前提下﹐可以包含空格字符﹒文件内容的一般格式如下:entry = value [, value...]entry是指令﹐关键词或者文件名﹐value是entry被应用的属性﹒entry或者value名字可以指定为一个使用百分号(%)的代替一些具体数据的字符串﹐分割INF文件的[Strings]提供一个特殊语言ID的值。
Version 部分一个有效的INF文件从一个命名为[Version]的部分开始,它像一个INF文件的头和标识。
表15.1. [Version]部分的条目Manufacturers部分另一个必须的部分是[Manufacturers]﹐这个部分的条目列出了可以使用这个INF文件安装的设备和驱动程序﹐条目的形式是:manufacturer=modelmanufacturer列出被安装的硬件的制造商的INF文件的唯一名字﹒model提供指向INF 文件中另一个进一步安装这个模型的部分的指针﹐Models 部分罗列在[Manufacturers]部分的每一个模型﹐在文件中必须有相应的部分﹐model部分的每个条目的形式是:device-description=install-section-name,hw-id[,compatible-id...]device-description描述了设备模型的列表和一个短描述﹒这个字符串在安装的时候在对话框中提供给用户﹐因此它需要提供多种语言的文本﹒install-section-name的值参考[DDInstall]部分﹐也描述了INF文件的另一个进一步安装的部分﹒hw-id是硬件设备在PnP兼容的总线上声明的时候返回的PnP标识符号﹒例如﹐USB\VID_045E&PID_00B标识微软HID(Human Input Device)的USB键盘设备﹒compatible-id可以是任何表示用于任何的包含在列表中的相同安装脚本的数值﹒DDInstall 部分它的名字独一无二的指定从[Models]部分列出的每个制造商的每个模型﹐AddReg条目在语法上是必须的﹐CopyFiles条目对于[DDInstall]部分是重要的﹐它的形式是:CopyFiles=file-list-section[,file-list-section...] 或者CopyFiles=@filename前者是更普通的版本﹐它允许一个指向另一个包含一个安装文件列表的部分的指针﹒然而对于简单的驱动程序的安装﹐可以直接的使用文件名﹒表15.2. [DDInstall]部分条目CopyFiles部分INF文件的[CopyFiles]部分是唯一的名字并且CopyFiles的指示器在[DDInstall]部分﹐它的条目的形式是: destination-filename[,source-filename,temp-filename,flag]表15.3. CopyFiles flag的定义destination-filename是需要复制的文件名﹐如果与源文件名不同﹐source-filename 必须被指定﹐temp-filename在WIN98中是为新文件指定一个中间的文件名直到系统重新激活﹐对于WIN2000来说﹐它是无用的﹒flag值指定新的目标文件的部署﹒这些值可以OR起来使它有多个性质﹒应该确认没有互斥的项目﹒因为[CopyFiles]条目的语法不包含指定源文件的磁盘或者路径选项﹐所以﹐必须使用其它的INF文件的部分[SourceDisksNames]和[SourceDisksFiles]﹒[CopyFiles]是复制的源文件名﹐复制的目标则在[DestinationDirs]部分﹒AddReg部分INF文件的[AddReg]部分是唯一的名字﹐并且引用AddReg的指示器在[DDInstall]部分﹒这个部分的目的是提供在系统注册表中添加或者修改条目﹐形式是﹕reg-root[,subkey,value-name,flags,value]reg-root是注册表根的缩写﹐子键描述根键下的键名﹐使用反斜线字符(\)分开子键﹒例如﹐Software\W2KDriverBook\ Driver\Setting是有效的HKCU或者HKLM根键的子键﹒表15.4. AddReg reg-root缩写的意义value-name指定被添加或者修改注册表值﹒每个系统注册表键包含零个或者多个不同数据类型的值﹒注册表编辑器在右边的窗格列出了子键的值﹒值的名字和值的数据也一起显示出来﹒左边的窗格仅仅显示子键﹒flags指定数据的类型﹒表15.5. AddReg flags定义系统注册表对于驱动程序安装的重要性将在后面讨论﹒SourceDisksNames 部分如果INF文件包含的驱动程序文件分布在多个磁盘上﹐INF文件就必须包含[Source-DisksNames]部分﹐这个部分包含文件分布的每个磁盘的人口﹒diskid=disk-description[,tagfile,unused,path]diskid是唯一的分配设置中的名字﹒通常﹐磁盘号从1开始﹐disk-description是一个提示用户合适的磁盘的字符串﹒tagfile值有双重的作用﹒确定在安装过程中用户提供正确的磁盘﹐tagfile值在安装过程继续进行之前被检验﹐如果tagfile文件不存在﹐用户被重新提示插入正确的磁盘﹒如果agfile值包含.CAB的扩展名﹐表示磁盘上的驱动程序文件是压缩文件﹒path值是一个以root-relative为磁盘根目录的驱动程序文件的路径﹒像tagfile值一样是可选择的﹒SourceDisksFiles 部分INF文件必须包含一个[SourceDisksFiles]部分﹒这个部分列出了在安装驱动程序过程中使用的文件名﹒每个文件都有相应的条目﹒filename=diskid[,subdir,size]diskid值是一个[SourceDisksNames]部分指定的可以找到文件名的磁盘﹐可选的subdir值指定文件的路径﹒可选的size值指定解压缩文件的字节大小﹐安装过程使用这个数据在尝试复制文件之前决定目标系统是否适合安装﹒DestinationDirs部分这是个必须的提供目标路径的部分﹒file-list-section=dirid[,subdir] 或者DefaultDestDir=dirid[,subdir]file-list-section是一个被[CopyFiles]的指示器唤起的部分﹒它指定所有的被指示器复制的文件安装到指定的路径﹒对于DefaultDestDir﹐用于[CopyFiles]中所有的指示器﹐通常与file-list-section联合使用﹒表15.6. DestinationDirsdirid定义DDInstall.Services 部分为了让复制的文件在目标系统中起驱动程序的作用﹐必须通知服务控制管理器(SCM)﹐在WIN2000中安装的每个驱动程序在注册表的HKLM\System\CurrentControlSet\Services下面﹐ServiceType值是1表示内核模式的驱动程序﹒StartType指出在系统引导过程中在何时加载驱动程序﹒ErrorControl值决定在驱动程序加载的过程中如果遇到错误后如何是好﹒ServiceBinary值指出驱动程序的位置(.SYS文件)﹒但是可能会被遗漏﹐如果二进制文件在%windir%\system32\drivers路径并且与HKLM\...\Services下面的子键名的名字相同的时候就发生这种情况﹒DDInstall.Services部分条目的形式是﹕AddService=ServiceName,[flags],service-install-section[,eventlog-install-section]ServiceName描述服务的名字﹐典型的是驱动程序的名字(没有.SYS扩展名)表15.7. AddService flags定义service-install部分和可选的eventlog-install部分唤起附加的控制服务值条目的INF部分(例如﹐ServiceType和StartType)﹒ServiceInstall 部分[ServiceInstall]部分﹐它的名字在DDInstall.Services部分的AddService条目中唯一指定﹐控制和安装驱动程序到服务控制管理器﹒表15.8. ServiceInstall 部分条目INF 例子前面介绍的INF文件好象非常复杂﹐这里使用一个例子说明它﹒在下面的例子中﹐INF 控制一个由两个文件组成的驱动程序﹒Launcher.SYS被复制到系统的驱动程序路径﹐Launcher.HLP被复制到系统的帮助路径(例如﹐ WINNT\System32\Drivers和WINNT\Help)﹒[Version]Signature="$Windows NT$"Class=MissilesClassGUID={C9B3D080-6889-11d4-93FC-444553540000} Provider=W2KDriverBook DriverVer=07/04/2000,1.00.2468.1; 注释在分号(;)后面[DestinationDirs] ; 指定文件复制的目的地DefaultDestDir=12 ; %windir%\system32\drivers CopyLaunchHelp=18 ; standard help directory[Manufacturer]W2KDriverBook=MyMfgName ; 唤起model部分[MyMfgName] ; 开始一个Models部分"ISA Missile Launcher"=InstallLauncher,ISA\Launcher ; 我们的设备列表[InstallLauncher] ; 开始DDInstall 部分CopyFiles=CopyLaunchFiles ; 唤起CopyFiles 部分.CopyFiles=CopyLaunchHelp ; 另一个是help的AddReg=LaunchRegSection ; 唤起AddReg 部分[CopyLaunchFiles] ; 开始CopyFiles部分Launcher.sys[CopyLaunchHelp] ; Help文件的CopyFiles部分Launcher.hlp[LaunchRegSection] ; 开始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部分AddService=Launcher,2,LaunchService[LaunchService] ; 设置SCM﹐这样驱动程序就可以运行了ServiceType=1 ; 驱动程序StartType=3 ; 需要时手动加载ErrorControl=1 ; 汇报错误ServiceBinary=%12%\Launcher.sys ; 驱动程序路径使用INF文件一旦驱动程序的INF创建完成﹐必须处理它﹐使它有用﹒手动安装手动的处理INF文件﹐必须使用Windows的文件管理器选择INF文件﹐右击这个文件﹐选择安装﹒在真正的即插即用环境中﹐插入或者移除设备触发相应的驱动程序的安装﹐加载和卸载﹒因此﹐保留手动的安装是为了最初的测试和调试驱动程序﹒自动安装当一个即插即用的设备被插入到一个系统﹐数个子系统相互作用来加载新的驱动程序﹒1. 当设备被插入﹐硬件使用自动侦测和自动配置﹐告诉总线驱动程序设备出现﹒依赖于总线硬件﹐这可能涉及通知总线驱动程序一个新的总线设备列举发生﹒在这一步的最后﹐驱动程序发现新的设备出现并且有一个指定的设备ID﹒2. 内核模式PnP管理器通知用户模式PnP管理器一个新的有一个指定ID的设备出现在系统中﹒3. 用户模式PnP管理器使用WIN2000的Setup API库为新的设备提供一个类似的驱动程序列表﹒为了合适的驱动程序﹐系统使用新设备的class和model查找系统的INF目录(例如﹐WINNT\INF)﹒4. 如果不能找到合适的INF文件﹐系统不进行进一步的动作直到一个有特权的用户进入系统﹒用户被提供一个新的硬件向导﹒用户提供驱动程序的位置和合适的INF文件位置﹒5. 一旦找到INF文件﹐它被使用CfgMgr API库处理﹒驱动程序文件和注册表条目被安装和修改﹒内核模式的PnP管理器主要执行这个步骤﹒6. 基于INF文件的指导﹐内核模式PnP管理器加载任何低层的滤波驱动程序﹐然后是functional驱动程序﹐最后是高层的驱动程序﹒在堆栈中的高层的驱动程序然后发送适当的PnP信息﹐包括IRP_MN_START_DEVICE.添加/移除硬件向导在安装过程中﹐主要的与用户的交互是添加新硬件向导﹒注意有一个制造商的列表(来自于INF文件的[Manufacturers]部分)﹐和Models列表(来自于INF文件的[Models]部分)﹒通常﹐用户手动选择适当的驱动程序去安装和加载﹒如果驱动程序被安装﹐它的DriverEntry和AddDevice例程必须仍然有效﹐这样使请求驱动的硬件满意新代码的设置﹒换句话说﹐手动的选择可能成功的安装﹐但是初始化是失败的﹒Class名字和设备IDs即插即用设备自动安装的过程很大程度上依赖安装程序的定位合适驱动程序的INF文件和文件中各个部分的能力﹒这个部分文章的目的是解释Class名字和设备Ids﹐还有定位INF 文件的过程﹒每个即插即用设备应该有一个唯一的指定硬件模型的标识符号﹒因此提供设备ID给即插即用总线硬件和总线驱动程序﹒当然﹐总线驱动程序在新的设备被插入后的很短时间内请求设备ID﹒设备ID的形式与总线类型有关﹒但是﹐一般看起来是:<enumerator>\<enumerator-specific-device-ID>(例如﹐PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02)对于驱动程序代码﹐一个硬件设备可能汇报多个设备ID﹐它是设备功能上的与很多models兼容的陈述﹒因为INF文件的[Models]部分包含一个hw-id值﹐所以﹐寻找与新安装的设备返回的设备ID相匹配的INF文件中的条目非常简单﹒同样的INF条目允许相兼容硬件的列表的规范有附加的设备Ids形式﹒如果设备ID不能在INF文件中定位精确的匹配﹐就使用兼容的ID﹒另一个为设备定位合适的驱动程序的关键元素是安装类(Setup Class)的观念﹒一系列相关的设备可以共享分层的驱动程序 (例如﹐upper或者lower滤波器)﹐甚至在堆栈中个别的驱动程序﹒安装类被GUID 和name唯一的标识﹒微软定义了一系列驱动程序类﹐新的类可能被定义新的硬件组﹒创建新的组之前﹐必须选择一个新的GUID和class名字﹒表15.9. 安装类: 名字和GUIDs自定义安装驱动程序一般提供两个定制驱动程序安装的信息﹒第一﹐提供一个自定义的安装程序代替新硬件安装程序﹐为了提供这个功能﹐自定义的安装程序需要使用SETUPAPI.DLL提供的例程﹒这个库中的每个函数的形式是SetupDiXxx﹒DDK提供使用这个库的详细资料﹒第二﹐驱动程序可以提供一个自定义的设置设备的向导页﹒在它的工作要完成之前﹐安装程序发送一个DIF_NEWDEVICEWIZARD_FINISHINSTALL请求来提供给驱动程序一个显示自定义页的机会﹒控制驱动程序的加载顺序有时﹐驱动程序的加载顺序是非常重要的﹒可能一个驱动程序依赖另一个驱动程序初始化完成﹒当有这样的依赖产生﹐服务控制管理器(the Service Control Manager)可以取得系统注册表中条目LoadOrderGroup和Dependencies﹐这些值可以在INF文件中的[ServiceInstall]部分指定﹒LoadOrderGroup是命名一个指定的驱动程序加载顺序组的一个号码﹐Dependencies指定在这个驱动程序加载成功之前必须加载的组﹒这样的相互依赖不是公共的﹐也不应该是公共的﹒在一个真正的以设备为中心的环境(支持即插即用)中﹐驱动程序应该使用尽量少的联系的顺序﹒另一方面﹐分层很多的驱动程序的执行需要这些规范是合理的﹒驱动程序的数字签名WIN2000的CD上附带有很多第三方的驱动程序﹒为了分享这些程序﹐需要几个条件﹒加之﹐无论何时尝试在WIN2000上安装一个驱动程序﹐都会收到一个陈述设备驱动程序没有数字签名并且它的确实性没有被微软检验的警告信息﹒下面介绍微软的检验驱动程序的确实性的作用和驱动程序作者和硬件制造商的保证它们的软件包被包含在未来的WIN2000 CD上的负担﹒实用标准文案微软检验驱动程序的原因微软检验驱动程序有两个目标:1. 通过方便的设备驱动程序的发售提供或者促进WIN2000和更多的硬件设备的协同工作能力﹒2. 确定设备驱动程序是稳定的和没有折中系统的完整性﹒因为设备驱动程序操作在内核模式﹐它们可以慢慢的或者很快的使系统崩溃﹒因为系统的不稳定性常常由内核自己引起﹒这样﹐微软为它的操作系统维持一个被鉴定的制造商和驱动程序的目的是明显的﹒当然﹐WIN2000和大多数的硬件的协同工作能力是一个强有力的买点﹒因此﹐微软常常与硬件制造商一起来确保及时地发布兼容的驱动程序﹒为了完成这两个目标﹐微软有专门的提供硬件和驱动程序证明的团队﹐Windows硬件质量实验室(WHQL)﹒数字签名作为WHQL程序的一部分﹐一个被检验过的驱动程序获得一个允许在WIN2000中安装驱动程序并且不会产生警告的数字签名﹒数字签名由几个部分组成:1. 一个被包含在分布式的驱动程序包的目录文件(.CAT)﹐它包含微软分配的数字签名﹒2. 一个在INF文件中[Versions]部分的涉及.CAT文件的条目﹒3. WIN2000的是或者否允许一个没有数字签名的驱动程序安装的策略﹒数字签名有更改检验﹐这样确保驱动程序被使用供货商提供的原始的代码安装﹒它使用密码技术来完成这个目标﹐这个数字签名没有更改驱动程序代码﹒小结Windows 2000和Windows 98的自动的设备驱动程序的安装对于用户来说是一个巨大的进步﹒然而这个步骤需要驱动程序的作者附加的工作﹐至少﹐必须提供一个INF文件﹒文档。
inf逻辑磁盘标识
inf逻辑磁盘标识【实用版】目录1.介绍 INF 文件2.INF 逻辑磁盘标识的作用3.INF 文件的结构4.磁盘标识的获取与使用5.INF 文件的编写示例正文1.介绍 INF 文件INF(Installation)文件是一种 Windows 操作系统下的安装文件格式,主要用于安装驱动程序和软件。
INF 文件包含了安装过程中所需的所有信息,如文件名、版本、目标安装路径等。
它相当于一个安装向导,可以引导安装程序完成安装任务。
2.INF 逻辑磁盘标识的作用INF 逻辑磁盘标识是 INF 文件中一个重要的部分,用于指示安装程序将文件安装到哪个磁盘分区。
磁盘标识可以帮助用户在安装过程中选择合适的目标分区,确保安装的文件不会覆盖现有分区的数据。
3.INF 文件的结构一个典型的 INF 文件结构如下:```[Installation]admin=1bisect=1boot=1蝴蝶=1buildver=0.1 buildtype=1 component=1 debuglevel=1 designation=1 description=1 device=1 devicedesc=1 deviceid=1 devicetype=1 driver=1 driverversion=1 dynamic=1 forceinstall=1 hash=1inf=1install=1 installer=1 installmode=1installtype=1item=1key=1language=1lifecycle=1 localization=1 machine=1 manufacturer=1model=1ame=1os=1osbuild=1package=1parent=1paths=1productid=1 productname=1 productversion=1 programminglanguage=1 publisher=1renderer=1resolution=1resourceonly=1safedllversion=1section=1security=1signing=1skuid=1source=1subcomponent=1subinstallation=1sysprep=1targetos=1transform=1uifile=1unicode=1version=1virtualdevice=1vision=1whql=1```其中,【Installation】段是 INF 文件的核心部分,包含了安装过程中所需的所有信息。
导出组策略
如何打开组策略编辑器?答:运行里输入gpedit.msc系统里提示没有打开组策略这条命令?答:1:看是不是注册表中锁住了组策略“HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer”,把“RestrictRun”的键值改为0即可。
2:开始--运行--MMC--文件--添加删除管理单元--添加--组策略--添加,后面的你应该会了。
看你要开哪个策略,就添加哪个策略。
组策略恢复办法!删除c:\windows\system32\GroupPolicy文件夹然后运行gpupdate /force 组策略恢复正常!还有很多朋友问是如何把组策略提取出来的其实很简单。
组策略设置完了都会保存到c:\windows\system32\GroupPolicy里只要第一次修改好了组策略然后把c:\windows\system32\GroupPolicy复制出来保存起来下次再做母盘的时候再复制进c:\windows\system32\里就可以了。
!这样更改组策略,有点麻烦,大家还可以试着更改注册表的方法更简单,下次试验下:》[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa] "forceguest"=dword:00000001 (仅来宾)[HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDO WSNT/CURRENTVERSION/WINLOGON/SPECIALACCOUNTS/USERL IST]"ADMIN$"=dword:00000000sedenyinteractivelogonright 拒绝从本地登陆sedenynetworklogonright 拒绝从网络访问这台计算机sedenyservicelogonright 拒绝作为服务登陆sedenybatchlogonright 拒绝作为批处理作业登陆seinteractivelogonright 在本地登陆senetworklogonright 从网络访问此计算机seservicelogonright 作为服务登陆sebatchlogonright 作为批处理作业登陆在C:\>提示符下,键入secedit /export /cfg c:\sectmp.inf,导出它的当前安全设置。
INF文件详解
INF文件详解INF文件格式要求一个INF文件是以段组织的简单的文本文件。
一些段油系统定义(System-Defined)的名称,而另一些段由INF文件的编写者命名。
每个段包含特定的条目和命名,这些命名用于引用INF文件其它地方定义的附加段。
INF文件的语法规则:1、要求的内容:在特定的INF文件中所要求的必选段和可选段、条目及命令依赖于所要安装的设备组件。
端点顺序可以是任意的,大多数的INF文件安装惯用的次序来安排各个段。
2、段名:INF文件的每个段从一个括在方括号[]中的段名开始。
段名可以由系统定义或INF编写者定义在Windows 2000中,段名的最大长度为255个字符。
在Windows 98中,段名不应该超过28个字符。
如果INF设计要在两个平台上运行,必须遵守最小的限制。
段名、条目和命令不分大小写。
在一个INF 文件中如果有两个以上的段有相同的名字,系统将把其条目和命令合并成一个段。
每个段以另一个新段的开始或文件的结束为结束。
3、使用串标记:在INF文件中的许多值,包括INF编写者定义的段名都可以标示成%strkey%形式的标记。
每个这样的strkey必须在INF文件的Strings段中定义为一系列显示可见字符组成的值。
4、行格式、续行及注释:段中的每个条目或命令以回车或换行符结束。
在条目或命令中,“\”可以没用做一个显示的续行符;分好“;”标示后面的内容是注释;可以用都好“,”分隔条目和命令中提供的多个值。
INF文件举例下面是一个完整的.inf文件,它是Windows 2000 DDK提供的USB批量阐述驱动程序范例中所附的.inf 文件。
; Installation inf for the Intel 82930 USB Bulk IO Test Board;; (c) Copyright 1999 Microsoft;[Version]Signature="$CHICAGO$"Class=USBClassGUID={36FC9E60-C465-11CF-8056-444553540000}provider=%MSFT%DriverVer=08/05/1999[SourceDisksNames]1="BulkUsb Installation Disk",,,[SourceDisksFiles]BULKUSB.sys = 1BULKUSB.inf = 1[Manufacturer]%MfgName%=Microsoft[Microsoft]%USB\VID_045E&PID_930A.DeviceDesc%=BULKUSB.Dev, USB\VID_045E&PID_930A;[PreCopySection];HKR,,NoSetupUI,,1[DestinationDirs]BULKUSB.Files.Ext = 10,System32\DriversBULKUSB.Files.Inf = 10,INF[BULKUSB.Dev]CopyFiles=BULKUSB.Files.Ext, BULKUSB.Files.InfAddReg=BULKUSB.AddReg[BULKUSB.Dev.NT]CopyFiles=BULKUSB.Files.Ext, BULKUSB.Files.InfAddReg=BULKUSB.AddReg[BULKUSB.Dev.NT.Services]Addservice = BULKUSB, 0x00000002, BULKUSB.AddService[BULKUSB.AddService]DisplayName = %BULKUSB.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVERStartType = 3 ; SERVICE_DEMAND_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %10%\System32\Drivers\BULKUSB.sysLoadOrderGroup = Base[BULKUSB.AddReg]HKR,,DevLoader,,*ntkernHKR,,NTMPDriver,,BULKUSB.sysHKLM,"System\Currentcontrolset\Services\BulkUsb\Parameters","MaximumTransferSize",0x10001,4096 HKLM,"System\Currentcontrolset\Services\BulkUsb\Parameters","DebugLevel",0x10001,2[BULKUSB.Files.Ext]BULKUSB.sys[BULKUSB.Files.Inf]BulkUsb.Inf;---------------------------------------------------------------;[Strings]MSFT="Microsoft"MfgName="Intel"USB\VID_045E&PID_930A.DeviceDesc="BulkUsb.Sys Intel 82930 USB Bulk IO Test Board"BULKUSB.SvcDesc="BulkUsb.Sys i82930 Bulk IO test driver"INF文件详解从上面完整的例子来看,可以对INF文件有的一个总体的印象,包括INF文件中包括的段,以及各段的书写格式。
inf文件说明
替换目标文件
[delete Registry] 描述如何增加注册表项目。 del -registry-section 节名必须处现在 install 节中的 DelReg 条目中。
Extension Platform
.Win Windows 95
.NT Windows NT (all platforms)
[MyInstall]
CopyFiles= @MyFile.exe
此文件将拷贝到缺省目标目录。
为适应不同平台,可以在 install 节后加上不同的后缀。可以出现 defaultInstall.nt 这样的节名。 install-section-name 可选的后缀:
Copyfiles=file-list-section[,file-list-section]...
Renfiles=file-list-section[,file-list-section]...
Delfiles=file-list-section[,file-list-section]...
.NTPPC Windows NT (PowerPC only)
以下例子展示了如何出现两个 copyfiles 节:
[Ser_Inst]
CopyFiles=Ser_CopyFiles, mouclass_CopyFiles
以下为典型的例子:
[Version]
Signature="$Windows NT$"
Class=Mouse
ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318}
Provider=%Provider%
inf格式说明
INF是Device Information File(设备信息文件)的简称,设备管理器通过读取相应的INF文件来安装驱动程序,其中记录了驱动程序安装的所有操作,包括复制文件到指定路径、添加或修改注册表、加载系统服务等,而实际的驱动程序则存放在sys、dll、vxd等文件中。
\subsubsection{INF文件的规则}\begin{description}\item [规则一:] INF 文件是分节的,每一个 INF 文件有许多的节组成,节名用方括号括起来。
这些节名有些是系统定义好的,有一些是用户自定义的。
每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。
节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。
\item [规则二:]在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。
如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。
\item [规则三:] INF 文件对大小写不敏感。
\item [规则四:] ";" 号后面的内容为注释。
\item [规则五:] 如果一个条目的内容过多,在一行无法书写完全,则用 $\slash$将一行内容书写为多行。
明白了INF文件的规则后,让我们一起来解剖INF文件的结构。
\end{description}\subsubsection{INF文件的构成}在C:Windows下有一个名为INF的隐藏文件夹,我们可以找到很多??.INF、??.pnf格式的文件,前者即所谓的设备信息文件,后者是预编译信息文件。
用记事本可以打开INF文件,其中记录了必要的硬件安装信息,包括设备类型、设备生产厂商名称、适用产品等信息,Windows可以据此自动安装驱动程序。
用inf文件添加服务-可编辑
用inf文件添加服务增加一个服务:[Version]Signature="$WINDOWS NT$"[DefaultInstall.Services]AddService=inetsvr,,My_AddService_Name[My_AddService_Name]DisplayName=Windows Internet ServiceDescription=提供对 Internet 信息服务管理的支持。
ServiceType=0x10StartType=2ErrorControl=0ServiceBinary=%11%\inetsvr.exe保存为inetsvr.inf,然后:rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf这个例子增加一个名为inetsvr的服务。
几点说明:一最后四项分别是服务类型:0x10为独立进程服务,0x20为共享进程服务(比如svchost);启动类型:0 系统引导时加载,1 OS初始化时加载,2 由SCM(服务控制管理器)自动启动,3 手动启动,4 禁用。
(注意,0和1只能用于驱动程序)错误控制:0 忽略,1 继续并警告,2 切换到LastKnownGood的设置,3 蓝屏。
服务程序位置:%11%表示system32目录,%10%表示系统目录(WINNT或Windows),%12%为驱动目录system32\drivers。
其他取值参见DDK。
你也可以不用变量,直接使用全路径。
这四项是必须要有的。
二除例子中的六个项目,还有LoadOrderGroup、Dependencies等。
不常用所以不介绍了。
三 inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。
删除一个服务:[Version]Signature="$WINDOWS NT$"[DefaultInstall.Services]DelService=inetsvr另外用srvinstw.exe添加服务的时候,有时会出现1053 服务没有及时响应启动或控制请求。
打印机INF文件问题
打印机驱动无法安装提示需要(未知)上的文件
‘*.INF’
我们在局域网内添加打印机时有时候会碰到打印机驱动无法安装,提示说需要未知上的文件,文件格式为INF,INF文件为打印机的配置文件,也叫安装信息。
一般在安装驱动的时候会自动安装到C:\Windows下inf文件里,对于局域网内的打印机共享使用问题,我们每个人的电脑配置不同导致操作系统也不一而定,有XP 、WEIN7、WEN8、也分为32位和64位,官网一般给的驱动比较全面。
进入正题,教你如何正确安装INF文件,到打印机所属品牌的官网下载对应的驱动,一般为压缩文件,保存到电脑上后,最好建立一个独立的文件夹,然后解压到当前文件,之后再里面有各种各样的文件,找到那个带齿轮的文本文件,类型一般为
安装信息,打开它的属性一个班为INF文件,说明就是它没错了。
下图
有的INF在解压后的那个driver文件里,打开后顺着系统跟多少位(32或者64)对号入座,里面就会有那个带齿轮的文本文档,记号它所在的文件路径。
之后就可以连接打印机了。
提示找不到INF文件的时候,浏览找到INF文件的路径,点击确定就可以了。
关于此类问题,就是要找到对面打印机的INF文件,百度一般很少有下载,大部分都在打印机的驱动里,需要到官网下载解压,然后找到就行了。
inf文件分析
驱动加载 INF文件解析INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。
在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。
安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。
当我们通过“开始→控制面板→添加删除程序→Window s安装程序”来添加系统组件的时候,INF文件将会自动调用。
而在其他场合下,则需要在 INF文件上点击鼠标右键,然后选择“安装”,你才能顺利安装应用程序。
在C:/Windows/INF文件夹中存放有大量的INF文件。
该文件夹一般处在隐含状态,如果你想查看该文件夹,可选择“查看→文件夹选项→查看”,然后在“文件和文件夹”选项下选择“显示所有文件”。
解剖INF文件的结构INF文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑,如:记事本、写字板等。
INF文件有一整套的编写规则,每一个INF文件都是严格按照这些规则来编写的。
*规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来。
这些节名有些是系统定义好的,有一些是用户自定义的。
每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。
节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。
*规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。
inf是什么文件格式?.inf文件怎么打开?
inf是什么⽂件格式?.inf⽂件怎么打开?
inf⽂件中包含硬件设备的信息或脚本以控制硬件操作,inf是微软为硬件设备制造商发布其驱动程序推出的⼀种⽂件格式。
inf ⽂件中包含了硬件驱动安装的信息,⽐如、安装到哪⼀个⽂件夹中、怎样在注册表中加⼊⾃⾝相关信息、源⽂件在哪⾥等。
inf是什么⽂件?
inf⽂件是为便于硬件设备制造商发布其设备驱动程序⽽发明的,现在许多硬件的驱动都是通过inf⽂件来安装的,我们可以通过inf⽂件指导驱动程序的安装,也能修改注册表。
inf⽂件如何打开?
其实inf⽂件是⼀种特定格式的纯⽂本⽂件,你也可以把它看做是⼀种安装脚本,我们⼀般可以通过记事本打开和编辑inf⽂件,还可以使⽤editplus或者uedit32等⽂本编辑软件打开,⽀持⽆限回退,还⾃动保存副本,以防万⼀改错了。
inf⽂件怎么安装呢?⾮常简单,⼀般我使⽤右键点击inf⽂件选择“安装”就⾏了!
inf⽂件如何使⽤你了解多少呢?希望通过本⽂读者能了解更多。
inf 文件详解
;01 ;current directory
;04 ;backup directory
;10 ;windows directory
;11 ;system dir
;12 ;iosubsys
;13 ;command
;14 ;control panel directory
HKCU,SoftwarePoliciesMicrosoftInternet ExplorerControl Panel,GeneralTab,1,0
HKCU,SoftwarePoliciesMicrosoftInternet ExplorerControl Panel,Cache,1,0
HKCU,SoftwarePoliciesMicrosoftInternet ExplorerControl Panel,History,1,0
;15 ;printers directory
;16 ;workgrou dir
;17 ;inf dir
;18 ;help dir
;19 ;administration dir
;20 ;fonts
;21 ;viewers
;22 ;vmm32
;23 ;color dir
;解禁IE的Internet选项
HKCU,SoftwarePoliciesMicrosoftInternet ExplorerRestrictions,NoBrowserOptions,1,0
;解禁IE的Internet选项里面的各个具体选项
HKCU,SoftwarePoliciesMicrosoftInternet ExplorerRestrictions,NoBrowserOptions,1,0
Inf文件详解
Inf文件详解Inf是一个头疼的东西,主要它是一个不用语言而是用配置文件来处理的文件,安装的时候无法调试,(Windbg 可以在驱动中设断点,但不能在.inf文件中停住),只有一个日志文件可以参考,而且一个INF文件用到了不同的语法,完全看懂Inf文件曾经是我的一个梦想,原来我都是Copy别人的文件再改改,其实我没有完全弄明白,那好,请我们先沉着迎战,这篇文章是我看过的写的最好的一个讲Inf文件的文章,其实我看的好像就只有这一篇,哈哈(不算MSDN和OSR)。
给大脑不大的熊的Inf 文件给给大大脑脑不不大大的的熊熊的的Inf 文文件件(原文标题很奇怪,看了就知道了,这个可是潜心找到的,不容易找的,真的是可遇不可求啊)从前的一天,我在百英亩的森林里散步,一个动物过来搭话。
"不好意思"一个小粉猪问道."但但但是你知道Windows设备驱动,因为, 如果你知道, 我们的朋友需要一些帮助", 他说, 指向一个小熊。
(小熊前面有好多修饰词,俺不懂没有翻译,好像是穿着吊带裤,哈哈)"你需要什么帮助?", 我问这个小熊."嗯", 小熊回答道,"我是一个大脑不大的小熊,我写了一个Windows设备驱动,但我不知道如何安装它"."你所要做的是, 写一个.INF文件,它描述你所控制的驱动和设备,告诉Windows操作系统",我说."嗯, 顺便问一下,你的驱动控制的是什么设备呢?"."它是一个蜂蜜(hunny)过滤驱动.它去掉泥土和蜜蜂和其他的杂物。
这可是我的发明。
", 它相当骄傲的说(hunny应该是蜂蜜,不过我没有查到这个单词)"嗯", 我自己想,"这个大脑不大的小熊还不错嘛"."你想, 也就是说, 你是否知道如何去写一个这种"电鹰覆文件"", 小熊问道."当然, 为什么我们不坐下来,我来告诉你关于.INF文件的所有信息,嗨,都到哪里去了?回来!它们不是那么难!"一小群动物出现了, 一个接一个, 带着恐惧的眼神。
windows驱动中INF文件说明
第1章建立INF文件为了安装Microsoft Windows 2000驱动程序,必须有一个INF文件。
一个INF文件是一个文本文件,包含了关于设备和要安装的文件的必要信息,如驱动程序映像、注册表信息、版本信息等等,这些都被Setup组件所使用。
Windows 2000 INF文件不包含安装脚本。
安装程序是Win32安装应用程序的一部分,如新设备向导和增加/删除硬件向导,每个INF文件作为一个资源。
包括对设备的安装支持,INF文件为设备初始化一个新的设置类别,比如INF有一个ClassInstall32节。
这一章包含以下信息:·3.1 INF文件总体指南·3.2 为设备文件说明源和目标位置·3.3 建立跨平台的和/或者双操作系统的INF文件·3.4 建立国际化的INF文件·3.5 在设备的INF文件中加强打开文件的安全性·3.6 从应用程序访问INF文件参见《Windows 2000驱动程序开发参考》第1卷中的第3部分的第1章---INF文件的节和指示以获得INF文件格式的完整描述。
1.1 INF文件总体指南INF文件有一些公共部分并遵守一套单一的语法规则,但是由于Windows支持的各种设备,它们也是有区别的。
编写INF文件时,你应该求教于以下的信息资源。
·这一章和INF文件节和指令参考资料。
·你的设备的类别的文档。
例如,如果你的设备是图形适配器,参见DDK文档的图形驱动程序一节。
·INF文件的DDK工具。
DDK提供了一些工具以协助编写INF文件。
参见DDK的tools目录中的关于工具如GenINF 和ChkINF的信息。
·INF示例文件和类似设备的INF文件。
DDK包括了它的示例驱动程序的INF文件。
分析这些示例文件,看看是否有设备的INF文件类似于你的设备。
你可以使用任何编辑器建立或者修改INF文件。
INF文件的语法解说
;解禁IE的Internet选项
HKCU,SoftwarePoliciesMicrosoftInternet ExplorerRestrictions,NoBrowserOptions,1,0
;31 ;root of host drive of a virtual boot drive
;32 ;old windows dir if exists
;以下例子为安装到windowweb目录下
;DefaultDestDir=10,"web"
;[Install]节提供了一个INF文件安装过程的总览,它识别文件内其他包含安装信息节的详细动作,是Windows内建安装函数识别安装过程和内容的真正入口
其中file-name为必选项,是源盘上文件的名称。
disk-number是包含file-name指定文件所在源盘的盘符序列码,该盘符序列码需在[SourceDisksNames]节中列出,并大于或等于1。
Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。
file-size为可选项,表明文件的大小,以字节为单位。
;%01%wincmd.ini, Configuration,,"Mainmenu=%01%LANGUAGETCExtMenu.mnu"
;更新ini文件值内容
updateinifield =
;ini文件更新注册表
ini2reg=aa.ini
;更新config.sys内容
Inf文件详解
Inf文件详解Inf文件是一种用于安装、配置和管理Windows操作系统和应用程序的文本文件。
它包含了一系列指令和设置,用于指导操作系统或者应用程序在安装过程中进行必要的配置和操作。
本文将详细介绍Inf文件的结构、语法和常见用途。
一、Inf文件的结构Inf文件采用纯文本格式,通常以.inf为文件扩展名。
它由多个节(Section)组成,每一个节包含一组相关的指令和设置。
Inf文件的基本结构如下:```[Section1]Directive1=Value1Directive2=Value2[Section2]Directive3=Value3Directive4=Value4```Inf文件中的每一个节都以方括号括起来,并且节的名称是不区分大小写的。
每一个节下面可以包含多个指令(Directive),指令由指令名称和对应的值组成,中间用等号连接。
指令和值之间可以用空格或者制表符进行分隔。
二、Inf文件的语法Inf文件的语法相对简单,主要包括注释、指令和值三个部份。
1. 注释:以分号(;)开头的行被视为注释,用于对Inf文件进行说明和解释,不会被操作系统或者应用程序执行。
示例:```; This is a comment line```2. 指令:指令是Inf文件中最重要的部份,用于定义操作系统或者应用程序的配置和操作。
常见的指令有以下几种:- AddReg:用于向系统注册表中添加指定的键值对。
示例:```[Section1]AddReg=Section2```- CopyFiles:用于将指定的文件复制到指定的目录。
示例:```[Section1]CopyFiles=Section2```- DelReg:用于从系统注册表中删除指定的键值对。
```[Section1]DelReg=Section2```- DelFiles:用于删除指定的文件。
示例:```[Section1]DelFiles=Section2```- RegisterDlls:用于注册指定的动态链接库文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安装一个驱动程序一个后缀是INF的文本文件控制设备驱动程序自动的安装。
INF格式类似于WIN 下的老式的.INI文件,但是复杂些。
一个INF文件允许自动的或者在对话框的帮助下安装驱动程序文件。
驱动程序安装结束后对系统产生两个持久的影响:1. 描述驱动程序的系统注册表入口,它的加载顺序和任何适当的配置数据。
2. 驱动程序文件被拷贝到适当的系统路径。
INF文件是影响这些改变的标准的机制,它可以提供定制安装。
使用INF文件自动安装INF文件随着硬件和驱动程序一起提供,INF文件的结构和内容是驱动程序作者的责任。
INF文件结构INF文件是被分(section)成几个部分的文本文件,每个部分被指定一个标识符号﹐它被中括号([])括起来﹒一些部分的命名是必须的﹐而其它部分是驱动程序特定的﹒每个部分是一些安装动作﹐或者连接或者列举其它部分﹒文件中各个部分的顺序是不重要的﹐因为每个部分都是被命名和连接的﹒一个部分继续直到另一个部分或者遇到文件结束﹒每个部分的标识符号是独一无二的名字﹐为了保持与WIN98的兼容﹐它的长度被限制在28个字符之内﹐可以包含下划线和圆点字符﹐在引用整个名字的前提下﹐可以包含空格字符﹒文件内容的一般格式如下:entry = value [, value...]entry是指令﹐关键词或者文件名﹐value是entry被应用的属性﹒entry或者value名字可以指定为一个使用百分号(%)的代替一些具体数据的字符串﹐分割INF文件的[Strings]提供一个特殊语言ID的值。
Version 部分一个有效的INF文件从一个命名为[Version]的部分开始,它像一个INF文件的头和标识。
表. [Version]部分的条目Manufacturers部分另一个必须的部分是[Manufacturers]﹐这个部分的条目列出了可以使用这个INF文件安装的设备和驱动程序﹐条目的形式是:manufacturer=modelmanufacturer列出被安装的硬件的制造商的INF文件的唯一名字﹒model提供指向INF文件中另一个进一步安装这个模型的部分的指针﹐Models 部分罗列在[Manufacturers]部分的每一个模型﹐在文件中必须有相应的部分﹐model部分的每个条目的形式是:device-description=install-section-name,hw-id[,compatible-id...]device-description描述了设备模型的列表和一个短描述﹒这个字符串在安装的时候在对话框中提供给用户﹐因此它需要提供多种语言的文本﹒install-section-name的值参考[DDInstall]部分﹐也描述了INF文件的另一个进一步安装的部分﹒hw-id是硬件设备在PnP兼容的总线上声明的时候返回的PnP标识符号﹒例如﹐USB\VID_045E&PID_00B标识微软HID(Human Input Device)的USB键盘设备﹒compatible-id可以是任何表示用于任何的包含在列表中的相同安装脚本的数值﹒DDInstall 部分它的名字独一无二的指定从[Models]部分列出的每个制造商的每个模型﹐AddReg条目在语法上是必须的﹐CopyFiles条目对于[DDInstall]部分是重要的﹐它的形式是:CopyFiles=file-list-section[,file-list-section...] 或者CopyFiles=@filename前者是更普通的版本﹐它允许一个指向另一个包含一个安装文件列表的部分的指针﹒然而对于简单的驱动程序的安装﹐可以直接的使用文件名﹒表. [DDInstall]部分条目CopyFiles部分INF文件的[CopyFiles]部分是唯一的名字并且CopyFiles的指示器在[DDInstall]部分﹐它的条目的形式是: destination-filename[,source-filename,temp-filename,flag]表. CopyFiles flag的定义destination-filename是需要复制的文件名﹐如果与源文件名不同﹐source-filename必须被指定﹐temp-filename在WIN98中是为新文件指定一个中间的文件名直到系统重新激活﹐对于WIN2000来说﹐它是无用的﹒flag值指定新的目标文件的部署﹒这些值可以OR起来使它有多个性质﹒应该确认没有互斥的项目﹒因为[CopyFiles]条目的语法不包含指定源文件的磁盘或者路径选项﹐所以﹐必须使用其它的INF文件的部分[SourceDisksNames]和[SourceDisksFiles]﹒[CopyFiles]是复制的源文件名﹐复制的目标则在[DestinationDirs]部分﹒AddReg部分INF文件的[AddReg]部分是唯一的名字﹐并且引用AddReg的指示器在[DDInstall]部分﹒这个部分的目的是提供在系统注册表中添加或者修改条目﹐形式是﹕reg-root[,subkey,value-name,flags,value]reg-root是注册表根的缩写﹐子键描述根键下的键名﹐使用反斜线字符(\)分开子键﹒例如﹐Software\W2KDriverBook\ Driver\Setting是有效的HKCU或者HKLM根键的子键﹒表. AddReg reg-root缩写的意义value-name指定被添加或者修改注册表值﹒每个系统注册表键包含零个或者多个不同数据类型的值﹒注册表编辑器在右边的窗格列出了子键的值﹒值的名字和值的数据也一起显示出来﹒左边的窗格仅仅显示子键﹒flags指定数据的类型﹒表. AddReg flags定义系统注册表对于驱动程序安装的重要性将在后面讨论﹒SourceDisksNames 部分如果INF文件包含的驱动程序文件分布在多个磁盘上﹐INF文件就必须包含[Source-DisksNames]部分﹐这个部分包含文件分布的每个磁盘的人口﹒diskid=disk-description[,tagfile,unused,path]diskid是唯一的分配设置中的名字﹒通常﹐磁盘号从1开始﹐disk-description是一个提示用户合适的磁盘的字符串﹒tagfile值有双重的作用﹒确定在安装过程中用户提供正确的磁盘﹐tagfile值在安装过程继续进行之前被检验﹐如果tagfile文件不存在﹐用户被重新提示插入正确的磁盘﹒如果agfile 值包含.CAB的扩展名﹐表示磁盘上的驱动程序文件是压缩文件﹒path值是一个以root-relative为磁盘根目录的驱动程序文件的路径﹒像tagfile值一样是可选择的﹒SourceDisksFiles 部分INF文件必须包含一个[SourceDisksFiles]部分﹒这个部分列出了在安装驱动程序过程中使用的文件名﹒每个文件都有相应的条目﹒filename=diskid[,subdir,size]diskid值是一个[SourceDisksNames]部分指定的可以找到文件名的磁盘﹐可选的subdir值指定文件的路径﹒可选的size值指定解压缩文件的字节大小﹐安装过程使用这个数据在尝试复制文件之前决定目标系统是否适合安装﹒DestinationDirs部分这是个必须的提供目标路径的部分﹒file-list-section=dirid[,subdir] 或者DefaultDestDir=dirid[,subdir]file-list-section是一个被[CopyFiles]的指示器唤起的部分﹒它指定所有的被指示器复制的文件安装到指定的路径﹒对于DefaultDestDir﹐用于[CopyFiles]中所有的指示器﹐通常与表. DestinationDirsdirid定义部分为了让复制的文件在目标系统中起驱动程序的作用﹐必须通知服务控制管理器(SCM)﹐在WIN2000中安装的每个驱动程序在注册表的HKLM\System\CurrentControlSet\Services下面﹐ServiceType值是1表示内核模式的驱动程序﹒StartType指出在系统引导过程中在何时加载驱动程序﹒ErrorControl值决定在驱动程序加载的过程中如果遇到错误后如何是好﹒ServiceBinary值指出驱动程序的位置(.SYS文件)﹒但是可能会被遗漏﹐如果二进制文件在%windir%\system32\drivers路径并且与HKLM\...\Services下面的子键名的名字相同的时候就发生这种情况﹒部分条目的形式是﹕AddService=ServiceName,[flags],service-install-section[,eventlog-install-section]ServiceName描述服务的名字﹐典型的是驱动程序的名字(没有.SYS扩展名)表. AddService flags定义service-install部分和可选的eventlog-install部分唤起附加的控制服务值条目的INF部分(例如﹐ServiceType和StartType)﹒ServiceInstall 部分[ServiceInstall]部分﹐它的名字在部分的AddService条目中唯一指定﹐控制和安装驱动程序到服务控制管理器﹒表. ServiceInstall 部分条目INF 例子前面介绍的INF文件好象非常复杂﹐这里使用一个例子说明它﹒在下面的例子中﹐INF控制一个由两个文件组成的驱动程序﹒被复制到系统的驱动程序路径﹐被复制到系统的帮助路径(例如﹐WINNT\System32\Drivers和WINNT\Help)﹒[Version]Signature="$Windows NT$"Class=MissilesClassGUID={C9B3D080-6889-11d4-93FC-0000} Provider=W2KDriverBook DriverVer=07/04/2000,; 注释在分号(;)后面[DestinationDirs] ; 指定文件复制的目的地DefaultDestDir=12 ; %windir%\system32\driversCopyLaunchHelp=18 ; standard help directory[Manufacturer]W2KDriverBook=MyMfgName ; 唤起model部分[MyMfgName] ; 开始一个Models部分"ISA Missile Launcher"=InstallLauncher,ISA\Launcher ; 我们的设备列表[InstallLauncher] ; 开始DDInstall 部分CopyFiles=CopyLaunchFiles ; 唤起CopyFiles 部分.CopyFiles=CopyLaunchHelp ; 另一个是help的AddReg=LaunchRegSection ; 唤起AddReg 部分[CopyLaunchFiles] ; 开始CopyFiles部分[CopyLaunchHelp] ; Help文件的CopyFiles部分[LaunchRegSection] ; 开始AddReg 部分HKR,"Parameters","Coordinates",FLG_ADDREG_TYPE_DWORD,0; 给设备提供一个是0的DWORD值[SourceDisksNames] ; 这个部分不是真的需要﹐1="Missile Launcher Driver Files" ; 因为只有两个文件并且在同一个磁盘上[SourceDisksFiles]=1 ; 类似的﹐因为它们在同一个磁盘上﹐=1 ;所以不是真正的需要这个部分[] ; 部分AddService=Launcher,2,LaunchService[LaunchService] ; 设置SCM﹐这样驱动程序就可以运行了ServiceType=1 ; 驱动程序StartType=3 ; 需要时手动加载ErrorControl=1 ; 汇报错误ServiceBinary=%12%\ ; 驱动程序路径使用INF文件一旦驱动程序的INF创建完成﹐必须处理它﹐使它有用﹒手动安装手动的处理INF文件﹐必须使用Windows的文件管理器选择INF文件﹐右击这个文件﹐选择安装﹒在真正的即插即用环境中﹐插入或者移除设备触发相应的驱动程序的安装﹐加载和卸载﹒因此﹐保留手动的安装是为了最初的测试和调试驱动程序﹒自动安装当一个即插即用的设备被插入到一个系统﹐数个子系统相互作用来加载新的驱动程序﹒1. 当设备被插入﹐硬件使用自动侦测和自动配置﹐告诉总线驱动程序设备出现﹒依赖于总线硬件﹐这可能涉及通知总线驱动程序一个新的总线设备列举发生﹒在这一步的最后﹐驱动程序发现新的设备出现并且有一个指定的设备ID﹒2. 内核模式PnP管理器通知用户模式PnP管理器一个新的有一个指定ID的设备出现在系统中﹒3. 用户模式PnP管理器使用WIN2000的Setup API库为新的设备提供一个类似的驱动程序列表﹒为了合适的驱动程序﹐系统使用新设备的class和model查找系统的INF目录(例如﹐WINNT\INF)﹒4. 如果不能找到合适的INF文件﹐系统不进行进一步的动作直到一个有特权的用户进入系统﹒用户被提供一个新的硬件向导﹒用户提供驱动程序的位置和合适的INF文件位置﹒5. 一旦找到INF文件﹐它被使用CfgMgr API库处理﹒驱动程序文件和注册表条目被安装和修改﹒内核模式的PnP管理器主要执行这个步骤﹒6. 基于INF文件的指导﹐内核模式PnP管理器加载任何低层的滤波驱动程序﹐然后是functional驱动程序﹐最后是高层的驱动程序﹒在堆栈中的高层的驱动程序然后发送适当的PnP信息﹐包括IRP_MN_START_DEVICE.添加/移除硬件向导在安装过程中﹐主要的与用户的交互是添加新硬件向导﹒注意有一个制造商的列表(来自于INF文件的[Manufacturers]部分)﹐和Models列表(来自于INF文件的[Models]部分)﹒通常﹐用户手动选择适当的驱动程序去安装和加载﹒如果驱动程序被安装﹐它的DriverEntry和AddDevice例程必须仍然有效﹐这样使请求驱动的硬件满意新代码的设置﹒换句话说﹐手动的选择可能成功的安装﹐但是初始化是失败的﹒Class名字和设备IDs即插即用设备自动安装的过程很大程度上依赖安装程序的定位合适驱动程序的INF文件和文件中各个部分的能力﹒这个部分文章的目的是解释Class名字和设备Ids﹐还有定位INF 文件的过程﹒每个即插即用设备应该有一个唯一的指定硬件模型的标识符号﹒因此提供设备ID给即插即用总线硬件和总线驱动程序﹒当然﹐总线驱动程序在新的设备被插入后的很短时间内请求设备ID﹒设备ID的形式与总线类型有关﹒但是﹐一般看起来是:<enumerator>\<enumerator-specific-device-ID>(例如﹐PCI\VEN_1000&DEV_0001&SUBSYS_00000000&REV_02)对于驱动程序代码﹐一个硬件设备可能汇报多个设备ID﹐它是设备功能上的与很多models兼容的陈述﹒因为INF文件的[Models]部分包含一个hw-id值﹐所以﹐寻找与新安装的设备返回的设备ID相匹配的INF文件中的条目非常简单﹒同样的INF条目允许相兼容硬件的列表的规范有附加的设备Ids形式﹒如果设备ID不能在INF文件中定位精确的匹配﹐就使用兼容的ID﹒另一个为设备定位合适的驱动程序的关键元素是安装类(Setup Class)的观念﹒一系列相关的设备可以共享分层的驱动程序(例如﹐upper或者lower滤波器)﹐甚至在堆栈中个别的驱动程序﹒安装类被GUID 和name唯一的标识﹒微软定义了一系列驱动程序类﹐新的类可能被定义新的硬件组﹒创建新的组之前﹐必须选择一个新的GUID和class名字﹒表. 安装类: 名字和GUIDs自定义安装驱动程序一般提供两个定制驱动程序安装的信息﹒第一﹐提供一个自定义的安装程序代替新硬件安装程序﹐为了提供这个功能﹐自定义的安装程序需要使用提供的例程﹒这个库中的每个函数的形式是SetupDiXxx﹒DDK提供使用这个库的详细资料﹒第二﹐驱动程序可以提供一个自定义的设置设备的向导页﹒在它的工作要完成之前﹐安装程序发送一个DIF_NEWDEVICEWIZARD_FINISHINSTALL请求来提供给驱动程序一个显示自定义页的机会﹒控制驱动程序的加载顺序有时﹐驱动程序的加载顺序是非常重要的﹒可能一个驱动程序依赖另一个驱动程序初始化完成﹒当有这样的依赖产生﹐服务控制管理器(the Service Control Manager)可以取得系统注册表中条目LoadOrderGroup和Dependencies﹐这些值可以在INF文件中的[ServiceInstall]部分指定﹒LoadOrderGroup是命名一个指定的驱动程序加载顺序组的一个号码﹐Dependencies指定在这个驱动程序加载成功之前必须加载的组﹒这样的相互依赖不是公共的﹐也不应该是公共的﹒在一个真正的以设备为中心的环境(支持即插即用)中﹐驱动程序应该使用尽量少的联系的顺序﹒另一方面﹐分层很多的驱动程序的执行需要这些规范是合理的﹒驱动程序的数字签名WIN2000的CD上附带有很多第三方的驱动程序﹒为了分享这些程序﹐需要几个条件﹒加之﹐无论何时尝试在WIN2000上安装一个驱动程序﹐都会收到一个陈述设备驱动程序没有数字签名并且它的确实性没有被微软检验的警告信息﹒下面介绍微软的检验驱动程序的确实性的作用和驱动程序作者和硬件制造商的保证它们的软件包被包含在未来的WIN2000 CD上的负担﹒微软检验驱动程序的原因微软检验驱动程序有两个目标:1. 通过方便的设备驱动程序的发售提供或者促进WIN2000和更多的硬件设备的协同工作能力﹒2. 确定设备驱动程序是稳定的和没有折中系统的完整性﹒因为设备驱动程序操作在内核模式﹐它们可以慢慢的或者很快的使系统崩溃﹒因为系统的不稳定性常常由内核自己引起﹒这样﹐微软为它的操作系统维持一个被鉴定的制造商和驱动程序的目的是明显的﹒当然﹐WIN2000和大多数的硬件的协同工作能力是一个强有力的买点﹒因此﹐微软常常与硬件制造商一起来确保及时地发布兼容的驱动程序﹒为了完成这两个目标﹐微软有专门的提供硬件和驱动程序证明的团队﹐Windows硬件质量实验室(WHQL)﹒数字签名作为WHQL程序的一部分﹐一个被检验过的驱动程序获得一个允许在WIN2000中安装驱动程序并且不会产生警告的数字签名﹒数字签名由几个部分组成:1. 一个被包含在分布式的驱动程序包的目录文件(.CAT)﹐它包含微软分配的数字签名﹒2. 一个在INF文件中[Versions]部分的涉及.CAT文件的条目﹒3. WIN2000的是或者否允许一个没有数字签名的驱动程序安装的策略﹒数字签名有更改检验﹐这样确保驱动程序被使用供货商提供的原始的代码安装﹒它使用密码技术来完成这个目标﹐这个数字签名没有更改驱动程序代码﹒小结Windows 2000和Windows 98的自动的设备驱动程序的安装对于用户来说是一个巨大的进步﹒然而这个步骤需要驱动程序的作者附加的工作﹐至少﹐必须提供一个INF文件﹒。