记录windows驱动开发inf文件详解 |
您所在的位置:网站首页 › windows驱动inf文件详解 › 记录windows驱动开发inf文件详解 |
Windows驱动程序开发相关
1. 驱动的注册表位置:
1. 硬件子键: HKEY_LOCATION_MACHINE\SYSTEM\ControlSet001\Enum 指明硬件的HID,VID,DID等跟硬件和硬件厂商相关的信息。 2. 服务子健: HKEY_LOCATION_MACHINE\SYSTEM\ControlSet001\Services 它主要是跟驱动相关的,指明驱动的路径,以及驱动名字。 3. 类子健: HKEY_LOCATION_MACHINE\SYSTEM\ControlSet001\Control\Class, 指明INF文件。 2. INF详解 INF文件是一个文本文件,由许多按层次结构排列的节组成 *规则一: INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来。 这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。 *规则二: 在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。 *规则三: INF文件对大小写不敏感。 *规则四: “;”号后面的内容为注释。 *规则五: 如果一个条目的内容过多,在一行无法书写完全,则用“\”将一行内容书写为多行。 INF文件中常用的节 节 说明 Version INF文件的开始 SourceDisksNames 指明去的那个程序所在的磁盘或CD-ROM SourceDisksFiles 指明驱动程序的文件名 Destination 指明INF文件和驱动程序的目标文件 Manufacturer 指明供应商及其对应Models节的名称 Models 指明Install/DDInstall节的名称、设备的硬件ID等信息 Install(Windows 98) Install(Windows 2000) 指明需复制的文件、想注册表中添加的内容等信息 DDInstall.Services 仅适用于Windows 2000 指明驱动程序安装的详细信息 String 指明一系列字符串 2.1 Version Version节通常作为INF文件的开始,下表列出了其包含的各项。所有INF文件都必须含有Version节及其Signature项 Version节中的各项 项 说明 Signature 指明驱动程序的签名,其取值为:$Windows NT$、$Windows 95$、$Chicago$、 Class 指明驱动程序所属的类别 ClassGuid 指明设备类的GUID,其格式为:{nnnnnnnn-nnnn-nnnn-nnnnnnnnnnnn}① Provider 指明该INF文件的供应商 LayoutFile 仅由操作系统内部提供的INF文件使用 CatalogFile 指明数字签名文件的文件名,其扩展名为.cat DriverVer 指明驱动程序的版本信息,其格式为:mm/dd/yyyy[,x.y.v.z] 注:①n代表一个16进制数 下面对主要的各项进行详细介绍。 ①.Signature项:指明驱动程序的签名。对于Windows 98和Windows 2000下的USB设备驱动程序,该项的取值通常为“$Chicago$”。 ②.Class和ClassGuid项:指明驱动程序所属的设备类别及其GUID。 常用设备类别及其GUID Class ClassGuid 说明 1394 6BDD1FC1-810F-11D0-BEC7-08002BE2092F 1394主控制器 CDROM 4D36E965-E325-11CE-BFC1-08002BE10318 CD-ROM驱动器 DiskDrive 4D36E967-E325-11CE-BFC1-08002BE10318 磁盘驱动器 Display 4D36E968-E325-11CE-BFC1-08002BE10318 显示适配器 FDC 4D36E969-E325-11CE-BFC1-08002BE10318 软盘驱动器 HDC 4D36E96A-E325-11CE-BFC1-08002BE10318 硬盘控制器 HIDClass 745a17a0-74d3-11d0-b6fe-00a0c90f57da 人机接口设备 Keyboard 4D36E96B-E325-11CE-BFC1-08002BE10318 键盘 Modem 4d36e96c-e325-11ce-bfc1-08002be10318 调制解调器 Monitor 4d36e96e-e325-11ce-bfc1-08002be10318 监视器 Mouse 4d36e96f-e325-11ce-bfc1-08002be10318 鼠标 Net 4d36e972-e325-11ce-bfc1-08002be10318 网络适配器 Ports 4d36e978-e325-11ce-bfc1-08002be10318 端口(COM&LPT) Printer 4d36e979-e325-11ce-bfc1-08002be10318 打印机 System 4d36e97d-e325-11ce-bfc1-08002be10318 系统设备 TapeDrive 6D807884-7D21-11CF-801C-08002BE10318 磁带驱动器 USB 36FC9E60-C465-11CF-8056-444553540000 USB ③.DriverVer项:指明驱动程序的版本信息。其“mm/dd/yyyy”代表月/日/年;“x.y.v.z”代表驱动程序的版本号,它是可选的。 2.2 SourceDisksNamesSourceDisksNames节指明设备驱动程序所在的磁盘或CD-ROM,其各项的格式如下: diskid=disk-description,disk-label,disk-serial-number (Windows 98) diskid=disk-description[,[tagfile][,unused,path]] (Windows 2000) 其中,“diskid”指出磁盘驱动器的编号,它是正整型数,通常从1开始,且不能重复;“disk-description”表示磁盘的描述信息,他通常为一个字符串。对于Windows 98,“disk-label”指出磁盘的卷标;“disk-serial-numbe”指出磁盘的序列号。对于Windows 2000,“tagfile”指出磁盘标签文件的文件名;“unused”保留未用;“path”指出驱动程序所在的路径;“[ ]”表示可选参数。 2.3 SourceDisksFilesSourceDisksFiles节指明设备驱动程序的文件全路径,其各项格式如下: filename=diskid[,subdir] (Windows 98) filename=diskid[,[,subdir][,size]] (Windows 2000) 其中,“filename”指出驱动程序的文件名;“diskid”指出磁盘驱动器的编号;“subdir”指出该文件在磁盘上的路径;“size”指出该文件未经压缩时的大小,以字节为单位。 2.4 DestinationDirsDestinationDirs节指明INF文件和设备驱动程序的目标目录。当INF文件使用CopyFiles、DelFiles、RenFiles指令时,则必须包含该节。其各项的格式如下: DefaultDestDir=dirid[,subdir] File-list-section=dirid[,subdir] 其中,“DefaultDestDir”是一个项名称,代表文件复制、删除、重命名操作的缺省目标目录;“file-list-section”指出CopyFiles、DelFiles、RenFiles指令所引用的节;“dirid”指出目标目录值,见下表;“subdir”指出dirid目录下的子目录。 DestinationDirs节中的常用dirid dirid 目标目录 dirid 目标目录 10 Windows目录:%windir% 17 INF目录 11 系统目录 Windows 98:%windir%/system Windows 2000:%windir%/system32 18 帮助目录 20 字体目录 12 驱动程序目录 Windows 98:%windir%/system/IoSubsys Windows 2000:%windir%/system32/drivers 23 颜色目录 24 应用程序目录(Windows2000) 13 命令目录(Windows98) 25 共享目录 14 控制面板目录(Windows98) 50 %windir%/system(Windows2000) 15 打印机目录(Windows98) 54 Ntldr.exe和osloader.exe所在的目录(Windows2000) 16 工作组目录(Windows98) 55 打印处理器目录(Windows2000) 2.5 ManufacturerManufacturer节指明供应商及其对应Models接的名称,其各项的格式如下: %strkey%=models-section-name 其中,“strkey”代表设备制造的名字,其字符串值在String节中定义;“models-section-name”指出Models节的名称。 32位和64位自适应安装, %strkey%=models-section-name,NT,NTamd64 //(逗号分隔)然后在Models中增加 [models-section-name.NT]和[models-section-name.NTamd64]两个节即可。 2.6 ModelsModels节指明Install/DDInstall节的名称、设备的硬件ID和兼容ID等信息,其节名称由Manufacturer节指定。其各项的格式如下: device-description=install-section-name,hw-id[,compatiable-id…] 其中,“device-description”指出设备的表述信息,他可以是一个字符串,也可以使一个%strkey%;“install-section-name”指出Install/DDInstall节的名称;“hw-id”指出设备的硬件ID;“compatiable-id”指出设备的兼容ID。 2.7 Install/DDInstallInstall/DDInstall节指明需复制的文件、想注册表中添加的内容等信息,其节名称由Models节指定。下表列出了其包含的常用项。 Install/DDInstall节中的常用项 项 说明 DriverVer 指明驱动程序的版本信息,格式为:mm/dd/yyyy[,x.y.z] CopyFiles 指明需复制的文件,格式为: CopyFiles=@filename|file-list-section[,file-list-section]... AddReg 指明向注册表中添加的其他INF文件按,格式为: AddReg=add-registry-section[,add-registry-section]… Include 指明安装时需要的其他INF文件,格式为: Include=filename.inf[,filename2.inf]… Needs 指明安装时所需的特定INF文件,格式为: Needs=inf-section-name[,inf-section-name]… Delfiles 指明需删除的文件,格式为: Delfiles=inf-section-name[,inf-section-name]… RenFiles 指明需重命名的文件,格式为: Renfiles=inf-section-name[,inf-section-name]… DelReg 指明需删除的注册表内容,格式为: DelReg=del-registry-section[,del-registry-section]… 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参数 值 符号 说明 0x00000400 COPYFLG_REPLACEONLY 仅替换目标目录中的文件 0x00000800 COPYFLG_NODECOMP 复制并不解压缩 0x00000008 COPYFLG_FORCE_FILE_IN_USE 将源文件赋值为临时文件名,以重新命名 0x00000010 COPYFLG_NO_OVERWRITE 不替换原有文件 0x00001000 COPYFLG_REPLACE_BOOT_FILE 强制用户重新引导系统 0x00002000 COPYFLG_NOPRUNE 强制复制文件 0x00000020 COPYFLG_NO_VERSION_DIALOG 不覆盖新版本的文件 0x00000004 COPYFLG_NOVERSIONCHECK 可覆盖任何版本的文件 0x00000040 COPYFLG_OVERWRITE_ORDER_ONLY 仅覆盖旧版本的文件 0x00000001 COPYFLG_WARN_IF_SKIP 当用户跳过文件时发出警告 0x00000002 COPYFLG_NOSKIP 不允许用户跳过文件 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参数 值 说明 HKCR HKEY_CLASSES_ROOT HKCU HKEY_CURRENT_USER HKLM HKEY_LOCAL_MACHINE HKU HKEY_USER HKR 被安装设备的注册表键 AddReg项中的flags参数 值 符号 说明 0x00000000 FLG_ADDREG_TYPE_SZ value为REG_SZ类型 0x00000001 FLG_ADDREG_BINVALUETYPE value为2进制数据 0x00000002 FLG_ADDREG_NOCLOBBER 不替换已有注册表中的value 0x00000004 FLG_ADDREG_DELVAL 从注册表中删除subkey或 value-entry-name 0x00000010 FLG_ADDREG_KEYONLY 仅建立subkey,忽略value-entry-name 和value 0x00000020 FLG_ADDREG_OVERWRITEONLY 仅当value-entry-name时替换value 0x00010000 FLG_ADDREG_TYPE_MULTI_SZ value为REG_MULTI_SZ类型 0x00000008 FLG_ADDREG_APPEND 添加value至已有注册表值 0x00020000 FLG_ADDREG_TYPE_EXPEND_SZ value为REG_EXPAND_SZ类型 0x00010001 FLG_ADDREG_TYPE_DWORD value为REG_DWORD类型 0x00020001 FLG_ADDREG_TYPE_NONE value为REG_NONE类型(Windows2000) DelFiles项:它是Install/DDInstall节中的可选指令,用于指明需删除的文件。其“file-list-section”是它创建的文件列表节,该节的格式为 [file-list-section] destination-file-name[,,,flag] 其中,“destination-file-name”指出目标文件名;“flag”指出该文件的一些处理方法,其取值如下表。 DelFiles项中的flag参数 值 符号 说明 0x0000001 DELFLG_IN_USE 在其安装处理操作完成后再删除该文件 0x0001000 DELFLG_IN_USE1 功能与DELFLG_IN_USE一样,仅适用Windows2000 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”指出要删除的注册表值。 2.8 DDInstall.ServicesDDInstall.Services节指明驱动程序安装的详细信息,他只是用于Windows 2000.他的节名称为[install-section-name.Services],其“install-section-name”由Models节指定。下表列出了其包含的常用项。 DDInstall.Services节中的常用项 项 说明 AddService 控制驱动程序的安装过程,格式为 AddService=ServiceName,[flags],service-install-section [,event-log-install-section[,[EventLogType][,EventName]]]… DelService 删除一个或多个已有的驱动程序,格式为 DelService=ServiceName [,[flags][,[EventLogType][,EventName]]]… Include 指明安装时所需的其他INF文件,格式为 Include =filename.inf [,filename2.inf]… Needs 之敏感转世所需要的特定INF文件,格式为 Needs = inf-section-name[,inf-section-name]… 主要项进行详细介绍。 AddService项:它是DDInstall.Services节所必须包含的指令,用于控制设备驱动程序的安装过程。其“ServiceName”指出驱动程序的名字;“flags”指出一个或多个系统定义的标识,其取值情况如下表;“event-log-install-section”是其创建的事件日志安装,下表中列出了该节所包含的常用项;“service-install-section”是其创建的服务安装节,下表中列出了该节所包含的常用项;“EventLogType”指出事件日志的类型,其取值为System、Security和Application;“EventName”指出事件日志的名字。 AddService项的常用flags参数 值 符号 说明 0x00000002 SPSVCINST_ASSOCSERVICE 指明其为PnP功能驱动程序 0x00000008 SPSVCINST_NOCLOBBER_DISPLAYNAME 不覆盖指定服务的名字 0x00000100 SPSVCINST_NOCLOBBER_DESCRIPTION 不覆盖指定服务的描述 0x00000010 SPSVCINST_NOCLOBBER_STARTTYPE 不覆盖指定服务的启动类型 0x00000020 SPSVCINST_NOCLOBBER_ERRORCONTROL 不覆盖指定服务的差错控制值 event-log-install-section节中的常用项 项 说明 AddReg 指明向注册表中添加的内容,格式如下 AddReg=add-registry-section[,add-registry-section]… DelReg 指明需删除的注册表内容,格式如下 DelReg=del-registry-section[,del-registry-section]… BitReg 有效但几乎无用,格式如下 BitReg=bit-registry-section[,bit-registry-section]… DisplayName 驱动程序的名字,为字符串值 Description 驱动程序的描述,为字符串值 ServiceType 驱动程序的类型,为特定16进制数 StartType 驱动程序的启动类型,为特定16进制数 ErrorControl 驱动程序的差错控制级别,为特定16进制数 ServiceBinary 驱动程序的完整路径名:%dirid% /filename 一下是对event-log-install-section节中的常用项的主要项进行详细介绍。 ServiceType项:指明驱动程序的类型,取值情况如下表。 ServiceType项的取值 值 符号 说明 0x00000001 SERVICE_BOOT_START 内核模式驱动程序 0x00000002 SERVICE_KERNEL_FILE_SYSTEM_DRIVER 上层网络驱动程序或文件系统 0x00000010 SERVICE_WIN32_OWN_PROCESS Win32应用程序 0x00000020 SERVICE_WIN32_SHARE_PROCESS Win32应用程序 StartType项:指明驱动程序的启动类型,其取值情况如下表。 StartType项的取值 值 符号 说明 0x0 SERVICE_BOOT_START 由操作系统加载程序启动 0x1 SERVICE_SYSTEM_START 由操作系统初始化过程中启动 0x2 SERVICE_AUTO_START 由服务控制管理器启动 0x3 SERVICE_DEMAND_START 由PnP管理器或服务控制管理器按需启动 0x4 SERVICE_DISABLE 禁止启动 ErrorControl项:指明驱动程序的差错控制级别,其取值情况如下表。 ErrorControl项的取值 值 符号 说明 0x0 SERVICE_ERROR_IGNORE 不显示警告信息 0x1 SERVICE_ERROR_NORMAL 显示警告信息 0x2 SERVICE_ERROR_SERVICE 当驱动程序加载失败时,系统将使用其注册的LastKnownGood重试,并忽略其后的错误 0x3 SERVICE_ERROR_CRITICAL 当驱动程序加载失败时,系统将使用其注册的LastKnownGood重试,并对其后的错误进行检验 ② DelService项:它是DDInstall.Service节中的可选指令,用于删除一个或多个已有的设备驱动程序。其“ServiceName”指出驱动程序的名字;“flags”指出一个或多个系统定义的标识,取值见下表;“EventLogType”指出事件日志的类型,其取值为System、Security或Application;“EventName”指出事件日志的名字。 DelService项的flags参数 符号 说明 SPSVCINST_DELETEEVENTLOGENTRY 删除与ServiceName有关的事件日志 SPSVCINST_STOPSERVICE 在删除之前首先停止服务 2.9 StringString节指明一些列字符串,其所含各项的格式为 strkey=[“]some string[“] 其中,“strkey”指出字符串的名字,它只能包含字母和数字;“some string”为字符串的内容。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |