huangwenfa
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3574回复:29

网卡启动程序卸载时就蓝屏???(原程序)

楼主#
更多 发布于:2003-05-13 20:05
原程序:
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);
}

最新喜欢:

muy2004muy200...
freducn2002
驱动小牛
驱动小牛
  • 注册日期2002-06-26
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望29点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-05-14 09:52
FreeRes((PADAPTER)MiniportAdapterContext);中未完全释放资源?
robin_wxg
驱动小牛
驱动小牛
  • 注册日期2003-02-10
  • 最后登录2009-09-21
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-14 11:11
还有是否有些已经放掉了又要释放,用SoiceIce跟一下你的FreeRes(),看当在什么位置。
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-14 11:15
大多数蓝屏的原因:释放/引用了一个空指针。

信息太少。就这个函数而言,如果传入一个空指针(MiniportAdapterContext=NULL)肯定down掉。




天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-14 14:48
你得判断一下 这个指针是不是为空。

因为 中间层驱动 在unload的时候,并没有真正从内存中释放掉,

如果你不重新启动计算机,下次再加载驱动,然后unload的时候
就会出现这种情况。
huangwenfa
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-14 15:25
请问卸载时蓝屏,问题是出在R8139Char.HaltHandler= RHalt;指定的RHalt函数里吗?
newbiewalker
驱动牛犊
驱动牛犊
  • 注册日期2003-02-18
  • 最后登录2005-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-16 11:25
unload routine 调用的就是miniporthalt routine,  从它着手, 就对了.

你提供的freeres function 看不到, 帮不到你.
zhongguozhu3
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2004-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-17 10:27
我做的网卡驱动程序也出现了和你一样的BUG,能不能交流一下,
我的QQ是:12435653
huangwenfa
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-20 11:27
我 用 softice 调试了一下
出现了如下信息:
 RXiNT:NumofPkt=1,RCV_OK=0ef
 Break due to page Fault(0EH) ,Fault=0000
不知该如何进一步调试?
 在卸载时,怎么不执行resetNIC();,MPHalt()函数呢?
急急!
huangwenfa
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-21 08:06
急急!
dobetter
驱动牛犊
驱动牛犊
  • 注册日期2003-06-12
  • 最后登录2007-07-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-19 14:20
问题解决没
iwub
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2009-06-22
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望60点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-03-20 13:28
根据我经验,指针的原因很大。
iwub
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-08-11 13:50
根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-08-11 17:24
[quote]根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下 [/quote]
出错在ExFreePoolWithTag这个函数
不停学习
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-08-12 10:10
[quote]根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下 [/quote]
punk老兄,看你也是2001级的,回贴怎么也不看看时间。
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-08-12 11:56
[quote][quote]根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下 [/quote]
punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote]
不好意思啊,这个问题还没有答案,所以想翻出来晒晒
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-08-12 13:05
[quote][quote]根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下 [/quote]
punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote]
不知道哪个兄弟最好解决的这个问题?
不小气的话就发句言。
不停学习
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-08-12 13:35
[quote][quote][quote]根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下 [/quote]
punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote]
不知道哪个兄弟最好解决的这个问题?
不小气的话就发句言。 [/quote]
这个问题不跟一下代码谁也不还回答。
如果你在HALT前下了N(N>1)个断点也没有拦截的错误,有可能是系统需要的某个回调函数你没有提供。
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-08-12 13:47
[quote][quote][quote][quote]根据我经验,指针的原因很大。

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下 [/quote]
punk老兄,看你也是2001级的,回贴怎么也不看看时间。 [/quote]
不知道哪个兄弟最好解决的这个问题?
不小气的话就发句言。 [/quote]
这个问题不跟一下代码谁也不还回答。
如果你在HALT前下了N(N>1)个断点也没有拦截的错误,有可能是系统需要的某个回调函数你没有提供。 [/quote]
附件来了,应该就是本站上那个,
我也怀疑到可能是回调没有完全提供,但是还没找出来。
附件名称/大小 下载次数 最后更新
2004-08-12_rtl8139.zip (126KB)  2
不停学习
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-08-12 14:40
我发现一个问题,你没有提供RUnload,或许是在别处提供了。
但我记得DDK里说50 51版本的 DriverUnload应该是用NdisMRegisterUnloadHandler。
我有过类似的经历,这是我程序里的几句:
#ifdef WIN9X
    DriverObject->DriverUnload = MPUnload;
#else
    NdisMRegisterUnloadHandler(wrapperHandle, MPUnload);
#endif
也许不是这个原因,因为MPUnload应该在HALT后面调用。
上一页
游客

返回顶部