jonah_zc
驱动牛犊
驱动牛犊
  • 注册日期2007-03-19
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:3193回复:5

请教关于TDI驱动的蓝屏和卸载

楼主#
更多 发布于:2007-04-03 18:58
  小弟我最近才开始研究驱动程序,所以存在很多不明白的地方,如果问题比较肤浅,请别见笑!

根据论坛上下载的FilterTdiDriver2的程序,然后自己添加上
关于TDI_CONNECT的处理,编译后用TestDriver.exe加载驱动,使用Dbgview.exe查看DbgPrint信息,在启动IE之后蓝屏,提示信息是PAGE_FAULT_IN_NOPAGED_AREA,然后重起机器后。(自己认为重启机器后应该恢复到以前驱动没有加载的情况)将自己的TDI_CONNECT处理屏蔽,重新编译之后,再进行以上步骤的测试,还是出现相同错误的蓝屏。自己查找了一下注册表,发现里面有关于FilterTdiDriver的加载信息,并且里面的信息不能够删除,提示说设备在使用。

不知道哪位大虾遇到过这样的情况,或者有什么好的方法能够删除掉已经加载的驱动?
burgess
驱动牛犊
驱动牛犊
  • 注册日期2007-03-18
  • 最后登录2008-04-26
  • 粉丝0
  • 关注0
  • 积分310分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-03 20:53
还是试试FilterTdiDriver吧,那个没问题,只是在退出时有时也蓝
jonah_zc
驱动牛犊
驱动牛犊
  • 注册日期2007-03-19
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-03 22:23
谢谢burgess兄弟的回答。

FilterTdiDriver尝试过,虽然有时候退出的时候蓝屏,驱坛的帖子说是Irp没有处理完全所导致,并且蓝屏后也没有出现我上边说的问题。
我自己认为因为设备attach上之后没有进入到unload里的deatch的原因,到底什么问题和怎么解决正在调查中

再次感谢burgess兄!
aben1223
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2007-06-01
  • 粉丝1
  • 关注0
  • 积分1000分
  • 威望201点
  • 贡献值0点
  • 好评度192点
  • 原创分2分
  • 专家分0分
地板#
发布于:2007-04-04 09:10
个人 已经放弃 net stop tdidriver 会蓝屏的问题
周维彬
burgess
驱动牛犊
驱动牛犊
  • 注册日期2007-03-18
  • 最后登录2008-04-26
  • 粉丝0
  • 关注0
  • 积分310分
  • 威望32点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-04 15:59
呵呵,可以不用STOP,直接删服务重起就行了
jonah_zc
驱动牛犊
驱动牛犊
  • 注册日期2007-03-19
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-04-05 14:25
谢谢大家的帮忙,小弟十分感激!~
因为蓝屏的问题无法解决,所以根据tdi_fw的源代码,决定采用tdi hook的方式,使用这种方式后,暂时还没有发现蓝屏,驱动也能够正常Unload。
仔细看了一下对\\Device\\Tcp设备的加载方法,tdi hook方式使用ObReferenceObjectByName,然后替换其中的Dispatch例程,tdi_fw里面还有一种加载方式,使用的是IoAttachDevice,而TdiFilter里面使用的是IoAttachDeviceToDeviceStack,看了一下文档,ObReferenceObjectByName具体意思没有查明白,但是知道是通过对象名引用对象,具体如何引用不是很清楚,IoAttachDevice是将原设备对象附加到目标对象,以后所有的IO请求都会先通过我们设定的设备,IoAttachDeviceToDeviceStack是将原设备放到设备对象链最上层,然后返回以前最上层的设备对象的指针。。。(可能翻译或者理解不正确,所以如果有错误,希望各位牛人指出),虽然看了文档帮助,但是他们具体是怎么回事情还是有些模糊,特别是IoAttachDevice和IoAttachDeviceToDeviceStack,按照道理来说应该算是一回事情吧,只是多了一个返回值,希望哪个牛人说说他们的却别,谢谢!
游客

返回顶部