ay19880703
驱动牛犊
驱动牛犊
  • 注册日期2008-05-24
  • 最后登录2010-03-25
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望120点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1323回复:0

在PTreceivePacket中不知为何老是蓝屏的代码....

楼主#
更多 发布于:2008-08-07 01:10
xpassthru里面的例子  我就在PTreceivePacket掉了这个函数把MYPACKET传了进来

VOID PacketAnlysis(
    IN PNDIS_PACKET packet
)
{
    NDIS_STATUS status ;
    UINT TotalPacketLength = 0 , copysize = 0 , i = 0 ;
    PUCHAR mybuffer = NULL ,tembuffer = NULL ;
    MDL * pmdl ;

    NdisQueryPacket(packet
        , NULL
        , NULL
        , NULL
        , &TotalPacketLength
        );

    status = NdisAllocateMemoryWithTag( &mybuffer, 2048, TAG);

    ASSERT( status == NDIS_STATUS_SUCCESS ) ;

    NdisZeroMemory( &mybuffer, 2048 );

    NdisQueryBufferSafe(
                                packet->Private.Head,
                                &tembuffer,
                                &copysize,
                                NormalPagePriority
                                );

    NdisMoveMemory(mybuffer, tembuffer, copysize) ;

    i = copysize ;

    pmdl = packet->Private.Head ;

    while(1)
    {
        if(pmdl->Next == packet->Private.Tail )
            break ;

        pmdl = pmdl->Next ;

        if(pmdl == NULL )
           break ;

    NdisQueryBufferSafe(
                                pmdl,
                                &tembuffer,
                                &copysize,
                                NormalPagePriority
                                ) ;

    NdisMoveMemory(mybuffer + i, tembuffer, copysize) ;

    i += copysize ;

    }

    //数据拷贝完毕,开始分析数据



    

    DbgPrint("The data:%u",mybuffer) ;


    //释放内存
    NdisFreeMemory(mybuffer , 2048 , 0) ;
}
游客

返回顶部