so927
驱动牛犊
驱动牛犊
  • 注册日期2008-03-01
  • 最后登录2010-08-20
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1873回复:1

USB网卡驱动导致ARPRcvPacket抛出异常,请帮忙分析一下。

楼主#
更多 发布于:2010-05-15 19:47
USB网卡驱动程序。

能够正常获取IP地址等,也能ping,我使用TCP工具(WinCE)与PC通讯,WinCE发送数据是OK的,但是从PC往WinCE发送数据时,CE就会抛出一个异常,经过分析map文件,这个异常是在ARPRcvPacket函数中抛出的。

从我的驱动里面看,就是当接收数据线程的代码运行到下面时函数时,出现的



NDIS_STATUS
IndicatePacket(PMP_ADAPTER Adapter, PUCHAR DataBuf, ULONG DataLen)
{
    NDIS_STATUS            status;
    PNDIS_BUFFER        PacketBuf;
         PNDIS_PACKET        MyPacket = NULL;

    NdisAllocatePacket(&status, &MyPacket, Adapter->PacketPoolHandle);
    if (status != NDIS_STATUS_SUCCESS)
    {
        return status;
    }

    NdisAllocateBuffer(&status, &PacketBuf, Adapter->BufferPoolHandle,(PVOID)DataBuf, DataLen);
    if (status != NDIS_STATUS_SUCCESS)
    {
        return status;
    }

    NdisChainBufferAtFront(MyPacket, PacketBuf);
    
    MyPacket->Private.Head->Next = NULL;
    MyPacket->Private.Tail = NULL;

    NDIS_SET_PACKET_HEADER_SIZE(MyPacket, 14);

         // 异常就是在这里抛出的
    NdisMIndicateReceivePacket(Adapter->AdapterHandle, &MyPacket, 1);
    return status;
}



很奇怪的是,驱动刚加载时,这个函数也会被调用,一般就是几十个字节,不会出现异常,任意运行多久都没有问题。但是当我打开IE,或者其他工具,开始接收数据后,就会出现异常了。


请大家帮我分析一下,谢谢
oleson
驱动牛犊
驱动牛犊
  • 注册日期2009-08-18
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-05-17 16:52
内存泄露。

游客

返回顶部