阅读:4932回复:9
NdisTransferData到底有什么作用?
NdisTransferData到底有什么作用呢?我在RECEIVE函数里没有调用它发现也没有什么问题?那这个函数到底有什么作用呢?能否具体举例说明说明呀???希望各位大虾帮我解决解决这个问题
|
|
沙发#
发布于:2002-12-26 15:25
如果lookaheadbuffersize小于packetsize时调用这个函数取剩下的数据,也可以去整个buffer的数据,如果他只有一个buffer的话,
你说不用也可以,是不是你都是直接做的内存copy??如果传上来的buffer不是连续的怎么办? |
|
|
板凳#
发布于:2002-12-26 17:02
NdisTransferData到底有什么作用呢?我在RECEIVE函数里没有调用它发现也没有什么问题?那这个函数到底有什么作用呢?能否具体举例说明说明呀???希望各位大虾帮我解决解决这个问题 当有大包或是多个packet描述符时你要调用他来上读取剩余的数据包~~~ |
|
|
地板#
发布于:2002-12-27 07:38
但是当我不调用NdisTransferData时。。。似乎并没有任何影响呀。。并没有影响网络的正常工作呀。。。。。好象这个函数并没有任何作用一样。。。。
|
|
地下室#
发布于:2002-12-27 08:52
前面不是说过吗“如果lookaheadbuffersize小于packetsize时”才需要调用 NdisTransferData 来传送残余数据,反之就不用。
|
|
5楼#
发布于:2002-12-27 09:15
前面不是说过吗“如果lookaheadbuffersize小于packetsize时”才需要调用 NdisTransferData 来传送残余数据,反之就不用。 用用也可 |
|
|
6楼#
发布于:2002-12-27 11:07
用NdisTransferData主要是出于安全的考虑,在多数情况下,
不用也可以,常用的网络通讯一个包的信息已经足够, 只是一些特殊的应用才会产生大包,NdisTransferData为了保证数据的完整 |
|
|
7楼#
发布于:2002-12-27 14:46
哦。。。原来是这样呀。。我明白了。。。。谢谢各位。。。
|
|
8楼#
发布于:2003-01-09 10:50
引自:
《电子技术》2 0 0 0年第 2期 NDIS网络驱动程序设计研究和IP隧道驱动程序实现(陈弘等) 网络操作系统对于输入和输出分组要进行缓冲 区管理 ,一般分为以下几种方案 :大缓冲区方案、链 表方案等。 大缓冲区方案 ,一般根据系统处理的数据包的 数学期望 ,设定系统能处理的数据包最大长度限制 来分配缓冲区大小 ,这样在正常情况下一个缓冲区 容纳一个数据包。 链表方案 ,每个缓冲区大小固定 ,通常情况在 1 2 8~ 1K之间 ,每个数据包一般都需要多个链接在 一起的缓冲区来保存。例如BSDUnix中的mbuf 结构。 NDIS缓冲区管理吸取了各个方案的优点 ,采 用缓冲区大小可调的链表方案 ,其实质上是同时支 持以上两种方案。驱动程序开发者可以根据不同网 卡、不同协议的各自特点决定自己的缓冲区管理方 案 ,由于目前内存比较便宜 ,绝大部分驱动程序采用 大缓冲区方案 ,即分配足够大的缓冲区容纳整个分 组 ,使分组对应的链表实际上只包含一个缓冲区 ,这 样做可以获得最好的性能。 |
|
9楼#
发布于:2003-01-15 15:22
我用driverstudio开发ndis IM wdm driver在NdisFilterAdapter::OnReceive里
调用NdisTransferData函数时不知道怎样得到输入参数NdisBindingHandle参数??? 苦恼!!!当然在ntddk里就很容易啦 |
|