阅读:2672回复:6
NDIS 的数据收发流程
希望大家能讨论一下 NDIS 的数据收发流程,这样不论是对于新手和高手来说,都会有一个提高和加深了解:
因为有IMD 的存在,总觉得有两套收发程序的存在,因为 IMD 具有 PD(protocol driver) MD(miniport driver) 的特性(指函数方面),所以希望众位行家谈谈NDIS 的数据收发流程! |
|
最新喜欢:jzyhum... |
沙发#
发布于:2001-07-25 11:02
对于NIC driver
无连接的小端口有两种发送包的方法: 1.MiniportSendPackets函数。NDIS在同一时间传送给MiniportSendPackets一个或多个包的数组指针给包描述符。 2.MiniportSend函数。NDIS在同一时间传送给MiniportSend一个单个的包描述符。 如果一个无连接的小端口同时用NdisMRegisterMiniport注册了MiniportSendPackets 函数和 MiniportSend函数,NDIS只调用MiniportSendPackets。 无连接的小端口可以使用下面两种方法将接收到的数据传送到上层驱动程序。 1.调用NdisMIndicateReceivePacket,通过传入包含接收数据的指针数组的指针来传入一个或多个包。小端口必须输出一个MiniportReturnPacket来处理由接收协议返回的数据。 2.调用NdisMXxxIndicateReceive:传入指向lookahead缓冲区的指针。感兴趣的协议驱动程序从缓冲区中复制数据。小端口必须输出MiniportTransferData函数来传送任何有条件收到的不合适在lookahead缓冲区中的数据。 具体的操作过程和网卡的类型相关,如master_DMA, slave_DMA, onboard memory ,PIO, 2000DDK中有很详细的描述。 |
|
|
板凳#
发布于:2001-07-25 14:23
多谢!
可是当存在IMD 时,IMD 也有 MiniportSend,那么,NDIS 究竟调用谁的 miniportsend 函数! |
|
地板#
发布于:2001-07-25 19:55
IMD在miniport driver之上
所以imd通过ndis调用的是miniport driver的miniportsend 而imd之上的应用调用的是imd的miniportsend |
|
|
地下室#
发布于:2001-07-26 15:06
问题还是存在: 因为此时存在两个miniportsend , 一个属于 IMD, 另一个属于miniport driver 。而且 NDIS 会调用这两个函数(对吗?) , 那么,这个过程是怎么样的?难道只有 应用调用imd的miniportsend 而ndis调用的是miniport driver的miniportsend 。这样区分吗? |
|
5楼#
发布于:2001-07-26 17:03
不是这样区分的,这两个函数都是由NDIS调用的,只不过调用的顺序不同。
|
|
|
6楼#
发布于:2001-07-27 11:12
建议你先去搞懂ndis的体系结构,看看是如何分层的
这个问题就很明了了 |
|
|