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

dreamning   2010-5-15 19:44 楼主
USB网卡驱动程序。

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

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

  1. NDIS_STATUS
  2. IndicatePacket(PMP_ADAPTER Adapter, PUCHAR DataBuf, ULONG DataLen)
  3. {
  4.         NDIS_STATUS                        status;
  5.         PNDIS_BUFFER                PacketBuf;
  6.          PNDIS_PACKET                MyPacket = NULL;

  7.     NdisAllocatePacket(&status, &MyPacket, Adapter->PacketPoolHandle);
  8.         if (status != NDIS_STATUS_SUCCESS)
  9.         {
  10.         return status;
  11.         }

  12.         NdisAllocateBuffer(&status, &PacketBuf, Adapter->BufferPoolHandle,(PVOID)DataBuf, DataLen);
  13.         if (status != NDIS_STATUS_SUCCESS)
  14.         {
  15.         return status;
  16.         }

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

  21.         NDIS_SET_PACKET_HEADER_SIZE(MyPacket, 14);

  22.          [color=#FF0000]// 异常就是在这里抛出的
  23.         NdisMIndicateReceivePacket(Adapter->AdapterHandle, &MyPacket, 1);
  24. [/color]
  25.         return status;
  26. }



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


请大家帮我分析一下,谢谢

回复评论 (3)

debug看看。
点赞  2010-5-16 10:12
帮你顶
点赞  2010-5-16 11:25
跟综下,不然这样也看不出问题
点赞  2010-5-17 15:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复