无忧启动论坛

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

不要hwid又能怎样?硬盘控制器驱动只是一种服务

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-16 16:12:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在虚拟机中看服务,一大堆硬盘控制器驱动对应的服务都在。用到的有enum,没用到的有初始化失败字样。
这说明驱动、服务的加载与hwid无关,只要在scsi load里写有的都会加载,是否用得上是另一回事。

我把某个PE里的txtsetup.sif中,形如
PCI\VEN_8086&DEV_1222="intelide"
PCI\VEN_104B&DEV_1040="vmscsi"
的行删除,在虚拟机中启动,intelide、vmscsi服务下都有enum,虚拟机的scsi硬盘可识别。
看来,hwid并不那么必要,至少不那么恐怖。

推测:
1、驱动系以服务的形式起作用。驱动、服务的加载与hwid无关,是否用得上才与具体硬件有关。
2、txtsetup.sif中有hwid可以使硬件与驱动匹配的更精确,没有也不一定就不行,还可能按第3点匹配。
3、驱动文件本身包含的内容,或者它被加载到的group(你是在BusExtenders.Load还是在SCSI.Load加载的?),也能(或更能)决定它能跟什么硬件匹配。
4、根据3,可能存在不适当匹配的现象,因此,最好避免加载同类、近似的驱动。如果只加载了正确的驱动,匹配完全没问题(就算还有问题,修改注册表总能搞定)。hwid并不很重要,它只是为了精确匹配。
5、至于匹配并起作用的时机问题,转化为服务的依赖关系问题。如果启动过程没有其它重要必要的服务依赖于该驱动对应的服务,那么该驱动服务何时开启可能并不重要。这为进入PE桌面后才开启服务提供了可能。

结论:
硬盘控制器驱动,无论总线驱动还是设备驱动都只是一种服务而已,只要处理好服务的依赖关系很可能可以推迟到进入PE桌面后才加载,就像现在加载外置网卡一样(其中总线驱动可能要像NV网卡、HD声卡那样加载两次,这是具体问题了)。

这也许是解决硬盘控制器驱动外置、延后加载问题的理论依据。

chenall近日在WINPE下安装硬盘控制器驱动的做法符合上述1、3、5点,是合理的。
46#
发表于 2008-12-18 19:33:57 | 只看该作者
即便是使用插件制作PE,也没有这个键,我为了增强PE对硬件的支持能力添加了这个注册表项和其下的三个键值:PS2_KEYBOARD、PS2_MOUSE和root#swenum。
回复

使用道具 举报

45#
 楼主| 发表于 2008-12-18 19:29:14 | 只看该作者

回复 #44 liuhj 的帖子

不是说CriticalDeviceDatabase下有多少东西的问题,我这里Control下压根就没有CriticalDeviceDatabase
回复

使用道具 举报

44#
发表于 2008-12-18 19:23:54 | 只看该作者
原帖由 pseudo 于 2008-12-18 18:52 发表

我在PE中,我怎么没有看到CriticalDeviceDatabase


我为了增强PE对硬件的支持能力在这个地方加了三个键值(不敢多加,怕影响在不同机器运行),进入桌面后,这地方就会有十二键值。

cdd.JPG (50.74 KB, 下载次数: 72)

cdd.JPG
回复

使用道具 举报

43#
 楼主| 发表于 2008-12-18 18:52:28 | 只看该作者
原帖由 liuhj 于 2008-12-18 12:36 发表
...进入桌面之后,[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase]下的项目有十几项...

我在PE中,我怎么没有看到CriticalDeviceDatabase

未命名.JPG (54.14 KB, 下载次数: 70)

未命名.JPG
回复

使用道具 举报

42#
发表于 2008-12-18 13:33:55 | 只看该作者
原帖由 liuhj 于 2008-12-18 12:36 发表
注册表CriticalDeviceDatabase下的项目可能不是由txtSetup.sif生成的。实验如下:
我的PE中注册表[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase]下添加了三个项目:PS2_KEYBOAR ...

没错,只有enum才是自动生成的,CriticalDeviceDatabase其实是添加进去的,AHCI驱动添加P处理、各论坛GHOST系统也是根据这个道理来制作的。我曾经试过强行添加不完整的HWID enum项,结果系统启动出现故障。

[ 本帖最后由 netwinxp 于 2008-12-18 13:35 编辑 ]
回复

使用道具 举报

41#
发表于 2008-12-18 12:36:35 | 只看该作者
注册表CriticalDeviceDatabase下的项目可能不是由txtSetup.sif生成的。实验如下:

我的PE中注册表[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase]下添加了三个项目:PS2_KEYBOARD、PS2_MOUSE和root#swenum三个项目。PE启动到引导程序(ReatogoLogon.exe),还没有进行“Bartpe.exe -pnp”或“HWPNP.EXE”之前打开注册表,[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase]下依然是三个项目,但是进入桌面之后,[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase]下的项目有十几项。这十几项除了内集的三项之外都是系统安装驱动时生成的。
回复

使用道具 举报

40#
发表于 2008-12-18 12:23:49 | 只看该作者
驱动也是服务,和DOS不同,WINDOWS的程序、驱动、动态链接库甚至是RES资源都可以看成TSR,采用事件激活,遇到事件才激活相应的模块,退出程序也只不过是一个特殊的事件。
*xxx或xxx其实仅是ACPI或BIOS层次的ID。
硬件层次的ID,一般包含:总线类型\VID&PID&SID&CC&RID。
硬件ID本身并没有分什么具体不具体的HWID,只不过是驱动的inf并不需要囊括上面的HWID各个字段,ENUM内的咚咚则是根据NTDETECT检测到的硬件信息自动添加一个完整的HWID(机子里面的每个pnp硬件设备都会再这产生一个具有完整HWID的项),WINDOWS会自动匹配最接近这个HWID的驱动项(空的字段被认为是匹配的,不过优先度低于真正的匹配,有任何一项不匹配都被认为整个不匹配)。CriticalDeviceDatabase并不是txtsetup.sif或ntdetect产生的,它是以前装过的驱动留下的(含被加工成PE的原本XP装过的驱动)。
比如我们的txtsetup.sif里面有PCI\&CC_0101、PCI\VEN_10DE&DEV_0065,那么具体硬件PCI\VEN_10DE&DEV_0065&SUBSYS_10001659&REV_A2就会使用第二个项,还须注意的一个就是HWID没显示的设备类别CC_xxxx,如果不匹配就不会去使用,比如RAID就不会去试图匹配&CC_0101的项。
我想问的是.是用批处理.不借助其它DOS下的程序

DOS本身并没有检测硬盘控制器的功能。一些论坛的XP安装,使用的是带电源检测功能的NTLDR来完成,它们并不是DOS程序,在DOS下也运行不了。
***P处理其实仅仅是调用其他程序或系统内部命令,它本身并没有多少东西,更不可能有直接操作底层的功能***

[ 本帖最后由 netwinxp 于 2008-12-18 13:29 编辑 ]
回复

使用道具 举报

39#
发表于 2008-12-18 12:09:02 | 只看该作者
原帖由 pseudo 于 2008-12-17 23:43 发表
外置驱动包,DOS下判断南桥总线类型和型号在自动加载相应驱动.已经实现。收录的驱动是否全是另一回事。


我想问的是.是用批处理.不借助其它DOS下的程序(如果要仿效,蕃茄花园和深度的安装盘中已经有实例了.)...因为我想学习一下批处理操作低层的方法
回复

使用道具 举报

38#
发表于 2008-12-18 11:05:56 | 只看该作者
关注这里......
回复

使用道具 举报

37#
发表于 2008-12-18 08:53:29 | 只看该作者
在[HardwareIdsDatabase]中
即可使用硬件id也可使用兼容id 比配设备id

常用硬件id和匹配设备id
其中匹配范围
匹配设备id >硬件id

一般不直接使用设备范例ID 这个没通用性的

匹配设备id一般
*xxx 或xxx

硬件id
xx\xxxx

[ 本帖最后由 沙漠之子 于 2008-12-18 08:56 编辑 ]
回复

使用道具 举报

36#
发表于 2008-12-18 08:15:53 | 只看该作者
驱动和服务的注册项的确很相似
但是最大的区别是
驱动的ImagePath是*.sys
服务的ImagePath是*.exe

故加载的主体也不一样吧
回复

使用道具 举报

35#
发表于 2008-12-18 08:09:48 | 只看该作者
原帖由 netwinxp 于 2008-12-16 22:53 发表
真的不需要HWID吗?你试试将setupreg.hiv里面的CriticalDeviceDatabase相关项删除看还能不能识别!


CriticalDeviceDatabase这个键 是用来储存当前硬件设备数据信息的

对于PE来说 是在启动的时候根据txtsetup.sif设定自动建立的

即注册表CriticalDeviceDatabase中与txtsetup.sif中相同的部分会被txtsetup.sif中的设定覆盖的 txtsetup.sif中没定义的部分则保留原(注册表CriticalDeviceDatabase中)设定

例外:CriticalDeviceDatabase下记录的东东
非具体的hwid 他是一个类
是多对一的关系,当然对于具体的某一台机器 也应该一个硬件对一个值
即换其他机子(硬件不同)也可能匹配
这个就是在设备管理器中的"匹配设备ID"

Enum 记录的是具体的hwid和硬件id
具体的hwid换其他机子(硬件不同)是不能匹配的
硬件id是可以多个类似的硬件匹配一个硬件id


其中具体的hwid就是在设备管理器中的"设备范例ID"

[ 本帖最后由 沙漠之子 于 2008-12-18 09:07 编辑 ]
回复

使用道具 举报

34#
发表于 2008-12-18 07:04:09 | 只看该作者
驱动的确有以服务方式加载的,但是我不懂


比如, 正常系统的 蜂鸣,是一个服务,但是,也只是一个驱动
回复

使用道具 举报

33#
发表于 2008-12-18 00:21:04 | 只看该作者
是的, 第一個驅動才是主要的, 我把後面省略了貼出來.....

這驅動我是由網上隨便下載的, 反正我見 PCI\VEN_....DEV_ 與機內所見致, 我便用上了.  跟隨機送來的 OS 是 2003 所以並沒隨 XP 的驅動, 而這個卡 2003 與 XP 的驅, 連名字也不同.  
lsi_sas.sys for 2003
symmpi.sys for xp

反正進入PE後用手動的方式加載是成的, 讀寫正常, 只是有人說這是給 dell 的驅動, 我才問問有沒用錯.
回复

使用道具 举报

32#
发表于 2008-12-17 23:56:12 | 只看该作者
原帖由 adatsui 于 2008-12-17 06:53 发表
你可以明確地說, 錯覺 何解嗎 ?
我是否用了 dell 的驅動在 IMB 機上, 我也不確定, 我是用了 LSI 的驅動在 LSI 的卡上.  
我再做了測試, 用另一安裝方法, 都是進了 PE後才裝的, 也是成功可讀寫 ...

你的这个驱动仅仅是辅助的驱动,另外一个带有VEN_xxxx&DEV_xxxx&CC_xxxx才是主要的磁盘控制器驱动。
回复

使用道具 举报

31#
 楼主| 发表于 2008-12-17 23:43:05 | 只看该作者

回复 #28 wsw8810 的帖子

外置驱动包,DOS下判断南桥总线类型和型号在自动加载相应驱动.已经实现。收录的驱动是否全是另一回事。
回复

使用道具 举报

30#
 楼主| 发表于 2008-12-17 23:12:36 | 只看该作者

回复 #29 netwinxp 的帖子

照版主的CHKPCI.COM和硬盘方案,hwid等内容好像只用于txtsetup.sif吧。是否还要修改setupreg.hiv?
上述方案里的hwid行能否从txtsetup.sif中删除(其它行保留)?
回复

使用道具 举报

29#
发表于 2008-12-17 22:26:20 | 只看该作者
DOS P处理肯定是没有那么强的功能,不过配合硬件检测软件还是可以的。俺滴CHKPCI.COM就是为这个目的编写的。

[ 本帖最后由 netwinxp 于 2008-12-17 22:27 编辑 ]
回复

使用道具 举报

28#
发表于 2008-12-17 21:52:01 | 只看该作者
原帖由 cnn_5454 于 2008-12-17 19:51 发表
chenall的fd1加载外置驱动的东西我正在努力总,目前已经收集和很多驱动。

现在我在收集主板的型号。

我尝试GRUB来识别主板反馈的型号ID,让后截获这个ID,在驱动库里加载。找到之后,自动挂载。我的这个试 ...


如果只用GRUB虚拟出一个软盘映像,很难做到兼容性很全的驱动...但是如果把镜像做大了,加载速度是相当慢的.关于DOS下用批处理判断南桥总线类型和型号在自动加载相应驱动.不知道能否实现...批处理真的有这么强大吗?
回复

使用道具 举报

27#
发表于 2008-12-17 19:51:44 | 只看该作者

回复 #11 qqnngg 的帖子

chenall的fd1加载外置驱动的东西我正在努力总,目前已经收集和很多驱动。

现在我在收集主板的型号。

我尝试GRUB来识别主板反馈的型号ID,让后截获这个ID,在驱动库里加载。找到之后,自动挂载。我的这个试验,希望也能给大家一点儿启发

大家一起为PE的明天努力吧
回复

使用道具 举报

26#
发表于 2008-12-17 19:24:32 | 只看该作者
原帖由 netwinxp 于 2008-12-17 18:23 发表
以挂PCI/PCIE总线的硬盘控制器为例——
[HYLM\SYSTEM\CurrentControlSet\Enum]那些其实是系统自动检测产生的带HWID的项(对于即插即用设备来说),然后具体的每项才会根据提供的驱动程序去[HKEY_LOCAL_MACHINE\S ...


学习了...
回复

使用道具 举报

25#
发表于 2008-12-17 18:23:20 | 只看该作者
以挂PCI/PCIE总线的硬盘控制器为例——
[HYLM\SYSTEM\CurrentControlSet\Enum]那些其实是系统自动检测产生的带HWID的项(对于即插即用设备来说),然后具体的每项才会根据提供的驱动程序去[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service]去找对应的服务文件。而以前安装过的驱动则会在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase]下面产生一个与Enum类似的项。之所以txtsetup.sif里面没有提供hwid也可以驱动,是因为很多集成驱动的XP把驱动hwid与对应的服务加到CriticalDeviceDatabase,于是如果有未知设备,没有提供驱动,它就会去CriticalDeviceDatabase找。
上面提到的若干主键其实就是把HWID和对应的服务联结在一起的桥梁。不过酱紫的做法根据R版所说,可能会产生一些“幽灵”设备,有一定的BUG。
如果还认为HWID不重要的话,可以用微软的原版PE改改看能不能行得通!
回复

使用道具 举报

24#
发表于 2008-12-17 12:02:03 | 只看该作者
原帖由 adatsui 于 2008-12-17 06:53 发表


你可以明確地說, 錯覺 何解嗎 ?

我是否用了 dell 的驅動在 IMB 機上, 我也不確定, 我是用了 LSI 的驅動在 LSI 的卡上.  
我再做了測試, 用另一安裝方法, 都是進了 PE後才裝的, 也是成功可讀寫 ...


HEHE.我所说的"错觉"就是在设备驱动安装完成后.在点击"完成"按钮这个画面.如果驱动正常安装,设备也正常识别了,哪么"完成"这个窗口中的文字大概是"设备安装成功,可以正常使用"这几个字,而且图标也是相应的硬件标识图标.然而,驱动和设备不符合的情况下,到了"完成"这步,就会出现设备无法识别.图标就是黄问号了.设备管理器里面同样也显示黄问号...所以你的贴图让我产生了"错觉"

关于硬盘驱动的问题.因为我在做PE内核的时候,手动添加驱动时遇到过symmpi.sys的驱动,我也从DELL的驱动中提取出来symmpi.sys如下所示:

[SCSI.Load]
iastor = iastor.sys,4
a320raid = A320RAID.SYS,4
aac = aac.sys,4
cercsr6 = cercsr6.sys,4
cercsr6 = afamgt.sys,4
aarich = aarich.sys,4
nvatabus = NvAtaBus.sys,4
nvraid = nvraid.sys,4
symmpi = symmpi.sys,4

[SCSI]
nvraid   = "NVIDIA RAID CLASS DRIVER"
nvatabus = "NVIDIA NForce Storage Controller"
iastor = "Intel Matrix Storage Manager"
a320raid = "Adaptec U320 SCSI HostRAID Controller"
cercsr6 = "DELL CERC SATA 1.5/6ch RAID Controller"
aarich = "Adaptec Embedded Serial ATA HostRAID Controller"
aac = "PERC 320/DC SCSI RAID Controller"
symmpi = "DELL PERC5 RAID Controller Driver (Windows XP)"


希望你不要误会.虽然从电脑启动过程和总线驱动的原理上Chenall的方法是不可行的.但经过你的测试能成功.哪就证明了有可能性.目前我的测试没成功,也没找到问题的所在.我只有采用排除法,把你的PE内核跟我用的PE内核作个对比.就知道问题所在了...
如果有其它朋友也测试成功了,请告知于我.先谢谢了.

[ 本帖最后由 wsw8810 于 2008-12-17 12:05 编辑 ]
回复

使用道具 举报

23#
发表于 2008-12-17 10:00:12 | 只看该作者
原帖由 chenall 于 2008-12-16 23:06 发表


这些好像是系统自动生成的吧,

这话应该不太全面。在XP的全新安装中,系统安装程序会进行“完全的即插即用枚举”。此时系统安装程序会自动添加HWID到CriticalDeviceDatabase中。而PE启动过程或者进入桌面时所进行的驱动安装,不是“完全的即插即用枚举”,对一些总线驱动不会再自动添加HWID到CriticalDeviceDatabase中。还是以"ISAPNP"为例,这个驱动有2种模式:一个是ISA模式,另一种是PCI模式。如果只存有ISA模式的HWID,那对于现在的绝大多数的机子,PS2接口的键盘鼠标全不不可用的。因为PS2接口的键盘鼠标就是挂在"ISAPNP"这个驱动上的。
回复

使用道具 举报

22#
发表于 2008-12-17 06:53:52 | 只看该作者
然而adatsui 的帖图在"完成"这个画面的时候是**问号.在设备管理器的时候就没有问号了.....难道是我的错觉.


你可以明確地說, 錯覺 何解嗎 ?

我是否用了 dell 的驅動在 IMB 機上, 我也不確定, 我是用了 LSI 的驅動在 LSI 的卡上.  
我再做了測試, 用另一安裝方法, 都是進了 PE後才裝的, 也是成功可讀寫, 建新文件的.  

经常装驱动的朋友, 替我看看有用錯驅動沒有.
;
; SYMMPI.INF - version XP.10 (Windows XP)
;
; This is the INF file for Windows XP for the SYMMPI based PCI MPI
; environment
;
; ********************************************************************
;                                                                    *
;   Copyright 2005 LSI Logic, Inc. All rights reserved.              *
;                                                                    *
;   This file is property of LSI Logic, Inc. and is licensed for     *
;   use as is.  The receipt of or possession of this file does not   *
;   convey any rights to modify its contents, in whole, or in part,  *
;   without the specific written consent of LSI Logic, Inc.          *
;                                                                    *
; ********************************************************************

[version]
signature="$Windows NT$"
Class=SCSIAdapter
ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318}
Provider=%LSI%
DriverVer=04/19/2007,1.25.05.00
CatalogFile.ntx86=mpixp32.cat

[DestinationDirs]
DefaultDestDir = 12 ; DIRID_DRIVERS

[SourceDisksFiles.x86]
symmpi.sys = 1
lsipseud.inf = 1

此 inf 餘下省略.


lsipseud.inf
; Copyright (c) 1993-1997, Microsoft Corporation

[Version]
Signature="$WINDOWS NT$"
Class=System
ClassGuid={4D36E97D-E325-11CE-BFC1-08002BE10318}
Provider=%LSI%
DriverVer=07/27/2006,6.2.1
CatalogFile.ntx86=mpixp32.cat

[SourceDisksFiles]

[SourceDisksNames]

[ControlFlags]
ExcludeFromSelect = *

[Manufacturer]
%LSI%=LSI
%IBM%=IBM

[LSI]
%Pseudo.DeviceDesc% = NODRV, SCSI\BridgeLSI_____PSEUDO_DEVICE___
%SASx28.DeviceDesc% = NODRV, SCSI\EnclosureLSILOGICSASX28_A.0______
%SASx36.DeviceDesc% = NODRV, SCSI\EnclosureLSILOGICSASX36_A.0______

[IBM]
%SAS_SES.DeviceDesc% = NODRV, SCSI\EnclosureIBM_____SAS_SES-2_DEVICE01.0

[NODRV]

[NODRV.Services]
AddService = , %SPSVCINST_ASSOCSERVICE%

[Strings]
LSI = "LSI Logic"
IBM = "IBM Corporation"
Pseudo.DeviceDesc = "LSI Pseudo Device"
SASx28.DeviceDesc = "LSI Logic SAS x28 Expander"
SASx36.DeviceDesc = "LSI Logic SAS x36 Expander"
SAS_SES.DeviceDesc = "IBM SAS SES Device"

;*******************************************
;Handy macro substitutions (non-localizable)
SPSVCINST_ASSOCSERVICE = 0x00000002

[ 本帖最后由 adatsui 于 2008-12-17 06:58 编辑 ]
回复

使用道具 举报

21#
发表于 2008-12-17 00:12:26 | 只看该作者
CriticalDeviceDatabase肯定不是自己生成的。
回复

使用道具 举报

20#
发表于 2008-12-16 23:33:18 | 只看该作者
原帖由 netwinxp 于 2008-12-16 22:53 发表
真的不需要HWID吗?你试试将setupreg.hiv里面的CriticalDeviceDatabase相关项删除看还能不能识别!


setupreg.hiv里面不要HWID是肯定不能识别的.这点NETWINXP没有说错哦.看来此贴得换个标题了.否则会引起很多网友的猜疑.HEHE.有争执才有技术上的进步...三人行必有我师.学习ing...
回复

使用道具 举报

19#
发表于 2008-12-16 23:25:33 | 只看该作者
原帖由 pseudo 于 2008-12-16 22:50 发表


adatsui 在實機 IBM X3200 上進行的试验似乎有利于我的观点。


我在怀疑adatsui的系统.在IBM的服务器上使用DELL的SAS驱动...而且倒数第二张贴图.意思是安装好驱动后**感叹号没有了...但实际在"完成"这个画面,却是**问号.经常装驱动的朋友应该清楚吧.在装完驱动后最后一个画面点"完成"按钮的时候.这个时候如果还是显示**问号,哪么在设备管理器中依然是**问号.然而adatsui 的帖图在"完成"这个画面的时候是**问号.在设备管理器的时候就没有问号了.....难道是我的错觉...我用同样的方法在三星SATA硬盘上加载原厂驱动.失败...难道还有兼容性这一说法...

[ 本帖最后由 wsw8810 于 2008-12-16 23:30 编辑 ]
回复

使用道具 举报

18#
发表于 2008-12-16 23:06:43 | 只看该作者
原帖由 netwinxp 于 2008-12-16 22:53 发表
真的不需要HWID吗?你试试将setupreg.hiv里面的CriticalDeviceDatabase相关项删除看还能不能识别!


这些好像是系统自动生成的吧,
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-21 18:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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