阅读:1387回复:1
MPSendPackets中为什么得不到TCP/IP的头信息?
各位高人:
我想在中间层驱动的MPSendPackets中把IP层传下来的包打出来,但是我发现PacketArray数组只有一个PNDIS_PACKET结构,且这个结构的内容直接是数据,找不到IP头和TCP头,我想问,如何才能得到完整的IP包结构?(我想在MPSendPackets中把IP层传来的包的源IP地址改掉),编译环境为WINXP + DDK |
|
最新喜欢:![]() |
沙发#
发布于:2005-02-17 17:25
抄了一段代码,希望有帮助。pPaketContent中的内容就是完整的包
行不行再讨论 //--------------------------------------------- int PacketSize; PUCHAR pPacketContent; PUCHAR pBuf; UINT BufLength; MDL * pNext; UINT i; //把数据包内容从Packet拷贝到pPacketContent NdisQueryPacket( Packet,NULL,NULL,NULL,&PacketSize); Status= NdisAllocateMemory( &pPacketContent, 2000, 0,HighestAcceptableMax); if (Status!=NDIS_STATUS_SUCCESS ) return Status; NdisZeroMemory (pPacketContent, 2000); NdisQueryBufferSafe(Packet->Private.Head, &pBuf, &BufLength, 32 ); NdisMoveMemory(pPacketContent, pBuf, BufLength); i = BufLength; pNext = Packet->Private.Head; for(;;) { if(pNext == Packet->Private.Tail) break; pNext = pNext->Next; //指针后移 if(pNext == NULL) break; NdisQueryBufferSafe(pNext,&pBuf,&BufLength,32); NdisMoveMemory(pPacketContent+i,pBuf,BufLength); i+=BufLength; } //数据拷贝完毕 //------------------------------------------------- |
|
|