ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
阅读:1777回复:5

困惑,得不到数据包协议类型

楼主#
更多 发布于:2008-06-19 23:27
Packet = PacketArray;
        NdisQueryPacket(Packet,NULL,&BufLength,&pBuffer,&PacketSize);
        if(!BufLength)
            DBGPRINT(("==Packet Query Failed"));

        // 分配缓冲区pPacketContent
        Status = NdisAllocateMemoryWithTag((PVOID *)&pPacketContent, PacketSize, 'maDN');
        if (Status!=NDIS_STATUS_SUCCESS )
            DBGPRINT(("==Memory Allocate Failed"));

        // 读取所有数据到pPacketContent
        NdisZeroMemory (pPacketContent, PacketSize);
        NdisAllocateBuffer(&Status,
            &pBuffer,
            pAdapt->SendPacketPoolHandle,
            pPacketContent,
            BufLength );
        NdisQueryBuffer(pBuffer, &CurrentBufferVA, &CurrentBufferLength);

        while(pBuffer != NULL)
        {
            NdisMoveMemory(pPacketContent+tempBuL, CurrentBufferVA, CurrentBufferLength);
            tempBuL += CurrentBufferLength;
            NdisGetNextBuffer(pBuffer, &pBuffer);
            if(pBuffer == NULL)
                break;
            NdisQueryBuffer(pBuffer, &CurrentBufferVA, &CurrentBufferLength);
        }

        DBGPRINT(("==>pPacketContent:%x\n",pPacketContent[23]));
这段代码在MPSendPackets函数里,pPacketContent[23]用来得到协议类型,为什么值总为0?
驱网无线,快乐无限
asm61
驱动牛犊
驱动牛犊
  • 注册日期2007-10-23
  • 最后登录2009-05-26
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望42点
  • 贡献值0点
  • 好评度29点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2008-06-20 10:18
收到的并不是只有IP包,也可能是ARP包,正确的做法应该是定义好各种协议头结构,然后去解析包。
ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-20 19:08
假设我要求得到的只有ip包,那为什么没有得到正确的值,我在上网,肯定会发送ip包
驱网无线,快乐无限
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
地板#
发布于:2008-06-22 00:33
打印出所有数据,检查
走走看看开源好 Solaris vs Linux
ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-06-22 14:33
打印了,原来是NdisGetNextBuffer(pBuffer, &pBuffer);这句有问题,pBuffer变成空的了,如何解决
驱网无线,快乐无限
ruby0602
驱动牛犊
驱动牛犊
  • 注册日期2007-10-12
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分9分
  • 威望63点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-06-22 21:02
搞定了,谢谢版主提醒
驱网无线,快乐无限
游客

返回顶部