Re: 调试windows7加载驱动的问题
Windows内核调试
调试windows7加载驱动的问题
nigel
2009-08-21, 08:58 上午
向大家求教一个问题,就是在windows7开机后发现TouchPad经常不会动了,查看device manager发现TouchPad的位置显示感叹号,也就是驱动没有加载上。现在我想用windbg看看开机时/后device mamager是怎样枚举设备的,以及它是怎样检查到设备驱动没有加载上的,可是由于应用widbg的熟练度有限,现在只能在开机过程中用windbg断到nt!IopLoadDriver这个函数中来查看到开机过程中touchpad的驱动执行的汇编指令,并且发先进入device maanger时也会调用一个驱动,所以求教大家我怎样设断点可以断到device manager 检查设备驱动是否加载正常的过程中,怎样来查看一下device manager的工作原理?
Re: 调试windows7加载驱动的问题
格蠹老雷
2009-08-21, 18:59 下午
首先,是内核中的IO管理器(IO Manager)承担着加载和管理设备和驱动程序的任务。用户态运行的设备管理器只是一个界面程序,它主要是使用Setup API来从IO管理器那里获取信息,然后显示出来。不清楚你的目的是什么,你是要调试你自己开发的TouchPad驱动,还是想学习设备管理器的原理。达到这两目标的方法是有很大不同的。
Re: 调试windows7加载驱动的问题
nigel
2009-08-21, 20:01 下午
dear Raymond,由于上面所讲的丢失TouchPad驱动的情况出现的很频繁(包括用厂商的驱动和微软自带的),所以我想解决这个bug,我的目的是:第一,在开机开始断下来,然后设断点,找到载入touchpad驱动的入口,进去,查看厂商或微软用于touchpad的驱动是怎样工作的,其中包括它都访问了哪些端口或函数等信息。这一点的目的就是想用windbg弄明白别人的驱动是怎样工作的,以便找到出现问题的可能原因(究竟是软件还是硬件的问题);第二个目的就是想用windbg深入学习设备管理器的工作原理.因为经常会遇到device manager里出现“感叹号”的问题,想追其究竟,但拿起windbg来又不知道该如何下手,怎样下断点可以查看到它的真面目。所以在这里诚请张老师给予指点,教我一个方法!谢谢张老师!(这个帖子以第二个目的为主)
Re: 调试windows7加载驱动的问题
nigel
2009-08-24, 09:33 上午
up
Re: 调试windows7加载驱动的问题
格蠹老雷
2009-08-24, 12:49 下午
如果注册表里正确注册了驱动,那么系统一般会加载驱动文件的,很多驱动的问题都是因为驱动和系统交互不当,又被卸载了。
如果你有这个驱动的调试符号,那么可以设置一个延迟的断点, 比如 bp touchpad!driverentry
这样当这个驱动被加载的时候,断点便会命中。
如果没有符号,那么便很难调试,但是可以通过启用加载模块事件中断下来,比如 sxe ld:touchpad.sys
如果出于学习目的,那么应该找个有符号的驱动,最好还有源代码的来学习。
Re: 调试windows7加载驱动的问题
nigel
2009-08-24, 15:49 下午
thanks Raymond!