linux加载inf文件,兼容64位驱动inf文件

  • Post author:
  • Post category:linux


最后附上我自己对INF的一个理解:

;

; test.inf

;整个配置文件安装成功后会在注册表生成一个实例子健 具体位置为:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

;——— Version Section —————————————————

[Version]

;可以是$Chicage$、$Windows NT$(含有一个空格)、$Windows 95$(含有一个空格)之一,定界符$必不可少,且这些串是不分大小写的。

;如果Signature的值不是这些有效的串之一,该INF文件就被认为无效

Signature=”$WINDOWS NT$”

;INF文件的提供者

Provider=drsn_Device

;INF文件的版本信息,时间和版本不变的情况下,修改了SYS文件,重新安装INF文件是看不到SYS变化的

;因为系统已经存根了此版本的INF和SYS,它会直接加载已有的文件,调试SYS特别要主要这个问题

;如果使用VS2012编译,它会自动帮你填写这里,比较省心

DriverVer=08/31/2013,8.33.48.258

;如果设备是一个标准类别,使用标准类的名称和GUID 否则创建一个自定义的类别名称,并自定义它的GUID

;自定义的类别在注册表中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\ 有显示

Class=drsnDevice

ClassGuid={BDC0EAC4-AC4B-46af-82EA-C4958B686515}

;——— SourceDiskNames and SourceDiskFiles Section ———————–

;这里两项的设置效果是 加载INF当前目录下的SYS文件

[SourceDisksNames]

1 = %DiskName%,,,

[SourceDisksFiles]

Name_Files_Driver = 1,,

;——— ClassInstall/ClassInstall32 Section ——————————-

;如果不是标准类别设备,这里的配置必须的

[ClassInstall32]

Addreg=Class_AddReg

;对应的注册表是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\

[Class_AddReg]

HKR,,,,%DeviceClassName%

HKR,,Icon,,”-5″

;——— DestinationDirs Section ——————————————-

;把文件呢复制到相应的目录下,在win2000及其以后系统,12表示%windir%/system32/drivers

;win98中12表示%windir%/system/IoSubsys 所以为了兼容大家都写成10,System32\Drivers

[DestinationDirs]

Name_Files_Driver = 12

;——— Manufacturer and Models Sections ———————————-

;这里是设置模型相关的选项,注意这里VS默认生成的标准设备的配置 如:%ManufacturerName%=Standard,NT$ARCH$

;如果不是标准类别设备这里必须修改,要不然最后加载的时候会出现259错误

[Manufacturer]

%ManufacturerName%=Mfg0

;这里是模型节的节名,和硬件ID 这个ID可以自定义

[Mfg0]

%DeviceDesc%=SysInstall, PCI\VEN_8888&DEV_8888

;———- DDInstall Sections ———————————————–

;这里需要注意WIN2000及其以上的系统这里有个.NT,如果是98这里是[SysInstall],必须要正确设置

[SysInstall.NT]

CopyFiles=Name_Files_Driver

AddReg=Install_NT_AddReg

;这里的drsnWDM是注册表中的服务名 具体地址是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

[SysInstall.NT.Services]

Addservice = drsnWDM, 0x00000002, Sys_AddService

;服务的具体选项

[Sys_AddService]

DisplayName = %SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 3 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

;这个地方虽然和[Name_Files_Driver]相同但是不能引用,所以只能照实来写

ServiceBinary = %12%\test.sys

[Install_NT_AddReg]

HKLM, “System\CurrentControlSet\Services\drsnWDM\Parameters”,\

“BreakOnEntry”, 0x00010001, 0

; ——— Files (common) ————-

;sys文件名 便于配置文件其它地方使用

[Name_Files_Driver]

test.sys

;——— Strings Section —————————————————

;字符串设置 便于配置文件其它地方使用

[Strings]

ProviderName=”drsn”

ManufacturerName=”drsn soft”

DiskName=”test Source Disk”

DeviceDesc=”test protect”

SvcDesc=”drsn”

DeviceClassName=”drsn_Device”

;

; test.inf

;整个配置文件安装成功后会在注册表生成一个实例子健 具体位置为:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

;——— Version Section ——–