zgc7622
驱动小牛
驱动小牛
  • 注册日期2003-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分136分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1115回复:1

关于包描述符的问题!!!那位大吓能帮帮我呢??

楼主#
更多 发布于:2004-11-19 09:20
我在PtReceive中对我得到的包进行了修改,然后想吧这个数据包发送出去,我使用了下面设置包的过程,可是总是不正确!!不知道为什么????
PUCHAR pPacketContent;
............
............

SendTempPacket=(PNDIS_PACKET)pPacketContent;
// 在包池中分配包描述符
NdisDprAllocatePacket(&Status, &SendPacket, pAdapt->RecvPacketPoolHandle);
if (Status == NDIS_STATUS_SUCCESS)
{
// 在缓冲池中分配缓冲描述符,将包描述符与缓冲描述符关联。
NdisAllocateBuffer(&Status, &pPacketBuffer, pAdapt->RecvBufferPoolHandle, pPacketContent, PacketLen);
NdisChainBufferAtFront(SendPacket, pPacketBuffer);

Rsvd = (PRSVD)(SendPacket->ProtocolReserved);
Rsvd->OriginalPkt = SendTempPacket;
SendPacket->Private.Head->Next =NULL;//把buffer的链接下一个指针置0,即设置发送链表只有一个buffer元素
SendPacket->Private.Tail =NULL;//把Tail指针也置0

Rsvd = (PRSVD)(SendPacket->ProtocolReserved);
Rsvd->OriginalPkt = SendTempPacket;
SendPacket->Private.Flags = SendTempPacket->Private.Flags;
SendPacket->Private.Head = SendTempPacket->Private.Head;
SendPacket->Private.Tail = SendTempPacket->Private.Tail;
NdisSetPacketFlags(SendPacket, NDIS_FLAGS_DONT_LOOPBACK);//设置Flags

NdisMoveMemory(NDIS_OOB_DATA_FROM_PACKET(SendPacket),NDIS_OOB_DATA_FROM_PACKET(SendTempPacket),sizeof(NDIS_PACKET_OOB_DATA));
NdisIMCopySendPerPacketInfo(SendPacket, SendTempPacket);

NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(SendTempPacket, &MediaSpecificInfo, &MediaSpecificSize);
if_need_free=1; //标志置1,已经分配了内存,需要释放

NdisSend(&Status,pAdapt->BindingHandle,SendPacket);
if (Status!=NDIS_STATUS_PENDING)
{
DbgPrint("Status!=NDIS_STATUS_PENDING");
if (if_need_free==1)
{
NdisUnchainBufferAtFront(SendPacket,&pPacketBuffer);
NdisQueryBufferSafe(pPacketBuffer,&virtualaddress,&virtuallength,32);
NdisFreeBuffer(pPacketBuffer);
if_need_free=2;
}
NdisIMCopySendCompletePerPacketInfo(SendTempPacket,SendPacket);
NdisFreePacket(SendPacket);
}

}

[编辑 -  11/19/04 by  zgc7622]
harry_chen
驱动牛犊
驱动牛犊
  • 注册日期2002-07-08
  • 最后登录2007-05-25
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-26 16:34
请问,你是在tdi还是在 intermediate
??
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
游客

返回顶部