阅读:3574回复:29
网卡启动程序卸载时就蓝屏???(原程序)
原程序:
VOID RHalt(IN NDIS_HANDLE MiniportAdapterContext) { PADAPTER adapter = (PADAPTER)MiniportAdapterContext; //!DbgPrint(\"RHalt \\n\"); while(adapter->FreeRxPkt != NUM_OF_PACKETS) DbgPrint(\"RHalt: FreeRxPkt=%x \\n\", adapter->FreeRxPkt); while(adapter->FreeTxDesc != NUM_OF_DESC) DbgPrint(\"RHalt: FreeTxDesc=%x \\n\", adapter->FreeTxDesc); NdisRawWritePortUshort(adapter->ioaddr + IntrMask, 0); NdisRawWritePortUchar(adapter->ioaddr + ChipCmd, 0); FreeRes((PADAPTER)MiniportAdapterContext); } |
|
最新喜欢:![]() |
沙发#
发布于:2003-05-14 09:52
FreeRes((PADAPTER)MiniportAdapterContext);中未完全释放资源?
|
|
板凳#
发布于:2003-05-14 11:11
还有是否有些已经放掉了又要释放,用SoiceIce跟一下你的FreeRes(),看当在什么位置。
|
|
地板#
发布于:2003-05-14 11:15
大多数蓝屏的原因:释放/引用了一个空指针。
信息太少。就这个函数而言,如果传入一个空指针(MiniportAdapterContext=NULL)肯定down掉。 |
|
|
地下室#
发布于:2003-05-14 14:48
你得判断一下 这个指针是不是为空。
因为 中间层驱动 在unload的时候,并没有真正从内存中释放掉, 如果你不重新启动计算机,下次再加载驱动,然后unload的时候 就会出现这种情况。 |
|
5楼#
发布于:2003-05-14 15:25
请问卸载时蓝屏,问题是出在R8139Char.HaltHandler= RHalt;指定的RHalt函数里吗?
|
|
6楼#
发布于:2003-05-16 11:25
unload routine 调用的就是miniporthalt routine, 从它着手, 就对了.
你提供的freeres function 看不到, 帮不到你. |
|
7楼#
发布于:2003-05-17 10:27
我做的网卡驱动程序也出现了和你一样的BUG,能不能交流一下,
我的QQ是:12435653 |
|
8楼#
发布于:2003-05-20 11:27
我 用 softice 调试了一下
出现了如下信息: RXiNT:NumofPkt=1,RCV_OK=0ef Break due to page Fault(0EH) ,Fault=0000 不知该如何进一步调试? 在卸载时,怎么不执行resetNIC();,MPHalt()函数呢? 急急! |
|
9楼#
发布于:2003-05-21 08:06
急急!
|
|
10楼#
发布于:2004-03-19 14:20
问题解决没
|
|
11楼#
发布于:2004-03-20 13:28
根据我经验,指针的原因很大。
|
|
|
12楼#
发布于:2004-08-11 13:50
根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 |
|
|
13楼#
发布于:2004-08-11 17:24
[quote]根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 [/quote] 出错在ExFreePoolWithTag这个函数 |
|
|
14楼#
发布于:2004-08-12 10:10
[quote]根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 [/quote] punk老兄,看你也是2001级的,回贴怎么也不看看时间。 |
|
15楼#
发布于:2004-08-12 11:56
[quote][quote]根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 [/quote] punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote] 不好意思啊,这个问题还没有答案,所以想翻出来晒晒 |
|
|
16楼#
发布于:2004-08-12 13:05
[quote][quote]根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 [/quote] punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote] 不知道哪个兄弟最好解决的这个问题? 不小气的话就发句言。 |
|
|
17楼#
发布于:2004-08-12 13:35
[quote][quote][quote]根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 [/quote] punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote] 不知道哪个兄弟最好解决的这个问题? 不小气的话就发句言。 [/quote] 这个问题不跟一下代码谁也不还回答。 如果你在HALT前下了N(N>1)个断点也没有拦截的错误,有可能是系统需要的某个回调函数你没有提供。 |
|
18楼#
发布于:2004-08-12 13:47
[quote][quote][quote][quote]根据我经验,指针的原因很大。 出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了, 哪位大虾指点以下 [/quote] punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote] 不知道哪个兄弟最好解决的这个问题? 不小气的话就发句言。 [/quote] 这个问题不跟一下代码谁也不还回答。 如果你在HALT前下了N(N>1)个断点也没有拦截的错误,有可能是系统需要的某个回调函数你没有提供。 [/quote] 附件来了,应该就是本站上那个, 我也怀疑到可能是回调没有完全提供,但是还没找出来。 |
|
|
19楼#
发布于:2004-08-12 14:40
我发现一个问题,你没有提供RUnload,或许是在别处提供了。
但我记得DDK里说50 51版本的 DriverUnload应该是用NdisMRegisterUnloadHandler。 我有过类似的经历,这是我程序里的几句: #ifdef WIN9X DriverObject->DriverUnload = MPUnload; #else NdisMRegisterUnloadHandler(wrapperHandle, MPUnload); #endif 也许不是这个原因,因为MPUnload应该在HALT后面调用。 |
|
上一页
下一页