阅读:1039回复:0
这是什么烂毛病
有以下几行代码:
1. NdisChainBufferAtFront(MyPacket, Buffer); 2. MyPacket->Private.Head->Next = NULL; 3. MyPacket->Private.Tail = NULL; 4. Rsvd= (PRSVD)(MyPacket->MiniportReserved); 5. Rsvd->OriginalPkt = NULL; 6. NDIS_SET_PACKET_HEADER_SIZE(MyPacket,HeaderBufferSize); 7. NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1); 用SoftIce F8单步跟踪时,发现没运行到1就直接到7了,根本不运行2-6,而且在2-6行也设置不了断点; 另外,2-6行没有执行似乎还可以从下面的结果验证:到第7行之后,那个NdisMIndicateReceivePacket似乎立即就调用了MPReturnPacket(或者那个NdisMIndicateReceivePacket仅仅是个宏?),而且传入MPReturnPacket的那个Packet应该就是这里的MyPacket,但是那个Packet的OriginalPacket却不为NULL!于是Free的时候就死掉了。 为什么那几行不执行呢?难道是编译器的问题吗? 请高手救命! [编辑 - 4/26/02 作者: falwind] |
|