Inf文件作用
Inf文件用于指导系统安装驱动
Inf组成
Inf由 section、keyword和value组成
例如
[Version] // Section
Signature = "$Chicago$" ;Signature 与 LayoutFile 为keyword
LayoutFile = filename.inf ;"$Chicago$" 与filename.inf为 value
note: ;表示注释
Section
字段 | 描述 |
---|---|
[Version] | Basic version information for validating the .inf file. |
[DefaultInstall] | Installation section that is executed by default.Contains pointers to other sections specifying files tocopy and delete, registry updates, .ini file updates,and so on. |
[SourceDisksNames] | Lists disks that contain the files. |
[SourceDisksFiles] | Lists the specific disk that each file is on. |
[Strings] | Lists localizable strings used above. |
注意:节名称可以为任意字符,详细见 demo2
[Version]中的Keyword与value
keyword | value | 作用 |
---|---|---|
Signature | $WINDOWS NT$ $CHICHGO$ | 用于识别当前Inf文件是否为有效文件 |
[DefaultInstall]
keyword | value | 作用 |
---|---|---|
CopyFiles | @name.sys | @表示针对具体名字 |
[DestinationDirs]
keyword | value | 作用 |
---|---|---|
DefaultDestDir | 12 或者 10,system32\drivers | 12: C: windows\system32\drivers。10:c:\windows。用于指定目标拷贝目录。目标为[DefaultInstall]-> CopyFile |
[SourceDisksFiles]
keyword | value | 作用 |
---|---|---|
具体.sys文件名 | [SourceDiskNames]中的l,”subdirectory“ | 表示文件保存路径,subdirectory为当前文件下的子目录 |
[SourceDisksNames]
keyword | value | 作用 |
---|---|---|
l | ”name“ | name为自定义磁盘名称 |
[Strings]
用于宏定义。例如
[Strings]
desc="myservice"
//在其他地方调用时
xx = %desc%
常用指令
指令 | 描述 |
---|---|
LogConfig Log | 日志文件配置 |
Copyfiles | 复制文件 |
Renfiles | 文件改名 |
Delfiles | 删除文件 |
Updatelnis | 更新 |
InisUpdatelniFields | 更新Ini字段 |
AddReg | 添加注册项 |
DelReg | 删除注册项 |
Ini2Reg | Ini文件转换为Reg文件 |
ADDSERIVCE | 添加服务 |
Inf文件demo
demo1
查看驱动在drivers下目录。通过cmd->drivers查看。
IVersionl
Signature="$WINDOWS NT$"
[DestinationDirs]
DefaultDestDir=12
[DefaultInstall]
CopyFiles=helloworld.sys
demo2
IVersionl
Signature="$WINDOWS NT$"
[DestinationDirs]
DefaultDestDir=12
[DefaultInstall]
CopyFiles=file_section
[file section]
helloworld.sys
demo3
IVersionl
Signature="$WINDOWS NT$"
[DestinationDirs]
DefaultDestDir=12
[SourceDisksNames]
l="mydisk"
[SourceDisksFiles]
helloworld.sys=l,"mydir"
[DefaultInstall]
CopyFiles=file_section
[file section]
helloworld.sys
demo4
IVersionl
Signature="$WINDOWS NT$"
[DestinationDirs]
DefaultDestDir=12
[SourceDisksNames]
l="mydisk"
[SourceDisksFiles]
helloworld.sys=l,"mydir"
[DefaultInstall]
CopyFiles=file_section
AddReg=reg_section
[reg_section]
// 根路径 子路径 名称 类型 值
HKLM, path, ”number1“,0, ”value“ //HKLM为本机的一些配置信息在PCIE->Paramzhong 加入了字符串number1和数值number2
HKLM, path, ”number2“,0x10001, ”value“
[file section]
helloworld.sys
note:打开注册表方法 cmd->regedit
demo5
将驱动注册为一个服务
IVersionl
Signature="$WINDOWS NT$"
[DestinationDirs]
DefaultDestDir=12
[SourceDisksNames]
l="mydisk"
[SourceDisksFiles]
helloworld.sys=l,"mydir"
[DefaultInstall]
CopyFiles=file_section
AddReg=reg_section
[Defaultinstall,Services] //Services为子节
AddService="Myservice",,service_section //服务名,?,服务节名称
[service_section]
DisplayNmae="Myservice"
ErrorControl=1
ServiceBinary = C:Windows\System32\drives\helloword.sys
StartType=3 //启动类型0
ServiceType=1
[reg_section]
// 根路径 子路径 名称 类型 值
HKLM, path, ”number1“,0, ”value“
HKLM, path, ”number2“,0x10001, 1000
[file section]
helloworld.sys
执行过程
- [Version]识别inf文件是否为有效inf文件
- [DefaultInstall] 设置一个入口点
1. 文件操作,CopyFiles。将CopyFiles中指定的文件拷贝到[DestinationFile]->DefaultDestDir指定的地址中。
2. 增加注册表,AddService。对AddService中的指定的reg_section中的注册信息进行创建。 - [Defaultinstall,Services]添加服务。指定相关的service_section
demo6
将驱动注册为一个服务
IVersionl
Signature="$WINDOWS NT$"
[DestinationDirs]
DefaultDestDir=12
[SourceDisksNames]
l=%diskdesc %
[SourceDisksFiles]
helloworld.sys=l,"mydir"
[DefaultInstall]
CopyFiles=file_section
AddReg=reg_section
[Defaultinstall,Services] //Services为子节
AddService="Myservice",,service_section //服务名,?,服务节名称
[service_section]
DisplayNmae=%desc %
ErrorControl=1
ServiceBinary = C:Windows\System32\drives\helloword.sys
StartType=3 //启动类型0
ServiceType=1
[reg_section]
// 根路径 子路径 名称 类型 值
HKLM, path, ”number1“,0, ”value“
HKLM, path, ”number2“,0x10001, 1000
[file section]
helloworld.sys
[Services]
diskdesc = "mydisk"
desc = "Myservice"
demo7
注册WDM驱动,
安装方法
- 搜索 hwddiz
- 设备管理器-》添加名称-》手动扫描安装
IVersionl
Signature="$WINDOWS NT$"
Class=myhardwareclass
ClassGUID = {ID号} //通过guidgen.exe ->注册表格式->新建ID->复制ID 注 ClassGUDI == Class
DriverVer=月/日/年,0.0.0.1 //日期,版本号:主版本.次版本.次次版本.次次次版本
Provider=myself
[ClassInstall32]
AddReg=Add_class
[Add_class]
HKR,,,,%DeviceClassName%
HKR,,,Icon,,"-5"
[DestinationDirs]
DefaultDestDir=12
[SourceDisksNames]
l=%diskdesc %
[SourceDisksFiles]
helloworld.sys=l,"mydir"
[Manufacturer] //制造商
”mysoft“=mfg,NTX86
[mfg.NTX86]
"hello device" = MyInstall,PCI\VEN_8888&DEV_8888 \\ID好 分别DEV厂商给的ID,和DEV设备ID
[MyInstall.NTX86] //也可以是NT
CopyFiles=file_section
AddReg=reg_section
[MyInstall.NTX86.Services] //Services为子节
AddService="Myservice",0x2,service_section //服务名,?,服务节名称
[service_section]
DisplayNmae=%desc %
ErrorControl=1
ServiceBinary = %12%\helloword.sys
StartType=3 //启动类型0
ServiceType=1
[reg_section]
// 根路径 子路径 名称 类型 值
HKLM, path, ”number1“,0, ”value“
HKLM, path, ”number2“,0x10001, 1000
[file section]
helloworld.sys
[Services]
diskdesc = "mydisk"
desc = "Myservice"
DeviceClassName="myhardwareclass"
demo8
在64位机器上注册WDM驱动,
安装方法
- 搜索 hwddiz
- 设备管理器-》添加名称-》手动扫描安装
IVersionl
Signature="$WINDOWS NT$"
Class=myhardwareclass
ClassGUID = {ID号} //通过guidgen.exe ->注册表格式->新建ID->复制ID 注 ClassGUDI == Class
DriverVer=月/日/年,0.0.0.1 //日期,版本号:主版本.次版本.次次版本.次次次版本
Provider=myself
[ClassInstall32]
AddReg=Add_class
[Add_class]
HKR,,,,%DeviceClassName%
HKR,,,Icon,,"-5"
[DestinationDirs]
DefaultDestDir=12
[SourceDisksNames]
l=%diskdesc %
[SourceDisksFiles]
helloworld.sys=l,"mydir"
[Manufacturer] //制造商
”mysoft“=mfg,NTX86,NTAMD64
[mfg.NTX86]
"hello device" = MyInstall,PCI\VEN_8888&DEV_8888 \\ID好 分别DEV厂商给的ID,和DEV设备ID
[mfg.NTAMD64]
"hello device" = MyInstall,PCI\VEN_8888&DEV_8888 \\ID好 分别DEV厂商给的ID,和DEV设备ID
[MyInstall.NTX86] //也可以是NT
CopyFiles=file_section
AddReg=reg_section
[MyInstall.NTAMD64] //也可以是NT
CopyFiles=file_section
AddReg=reg_section
[MyInstall.NTX86.Services] //Services为子节
AddService="Myservice",0x2,service_section //服务名,?,服务节名称
[MyInstall.NTAMD64.Services] //Services为子节
AddService="Myservice",0x2,service_section //服务名,?,服务节名称
[service_section]
DisplayNmae=%desc %
ErrorControl=1
ServiceBinary = %12%\helloword.sys
StartType=3 //启动类型0
ServiceType=1
[reg_section]
// 根路径 子路径 名称 类型 值
HKLM, path, ”number1“,0, ”value“
HKLM, path, ”number2“,0x10001, 1000
[file section]
helloworld.sys
[Services]
diskdesc = "mydisk"
desc = "Myservice"
DeviceClassName="myhardwareclass"