大部分人都会安装驱动程序,但不是每个会安装驱动的人都可以看的懂inf文件格式,甚至很多写过一点驱动的人都不是很明白,结合网上看到的关于inf文件的介绍和WDM书籍的介绍,写一些自己的理解。
INF是DeviceInformation File的缩写,是微软公司为硬件厂商发布硬件驱动开发的一种文件格式,INF文件包含硬件信息和控制脚本以控制硬件驱动的安装。
copyright注释
在设备级的驱动中应该包含一个“copyright”的注释(以分号开头的行),以满足CHKINF程序的检查,操作系统可以接受没有这个注释的INF文件,但Microsoft不会认证没有这项内容的驱动程序。(是不是说没有这项内容,微软数字签名是不成功的呢?)
INF文件结构
INF文件包含一些由方括号[]括起来的段(或称节),有些段是必须的,而其它是驱动程序特定的,每个部分是一些安装动作﹐或者连接或者列举其它部分。文件中的顺序是不重要的,但每个段名长度被限制在28个字符内,大小写是不敏感的,这样做是为了与win98兼容,段名可以包含下划线和圆点字符。文件内容的一般格式如下:
entry = value[, value...]
entry是指令,关键词或者文件名。value是被entry应用的属性。entry和value都可以指定为用百分号(%)代替的表示符,标示符必须在[Strings]段中给出定义。
把一个大的INF文件看成是一个树结构的线形描述可以更容易理解INF文件。一个段就是树上的一个节点,而每个指令就是指向另一个段的指针。
[Version]
一个有效的inf文件从一个命名为[Version]的段开始,它想一个inf文件的头和标示,但并不一定要在文件的最顶端。
Entry |
Value |
Signature |
“$Windws NT$”,”$Windows 95$”和”$Chicago$”中的一个。 |
Class |
驱动程序类名,下表列出 |
ClassGUID |
一个类的独一无二的GUID。 |
Provider |
Inf提供者的名字,一般在[Strings]指定 |
CatalogFile |
一般指定数字签名文件 |
DriverVer |
mm/dd/yyyy[,x,y,v,z],必须的条目﹐包含版本信息。 |
INF类名 |
描述 |
1394 |
IEEE 1394总线控制器(不是外设) |
Battery |
电池设备 |
CDROM |
CD-ROM驱动器,包括SCSI和IDE |
DiskDrive |
硬盘驱动器 |
Display |
显示适配器 |
FDC |
软盘控制器 |
FloppyDisk |
软盘驱动器 |
HDC |
硬盘控制器 |
HIDClass |
人机接口设备 |
Image |
静态图象捕捉设备,包括数码相机和扫描仪 |
Infrared |
Serial-IR和Fast-IR红外端口的NDIS miniport驱动程序 |
Keyboard |
键盘 |
MediumChanger |
SCSI媒体交换器设备 |
Media |
多媒体设备,包括音频、DVD、游戏杆、全动态视频捕捉设备 |
Modem |
调制解调器 |
Monitor |
监视器 |
Mouse |
鼠标和其它指点设备 |
MTD |
内存设备的内存技术驱动程序 |
Multifunction |
多功能设备 |
MultiportSerial |
智能多端口串行卡 |