USB驱动程序安装离不开一个INF的文件,INF文件向操作系统提供了安装驱动所需的信息,当一个新设备插入PC后,操作系统根据提供的INF文件自动完成驱动程序的安装。Inf是Device information File的缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,Inf文件中包含硬件设备的信息或脚本以控制硬件操作。在Inf文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等。 当设备驱动程序安装好后,将会复制一份INF文件到C:/Windows/INF文件中,方便设备因一些原因被删除后再插入时自动安装驱动程序,这个文件夹中还存放有其它大量的inf文件,用于一些被支持的新设备自动安装驱动程序。 INF文件可实现的功能
Inf文件格式:
关键和常用的节(section)有: [Version]版本描述信息,主要用于版本控制,是唯一必须的节。 [Strings]字符串信息,用于常量定义,即其它节要用到的字符串常量都可以保存到这里 [DestinationDirs]定义系统路径信息,与Copy Files、Rename Files、Delete Files等节配合,用于指定其缺省操作目录。 [SourceDisksNames]要复制或安装的文件位置。 [SourceDisksFiles]要复制或安装的文件名。 [Manufacturer]指明供应商及其对应Models节的名称 [Models]指明Install/DDInstall节的名称、设备的硬件ID等信息(注意,Models的名称由Manufacturer节定义) [Install]指明需复制的文件、想注册表中添加的内容等信息 [DDInstall.Services]指明驱动程序安装的详细信息 INF文件中各节及其条目的详细说明: 一、Version节: Version节通常作为INF文件的开始,下表列出了其包含的各项。所有INF文件都必须含有Version节及其Signature项。 Version节里的项
Version节举例 [Version] Signature="$ CHICAGO$" Class=USB ClassGUID={36FC9E60-C465-11CF-8056-444553540000} provider=%MSFT% DriverVer=03/21/2012,1.0.0.1 说明: Signature:此条目主要描述此INF文件支持的设备类型和适用的操作系统,只能取值为$Windows NT$、$Chicago$ 或 $Windows95$。如果不是以上这些字符,则不被认可为inf文件。该条目如果是$Windows95$表示该INF文件只适用于Windows95/98的系统,如果是$Chicago$表示该INF文件适用于Windows95/98及Windows2000以上的操作系统,如果是$Windows NT$表示该INF文件只适用于Windows 2000/XP/2003及以上的操作系统。 Class:此条目表明设备的类型,常见的有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,如网卡)、Modem(调制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)、USB(通用串行总线控制器)。 ClassGUID:设备的GUID,如果设备是一个标准类别,使用标准类的名称和GUID,否则创建一个自定义的类别名称,并自定义它的GUID。
Provider:设备提供商,对应设备管理器中显示的设备提供商的信息。 DriverVer:对应设备管理器中显示的驱动程序版本的信息。 二、DestinationDirs节: DestinationDirs节指明INF文件和设备驱动程序的目标目录。当INF文件使用CopyFiles、DelFiles、RenFiles指令时,则必须包含该节。其各项的格式如下: DestinationDirs节中的常用dirid
三、SourceDisksNames节: SourceDisksNames节指明设备驱动程序源文件所在位置及相关信息。格式如下: [SourceDisksNames] disk-ordinal=”disk-description”,disk-label,disk-serial-number 罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。 其中disk-ordinal是盘符序列码,标识一个源盘,具有唯一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。disk-description是盘描述符,用双引号括起来的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。disk-label为源盘的卷标识。disk-serial-number被设置为0。 四、DefaultInstall节 此节指定包含的安装指令节,其中每一个条目将会成为一节。 [DefaultInstall]节中定义的操作: LogConfig=log-config-section-name[,log-config-section-name]... ;Log日志文件配置 Copyfiles=file-list-section[,file-list-section]... ;复制文件 Renfiles=file-list-section[,file-list-section]... ; 文件改名 Delfiles=file-list-section[,file-list-section]... ; 删除文件 UpdateInis=update-ini-section[,update-ini-section]... ; 更新Inis UpdateIniFields=update-inifields-section[,update-inifields-section]... ; 更新Ini字段 AddReg=add-registry-section[,add-registry-section]... ; 添加注册项 DelReg=del-registry-section[,del-registry-section]... ; 删除注册项 Ini2Reg=ini-to-registry-section[,ini-to-registry-section]... ; Ini文件转换为Reg文件 以上各条目并非全部必须。节名必须为可见字符。每一个条目包含一到多个节,第一个命名之后的所有命名必须以“,”引导。 以下介绍几个经常用到的操作: 1. 样例: [DefaultInstall] CopyFiles = copyfile_list_section[,copyfile_list_section] [copyfile_list_section] dest_filename,[source_filename],[,flags] [dest_filename,[source_filename],[,flags]] 说明: dest_filename 必选项。用于指定目标文件名的字符串。如果不提供 source_filename,则使用 dest_filename 作为源文件名。 source_filename 必选项。用于指定源文件名的字符串。如果 source_filename 与 dest_filename 相同,则可省略source_filename。 flags 可选项。用于指定在复制进程期间执行某个操作的数字值。下表列出了 Windows CE 支持的值。
2. 样例: [DefaultInstall] AddReg = add_registry_section[,add_registry_section] [add_registry_section] reg_root_string,subkey,[value_name],flags,value[,value] [reg_root_string,subkey,[value_name],flags,value[,value]] reg_root_string 必选项。用于指定注册表根位置的字符串。下表显示了注册表根及其缩写。
subkey 必选项。用于指定如 Strings 节中定义的字符串关键字或 reg_root_key 下要设置的注册表路径的值。此值可以指定以下项:
value_name 可选项。用于指定现有子项值中的值名称或创建要添加的新值名称的字符串。如果被省略,则使用默认注册表值名称。 flags 必选项。用于指定注册表项的数据类型和/或控制添加注册表根项的操作的值。下表列出了 Windows CE 支持的标志值。
value 必选项。用于指定由 value_name 给出并添加到注册表项中的实际数据的值。对指定的类型应该使用合适的格式。 五、[Manufacturer]节 Manufacturer节指明供应商及其对应Models接的名称,其各项的格式如下: [Manufacturer] [Microsoft] 说明: 在Strings节中可以找到%MfgName%定义的字符串,代表设备制造商的名字,在Strings节中可以找到形如MfgName=”Intel”的项,表明设备制造商是Intel。而右边的Microsoft也是制造商的Models节的节名。 Models节指明Install/DDInstall节的名称、设备的硬件ID和兼容ID等信息,其节名称由Manufacturer节指定。Models节名是由Inf编写者自己定义的,不属于系统节名。每个制造商的Models节至少标识一个设备,并规定设备的VID和PID。同时引用这个设备inf文件的Install节。该节也可以规定一个或多个附加设备ID。当设备管理器发现设备检测ID与此节定义ID相符时,设备管理器就知道找到了正确的INF文件。
六.Install/DDInstall节 Install/DDInstall节指明需复制的文件、想注册表中添加的内容等信息,其节名称由Models节指定。下表列出了其包含的常用项。 Install/DDInstall节中的常用项
Install/DDInstall节中的常用项的详细介绍: ①CopyFiles项:它是Install/DDInstall节中的一个基本指令,用于指明需要复制的文件。其“filename”指出目标文件名;“file-list-section”是其创建的文件列表节,该节格式为 [file-list-section] destination-file-name[,source-file-name][,temporary-file-name][,flag] 其中,“destination-file-name”指出目标文件名;“source-file-name”指出源文件名,如果其和目标文件名相同,则可忽略该参数;“temporary-file-name”指出复制操作过程中所需要的临时文件名,他只适用于Windows 98;“flag”指出该文件的一些处理方法,其取之情况如下表。 CopyFiles项中的flag参数
②AddReg项:它是Install/DDInstall节所必须包含的指令,用于指明需项注册表中添加的内容。其“add-registry-section”是它创建的添加注册表节,该节的格式为 [add-registry-section] reg-root, [subkey], [value-entry-name], [flags], [value] 其中,“reg-root”指出注册表树的根目录,它的取值在下表中;“subkey”指出reg-root下的子目录(或称子键);“value-entry-name”指出要增加的注册表值;“flags”指出其对注册表的一些处理方法,取值在下面的flags表中;“value”指出新增加注册表值的数据。 AddReg项中的reg-root参数
AddReg项中的flags参数
③DelFiles项:它是Install/DDInstall节中的可选指令,用于指明需删除的文件。其“file-list-section”是它创建的文件列表节,该节的格式为 [file-list-section] destination-file-name[,,,flag] 其中,“destination-file-name”指出目标文件名;“flag”指出该文件的一些处理方法,其取值如下表。 DelFiles项中的flag参数
④RenFiles项:它是Install/DDInstall节中的可选指令,用于指明需重命名的文件。其“file-list-section”是它创建的文件列表节,该节的格式为 [file-list-section] new-dest-file-name, old-source-file-name 其中,“new-dest-file-name”指出该文件的新文件名;“old-source-file-name”指出其原有文件名。
⑤DelReg项:它是Install/DDInstall节中的可选指令,用于指明需从注册表中删除的内容。其“del-registry-section”是它创建的删除注册表节,该节的格式为 [del-registry-section] reg-root, subkey [,value-entry-name] 其中,“reg-root”指出该注册表树中的根目录,取值与AddReg的ret-root相同; “subkey”指出reg-root下的子目录(或称子键);“value-entry-name”指出要删除的注册表值。
七、[install.Service]节 DDInstall.Services节指明驱动程序安装的详细信息,他只是用于Windows 2000.他的节名称为[install-section-name.Services],其“install-section-name”由Models节指定。下表列出了其包含的常用项。 DDInstall.Services节中的常用项
主要项进行详细介绍。 ①AddService项:它是DDInstall.Services节所必须包含的指令,用于控制设备驱动程序的安装过程。其“ServiceName”指出驱动程序的名字;“flags”指出一个或多个系统定义的标识,其取值情况如下表;“event-log-install-section”是其创建的事件日志安装,下表中列出了该节所包含的常用项;“service-install-section”是其创建的服务安装节,下表中列出了该节所包含的常用项;“EventLogType”指出事件日志的类型,其取值为System、Security和Application;“EventName”指出事件日志的名字。 AddService项的常用flags参数
event-log-install-section节中的常用项
以下是对event-log-install-section节中的常用项的主要项进行详细介绍。 <1>ServiceType项:指明驱动程序的类型,取值情况如下表。 ServiceType项的取值
<2>StartType项:指明驱动程序的启动类型,其取值情况如下表。 StartType项的取值
<3>ErrorControl项:指明驱动程序的差错控制级别,其取值情况如下表。 ErrorControl项的取值
②DelService项:它是DDInstall.Service节中的可选指令,用于删除一个或多个已有的设备驱动程序。其“ServiceName”指出驱动程序的名字;“flags”指出一个或多个系统定义的标识,取值见下表;“EventLogType”指出事件日志的类型,其取值为System、Security或Application;“EventName”指出事件日志的名字。 DelService项的flags参数
八.String节 strkey=[“]some string[“] 其中,“strkey”指出字符串的名字,它只能包含字母和数字;“some string”为字符串的内容。 |