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);
- [color=#FF0000]// 异常就是在这里抛出的
- NdisMIndicateReceivePacket(Adapter->AdapterHandle, &MyPacket, 1);
- [/color]
- return status;
- }
很奇怪的是,驱动刚加载时,这个函数也会被调用,一般就是几十个字节,不会出现异常,任意运行多久都没有问题。但是当我打开IE,或者其他工具,开始接收数据后,就会出现异常了。
请大家帮我分析一下,谢谢