lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1301回复:4

安装死机的虚拟miniport驱动!(WDM:给分50!)

楼主#
更多 发布于:2004-03-24 21:38
在WDM框架下,写一个miniport可是在安装过程中总是死机!
我发现有几个常见的现象:
1)在发送阶段申请的指针没有销毁(不是我没有delete,而是...);
2)死机之后,系统自动安装了好几个网卡驱动:ndiswan.sys;raslztp.sys;raspptp.sys;raspti.sys
我判定初步原因是在send()例程中的指针没有销毁!

我的思路:在send()例程中将接收的分组封装成以太帧,向NDIS提前通知,通知完毕就销毁该缓冲区!
疑惑:
1)一般在中断处理程序调用Indicate,是不是与中断有关?
2)为什么销毁不了指针?

KNdisPacket pkt(Packet);//接收分组
buf = pkt.QueryFirstBuffer();

   。。。

while(buf.IsValid())//如果有缓冲!!
{
   //将分组组装在以framebuf为指针的缓冲中,组装为以太帧
   framebuf = new char[FrameLen];
   //提前通知
   m_Lookahead.Indicate
   (this, 16, IndicateLen, buf.Length(), framebuf);

   //在缓冲链中的下一个缓冲
   buf = buf.GetNext();
   //销毁(好像总没有运行!)
   delete framebuf;
}
m_Lookahead.IndicateComplete(this);//程序最后!



lightluna
驱动牛犊
驱动牛犊
  • 注册日期2002-11-14
  • 最后登录2004-04-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-25 08:52
和我碰到的问题一样
顶一下
start
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-09-03
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望27点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-25 09:00
是不是发送后的状态不是STATUS_SUCCESS,可能在PENDING状态
second
lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-25 12:10
我认定:一定是发送不正确,因而内存不能正确释放,对同一个指针变量重复申请内存,当发送次数超过某个限制造成内存的页面泄漏,所以才死机现象。
问题:
1)为什么系统这个时候要自动安装许多无关的miniport驱动呢?
2)怎样才能解决虚拟环境下的发送问题?
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-26 13:57
在WDM框架下,写一个miniport可是在安装过程中总是死机!
我发现有几个常见的现象:
1)在发送阶段申请的指针没有销毁(不是我没有delete,而是...);
2)死机之后,系统自动安装了好几个网卡驱动:

 


我遇到过你这种情况,安装和收发例程无关系

我也是根据ne2000更改的虚拟网卡驱动,没有硬件,安装成功,并且能设置IP地址,只是我还没有写收发功能(保留ne2000的源代码)。我给你发信了,收到没?
好好过日子
游客

返回顶部