3185|4

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

NDIS中间层过滤问题 [复制链接]

小子打算在NDIS中间层接收时仅对TCP包的内容进行修改,然后上传其他层自动继续处理。修改过程中包长度有变化,并在修改前后分别对包内容进行输出比较,也没有问题,包内容确实修改成功。但不知道为什么拿一个简单TCP发包工具进行测试,发现根本没办法连接,哪位给小子看看,下面是修改和上传代码:

……已将包内容读入pPacketContent中,DataOffset为内容长度
Newpktstatus = NdisAllocateMemoryWithTag( &MyPacketContent, DataOffset, TAG);
if (Newpktstatus!=NDIS_STATUS_SUCCESS )     
    break ;
                                               
NdisZeroMemory( MyPacketContent, DataOffset ) ;
//内容修改        AllocatLength 是修改后数据长度                               
AllocatLength = PacketDecryption( pPacketContent, MyPacketContent, DataOffset);

MyPacket->Private.Head=NULL;
MyPacket->Private.Tail=NULL;
                                                NdisAllocateBuffer(&Newpktstatus,&MyBuffer,pAdapt->RecvPacketPoolHandle,MyPacketContent,AllocatLength);
                                               
if (Newpktstatus!=NDIS_STATUS_SUCCESS )     
        break;
NdisChainBufferAtFront(MyPacket, MyBuffer);
                                               
MyPacket->Private.Head->Next=NULL;
MyPacket->Private.TotalLength = AllocatLength;
                                               


if (pAdapt->MiniportHandle != NULL)
{
        NDIS_SET_PACKET_STATUS(MyPacket, NDIS_STATUS_RESOURCES);
        NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1);
        NdisUnchainBufferAtFront(MyPacket,&MyBuffer);       
        NdisQueryBufferSafe(MyBuffer,&MyPacketContent,&BufLength,32);                                                 
                                                       
        if(MyPacketContent != NULL)
               NdisFreeMemory(MyPacketContent,BufLength,0);
        if(pPacketContent != NULL)
               NdisFreeMemory(pPacketContent,TotalLength,0);
                                                       
        NdisFreeBuffer(MyBuffer);
        NdisDprFreePacket(MyPacket);       
                                                       
        break;
                                                       
}

最新回复

校验需要重新计算 都要改。  详情 回复 发表于 2010-1-26 15:24
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帮顶下。

MARK.
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
改了包内容,记得修改校验码
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
小子是在发送的时候对包内容加密,而传给协议驱动前在中间层进行解密还原,校验和也需要修改吗?IP包和TCP包的校验和都需要修改吗,能不能详细告诉小子,具体校验和是在那层起的作用呢?
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
校验需要重新计算 都要改。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表