banana
驱动牛犊
驱动牛犊
  • 注册日期2001-07-28
  • 最后登录2001-12-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2332回复:2

在PtReceive()中怎样调用NdisTransferData()??

楼主#
更多 发布于:2001-10-30 17:34
   偶想在PtReceive()中完成IP包的过滤:想不通过PtReceivePacket(),但在PtReceive()中对NdisTransferData()函数的调用有疑问:

NdisTransferData()函数的参数:
  NdisTransferData(
    OUT PNDIS_STATUS  Status,
    IN NDIS_HANDLE  NdisBindingHandle,
    IN NDIS_HANDLE  MacReceiveContext,
    IN UINT  ByteOffset,
    IN UINT  BytesToTransfer,
    IN OUT PNDIS_PACKET  Packet,
    OUT PUINT  BytesTransferred
    );

    问ByteOffset,BytesToTransfer是不是用IP包的长度PacketSize,再减去LookAheadBufferSize得到?要减去HeaderBufferSize么?出来的Packet里有包括LookAheadBuffer么?

    当LookAheadBufferSize<PacketSize时,有
   {
      NdisDprAllocatePacket();
    
      NdisMoveMemory()

      NdisTransferData()

      。。。。
   }

    但想知道OOB数据应该在哪设置?NdisMoveMemory()函数又该怎样拷贝才合适?我该设置那些Packet的参数?LookAheadBuffer,HeaderBuffer该怎样链上Packet?

    太多问题了!!好烦呀!!!!




最新喜欢:

peralperal
趁着这奈何天,伤怀日,寂寥时,试谴愚衷!
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-31 10:02
NdisTransferData()函数的参数:
NdisTransferData(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE NdisBindingHandle,
IN NDIS_HANDLE MacReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer,
IN OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred
);

问ByteOffset,BytesToTransfer是不是用IP包的长度PacketSize,再减去LookAheadBufferSize得到?要减去HeaderBufferSize么?出来的Packet里有包括LookAheadBuffer么?

答:
ByteOffset是你想从该包中获得数据的起始位置。
BytesToTransfer是你想从该包中COPY多少字节的数据到你的Packet中。
整个当前可以传输包的大小是PacketSize,当然包括了LookAheadBuffer,但是不包括HeaderBuffer。
也就是BytesToTransfer=0,BytesToTransfer=PacketSize

NdisDprAllocatePacket();

NdisMoveMemory()

NdisTransferData()

这些还是函数的用法还是看ddk吧。
我思故我在,脑袋不会坏.
banana
驱动牛犊
驱动牛犊
  • 注册日期2001-07-28
  • 最后登录2001-12-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-10-31 11:06
谢谢gjpland兄:

后来我发现在vpacket中的PacketReceiveIndicate() 函数实际上有很好的范畴。

对于
'整个当前可以传输包的大小是PacketSize,当然包括了
LookAheadBuffer,但是不包括HeaderBuffer。

但我观察了packet,有包括以太头。


另外对于OOB数据理解我有疑惑:
是否是产生了packet后,该packet就带有了OOB数据,不过我想不大
可能,我该怎样写入OOB数据呢?----也就是OOB数据在哪取?



还有我在NDIS_PACKET的PRIVATE的TotalLength和各个MDL *pNext中的ByteCount之和有些时候不一样,Private中TotalLength到底是什么?

先谢了!!



趁着这奈何天,伤怀日,寂寥时,试谴愚衷!
游客

返回顶部