阅读:1258回复:3
这个蓝屏真奇怪,真奇怪!!
编了一个TDI filter驱动,加载后ie能正常上网,然后不关ie,用net stop卸载驱动,再点击ie中的链接试图打开网页时,蓝屏,如果是重开一个ie上网则没有问题,这到底是怎么回事呢?是不是在卸载驱动的时候出问题了?
这是我卸载挂接设备函数 VOID UdpFilterDetach(PDEVICE_OBJECT DeviceObject) { pTdiDeviceExt dx; dx = (pTdiDeviceExt)DeviceObject->DeviceExtension; if (dx->pTargetFileObj) ObDereferenceObject(dx->pTargetFileObj); dx->pTargetFileObj = NULL; IoDetachDevice(dx->pLowerDeviceObj); dx->pLowerDeviceObj = NULL; IoDeleteDevice(DeviceObject); } 其中tdi filter驱动挂接了\\\\Device\\\\Ip, \\\\Device\\\\RawIp, \\\\Device\\\\Udp, \\\\Device\\\\Tcp这几个设备,在DriverUnload中循环卸载挂接的设备 |
|
沙发#
发布于:2004-05-07 17:59
问题的主要关键是你是否截获了IE设置的事件回调例程???
如果是,则在卸载你的驱动之前必须恢复原来的事件回调例程,否则必蓝屏无疑。 原因: TCPIP.SYS回调以前上层驱动设置的事件回调例程时,因为你的过滤驱动已经替换了这些缺省例程为你的驱动的事件回调例程,所以TCPIP.SYS实际上是调用了你的驱动的事件回调例程,但是现在你的驱动已经卸载,找不到例程,蓝屏!!! 所以在卸载前必须恢复原来的事件回调例程。 当然,这只是一方面的原因,存在其它的可能,只能靠你慢慢去DEBUG了。 |
|
板凳#
发布于:2004-05-07 18:43
:(
|
|
|
地板#
发布于:2004-05-07 21:05
slwqw我想你是对的,非常感谢
|
|