NDIS中间层驱动程序组报发报

来源 :教育教学论坛·下旬 | 被引量 : 0次 | 上传用户:times0927
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:NDIS中间层驱动程序(Intermediate Drivers)位于网卡驱动程序和协议驱动程序之间。对于上层驱动程序而言,它是小端口驱动程序。对于底层的驱动程序,它是协议驱动程序。在NDIS中间层驱动程序中,我们可以实现对数据包的过滤、加密、压缩等操作。据此提出了利用中间层驱动程序进行重新组报发报的解决方案,基于此种方案可以实现网络的封包截获、修改等。
  关键词:中间层驱动程序;NDIS;组报;发报
  
  NDIS中间层驱动程序对数据的发送和接收都是通过操作包描述符(Packet Descriptor)完成的。包描述符是一个NDIS_PACKET结构体,驱动程序通过NdisAllocatePacketPoolEx和NdisAllocatePacket两个函数完成包描述符的分配,当包描述符分配成功后,其关联着NDIS_PACKET_OOB_DATA和NDIS_PACKET_EXTENSION两个结构体,它们包含有每个包描述符的out-of-band信息,如发送时间、接收时间、指定的媒体信息、指定NIC是否对数据包进行检验和操作等。中间层驱动程序必须通过NDIS层提供的宏复制上层驱动程序包描述符的out-of-band信息到自己分配的包描述符中,通过NdisSend函数将包描述符传递给底层驱动程序,完成数据包的发送。
  NDIS中间层驱动程序发包过程描述如下:
  1.Protocol driver调用NdisSend向下层发送数据报文。
  2.中间层驱动的MPSend/MPSendPacket例程根据上层传下来的数据报文分配MyPacket,调用NdisSend发送到下层。如果返回pending,就在PtSendComplete中释放我们的MyPacket;否则就在本函数中紧接着释放MyPacket。
  3.当下层miniport driver发送完成MyPacket以后,会调用NdisMSendComplete。
  4.NDIS接着调用中间层的PtSendComplete,在这个函数里边,我们应该释放MyPacket,并且通知上层protocol driver去释放它们的packet。
  方案:修改主机原有发包的数据内容实现对我们数据包的发送。
  在NDIS中间层驱动程序中,我们可以通过NDIS层提供的相关函数获取包描述符链接的数据Buffer的虚拟地址,通过该虚拟地址可以得到数据包的内容,也可以通过该虚拟地址修改数据包的内容。具体步骤如图1所示:
  1.协议层驱动程序调用NdisSend函数使得中间层驱动程序调用注册的MiniportSendPackets例程。
  2.中间层驱动程序复制上层驱动传递的包描述符信息到自己的包描述符中,获取包描述符信息后通过NdisQueryPacket、NdisQueryBufferSafe、NdisGetNextBuffer三个函数得到上层驱动传递的包描述符链接的各个Buffer的虚拟地址。得到Buffer的虚拟地址后修改原始数据包的内容为我们的数据,如果原始数据包的长度小于我们的数据长度,应通过NdisAllocateMemoryWithTag函数分配一个剩余大小的虚拟内存填写剩余的数据。再通过NdisAllocateBuffer函数将虚拟内存转变为Buffer,最后调用NdisChainBufferAtBack将该Buffer链接到包描述符上。数据修改完成后调用NdisSend函数,使得小端口驱动程序调用注册的MiniportSendPackets例程。
  3.小端口驱动程序成功发送数据包后,调用完成函数NdisMSendComplete通知中间层驱动程序数据包发送成功。
  4.如果中间层驱动在ProtocolSendComplete例程中检测到完成的是我们的数据包,若该包描述符链接过我们分配的Buffer,应调用NdisUnChainBufferAtBack函数去掉链接的Buffer并释放该Buffer。完后释放自己分配的包描述符,调用NdisMSendComplete通知协议驱动程序数据包发送成功。最后设置我们的发送数据包结束事件,通知可以写入新的数据进行发送。
  


   该方案的优点是根据中间层可以修改数据包内容的机制实行对我们数据包的发送,因为不改变中间层的发包机制,程序运行稳定。缺点是改变了主机原有的发包,会影响主机的正常通信。
其他文献
市场背景 作为早已成为寻常家电进入千家万户的燃气热水器产品,安全便捷的操作、稳定可靠的性能及简约、明快、新颖的外观造型正日益成为消费者选购的重要标准。
[目的]帮助新型冠状病毒肺炎期间驰援武汉医务人员迅速发现并调整不良心理状态,促使其尽早回归正常的工作及生活状态。[方法]对24名昆山地区驰援武汉医务人员进行焦虑自评量
针对VSC-LCC型双端混合直流输电系统拓扑,结合其系统特殊性提出了一种基于极性切换的启动控制方案。建立了VSC-LCC型双端混合直流输电系统拓扑及其数学模型;在VSC换流器整流
介绍目前唐氏综合征的基本情况及目前产前筛查的几种方法,比较联合筛空中不同组合的检出率等指标,并指出产前筛查可能的发展方向。
目的探讨C-反应蛋白(cRP)和肿瘤坏死因子-a(TNF—a)与冠心病严重程度关系。方法选择30例心绞痛患者,20例心肌梗死患者,30例健康者,分别检测CRP和TNF—a水平。结果心绞痛组和急性心肌
公共卫生管理决定我国公共卫生综合管理水平,对人民健康有重要影响。因此,需强化公共卫生管理,促进公共卫生事业可持续发展。新时期,伴随社会经济可持续发展,居民生活水平提
新课标对中学阅读的总要求是具有独立阅读的能力,注重情感体验,有较丰富的积累,形成良好醮语感。学会运用多种阅读方法。初步理解、鉴赏文学作品,受到高尚情操与趣味的熏陶,发展个
明代笔记小说不乏文学和史料价值,它涉及内容宏富广博,其中包括很多与医学相关的内容,对医理的讨论是重要的组成部分。谢肇淛的《五杂俎》有十分丰富的医药内容,更是生动呈现
<正>一、湖泊公共治理的紧迫性(一)湖泊关系国计民生湖泊及其流域关联城乡,往往是连接城乡经济与水环境的命脉。中国湖泊众多,湖泊水资源总量达到6380亿立方米,占全国城镇饮
会议
良好的课堂教学氛围是提高课堂教学效益的一个重要因素,科学地运用各种手段来调控课堂气氛,形成轻松、愉悦、活泼、和谐、高效的教学氛围,有利于激发学生的学习兴趣,取得良好