magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1250回复:4

packet中的PacketPeceivePacket何时才被调用???

楼主#
更多 发布于:2002-04-09 16:41
小弟用softice怎么总是跟踪不到??? ping之不行???
需用怎样的条件才能到之。如ping等???
[color=red]大头鬼! :P[/color]
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-09 21:52
PtReceivePacket是PtReceive的多包版本,PtReceive是必须的,
PtReceivePacket是Optional的,说如果你只注册PtReceive的话,
数据报都会走PtReceive;如果你两个函数都注册的话,当下层
整包或多包向上递的话,会进到PtReceivePacket中,如果下层把
一个数据报分两次向上递的话,只会进到PtReceive中。

好像一般的情况下层都是一个包分两次向上递,我为了简便,一般
都只注册PtReceive,所以没怎么见过进到PtReceivePacket中的情
况,但我为了处理数据包的方便,我的IM向上递包时都是整包向上
递的,这样有个好处是你不需要提供MpTransferData函数。

不知对你可有帮助?
写驱动不如买足彩!!
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-09 22:34
TonyHuyan大虾:
可否对下一句进一步解释之
//////////
好像一般的情况下层都是一个包分两次向上递.
//////////
think all the same!!!




packet中的PacketPeceivePacket何时才被调用???
怎样的条件下才能跟踪到??? (我已用高强度大数据量测试过!)
小弟还是不明白?望各位大虾指点一二!???
[color=red]大头鬼! :P[/color]
SharpShooter
驱动小牛
驱动小牛
  • 注册日期2002-04-07
  • 最后登录2013-07-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-09 23:52
可能也不能说是一般情况吧,只是我没怎么遇到过而已。

你所说的Packet是协议驱动,如果你看看Passthru,
它是个中层驱动,除了像协议驱动一样要注册ProtocolXxx函数
以外,还要注册MiniportXxx函数,这个你都知道。

如果你看Passthru的话,它什么事情都不做,每当下层有包
往上递,它立即向上提交(调用NdisMEthIndicateReceive),这时常常是下层只提交上来整个数据报的一部分,当下层驱动把整个包都
提交完之后,它告诉Ndis,Ndis会调用你的(Passthru的)PtReceiveComplete,这时你可以告诉再上层的驱动,整个数据报已全部到达(调用NdisMEthIndicateReceiveComplete)。

如果你是整包向上提交的话,则调用NdisMIndicateReceivePacket,
并将其第三个参数填为1(提交包的数量)。

总而言之,当下层调用NdisXxxIndicateReceive时,上层协议驱动进到PtReceive中,当下层调用NdisMIndicateReceivePacket时,如果协议驱动(Packet)支持
PtReceivePacket,则进入其中,否则仍然进入PtReceive中。

这样说可以吗?有说错的地方,敬请指正!
写驱动不如买足彩!!
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-10 11:29
TonyHuyan大虾:
引用:
////////
总而言之,当下层调用NdisXxxIndicateReceive时,上层协议驱动进到PtReceive中,当下层调用NdisMIndicateReceivePacket时,如果协议驱动(Packet)支持PtReceivePacket,则进入其中,否则仍然进入PtReceive中。
///////

目前也只能先认为是这样。但不确定!!!
packet中的PacketPeceivePacket只是提供给下一层的一个可选的接口,被调用与否取决于下一层。

十分感谢TonyHuyan大虾!!!
[color=red]大头鬼! :P[/color]
游客

返回顶部