beckzp
驱动牛犊
驱动牛犊
  • 注册日期2004-07-02
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1258回复:1

急问一个IP截包的程序

楼主#
更多 发布于:2004-07-12 21:04
我在做一个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);
}
darkme
驱动牛犊
驱动牛犊
  • 注册日期2004-07-17
  • 最后登录2006-03-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-07 10:21
大哥?这个问题搞定没???
游客

返回顶部