anylin
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2008-11-04
  • 粉丝0
  • 关注0
  • 积分365分
  • 威望45点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:1690回复:2

TransferData?

楼主#
更多 发布于:2005-07-28 22:40
NDIS_STATUS
  MiniportTransferData(
    OUT PNDIS_PACKET  Packet,
    OUT PUINT  BytesTransferred,
    IN NDIS_HANDLE  MiniportAdapterContext,
    IN NDIS_HANDLE  MiniportReceiveContext,
    IN UINT  ByteOffset,
    IN UINT  BytesToTransfer
    );


有人能解释一下这个函数的功能么
跟收包有什么关系没?

是不是调用完收包的函数后要调用这个函数?
虚拟网卡需不需要这个函数?
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-07-29 12:43
首先看这个名字,是MINIPORT打头,说明他是给协议提供调用的。
如果绑定了该MINIPORT的PROTOCOL调用了NdisTransferData,实际上就是调用的该函数。
再看NdisTransferData的作用,当PROTOCL收到一个包,但这个包只有前面的一部分,他就会调用NdisTransferData来取得剩余的一部分。
如果你的MINIPORT给协议发的包都是完整的包,这个函数就不会被调用。
gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-31 22:06
#define NdisTransferData(Status,\
         NdisBindingHandle,                       \
         MacReceiveContext,                       \
         ByteOffset,  \
         BytesToTransfer,                             \
         Packet, \
         BytesTransferred)                             \
{                       \
       *(Status) =  \
              (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->TransferDataHandler)(        \
                     ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle,              \
                     (MacReceiveContext), \
                     (ByteOffset),               \
                     (BytesToTransfer),        \
                     (Packet),                      \
                     (BytesTransferred)); \
}


上面的宏定义就可以看出, 协议层调用 NdisTransferData 的时候,只不过是调用了
Miniport 的 TransferDataHandler。
游客

返回顶部