HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
阅读:2373回复:4

two bug in passthru sample for winxp

楼主#
更多 发布于:2003-01-13 11:54
1、分配adapter结构内存的时候,
TotalSize = sizeof(ADAPT)+DeviceName->MaxBufferLength;
用了NdisAllocateMemoryTag(TotalSize...);
但是释放的时候
NdisFreeMemoryTag(sizeof(ADAPT)...);

不知道为什么MS的作者用了tag函数还没有发现这个bug。
解决方法,NdisFreeMemoryTag(TotalSize...);

2、ptbindadapter和mpinitialize以及mphalt之间的一个
同步问题会让系统在此情况下dump:
ptbindadapter中会让mpinitialize调用,并且初始化
真正的miniport_initialize(先加载协议,然后才是网卡)
如果成功的话,但是真正的miniport却初始化不成功,
例如它调用requestinformation发现该协议不是它所支持
的,他会返回failure,这时导致mphalt调用,释放内存,
然后到ptbindadapter会发现失败,也释放内存,一个
内存被释放两次,dump。
解决方法:在ptbindadapter中,mphalt不能执行,用
event保护(两个函数都在passive上运行,所以可以用
event),释放内存后立即设置指针为NULL。

以上两个bug均不存在于2k passthru sample中。


最新喜欢:

antspowerantspo...
不再回忆从前,我已经生活在幸福当中。
游客

返回顶部