阅读:1873回复:1
USB网卡驱动导致ARPRcvPacket抛出异常,请帮忙分析一下。
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,或者其他工具,开始接收数据后,就会出现异常了。 请大家帮我分析一下,谢谢 |
|
沙发#
发布于:2010-05-17 16:52
内存泄露。
|
|