阅读:1577回复:5
版主啊!救命啊!要分给分100!PtReceivePacket中发TCP包,一NdisSend就蓝屏!!!!
本问题基本解决!!
[编辑 - 1/14/05 by sweetzhf] |
|
沙发#
发布于:2005-01-12 19:47
这样看代码很难看出问题,最快的方法是调试软件,看看问题出在什么地方
|
|
|
板凳#
发布于:2005-01-12 22:50
老大我有几个不懂的地方,
1.////分配内存空间 Rsvd = (PRSVD)(MyPackets->ProtocolReserved); Rsvd->OriginalPkt = Packet;这里是Packet还是NULL啊? 2.if(is_send==1) { **这里是不是必须加:NdisIMCopySendCompletePerPacketInfo (Packet, MyPackets); //??? DBGPRINT(" pt send complete call miniport send completen"); //释放NdisUnchainBufferAtFront NdisUnchainBufferAtFront(Packet ,&firstBuffer); //从MyPacket中解除buffer ................. 3.PtSendComplete里: .................... //释放NdisUnchainBufferAtFront NdisUnchainBufferAtFront(Packet ,&firstBuffer); 这里的Packet是不是就是原来NdisSend的时候,带的参数Packets传过来好施放自己原来在PtReceivePacket里分配的包和内存啊? 4.这里是这样写 if(is_send==1) { DBGPRINT(" pt send complete call miniport send completen"); //释放NdisUnchainBufferAtFront NdisUnchainBufferAtFront(Packet ,&firstBuffer); //从MyPacket中解除buffer DBGPRINT(" pt send complete unchain completen"); NdisQueryBufferSafe(firstBuffer, &pPacketContent, &BufLength,32 );//取得buffer的虚地址 DBGPRINT(" pt send complete query buffer completen"); //释放NdisFreeMemory:pPacketContent if(pPacketContent!= NULL) NdisFreeMemory(pPacketContent,BufLength, 0); DBGPRINT(" pt send complete free memory completen"); NdisFreeBuffer(firstBuffer); //释放buffer DBGPRINT(" pt send complete free completen"); //释放NdisDprFreePacketacket NdisDprFreePacket(Packet); DBGPRINT(" pt send complete all completen"); is_send=2; } else { NdisDprFreePacket(Packet); NdisMSendComplete(pAdapt->MiniportHandle, Pkt, Status); } 还是这样写啊 if(is_send==1) { DBGPRINT(" pt send complete call miniport send completen"); //释放NdisUnchainBufferAtFront NdisUnchainBufferAtFront(Packet ,&firstBuffer); //从MyPacket中解除buffer DBGPRINT(" pt send complete unchain completen"); NdisQueryBufferSafe(firstBuffer, &pPacketContent, &BufLength,32 );//取得buffer的虚地址 DBGPRINT(" pt send complete query buffer completen"); //释放NdisFreeMemory:pPacketContent if(pPacketContent!= NULL) NdisFreeMemory(pPacketContent,BufLength, 0); DBGPRINT(" pt send complete free memory completen"); NdisFreeBuffer(firstBuffer); //释放buffer DBGPRINT(" pt send complete free completen"); //释放NdisDprFreePacketacket NdisDprFreePacket(Packet); DBGPRINT(" pt send complete all completen"); is_send=2; } else { NdisDprFreePacket(Packet); } NdisMSendComplete(pAdapt->MiniportHandle, Pkt, Status); 谢谢老大的回答,肯求指教啊!!!!!!!!!!!!!!!! |
|
地板#
发布于:2005-01-13 11:02
篮屏信息是什么?
记录一下贴出来瞧瞧 |
|
|
地下室#
发布于:2005-01-13 17:00
为什么要在PtReceivePacket函数里调用发送数据得函数,你可以在MpSend里调用NdisSend呀
|
|
5楼#
发布于:2005-01-14 15:15
为什么要在PtReceivePacket函数里调用发送数据得函数,你可以在MpSend里调用NdisSend呀 问得好,估计是要将收到的数据转发 |
|
|