wnl0008
驱动牛犊
驱动牛犊
  • 注册日期2007-06-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分2分
  • 威望33点
  • 贡献值0点
  • 好评度31点
  • 原创分0分
  • 专家分0分
阅读:1211回复:0

请教各位高手这段代码有问题吗?

楼主#
更多 发布于:2007-10-13 12:33
这段接收数据包代码是用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);
                     ........
}
各位高手,可以给点建议吗?
游客

返回顶部