laotiu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1951回复:7

我对TransferData的理解究竟哪里出了问题?

楼主#
更多 发布于:2004-09-21 10:54
我的理解是这样的,请各位看看我是哪里理解的不对
在passthru里面我的网卡接受包时用的是PPRecieve(),这个函数总是调用NdisMIndicateReceivePacke()吧?应该是是指示上层协议调用ndisRecievePacket(),因此上层协议就不需要ndisTransferData()
中间驱动就没有必要注册TransferData函数了。
ddk里面说If the intermediate driver always indicates packets to the overlying driver by calling NdisMIndicateReceivePacket it need not provide a MiniportTransferData function.

可是Passthru在Rtl8139上测试是时当packetsize>lookaheadsize时

TransferData会被调用。按ddk里面说的不应该调用这个函数的阿?
我哪里理解的不对?
QQ:50528814,技术交流
sword3i
驱动牛犊
驱动牛犊
  • 注册日期2003-07-25
  • 最后登录2013-01-07
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望112点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-21 13:57
PPRecieve中调用NdisMIndicateReceivePacke目的是向上层协议驱动指示数据包,然后上层驱动会调用ProtocolReceivePacket接着处理这个数据包,当然不会调用NdistransferData了,至于ddk中的那段话也就是这个意思(个人看法)!


而passthru中packetsize>lookaheadsize时,TransferData是肯定会被掉用,而msdn的那句话告诉楼主的是overlying driver不会调用它本身的PPRecieve,而不是passthru,楼主要搞清楚NDIS的层次结构


赶快给分吧
随风奔跑自由是方向 追逐雷和闪电的力量 把浩瀚的海洋装进我胸膛 即使再小的帆也能远航 随风飞翔有梦作翅膀 敢爱敢做勇敢闯一闯 哪怕遇见再大的风险再大的浪 也会有默契的目光 努力蹭分! ..................
laotiu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-21 17:46
呵呵,别着急,我想明白了自然给分
QQ:50528814,技术交流
laotiu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-21 17:49
哎 ,我简直晕 ,我以为是.......给分
QQ:50528814,技术交流
laotiu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-21 17:51
怎么给,我是第一次提问?
QQ:50528814,技术交流
sword3i
驱动牛犊
驱动牛犊
  • 注册日期2003-07-25
  • 最后登录2013-01-07
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望112点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-22 09:28
点留言上的给分就OK了
随风奔跑自由是方向 追逐雷和闪电的力量 把浩瀚的海洋装进我胸膛 即使再小的帆也能远航 随风飞翔有梦作翅膀 敢爱敢做勇敢闯一闯 哪怕遇见再大的风险再大的浪 也会有默契的目光 努力蹭分! ..................
genaral
驱动牛犊
驱动牛犊
  • 注册日期2003-08-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-22 10:17
根据我的理解,PtPacketReceive和PtReceive的调用是靠网卡的。
以前的网卡好象都调用PtReceive,新的网卡都调用PtPacketReceive
至于用户代码上,我想应该可以定制。

[PacketSize > LookaheadSize] 在这里,我理解为LookaheadSize是
实际收到数据包大小,PacketSize是要收的数据包大小。因为没有收全所以再调用TransferData来收取剩下的部分。
laotiu
驱动牛犊
驱动牛犊
  • 注册日期2003-05-26
  • 最后登录2005-04-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-22 11:48
但是我在这里直接打印packetlen大小的内容是全的,我忘 了,我的网卡不会调用transferData
QQ:50528814,技术交流
游客

返回顶部