true
驱动牛犊
驱动牛犊
  • 注册日期2001-07-25
  • 最后登录2003-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1541回复:3

初级问题:passthru中怎么把要send的mypacket变为ip包?

楼主#
更多 发布于:2002-07-24 10:45
谢谢,我刚开始接触passthru,请问怎么将要发送的mypacket中的包数据得到,改了tcp数据段后,再返回给mypacket?请给我段代码,谢谢
-
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-24 15:45
你可以建一个新的packet,一个buffer,一段memory,把原来的数据包里的数据都copy到新的包的memory里,这样这段memory里的数据就是一个带有mac头的ip包了,你想怎么处理都成!

原始包最好不要动,以便在sendcomplete里面用。

能用到的主要函数大概有这些,当然还有很多的free函数和包信息copy函数,还得用到保留位,保存原始的包!

NdisQueryPacket
NdisAllocatePacket
NdisAllocateMemoryWithTag
NdisAllocateBuffer
NdisChainBufferAtFront
NdisCopyFromPacketToPacket
fenger_li
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-24 16:03
最重要的是资源的释放!

嗬嗬!

有点意思。。。 呵呵!
scnuiori
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2009-05-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-25 00:57
分配内存,把packet拷贝过去。千万不要动原来的数据包。如果数据包增加了长度的话,可能需要修改MTU。 在request的时候修改。而数据包的释放,需要在sendcomplete后,释放掉你的资源,把数据包的资源释放回到原来的pool里去。
游客

返回顶部