阅读:1211回复:0
请教各位高手这段代码有问题吗?
这段接收数据包代码是用DriverStudio写的,在装上后系统没反应,对发来数据包总是没应答。
主要流程:ARM处理器把从网口接受的数据包写入双端口存储器,中断通知网卡驱动,然后Windows网卡驱动从双端口存储器里面读取数据包,然后交付给上层,双端口存储器前16字节作为命令缓冲区,数据从第17字节开始。代码如下: VOID Ch365NetworkAdapter::ReceivePacketHandler() { T.Trace(__FUNCTION__"**\n"); UINT packetlength; if(!m_bInitializeComplete) return; NdisReadRegisterUlong(//存储器第三、四字节是数据包的长度 (PULONG)(m_pArmMemoryBase+2), &packetlength ); //m_ReceivePacket在Initialize例程中预先初始化 KNdisBuffer buffer = m_ReceivePacket.QueryFirstBuffer(); buffer.AdjustLength(packetlength); T.Trace("Receive packet,packet length:%d\n",packetlength); for(UINT i=0;i<packetlength;i++) { NdisReadRegisterUchar(//从双端口存储器读取数据到NdisBuffer结构 m_pArmMemoryBase+COMMAND_BUFFERSIZE+i, (PUCHAR)buffer.Address()+i ); T.Trace("%d",*((PUCHAR)buffer.Address()+i)); } T.Trace("\n"); IndicateReceive(m_ReceivePacket); ........ } 各位高手,可以给点建议吗? |
|