20楼#
发布于:2004-06-14 13:45
youngyt:什么时候有时间?一起吃顿饭
|
|
21楼#
发布于:2004-09-03 22:47
请问最后调试通过了吧?
能把代码贴上来看看吗? 在获得包的内容之后(这里我只针对PacketSize<=LookAheadBufferSize,即LookAheadBuffer中包含了全部数据的情况进行处理。) //这里对pPacketContent进行判断,如果是arp广播包,则进行转发 if(pPacketContent[12] == 8 && pPacketContent[13] == 6) { DbgPrint(" Deal with ARP packets "); NdisAllocatePacket(&Status, &MyPacket, pAdapt->SendPacketPoolHandle); if (Status != NDIS_STATUS_SUCCESS) { DbgPrint("allocate packet failed\n"); return(Status); } NdisAllocateBuffer(&Status, &pPacketBuffer, pAdapt->SendBufferPoolHandle, pPacketContent, PacketLen); if (Status != NDIS_STATUS_SUCCESS) { DbgPrint("allocate buffer failed\n"); return(Status); } NdisChainBufferAtFront( MyPacket, pPacketBuffer); Rsvd = (PRSVD)(MyPacket->ProtocolReserved); Rsvd->OriginalPkt = NULL; MyPacket->Private.Head->Next=NULL; MyPacket->Private.Tail=NULL; NdisSetPacketFlags(MyPacket, NDIS_FLAGS_DONT_LOOPBACK); //如果屏蔽掉下面这句,则不会死机 NdisSend(&Status, pAdapt->BindingHandle, MyPacket);//发送 if(Status != NDIS_STATUS_PENDING) { DbgPrint("Call NdisSend() Status !=NDIS_STATUS_PENDING"); //这里我不清楚Packet到底指哪个,所以注释掉。 //NdisIMCopySendCompletePerPacketInfo (Packet, MyPacket); NdisUnchainBufferAtFront(MyPacket ,&pPacketBuffer); NdisQueryBufferSafe(pPacketBuffer,(PVOID *)&pPacketContent,&BufLength,32); NdisFreeBuffer(pPacketBuffer); NdisFreeMemory(pPacketContent,BUFFER_SIZE,0); NdisDprFreePacket(MyPacket); } return(Status); } 在mpsend和ptsendcomplete中我发送的数据包的分配和构造以及释放都是我来完成的。所以对于在ptreceive中进行转发我也是参考mpsend中的做法。可是不知道为什么会蓝屏。 jackieky大哥,如果可以的话帮小弟一把。 我的邮箱是yiyang2000@eyou.com MSN:moneyyiyang@hotmail.com |
|
上一页
下一页