huangwenfa
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3576回复: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...
muy2004
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2005-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-30 20:46
我曾经build过前面附件上的程序,安装可运行,但卸载就蓝屏,最后在安全模式下卸载的。我刚学,不懂,解决不了,不知那位高手能帮解决一下。
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-23 10:03
[quote][quote]在EXFREEPOOL处下断点看看,参数地址是否存在??

呵呵,知道这个恐怕还是不能解决问题啊。
问题除在_ArpUnbindAdapter,大概就是_Arp协议驱动unbind的时候
出现了内存访问错误?
 [/quote]
up以下 [/quote]
真的没人知道吗?
还是知道没热情说啊?
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-18 12:48
[quote]在EXFREEPOOL处下断点看看,参数地址是否存在??

呵呵,知道这个恐怕还是不能解决问题啊。
问题除在_ArpUnbindAdapter,大概就是_Arp协议驱动unbind的时候
出现了内存访问错误?
 [/quote]
up以下
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-16 16:01
在EXFREEPOOL处下断点看看,参数地址是否存在??

呵呵,知道这个恐怕还是不能解决问题啊。
问题除在_ArpUnbindAdapter,大概就是_Arp协议驱动unbind的时候
出现了内存访问错误?
不停学习
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2004-08-14 10:40
在EXFREEPOOL处下断点看看,参数地址是否存在??
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-13 14:20
c查看下STACK的信息看,从哪里进去的,估计有可能重复释放内存了.

调用栈栈由上之下的情况
NdisPnpNotifybind
      |
NdisPnpRemoveDevice
      |
NdisCloseMiniportBinds
      |
NdisUnbindProtocol
      |
_ARPUnbindAdapter
       |
ExFreePool
       |
ExFreePoolWithTag
      //ExFreePoolWithTag出的错!
不停学习
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2004-08-13 11:41
c查看下STACK的信息看,从哪里进去的,估计有可能重复释放内存了.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-13 11:26
[quote]我发现一个问题,你没有提供RUnload,或许是在别处提供了。
但我记得DDK里说50 51版本的 DriverUnload应该是用NdisMRegisterUnloadHandler。
我有过类似的经历,这是我程序里的几句:
#ifdef WIN9X
    DriverObject->DriverUnload = MPUnload;
#else
    NdisMRegisterUnloadHandler(wrapperHandle, MPUnload);
#endif
也许不是这个原因,因为MPUnload应该在HALT后面调用。
 

仍然还是死机 [/quote]
手头没有内核符号,但是可以发现是由tcpip.sys进入ExFreePoolWithTag然后出现错误的。
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-12 15:49
我发现一个问题,你没有提供RUnload,或许是在别处提供了。
但我记得DDK里说50 51版本的 DriverUnload应该是用NdisMRegisterUnloadHandler。
我有过类似的经历,这是我程序里的几句:
#ifdef WIN9X
    DriverObject->DriverUnload = MPUnload;
#else
    NdisMRegisterUnloadHandler(wrapperHandle, MPUnload);
#endif
也许不是这个原因,因为MPUnload应该在HALT后面调用。
 

仍然还是死机
不停学习
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-12 14:46
我发现一个问题,你没有提供RUnload,或许是在别处提供了。
但我记得DDK里说50 51版本的 DriverUnload应该是用NdisMRegisterUnloadHandler。
我有过类似的经历,这是我程序里的几句:
#ifdef WIN9X
    DriverObject->DriverUnload = MPUnload;
#else
    NdisMRegisterUnloadHandler(wrapperHandle, MPUnload);
#endif
也许不是这个原因,因为MPUnload应该在HALT后面调用。
 

这个程序是本站提供的rtl8139源程序,
还有一个bug就是Dregisterinterrupt,但是这几个bug应该都没有问题啊,因为还没进入halt啊!
不停学习
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-08-12 14:40
我发现一个问题,你没有提供RUnload,或许是在别处提供了。
但我记得DDK里说50 51版本的 DriverUnload应该是用NdisMRegisterUnloadHandler。
我有过类似的经历,这是我程序里的几句:
#ifdef WIN9X
    DriverObject->DriverUnload = MPUnload;
#else
    NdisMRegisterUnloadHandler(wrapperHandle, MPUnload);
#endif
也许不是这个原因,因为MPUnload应该在HALT后面调用。
punk
驱动小牛
驱动小牛
  • 注册日期2001-04-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分621分
  • 威望164点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
12楼#
发布于: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分
13楼#
发布于: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分
14楼#
发布于:2004-08-12 13:05
[quote][quote]根据我经验,指针的原因很大。

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

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

出错的时候还没进入RHalt,调用完RSet之后马上就蓝屏了,
哪位大虾指点以下
不停学习
iwub
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2009-06-22
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望60点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-03-20 13:28
根据我经验,指针的原因很大。
iwub
上一页
游客

返回顶部