阅读:1952回复:7
我对TransferData的理解究竟哪里出了问题?
我的理解是这样的,请各位看看我是哪里理解的不对
在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里面说的不应该调用这个函数的阿? 我哪里理解的不对? |
|
|
沙发#
发布于:2004-09-22 11:48
但是我在这里直接打印packetlen大小的内容是全的,我忘 了,我的网卡不会调用transferData
|
|
|
板凳#
发布于:2004-09-22 10:17
根据我的理解,PtPacketReceive和PtReceive的调用是靠网卡的。
以前的网卡好象都调用PtReceive,新的网卡都调用PtPacketReceive 至于用户代码上,我想应该可以定制。 [PacketSize > LookaheadSize] 在这里,我理解为LookaheadSize是 实际收到数据包大小,PacketSize是要收的数据包大小。因为没有收全所以再调用TransferData来收取剩下的部分。 |
|
地板#
发布于:2004-09-22 09:28
点留言上的给分就OK了
|
|
|
地下室#
发布于:2004-09-21 17:51
怎么给,我是第一次提问?
|
|
|
5楼#
发布于:2004-09-21 17:49
哎 ,我简直晕 ,我以为是.......给分
|
|
|
6楼#
发布于:2004-09-21 17:46
呵呵,别着急,我想明白了自然给分
|
|
|
7楼#
发布于:2004-09-21 13:57
PPRecieve中调用NdisMIndicateReceivePacke目的是向上层协议驱动指示数据包,然后上层驱动会调用ProtocolReceivePacket接着处理这个数据包,当然不会调用NdistransferData了,至于ddk中的那段话也就是这个意思(个人看法)!
而passthru中packetsize>lookaheadsize时,TransferData是肯定会被掉用,而msdn的那句话告诉楼主的是overlying driver不会调用它本身的PPRecieve,而不是passthru,楼主要搞清楚NDIS的层次结构 赶快给分吧 |
|
|