S&R&S 驱动集成实例
作者:realhyg
许多人都问我这个问题.我也说过许多遍了.顺别举个例子:
下载dps包,这个不会的话,别问我.
解压mass包到文件夹内.打开相应的驱动文件夹比如SI文件夹,然后打开3文件夹,里面一共有有4个文件.
property.dll SISRaid2.INF sisraid2.sys sisraid.cat
打开SISRaid2.INF
[SourceDisksFiles]
SiSRaid2.sys = 1,,
property.dll =1,,
是文件复制的目录,到driver目录里
关于系统服务的添加看下面字段:
[SIS182PCI.NT.Services]
AddService = SiSRaid2, %SPSVCINST_ASSOCSERVICE%, SiSRaid_Service_Inst, Miniport_Event_Inst
[SiSRaid_Service_Inst]
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_BOOT_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %12%\SiSRaid2.sys
LoadOrderGroup = SCSI Miniport
AddReg = PNP_PCI_ADDREG
[PNP_PCI_ADDREG]
HKR, "Parameters\PnpInterface", "5", 0x00010001, 0x00000001
还有:
[strings]
SiS="Silicon Integrated Systems Corp"
PCI\VEN_1039&DEV_0180&REV_01.DeviceDesc="SiS 180 RAID Controller"
PCI\VEN_1039&DEV_0182&REV_01.DeviceDesc="SiS 182 RAID Controller"
InstallDisk = "SiS 180/182 Raid Controller Driver Disk"
SPSVCINST_ASSOCSERVICE = 0x00000002
SERVICE_KERNEL_DRIVER = 1
SERVICE_BOOT_START = 0
SERVICE_ERROR_NORMAL = 1
REG_DWORD = 0x00010001
上面的:
[SiSRaid_Service_Inst]
ServiceType = %SERVICE_KERNEL_DRIVER%
字段中的%SERVICE_KERNEL_DRIVER%变量在[strings]字段中找到SERVICE_KERNEL_DRIVER = 1
实际的注册表为下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SiSRaid2]
"Group"="SCSI Miniport"
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\
72,00,69,00,76,00,65,00,72,00,73,00,5c,00,73,00,69,00,73,00,72,00,61,00,69,\
00,64,00,32,00,2e,00,73,00,79,00,73,00,00,00
"ErrorControl"=dword:00000001
"Start"=dword:00000000
"Type"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SiSRaid2\Parameters\PnpInterface]
"5"=dword:00000001
其他的也如此,但是有的必须有相关的chipset.比如ulata的驱动.
使用makepnf程序制作pnf文件,把SISRaid2.INF,和只做好的SISRaid2.pnf放到系统的inf文件夹里,把SISRaid2.INF驱动程序里需要复制的SiSRaid2.sys和property.dll复制到系统的driver文件夹里.
最后一步,查看SISRaid2.INF
[SiS]
%PCI\VEN_1039&DEV_0180&REV_01.DeviceDesc%=SIS182PCI,PCI\VEN_1039&DEV_0180
%PCI\VEN_1039&DEV_0180&REV_01.DeviceDesc%=SIS182PCI,PCI\VEN_1039&DEV_0181
%PCI\VEN_1039&DEV_0182&REV_01.DeviceDesc%=SIS182PCI,PCI\VEN_1039&DEV_0182
把上面的pci添加到驱动数据库
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1039&DEV_0180]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="SiSRaid2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1039&DEV_0181]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="SiSRaid2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1039&DEV_0182]
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
"Service"="SiSRaid2"
所有的就OK了
S&R&S 驱动的集成问题:
秋天和死性用的是同一种办法,我的和他们的大致相同也有不同,他们的都把驱动放到driver里面修改注册表.这点我们相同,不同在于我的得把inf,pnf文件放到windows\inf文件夹下.
请大家慎重选择驱动集成方法.我的并不代表是对的.大家理性选择!!
驱动文件的分析手工可以也可以用工具,我推荐JUJUMAO的驱动程序分析工具2.0,不过它有点bug,生成注册表文件后我希望大家仔细对照一下.
*****注意******
dps的驱动包里有的文件夹内有2个inf文件请查看他们的class,只有为SCSIAdapter的才可以用工具分析.
PNF是有inf生成的预汇编信息文件.如果系统用到了inf驱动就会生成pnf文件.