阅读:1259回复:1
急问一个IP截包的程序
我在做一个IP数据报分析的NDIS驱动,已经在PtReceive中加好了控制程序,现在需要在MpSendPackets加数据包的分析,请大牛帮我看看下面的一部分程序,为什么pBakPacket永远是NULL,没有取到值,多谢
PADAPT pAdapt = (PADAPT)MiniportAdapterContext; NDIS_STATUS Status; UINT i; PVOID MediaSpecificInfo = NULL; UINT MediaSpecificInfoSize = 0; IP_P_PACKET p_ip; PNDIS_BUFFER pPacketBuffer; PNDIS_PACKET pBakPacket; PNDIS_BUFFER pBakBuffer; UINT BufferLen; PUCHAR pBakContent; PUCHAR pPacketContent; UINT OffsetSize, Result, PacketLen; // NDIS_STATUS Status; DBGPRINT(("==> [MPSendPackets]\n")); for (i = 0; i < NumberOfPackets; i++) { PNDIS_PACKET Packet, MyPacket; PRSVD Rsvd; Packet = PacketArray; Rsvd = (PRSVD)(Packet->MiniportReserved); // pBakPacket 里是 HeaderBuffer + LookAheadBuffer 的内容。 pBakPacket = (PNDIS_PACKET)(Rsvd->OriginalPkt); if (pBakPacket!=NULL)***************** { Status = NdisAllocateMemory(&pPacketContent, BUFFER_SIZE, 0, HighestAcceptableMax); CopyPacket2Buffer(pBakPacket, pPacketContent, &OffsetSize); CopyPacket2Buffer(Packet, pPacketContent+OffsetSize, &PacketLen); PacketLen += OffsetSize; // 释放包描述符pBakPacket、缓冲描述符pBakBuffer、内存pBakContent。 NdisUnchainBufferAtFront(pBakPacket, &pBakBuffer); NdisQueryBufferSafe(pBakBuffer, &pBakContent, &BufferLen, 32); NdisFreeBuffer(pBakBuffer); NdisFreeMemory(pBakContent, BUFFER_SIZE, 0); NdisFreePacket(pBakPacket); memset(Packet->MiniportReserved, 0, sizeof(Packet->MiniportReserved)); NdisUnchainBufferAtFront(Packet, &pPacketBuffer); NdisQueryBufferSafe(pPacketBuffer, &pBakContent, &BufferLen, 32); NdisFreeBuffer(pPacketBuffer); NdisFreeMemory(pBakContent, BUFFER_SIZE, 0); } |
|
沙发#
发布于:2004-09-07 10:21
大哥?这个问题搞定没???
|
|