无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3961|回复: 3
打印 上一主题 下一主题

[讨论] 怎样在TXTSETUP.OEM中添加注册,N版及驱动高手看一下

[复制链接]
跳转到指定楼层
1#
发表于 2010-12-1 12:26:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个inf文件,想通过F6解决IDE驱动问题,不知下面的服务怎样添加到txtsetup.oem中的[config.*]段落中:

[AMDIDE_Inst]
CopyFiles = @AMDIDE.sys
CopyFiles = @pciidex.sys
;CopyFiles = @atapi.sys
AddReg = intelChannelEnableCheck_AddReg
[AMDIDE_Inst.Services]
AddService = AMDIDE, %SPSVCINST_ASSOCSERVICE%, AMDIDE_Service_Inst
[AMDIDE_Service_Inst]
ServiceType    = %SERVICE_KERNEL_DRIVER%
StartType      = %SERVICE_BOOT_START%
ErrorControl   = %SERVICE_ERROR_NORMAL%
LoadOrderGroup = System Bus Extender
ServiceBinary  = %12%\AMDIDE.SYS
[intelChannelEnableCheck_AddReg]
HKR,,MasterOnMask,%REG_DWORD%,0x00000080
HKR,,MasterOnConfigOffset,%REG_DWORD%,0x00000041
HKR,,SlaveOnMask,%REG_DWORD%,0x00000080
HKR,,SlaveOnConfigOffset,%REG_DWORD%,0x00000043
[AMDIDE_Inst.PosDup]
*PNP0600
[ControlFlags]
ExcludeFromSelect=*
[Strings]
ITL           = "Advanced Micro Devices"
PCI_IDE       = "AMD PCI IDE Controller"
DiskDesc      = "Installation Disk for amd PCI SATA/IDE Controller"
MS-Drivers    = "(Standard IDE ATA/ATAPI controllers)"
HDCClassName  = "IDE ATA/ATAPI controllers"
REG_DWORD              = 0x00010001
SPSVCINST_ASSOCSERVICE = 0x00000002
SERVICE_KERNEL_DRIVER  = 1
SERVICE_BOOT_START     = 0
SERVICE_ERROR_NORMAL   = 1

[ 本帖最后由 zhaohj 于 2010-12-1 17:02 编辑 ]
2#
发表于 2010-12-1 14:32:00 | 只看该作者
注册表啊,

参考INTEL的AHCI就可以,好像只有一个加载的位置是IDE多出来的,

其它项目相同.

原来有个NV,VMSCSI的带CINFIG的

关键是PCI加载到扩展BUS了

加载到SCSI不行

还可以看看NV的原厂驱动,它的NVRD32等以前我们都是
加载到SCSI,没有问题,但是原厂的是加载到扩展BUS

[nvraidbus.ntx86.Services]
AddService = nvrd32,0x00000002,nvraid_Service_Inst,

就这样,利用INF加了驱动服务
回复

使用道具 举报

3#
 楼主| 发表于 2010-12-1 15:36:39 | 只看该作者
[AMDIDE_Inst.Services]
AddService = AMDIDE, %SPSVCINST_ASSOCSERVICE%, AMDIDE_Service_Inst
服务也加载了。

要么蓝色部分的注册表有错误
回复

使用道具 举报

4#
 楼主| 发表于 2010-12-2 08:50:58 | 只看该作者
给这些IDE设备装驱动的时候,会根据windows\inf\mshdc.inf来安装,换句话说,mshdc.inf中记录了系统自带的IDE控制器的驱动相关信息。

这些明白以后,举个例子
现在有IDE控制器A,它的驱动是AD
    有IDE控制器B,它的驱动是BD
    有标准双通道控制器C,它的驱动是CD
那么有:
A-AD
B-BD
C-CD
这么个对应关系,恰巧,mshdc.inf中也是这样写的。

如果我们直接搜寻A或B设备的驱动,他们会默认安装AD或BD驱动,不会安装CD驱动,因为有明确的对应关系,那么,我们如果能改变这个对应关系,也就是说:
A-CD
B-CD
C-CD
这个时候,如果搜寻A设备的驱动,会安装CD,搜寻B设备的驱动,也会安装CD,由于CD就是标准双通达PCI IDE控制器的驱动,所以无论A、B设备是什么,都会装在CD驱动即“标准双通达PCI IDE控制器”

原理说到这里,那么怎么实现呢?

IDE控制器的相关信息在注册表中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}

在这个键下有若干个子键,一般名字为“0000”,“0001”等等,视IDE设备数量而定,不通的硬件配置会有不同。

每个子键下DriverDesc键的值,代表这个设备的名字,就像每个人的名字一样,这个可能会重复。
每个子键下MatchingDeviceId键的值,代表设备的ID,就像每个人的身份证有个身份证号一样,用来唯一标识这个设备。

好的,这样我们要做的是:
1、获取HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}下的每个子键的MatchingDeviceId键值,得到设备ID后看一下同一子键下DriverDesc的键值,看看是不是你当前的IDE控制器,如果是,那么也就是获得了要更改的IDE设备的ID值

2、在windows\inf\mshdc.inf下搜索这个设备的ID值,找到其对应的驱动
例如
我的IDE设备是:PCI\VEN_8086&DEV_7111
而标准双通道IDE设备是:PCI\CC_0101
在windows\inf\mshdc.inf下搜索这两个,发现它们对应的驱动分别是:

%PCI\VEN_8086&DEV_7111.DeviceDesc%=intelide_Inst, PCI\VEN_8086&DEV_7111
%PCI\CC_0101.DeviceDesc% = pciide_Inst,,PCI\CC_0101

这样,我们就把我的IDE设备对应的驱动更换为标准双通道的:
%PCI\VEN_8086&DEV_7111.DeviceDesc%=pciide_Inst,,PCI\CC_0101
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 08:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表