peekaboo
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1446回复:6

关于packet的一点迷惑!

楼主#
更多 发布于:2003-05-17 10:16
    我对ddk的packet例子中,read部分有点不解 ,它在里面定义了自己的一个pPacket,在PacketRecieveIdicate中来保存来自网卡的数据,但是在完成例程以后,在PacketTransferDataComplete中就把自定义的包结构释放掉了 ,那么,如果我要对接收来的数据进行处理的话(比如修改以后再向上或者直接向下发送), 要在哪里开始处理呢?  希望大侠们能回答我,谢谢!     ^_^ ^_^
sdssly
驱动牛犊
驱动牛犊
  • 注册日期2003-03-04
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分344分
  • 威望47点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-17 11:24
关注!
我也想修改包再继续传输.现在正在看passthru.它可以实现.不指导packet怎么做,能不能做?
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-19 11:30
   我对ddk的packet例子中,read部分有点不解 ,它在里面定义了自己的一个pPacket,在PacketRecieveIdicate中来保存来自网卡的数据,但是在完成例程以后,在PacketTransferDataComplete中就把自定义的包结构释放掉了 ,那么,如果我要对接收来的数据进行处理的话(比如修改以后再向上或者直接向下发送), 要在哪里开始处理呢?  希望大侠们能回答我,谢谢!     ^_^ ^_^

前几个月曾经看过ddk的那个packet代码。它的receive的处理过程好像是这样的:
1、首先上层win32 app向packet driver发送一个read的irp,本驱动把它放在队列里边。
2、当该驱动receive一个packet以后,如果当前的read irp queue里边没有irp的话,就是放掉packet。如果有的话就把该packet返回给这个irp。
3、所以整个的处理过程都得需要win32 app的介入才能得到packet.如果win32一直都不call readfile,那么packet driver就一直丢弃packet。

以上仅是我个人的观点。仅供参考。我也很想知道正确的流程是什么。
peekaboo
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-19 23:13
   问题是,我现在想知道当数据通过NdisTransferData传到Packet
后,我在哪才能进行所收到包的判断和修改?

难道是在PacketTransferDataComplete函数中吗??
peekaboo
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2003-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-19 23:16
有人能提点一下吗?   没开窍呀,帮帮帮!
wangsj47
驱动牛犊
驱动牛犊
  • 注册日期2003-04-11
  • 最后登录2012-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-20 10:37
关注中!
~~~~~~~~~~~~~~~~~~~~~~~~~~~ 初来乍道,一头雾水~~~~ E-Mail:wangsj47@sina.com
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-20 13:55
  问题是,我现在想知道当数据通过NdisTransferData传到Packet
后,我在哪才能进行所收到包的判断和修改?

难道是在PacketTransferDataComplete函数中吗??


不是PacketTransferDataComplete函数处理还能是别的函数吗?
    This is a required function unless the protocol binds itself exclusively to underlying NIC driver(s) that indicate packets with NdisMIndicateReceivePacket. ProtocolTransferDataComplete is called when a previous call to NdisTransferData returned NDIS_STATUS_PENDING and the remaining data has been copied into the protocol-supplied buffers chained to a given packet descriptor.
我觉得应该在这个函数里边对剩余的data进行处理。
游客

返回顶部