INF文件的组成
sections 节的名字
[Version]
;键名 = 键值
Signature="$Windows NT$"
常见的INF文件节区
常用指令
拷贝文件
方式1:直接指定文件名
//摄制拷贝文件的目标目录
[DestinationDirs]
;一般使用12 这个目录
DefaultDestDir=12; C:\windows\system32\drivers
[DefaultInstall]
; 直接使用文件名 要加@符号
CopyFiles=@HelloWorld.sys ;复制驱动文件到DefaultDestDir目录
方式2:使用自定义节
[DestinationDirs]
;一般使用12 这个目录
DefaultDestDir=12; C:\windows\system32\drivers
[DefaultInstall]
; 也可以使用自定义节
CopyFiles=file_section ;复制驱动文件到DefaultDestDir目录
[file_section]
HelloWorld.sys
设置文件的来源路径
;设置文件拷贝的驱动来源路径
[SourceDisksNames]
1="mydisk";指定文件路径在当前磁盘 意思是和inf文件一个磁盘
[SourceDisksFiles]
;HelloWorld.sys 这个值需要和指定的文件名一致
HelloWorld.sys =1,"driver" ; 第二个参数指定子目录 意思是当前目录(INF文件所在目录为当前目录)的driver子目录。
完整的复制文件操作
[Version]
;Signature 用来标记一个有效的INF文件,没有这个就是无效的
Signature="$WINDOWS NT$" ;CHICAGO
;------------------设置文件拷贝的驱动来源路径------------------
[SourceDisksNames]
1="mydisk";指定文件路径在当前磁盘 意思是和inf文件一个磁盘
[SourceDisksFiles]
MyWdm.sys =1,"driver" ; 第二个参数指定子目录 意思是当前目录(INF文件所在目录为当前目录)的driver子目录。
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;----------------------设置文件拷贝的目标路径--------------------------------------
[DestinationDirs]
DefaultDestDir=12; C:\windows\system32\drivers
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;----------------------设置文件拷贝的目标路径--------------------------------------
[DefaultInstall]
;脚本默认开始运行的就是这个字段的内容
CopyFiles=file_section ;复制驱动文件到DefaultDestDir目录
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;需要复制的文件名
[file_section]
MyWdm.sys
增加注册表项
[DefaultInstall]
AddReg=reg_section ;增加注册表项 可以增加多个注册表节 根目录可以不同
[reg_section]
;HKLM=HKEY_LOCAL_MACHINE number=键名 0x10001=键的类型 表示是DWORD REG_SZ是0 0x1000=键值
HKLM,"SYSTEM\CurrentControlSet\Services\ACPI\Parameters","number",0x10001,1000
创建服务
[Version]
;Signature 用来标记一个有效的INF文件,没有这个就是无效的
Signature="$WINDOWS NT$" ;CHICAGO
[SourceDisksNames]
1="mydisk";指定文件路径在当前磁盘 意思是和inf文件一个磁盘 如果指定第二个参数 就是驱动在同一目录的+第二个参数的文件夹下
[SourceDisksFiles]
HelloWorld.sys =1;,"driver" 第二个参数指定子目录 意思是当前目录(INF文件所在目录为当前目录)的driver子目录。
;设置拷贝的目标目录 CopyFiles就代表拷贝操作
[DestinationDirs]
DefaultDestDir=12; C:\windows\system32\drivers
;10 c:windows\
;也可以使用这下面这种写法 根目录+子目录的形式
;DefaultDestDir=10,system32\drivers
[DefaultInstall]
;拷贝文件到DestinationDirs 如果是用具体的文件名 就要加@符号
CopyFiles=file_section
AddReg=reg_section ;增加注册表项 可以增加多个注册表节 根目录可以不同
[reg_section]
;HKLM=HKEY_LOCAL_MACHINE number=键名 0x10001=键的类型 表示是DWORD REG_SZ是0 0x1000=键值
HKLM,"SYSTEM\CurrentControlSet\Services\ACPI\Parameters","number",0x10001,110
[DefaultInstall.Services]
AddService="myservice",,service_section
[service_section]
;显示的服务名称
DisplayName ="myservice"
;错误控制 1代表忽略
ErrorControl=1
;服务的路径
ServiceBinary=C:\Windows\System32\drivers\HelloWorld.sys
//启动类型 0引导启动 1系统启动 2自动启动 3是按需启动 4禁止启动
StartType=3
ServiceType=1
[file_section]
HelloWorld.sys ;这里指定文件名
Strings节
该节用来进行字符串替换
[service_section]
DisplayName=%ServiceName%
[Strings]
ServiceName="myservice"
WMD驱动的inf文件
[Version]
;Signature 用来标记一个有效的INF文件,没有这个就是无效的
Signature="$WINDOWS NT$" ;CHICAGO
;WDM 类型的驱动需要设置下面键值对
Class=myhardwareclass
ClassGUID={75B60029-2E67-4730-9C91-0FD3D138CA7A}
DriverVer=8/11/2020,0.0.0.1 ;月 日 年
Provider=dale
[ClassInstall32]
Addreg=Class_AddReg ;增加注册表项 可以增加多个注册表节 根目录可以不同
;WDM 式驱动添加注册表方法
[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,"-5"
[SourceDisksNames]
1="mydisk";指定文件路径在当前磁盘 意思是和inf文件一个磁盘 如果指定第二个参数 就是驱动在同一目录的+第二个参数的文件夹下
[SourceDisksFiles]
HelloWorld.sys =1;,"driver" 第二个参数指定子目录 意思是当前目录(INF文件所在目录为当前目录)的driver子目录。
;设置拷贝的目标目录 CopyFiles就代表拷贝操作
[DestinationDirs]
DefaultDestDir=12; C:\windows\system32\drivers
;制造商 左边是制造商名字 右边是硬件
[Manufacturer]
"mysoft"=mfg,NTX86
[mfg.NTX86]
;左边 设备描述 右边第一个参数 安装节名
"hello device"=My_Install,PCI\VEN_8888&DEV_8888
;默认安装
[My_Install.NTX86]
;拷贝文件到DestinationDirs 如果是用具体的文件名 就要加@符号
CopyFiles=file_section
;默认安装 后面的子节的内容
[My_Install.NTX86.Services]
AddService="myservice",0x2,service_section
[service_section]
;显示的服务名称
DisplayName ="myservice"
;错误控制 1代表忽略
ErrorControl=1
;服务的路径
ServiceBinary=%12%\HelloWorld.sys
;启动类型 0引导启动 1系统启动 2自动启动 3是按需启动 4禁止启动
StartType=3
;服务类型 1代表驱动
ServiceType=1
[file_section]
HelloWorld.sys ;这里指定文件名
[Strings]
DeviceClassName="dale"
xp下安装硬件
控制面板->切换到经典试图->添加硬件->是,我已经连接了此硬件->添加新的硬件设备->安装我手动从列表添加的硬件->显示所有设备->从磁盘安装->选择自己的inf文件->完成安装
64位系统使用inf文件安装WDM驱动
右键我的电脑->管理->设备管理器->在我的电脑名右键选择 添加过时硬件->安装我手动从列表选择的硬件->显示所有设备->从磁盘安装->浏览 选择自己的inf文件->下一步 始终安装
win7 32 和xp WDM驱动更加简便的安装方法
使用工具EzDriverInstaller来安装
使用方法:
file->open 然后选择自己的inf文件即可 然后add new device WDM驱动就添加好了.
配置VS里面生成的INF文件
VS提供了INF文件,可以做如下配置,需要在Package里面inf2Cat Using Local Time 设置为是,每次编译的时候就可以自动设置时间. x86 和x64可以使用同一个配置.
;
; EnumDeviecResources.inf
;
[Version]
Signature="$WINDOWS NT$"
Class=myhardwareclass
ClassGuid={E34A3490-E175-4CC2-8FDE-AACBB4E25277}
Provider=dale
DriverVer=08/11/2020,18.10.31.246
[DestinationDirs]
DefaultDestDir = 12
[SourceDisksNames]
1 = %DiskName%,,,""
[SourceDisksFiles]
HelloWDM.sys=1
[ClassInstall32]
Addreg=Class_AddReg ;增加注册表项 可以增加多个注册表节 根目录可以不同
;WDM 式驱动添加注册表方法
[Class_AddReg]
HKR,,,,%ClassName%
HKR,,Icon,,"-5"
[Manufacturer]
%ManufacturerName%=Standard,NT$ARCH$ ;设置安装入口
[Standard.NT$ARCH$]
"hello device"=My_Install,PCI\VEN_8888&DEV_8888
[My_Install.NT$ARCH$]
CopyFiles=file_section
[file_section]
HelloWDM.sys
[My_Install.NT$ARCH$.Services]
AddService="HelloWDM",0x2,service_section
[service_section]
;显示的服务名称
DisplayName ="myservice"
;错误控制 1代表忽略
ErrorControl=1
;服务的路径
ServiceBinary=%12%\HelloWDM.sys
;启动类型 0引导启动 1系统启动 2自动启动 3是按需启动 4禁止启动
StartType=3
;服务类型 1代表驱动
ServiceType=1
[Strings]
ManufacturerName="mysoft"
ClassName="myhardwareclass"
DiskName="EnumDeviecResources Source Disk"
生成的64位 inf文件 驱动名为同文件夹下的HelloWDM.sys
;
; EnumDeviecResources.inf
;
[Version]
Signature="$WINDOWS NT$"
Class=myhardwareclass
ClassGuid={E34A3490-E175-4CC2-8FDE-AACBB4E25277}
Provider=dale
DriverVer=08/11/2020,18.57.54.944
[DestinationDirs]
DefaultDestDir = 12
[SourceDisksNames]
1 = %DiskName%,,,""
[SourceDisksFiles]
HelloWDM.sys=1
[ClassInstall32]
Addreg=Class_AddReg ;增加注册表项 可以增加多个注册表节 根目录可以不同
;WDM 式驱动添加注册表方法
[Class_AddReg]
HKR,,,,%ClassName%
HKR,,Icon,,"-5"
[Manufacturer]
%ManufacturerName%=Standard,NTamd64 ;设置安装入口
[Standard.NTamd64]
"hello device"=My_Install,PCI\VEN_8888&DEV_8888
[My_Install.NTamd64]
CopyFiles=file_section
[file_section]
HelloWDM.sys
[My_Install.NTamd64.Services]
AddService="HelloWDM",0x2,service_section
[service_section]
;显示的服务名称
DisplayName ="myservice"
;错误控制 1代表忽略
ErrorControl=1
;服务的路径
ServiceBinary=%12%\HelloWDM.sys
;启动类型 0引导启动 1系统启动 2自动启动 3是按需启动 4禁止启动
StartType=3
;服务类型 1代表驱动
ServiceType=1
[Strings]
ManufacturerName="mysoft"
ClassName="myhardwareclass"
DiskName="EnumDeviecResources Source Disk"