阅读:2373回复:4
two bug in passthru sample for winxp
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中。 |
|
最新喜欢:antspo...
|