xdayong
驱动牛犊
驱动牛犊
  • 注册日期2011-06-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2129回复:2

NDIS中NdisMIndicateReceivePacket蓝屏,如何处理

楼主#
更多 发布于:2011-06-15 15:22

INT
PtReceivePacket(
    IN NDIS_HANDLE            ProtocolBindingContext,
    IN PNDIS_PACKET           Packet
    )
{
。。。。//此处是变量定义
NdisInterlockedIncrement(&pAdapt->PassThruStats.PTRcvPktSeen);

  (VOID)NdisIMGetCurrentPacketStack(Packet, &Remaining);
    if (Remaining)
    {
        //
        // We can reuse "Packet". Indicate it up and be done with it.
        //
        Status = NDIS_GET_PACKET_STATUS(Packet);
//*****************
//对数据进行包进行加解密操作,checksum的值也重新设定了
//******************
        if (pAdapt->MiniportHandle != NULL)
        {
            NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &Packet, 1);//此处会随机蓝屏??
        }
        return((Status != NDIS_STATUS_RESOURCES) ? 1 : 0);
    }
}


上面是这个函数比较完整的代码,使用NdisMIndicateReceivePacket时,有哪些注意事项么?
急啊!!!!!!!!!!!
有做过的指点下兄弟。本人QQ:475338627
iihacker
论坛版主
论坛版主
  • 注册日期2010-01-07
  • 最后登录2017-08-16
  • 粉丝5
  • 关注8
  • 积分377分
  • 威望1941点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2011-06-20 22:34
还是那个问题。我的个人观点:

 (VOID)NdisIMGetCurrentPacketStack(Packet, &Remaining);
    if (Remaining)
{
   这个里面你操作的包,不是你自己的包。最好不要加解密。 可以把这个if()删除
}
NDIS 1群74755180 NDIS 2群182802097 交换机软硬件技术群 187471475 FPGA PCI PCIE 群187471817
xdayong
驱动牛犊
驱动牛犊
  • 注册日期2011-06-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-06-30 14:54
修改了下代码,以前是在原来包的基础上进行修改的,现在是自己构造一个新包,对这个新包进行一个加解密操作。目前测试还没发现蓝屏现象
游客

返回顶部