首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

NDIS中间层过滤有关问题

2012-03-27 
NDIS中间层过滤问题小子打算在NDIS中间层接收时仅对TCP包的内容进行修改,然后上传其他层自动继续处理。修改

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;

}

[解决办法]
改了包内容,记得修改校验码
[解决办法]
校验需要重新计算 都要改。

热点排行