injaji
驱动牛犊
驱动牛犊
  • 注册日期2004-03-27
  • 最后登录2020-03-27
  • 粉丝0
  • 关注0
  • 积分53分
  • 威望46点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2798回复:5

在ptreceive中调用NdisMIndicateReceivePacket时蓝屏,向各位大侠求助!

楼主#
更多 发布于:2004-04-23 13:01
我在passthru的ptreceive函数中首先把数据包中的内容拷贝到自己分配的缓冲区中,然后重新组包,调用NdisMIndicateReceivePacket
函数指示上层接收。
但一调用NdisMIndicateReceivePacket就蓝屏重起,我一连几天都搞不定。那位大侠能帮小第一把,定重分酬谢!!!!
lucy_huiminz
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2009-02-11
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望6点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-23 13:17
会不会是你使用的那块内存释放的问题?
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-23 15:40
贴出你的代码来瞧瞧
root60931
驱动大牛
驱动大牛
  • 注册日期2002-10-25
  • 最后登录2023-10-29
  • 粉丝2
  • 关注0
  • 积分1013分
  • 威望432点
  • 贡献值0点
  • 好评度311点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-04-25 22:12
是不是你在MpReturnPacket中释放内存时有错误
好好学习,天天向上! root60931@gmail.com
youngyt
驱动牛犊
驱动牛犊
  • 注册日期2003-11-23
  • 最后登录2006-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-26 11:46
组的包有问题,贴完整代码上来。
zzq191
驱动中牛
驱动中牛
  • 注册日期2001-08-09
  • 最后登录2018-05-29
  • 粉丝17
  • 关注0
  • 积分1041分
  • 威望716点
  • 贡献值0点
  • 好评度318点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2010-01-25 21:44
        // 构造一个封包
        NdisAllocatePacket(&Status, &MyPacket, pAdapt->RecvPacketPoolHandle);
        if(Status != NDIS_STATUS_SUCCESS)
        {
            DbgPrint("NdisAllocatePacket Status=0x%x\n", Status);

            return Status;
        }

        // 分配缓冲区
        NdisAllocateMemoryWithTag(&Mypacketbuf, size, TAG);
        RtlZeroMemory(Mypacketbuf, size);
        NdisMoveMemory(Mypacketbuf, pPacketContent, size); //这个是长度
        
        //分配缓冲区描述符
        NdisAllocateBuffer(&Status,
                           &MyPacketcache,
                           pAdapt->RecvPacketPoolHandle,
                           Mypacketbuf,
                           size);        
        if(Status != NDIS_STATUS_SUCCESS)
        {
            DbgPrint("NdisAllocateBuffer Status=0x%x\n", Status);

            NdisFreeMemory(Mypacketbuf, size, TAG);
            NdisFreePacket(MyPacket);

            return Status;
        }
        
        //把数据加到缓冲区里面
        NdisChainBufferAtFront(MyPacket, MyPacketcache);

        //这个必须设置
        NDIS_SET_PACKET_STATUS(MyPacket, NDIS_STATUS_RESOURCES);
                
        RecvRsvd = (PRSVD)(MyPacket->ProtocolReserved);
        RecvRsvd->OriginalPkt = MyPacket;
        RecvRsvd->IsPrivate = 1;          //给自己的包一个标志

        NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1);
QQ:416331891,承接windows下应用和驱动的开发,雅虎通:zzq191, Email:zzq191@21cn.com
游客

返回顶部