Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27198
  • 博文数量: 10
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-08 09:38
文章分类

全部博文(10)

文章存档

2012年(10)

我的朋友

分类: WINDOWS

2012-08-16 14:38:09

20120816
13.3 中间层驱动发送数据包 (书 P.447 对应 pdf P.473)
 13.3.1 发送数据包原理
   以 MpSend 为例。
   中间层驱动要发送网络数据包,最终都必须调用 NdisSend / NdisSendPackets / NdisCoSendPackets 这个系列的函数。
 
  NdisSend + 适配器上下文 ,将网络数据包 一层一层往下发送,直至为端口驱动,然后发出去。
 
 13.3.2 包描述符“重利用” (书 P.448 对应 pdf P.474)
   如何对包进行发送。两种方式:
     一、“重利用”(把包描述符不懂的传递下去。)
     二、“重申请”(根据收到的包描述符,重建一个新的包描述符,将新建的描述符发送下去。)
 
 本节讲 “重利用”(需要 NDIS 5.1 版本以后才能做)。
  But ,即使运行在 NDIS 5.1以后的版本上,也不是所有的包描述符都可以被重利用的。
 
那么 ,现在先不看“重利用”了,以后再说。
 
 13.3.3 包描述符“重申请” (书 P.451 对应 pdf P.477)
  与“重利用”相比,可谓万能。此种方法并不低效,重建包描述符 并非需要重建网络包数据,so其所涉及的内存操作并不多。(即 只是 重建描述符,而非 重建数据包)
  需要3步工作:
   (1)、调用 NdisAllocatePacketPool,NdisAllocatePacketPoolEx (应在MiniportBindAdapter中进行)
   (2)、NdisAllocatePacket 池中分配包描述符
   (3)、初始化的工作,设置包描述符。
阅读(1337) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~