Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: zyq8709   发起时间: 2011-06-17 11:45 上午   回复: 0

Print Search
帖子排序:    
   2011-06-17, 11:45 上午
zyq8709 离线,最后访问时间: 2019/8/6 21:05:02 zyq8709

发帖数前10位
注册: 2011-04-19
发 贴: 74
用服务管理器加载NT式驱动的问题!
Reply Quote
通过用SCM加载驱动一个NT式驱动(DriverMonitor或是insdrv等工具),都会出现一个问题:第一次加载卸载都正常,再次加载就会失败提示The ImagePath specified in driver's service database entry is incorrect,or the file is missing。就算删除注册表中SCM相关项也不行。只有重启一下方可重新安装启动。上网搜有的说是注册表中ImagePath的问题,但修改后也无用而且注册表中的信息都正确。有一个说法我感觉有点道理但又不很理解。他说是第一次卸载后,DriverObject的PointCount为1,导致此时设备对象和符号链接已经删掉了,但是DriverObject还在,于是就不会调用IopDeleteDriver,所以你的驱动其实还是内存里。
请问那既然驱动对象被删除并调用了UnLoad例程删除设备,为何其PointCount还为1,还有什么在引用它吗?还有就是如果同一个驱动安装多个对应设备,我根据wrk代码来看就是加载驱动->寻找驱动对象——————找到直接调用AddDevice例程
|____找不到就映像驱动PE,执行DriverEntry,并执行AddDevice例程
那么看来就算是驱动对象存在的话也不会失败,无非就是再创建一个设备对象罢了,我不太理解。
当然网上有人说通过改写为inf文件安装就没有问题了,想怎么加载或卸载都可以。
这到底是怎么回事?请帮忙解答一下我的疑问吧,多谢了!
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 用服务管理器加载NT式驱动的问题!

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.