驱动调试助手的下载次数已经过万,很多网友也提出了一些宝贵建议,非常感谢。这里再做一个更新,V2.9中主要增加了注册表查找和注册表项重命名这两个功能,至此,有关注册表操作的所有功能基本都已实现了。虽然不能跟Resco Regedit等大牌比,但功能上并不差多少,而且原生态的支持WinCE系统,包括ARMV4、ARMV4I、MIPSII、SH4。
简单说明一下新增功能的用法,查找的界面如下。
支持查找项名、键名和字符串类型的键值。默认查找全部注册表,也可以在RegTree中选择查找的起始位置。全字匹配的意思是查找项与查找目标完全一致(不区分大小写),如果没选择该复选框则允许查找目标在查找项中部分匹配。
项名的重命名可通过菜单“重命名项”完成,如下图所示。
也可以再RegTree中左键点击相应的项完成,如下图所示。
键值的重命名与项的重命名一致,不再赘述。
另外,gooogleman在使用驱动调试助手动态加载串口驱动时出现了一些问题。串口驱动在启动时能正常加载,但通过驱动调试助手卸载后再加载总是失败。我查了一下,主要原因是系统启动时通过BusEnum.dll加载驱动与驱动调试助手的加载过程还是有一些区别的。驱动调试助手只是以简单的流驱动的方式加载,而BusEnum.dll以总线设备的方式加载,并在注册表中设置了相应的键值。串口驱动中在物理地址的内存映射时需要用到相应的键值,如果键值不存在就会导致内存映射失败,以致串口驱动加载失败。两种方式加载驱动后的注册表对比如下。
开机启动时加载成功的Active键的截图。
可以看到,里面设置了InterfaceType、BusName和BusParent等键值。其中InterfaceType就是串口驱动动态加载失败的关键。
动态加载串口驱动成功时Active键的截图。
可以看到,这里没有设置InterfaceType、BusName和BusParent等键值。但是串口驱动也加载成功了,并且经验证可以正常使用串口。这是为什么呢?其实,并没有修改串口驱动,只是修改了CEDDK.dll中的一个函数HalTranslateBusAddress()。因为这是出错的根本原因,是这里使用了InterfaceType。我的修改方法是注释掉SRC\Drivers\Ceddk\Dll\sources中SOURCELIBS变量的第一行“$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\ddk_bus.lib \”,即不使用BSP中的ddk_bus.lib,而使用系统提供的ddk_bus.lib,它里面没有对InterfaceType做处理,所以加载驱动时就不会出错了。
以上是解决串口驱动不能动态加载的一种方法,实际上驱动调试助手主要是动态管理流驱动的,可能还有其他一些驱动不能通过它正常加载,这时候,我们就不能再偷懒了,只能乖乖的走老路,多花点时间下载NK了。
驱动调试助手V2.9的下载地址:http://files.cnblogs.com/we-hjb/DM_V2.9.rar