cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4831回复:9

NdisTransferData到底有什么作用?

楼主#
更多 发布于:2002-12-26 14:37
NdisTransferData到底有什么作用呢?我在RECEIVE函数里没有调用它发现也没有什么问题?那这个函数到底有什么作用呢?能否具体举例说明说明呀???希望各位大虾帮我解决解决这个问题

最新喜欢:

WY.lslrtWY.lsl... ljmmaryljmmar...
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-26 15:25
如果lookaheadbuffersize小于packetsize时调用这个函数取剩下的数据,也可以去整个buffer的数据,如果他只有一个buffer的话,
你说不用也可以,是不是你都是直接做的内存copy??如果传上来的buffer不是连续的怎么办?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-26 17:02
NdisTransferData到底有什么作用呢?我在RECEIVE函数里没有调用它发现也没有什么问题?那这个函数到底有什么作用呢?能否具体举例说明说明呀???希望各位大虾帮我解决解决这个问题


当有大包或是多个packet描述符时你要调用他来上读取剩余的数据包~~~
[color=red]大头鬼! :P[/color]
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-27 07:38
但是当我不调用NdisTransferData时。。。似乎并没有任何影响呀。。并没有影响网络的正常工作呀。。。。。好象这个函数并没有任何作用一样。。。。
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-27 08:52
前面不是说过吗“如果lookaheadbuffersize小于packetsize时”才需要调用 NdisTransferData 来传送残余数据,反之就不用。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-27 09:15
前面不是说过吗“如果lookaheadbuffersize小于packetsize时”才需要调用 NdisTransferData 来传送残余数据,反之就不用。


用用也可
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-27 11:07
用NdisTransferData主要是出于安全的考虑,在多数情况下,
不用也可以,常用的网络通讯一个包的信息已经足够,
只是一些特殊的应用才会产生大包,NdisTransferData为了保证数据的完整
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-27 14:46
哦。。。原来是这样呀。。我明白了。。。。谢谢各位。。。
idspider
驱动牛犊
驱动牛犊
  • 注册日期2003-01-02
  • 最后登录2004-04-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-01-09 10:50
引自:
《电子技术》2 0 0 0年第 2期
NDIS网络驱动程序设计研究和IP隧道驱动程序实现(陈弘等)

网络操作系统对于输入和输出分组要进行缓冲
区管理 ,一般分为以下几种方案 :大缓冲区方案、链
表方案等。
大缓冲区方案 ,一般根据系统处理的数据包的
数学期望 ,设定系统能处理的数据包最大长度限制
来分配缓冲区大小 ,这样在正常情况下一个缓冲区
容纳一个数据包。
链表方案 ,每个缓冲区大小固定 ,通常情况在
1 2 8~ 1K之间 ,每个数据包一般都需要多个链接在
一起的缓冲区来保存。例如BSDUnix中的mbuf
结构。
NDIS缓冲区管理吸取了各个方案的优点 ,采
用缓冲区大小可调的链表方案 ,其实质上是同时支
持以上两种方案。驱动程序开发者可以根据不同网
卡、不同协议的各自特点决定自己的缓冲区管理方
案 ,由于目前内存比较便宜 ,绝大部分驱动程序采用
大缓冲区方案 ,即分配足够大的缓冲区容纳整个分
组 ,使分组对应的链表实际上只包含一个缓冲区 ,这
样做可以获得最好的性能。
freefly
驱动牛犊
驱动牛犊
  • 注册日期2001-11-08
  • 最后登录2007-02-11
  • 粉丝0
  • 关注0
  • 积分113分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-01-15 15:22
我用driverstudio开发ndis IM  wdm driver在NdisFilterAdapter::OnReceive里
调用NdisTransferData函数时不知道怎样得到输入参数NdisBindingHandle参数???
苦恼!!!当然在ntddk里就很容易啦





游客

返回顶部