WDM-INF文件

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
keywordvalue作用
Signature$WINDOWS NT$ $CHICHGO$用于识别当前Inf文件是否为有效文件
[DefaultInstall]
keywordvalue作用
CopyFiles@name.sys@表示针对具体名字
[DestinationDirs]
keywordvalue作用
DefaultDestDir12 或者 10,system32\drivers12: C: windows\system32\drivers。10:c:\windows。用于指定目标拷贝目录。目标为[DefaultInstall]-> CopyFile
[SourceDisksFiles]
keywordvalue作用
具体.sys文件名[SourceDiskNames]中的l,”subdirectory“表示文件保存路径,subdirectory为当前文件下的子目录
[SourceDisksNames]
keywordvalue作用
l”name“name为自定义磁盘名称
[Strings]

用于宏定义。例如

[Strings]
desc="myservice"
//在其他地方调用时
xx = %desc%

常用指令

指令描述
LogConfig Log日志文件配置
Copyfiles复制文件
Renfiles文件改名
Delfiles删除文件
Updatelnis更新
InisUpdatelniFields更新Ini字段
AddReg添加注册项
DelReg删除注册项
Ini2RegIni文件转换为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

执行过程

  1. [Version]识别inf文件是否为有效inf文件
  2. [DefaultInstall] 设置一个入口点
    1. 文件操作,CopyFiles。将CopyFiles中指定的文件拷贝到[DestinationFile]->DefaultDestDir指定的地址中。
    2. 增加注册表,AddService。对AddService中的指定的reg_section中的注册信息进行创建。
  3. [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驱动,
安装方法

  1. 搜索 hwddiz
  2. 设备管理器-》添加名称-》手动扫描安装
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驱动,
安装方法

  1. 搜索 hwddiz
  2. 设备管理器-》添加名称-》手动扫描安装
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"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值