阅读:1189回复:4
关于PtReceive的一个问题
当LookAheadBufferSize >= PacketSize,说明HeaderBuffer + LookAHeaderBuffer就是就包含了全部数据(格式:ethernet header,IP header,data...)
不是的话,说明没有包含全部数据。通过NdisTransferData,forwards a request to copy data received on the underlying NIC into a protocol-supplied packet. 这里分配的NDIS_BUFFER然后和headerbuffer、lookahederbuffer凑在一起,就是全部数据了(格式同上)。 如果没有包含全部数据的情况下,又没有transferdata,那么下一个ptreceive的lookaheaderbuffer应该是上个ptreceive的lookaheaderbuffer的延续,而headerbuffer还是一样的。不知道这样说是不是对的,不敢确定,谁能给个肯定的说法? [编辑 - 10/22/03 by arthurtu] |
|
沙发#
发布于:2003-10-22 15:31
我觉得下一个ptreceive的lookaheaderbuffer应该还是上个ptreceive的lookaheaderbuffer,毕竟上个完整的数据没有上传完,感觉而已,呵呵!
|
|
板凳#
发布于:2003-10-22 21:31
[编辑 - 12/2/03 by antspower] |
|
|
地板#
发布于:2003-10-23 14:25
看passthru,我的想法是:
如果没有transferdata,就call NdisMXXXIndicateReceive,告诉上层的protocol,有包(或部分数据)来了(根据DDK的说法)。上面的是transferdata还是继续上传,就管不上了 :D但是总会transferdata的,把剩余的数据取走。 passthru的MPTransferData没有干什么,直接下传,so如果上面的transferdata的话,相当于直接从NIC得到数据。 right? :D |
|
地下室#
发布于:2003-10-23 14:53
根据老胡的老帖子,我的想法似乎是对的。
|
|