如何和wan miniport ikev2driver进行通信

<input type="hidden" name="content" value=" " />基于NDIS中间层的通信安全机制的设计与实现,ndis中间层驱动,应用层与中间层通信..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于NDIS中间层的通信安全机制的设计与实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口本站代写论文,代写经济论文,代写管理论文,代写毕业论文,代写硕士论文,代写本科论文,论文代写就来学术论文代写网。
毕业设计,论文发表,期刊发表等服务。本站成立于2005年,历经7年的发展,现已成为国内较为大型的毕业设计(论文)服务机构。
本站企业QQ,400热线同号双号认证信誉,是目前国内唯一一家被多家权威机构认证的论文代写网。专业服务,助您成功。
当前位置: >
windows nt情形下fddi网卡驱动措施计划_电子通讯论文论文发表
腾讯认证QQ:&
电信认证电话:<font color="#
网卡驱动措施 实现对物理层的打点和数据链路层中介质会见节制子层协议,图中的多个网卡表白在一台运行nt的计较机上能行使多种网卡,防备长时刻的屏障低优先级间断,首要完成初始化ndiswrapper。
这两个接口把两个层隔分开来,它过ndis把数据传给网卡驱动措施,网卡驱动措施就驻留在个中,而逻辑网卡与nt装备工具的讯由i/o子体系来打点。
上边沿函数的浸染是网卡驱动与ndis接口库举办通讯,这样差异的开拓者在大量一再着很多沟通的事变,由操纵体系在装入驱动措施时挪用,一些操纵参数的改变也将同时改变驱动措施状态。
这个布局一向被ndis保持,而全部底层网卡驱动措施的通用操纵(犹如步),必需由驱动措施认可并破除在此时代发生的间断), §1.1.3windowsnt网卡驱动措施 windowsnt情形下的网卡驱动措施也分为两种: miniport网卡驱动措施:miniport驱动措施只须实现与收集硬件相干的操纵(包罗发送和吸取),而且对miniport驱动措施不透明。
它把当地的收集资源申请转送给收集,有一套抽象的函数, miniportreset:包罗网卡硬件重置和驱动措施软件重置,ndis束缚下的网卡驱动措施、tdi驱动措施和体系的相关如下图所示: 图2.0ndis束缚下的网卡驱动措施、tdi驱动措施和体系的相关 miniport驱动措施包罗驱动措施工具、驱动措施源代码和ndis接口库代码,同时写入ndis版本信息,该处事范例只在以下被挪用: ndis接口挪用miniportinitialize和miniporthalt两函数时, 总体布局先容 第一节windowsnt收集布局 §1.1.1windowsnt收集系统布局 windowsnt的收集系统布局是基于国际尺度化(iso)拟定的尺度模子──开放式体系互连(opensysteminterconnection:osi)参考模子分层成立的。而下边沿函数是tdi协议驱动措施与ndis通讯的本领,记录必要它打点的与装备相干的状态信息。
mib的初始化,停止造程间断丢失, miniportsend:ndis收到上层发送哀求时颠末多少协议处理赏罚再向下挪用此处事进程,windowsnt应承有多个转发措施。
§1.2.2收集工具标识符 miniportnic驱动措施还必要维护一组工具,譬喻组地点的配置,和miniportinitilize一样由ndis接口以初始化级别调治执行(不能屏障间断,界说了miniport驱动措施的进口点、ndis接口库函数和通用数据布局,在nt中, windowsnt收集模子开始于mac子层。
这个数据布局为miniport网卡驱动措施所拥有并维护,由driverentry函数实现,该处事进程举办界线对齐、packet束缚重整、描写符映射和报文发送、以及发送资源和packet缓冲行列打点,网卡与主机通信方法简直认,它和体系相干,这种方法有利于随时扩展其余成果和处事,内存映像, 在两个接口之间,抉择是否举办间断转交,登录网卡驱动措施全部上边沿处事进口点, .间断处理赏罚范例设为每此间断处理赏罚进程都挪用时。
i/o端口的申请与注册,通过ndis向下打点物理网卡,检测出网卡已安装时,这样开拓出来的驱动措施镌汰了不须要的事变。
由ndis接口在初始化时挪用, 当miniport网卡驱动措施初始化一块网卡时,再由wrapper初始天生驱动措施打点块并完成响应各类初始化事变, 这一收集系统布局包罗两个重要接口──ndis接口与传输驱动 措施接口(tdi),包过滤数据库等),网卡驱动措施按照各协议驱动措施对单个packet是否举办多次拷贝,譬喻full网卡驱动措施为了相应数据吸取,还需思量有些参数的规复,上层驱动措施挪用ndisrequest向ndis接口库指示oid,向网卡驱动措施发出传送哀求以拷贝各自所需的报文数据部门,但必需开释已占用的外部资源,向上与tdi接口, miniportisr:高优先级的间断处理赏罚措施,以描写驱动措施的机能和当前状态信息,以及一些相干的参数重置,必需提供此函数, 这些上边沿处事函数由驱动措施的开拓者按照驱动措施面向的特定低层收集范例和硬件以及响应情形,而那些通用的函数由ndis接口库来实现。
向下与ndis接口,如是否支持组通信、网卡的物理速度是否支持回环、是否支持直接拷贝等, §1.2.4ndis接口库 ndis接口库包罗在ndis.sys中,,ndis列队全部的延时处理赏罚,对应于物理网卡的逻辑网卡初始化,当挪用miniport驱动措施进口点时,来处理赏罚多处理赏罚器的焦点题目以及处理赏罚器、线程的同步,向上与传输驱动措施通讯,软件重置包罗驱动措施状态重置, miniporthalt:挂起网卡并开释该网卡驱动措施占用的全部资源,步伐是相邻的部件只应承按单一的尺度来写。
在windowsnt的早期版本中, 为使体系能实时相应全部硬件间断,间断信息注册, §1.1.2windowsnt收集驱动措施 windowsnt支持两种范例的收集驱动措施 传输驱动措施 实现数据链路层中的逻辑链路节制子层协媾和传输层协议,譬喻一个网卡驱动措施(在ndis接口的下面)就不必要专程按每个传输协议来写它的代码块,为查询这些信息,它还包括与硬件相干的驱动措施状态数据(绑缚数量,首要完成低层收集范例确定,这样, miniportqueryinformation:查询网卡的状态以及网卡驱动措施的操纵或统计参数,假如上层驱动措施哀求改变状态信息则挪用miniportsetinformation实现对oid的配置。
同时也对tdi驱动措施的实现提出了必然的要求,它通过相干的网卡把windowsnt与收集毗连起来,当miniport网卡驱动措施挪用ndismsetatttibutes或ndismsetattributesex两ndis库函数时,这些工具是体系界说的工具标识符(objectidetifier:oid)来标识,并通过tdi把数据传给转发措施(redirector) tdi之上是转发措施,它在收集中起着组织者的浸染,full网卡驱动措施要求开拓者实现很多底层操纵,不应承多重尺度,它是一个核态函数库,支持即插即用和软设置的网卡在动态改变参数时。
对付每一个转发措施windowsnt计较机必需也有一个响应的供给者(provider)(由收集厂商提供),但必需担保驱动措施最根基的成果,这些函数称为上边沿处事函数,该驱动措施是写给ndis接口的,它创建本身的内部数据布局来描写网卡,它转达一个句柄给这数据布局,它通过切合ndis的响应传输协议来哀求处事。
oid暗示了挪用所需的信息范例。
miniportinitialize:操纵体系按照体系设置信息, miniportdisableinterrupt:间断屏障,然后miniport网卡驱动措施将在往后提供这个句柄来给ndis挪用, 为了能和其他厂商的收集互连,以容纳可移植、可交流的模块,每个网卡驱动措施必需有一个初始化进口点,驱动措施发明网卡非常时陈诉给ndis由ndis挪用miniportreset举办硬件重规复,而miniport就可以由ndis接口库来实现,以抉择是否暂存只应承单次拷贝的packet等, §1.2.1miniport网卡工具 ndis用一个叫做逻辑网卡的软件工具来描写体系中的每块网卡, full网卡驱动措施:full网卡驱动措施必需实现全部硬件相干和同步、列队等操纵,无论协议驱动措施照旧nic驱动措施都毗连到这个库中,举办的事变包罗初始间断处理赏罚范例, miniporthandleinterrupt:由间断延时处理赏罚措施在间断延时处理赏罚时举办挪用,恰好相反,然后借助于供给者,高优先级的硬件间断处理赏罚措施应尽也许的镌汰运行时刻, miniporttransferdata:多个已和网卡绑缚的协议驱动措施在吸取到报文达到指示后,物理网卡的验证与初始化等。
miniportsetinformation:ndis接口或协议驱动措施通过挪用此接口改变驱动措施维护的oid库,发送的packet已含有llc和mac头,绑缚句柄, miniportreconfigure:支持网卡参数动态变革,这些接口包括在windowsnt的收集系统布局中,对卡上间断举办处理赏罚等, 而miniport网卡驱动措施应承开拓者仅仅写一些与收集硬件相干的代码即可。
它就转达这个句柄来验证驱动措施所对应的网卡的正确性。
这些根基成果包罗初始化、发送、间断处理赏罚、重置、参数查询与配置和报文吸取,这些参数以oid方法同一打点,在此时代不屏障间断,必要保持自己的绑缚信息,一样平常由ndis接口措施来实现,一个传输协议划定了数据以何种方法呈递给下一个吸取层。
多供给者路由选择措施抉择恰当的供给者,是传输协议,ndis接到上层驱动措施的查询哀求,该处事首要处理赏罚发送完成、报文吸取、描写符用
对我有帮助
暂时不需要
相关内容:
本站法律顾问:范小波律师
& &网站合法性备案号:蜀ICP备号-2 & &加密以太网卡在通信系统中应用 - 推酷
加密以太网卡在通信系统中应用
大家都知道,内网使用者非法获得敏感信息,也是网络安全的主要威胁之一。局域网环境不适合使用应用于互联网络的高层安全体系,在局域网环境中保证线路传输的安全及用户的有效控制是主要工作,在链路层进行数据的保护可以有效提高整个安全系统的性能。
一、网络驱动程序接口规范与加密以太网卡
1、网络驱动程序接口规范
网络驱动程序接口规范(Network Driver InterfaccSpecification,NDIS)是Windows2000系统网络协议结构在核心层的主要结构,定义了链路层与网络高层协议之间的网络驱动程序接口规范,提供了网络协议中的网络层接口和链路层接口,NDIS支持以下3种基本内核模式网络驱动程序:
(1)协议驱动程序;(2)中间层驱动程序;(3)微端口驱动程序。
协议驱动程序即高层协议栈,使一个物理网卡可以支持多种协议的运行。中间层驱动程序完成在不同网络介质间进行转换,过滤数据包和在多个NIC之间平衡数据包的负载。
最底层的是微端口驱动程序,它管理网络接口卡(NIC),与网络设备紧密结合,完成数据发送和接收。微端口驱动程序与它管理的NIC -起完成链路层通信功能,并且通过NDIS库与高层驱动程序通信实现了逻辑链路控制。
2、加密以太用卡
加密以太网卡(简称加密网卡)的工作原理是在网卡上嵌入加密模块来实现对链路上的数据进行加密保护,其结构框架如图1所示。
加密网卡使用了硬件加密措施提高了安全性,同时减少了对CPU资源的占用,提高了系统的处理效率。加密以太网卡采用PCI总线,网卡提供10M/100 Mb/s的通信速率,加密和解密模块采用FPGA实现分组加密算法。加密以太网卡在Windows操作系统微端口驱动程序的控制下完成数据的安全通信。以太网卡加密主要有以下4个模块:
(1)总线接口模块
采用PLX的PCI9054芯片,与PCI总线进行数据交换来完成与微端口驱动程序的通信。
(2)密码运算模块
片在控制模块的控制下完成对数据文件加密和解密。Flash完成一定的密钥存储和管理功能。
(3)控制模块
对数据在各模块间的传输进行控制,保证数据正常的流向。
(4)网络通信模块
使用嵌入式以太网控制器LAN91CIII,在接口控制器和控制模块的联合控制下传输加密的数据帧。
二、加密以太同卡链路通信协议设计
1、置信协议设计
NDIS的层次性为用户进行网络功能的开发提供了良好的接口。由于加密以太网卡自身硬件结构的特点,其逻辑链路传输协议中需要包涵与加密和解密以及密钥管理相关的功能。
NDIS中的徼端口驱动程序直接控制加密网卡来完成逻辑链路控制功能。本文的链路传输方案可以使加密以太网卡的硬件功能在驱动程序的控制下达到加密传输的效果。加密以太网卡链路通信协议主要包括:
加密链路帧设计,加密和解密控制模块,数据包拆分/重组模块,中断服务模块,密钥管理模块等。其结构如图2所示。
2、加密链路帧设计
为了达到对数据文件加密保护功能,要对链路数据帧进行重新设计。设计是在以太网数据帧的基础上,对数据帧的结构进行增加和改进,对数据帧中的重要信息进行加密保护。
数据帧结构的各部分字段如图3所示,其中,阴影部分表示数据已经加密保护。
数据帧的各部分内容如下:
(1)前导码和帧开始定界符;
(2)目的保密以太网卡的MAC地址;
(3)源保密以太网卡的MAC地址; ’
(4)报文加密信息;
(5)密钥信息,是会话密钥的密文;
(6)帧长度或类型;
(7)数据单元;
(8)帧校验序列。
数据帧的前3部分与标准MAC帧相同,第(4)部分中保存收发双方用户标识、数据报文类型、原始数据长度等内容。
加密模块对数据加密时需要进行分组长度填充,加密信息部分中的原始数据长度可以保证接收方在解密后获得有用的数据字段长度。第(4)部分使用局域网内用户共享的网络密钥加密保护。第(5)、第(7)部分都是由卡上密码算法加密过的密文,其中,密钥信息是由与目的节点共享的工作密钥加密的会话密钥密文,而第(6)、第(7)部分则是用会话密钥加密的密文。
这种帧格式需要硬件与微端口配合才能完成所有的操作和控制。微端口对加密数据帧的地址信息进行处理后以命令形式通知硬件设备来读取密文,完成解密操作后再将明文读取刭系统内存进行包的操作。
3、数据包拆分,重组设计
由于设计的加密链路帧在原有MAC帧的基础上增加了用户标识、报文类型、密钥信息等字段以及对数据字段加密时的分组填充,因此,帧长度会大于以太网MTU,需要对原有MAC帧进行拆分和重组。拆分和重组有2种方法:
(1)在原MAC帧的基础上直接增加报文加密信息,形成长MAC帧。因为方案中使用的加密网卡的LAN91C11I以太网控制器最大支持2 048 B的链路帧,这种方法简便、易于实现。
(2)对原MAC帧中的IP数据包进行拆分,利用IP协议提供的分包机制将原MAC帧中封装的IP数据包经过解析后拆分成2个800 B的IP数据包,然后分别封装成加密链路帧。这种方式相对复杂,但利用IP协议的分包机制可靠性高,分包后形成的链路帧对链路传输的兼容性强。
为了使系统的兼容性更好,本方案采用第2种方法,在加密以太网卡的链路协议中设计数据包拆分和重组机制,保证链路传输的稳定性。
4、密钥管理方式
在由加密以太网卡构成的局域网络,密钥采用分级保护的管理方式,每一个用户配置有主密钥、网络密钥和会话密钥三级密钥,主密钥保护卡内所有密钥信息资源;网络密钥保护加密MAC帧中的加密信息部分和密钥信息部分,包括用户ID和数据报文类型等信息;会话密钥保护数据字段。
网络密钥受主密钥保护,其密文预先配置在加密卡中,会话密钥由加密网卡在加密每个数据包时产生。本系统给用户配置USBKey来存储用户的主密钥,通过口令的方式才能打开USBKey,取出用户主密钥,并将主密钥通过程序注入到加密以太网卡,由此实现密钥与数据的分割,并保证了用户信息存储在key 中的安全性。这种三级密钥保护方式能够较好地保护系统内的密码信息资源,形成安全的局域网链路通信
三、加密以太网卡链路通信协议实现
1、基于微端口的以太同卡驱动程序加密设计
加密网卡微端口驱动程序(Security Miniport Drver, SMD)将加密网卡以唯一的网络设备Device对象提交给NDIS,使其能够加载到NDIS层次结构中。数据进出加密以太网卡必须经过SMD,才能对链路数据进行操作和控制,形成本方案设计的加密链路通信协议。加密网卡微端口驱动程序应具备以下基本功能:
(1)向NDIS注册加密以太网卡,使加密网卡接入到操作系统中,构成完整的网络通信层次结构。
(2)SMD向上层协议提供符合NDIS规范的网络数据接口,使加密功能对上层网络协议保持透明,不影响网络数据传输。
(3)组织数据包队列,在发送和接收数据包的流程中以队列形式组织数据包,提高数据处理和传输效率。
(4)SMD的Dispatch例程中设置对上层管理程序的通信接口,用于管理程序对SMD进行配置和对密钥等密码信息的管理。
(5)中断服务功能,支持加密网卡的中断方式,中断处理模块完成接收数据包的排队和处理功能。
微端口驱动程序的结构与上层协议驱动程序以及管理程序的接口关系如图4所示。
2、微端口驱动程序实现
加密网卡微端口驱动程序位于NDIS层次结构的最底层,直接与硬件设备进行数据交换并进行设备控制,具有标准驱动程序的DriverEntry() 和CreateDevice0,Miniportlnitialize(),DeleteDe’vice0,Unload0.Dispatch0等入口函数。与其他驱动程序不同的是,网络设备驱动程序还要有与网络数据包处理以及中断服务相关的函数和操作,如 MiniportSendPackets0,NdisMlndicateReceivePacket(), MiniportHandlelnterrup),Min-iportISRO等入口函数。
加密以太网卡徼端口驱动程序的实现包括以下5个主要模块:
(1)初始化模块
主要由Miniportlnitializc0函数完成网络设备初始化和密码模块初始化。网络设备初始化包括读取设备配置信息,向系统注册NIC、分配网络数据包队列内存、加密网卡DMA设备初始化配置、注册中断等。密码模块初始化包括密码算法模式配置、密钥注入以及加密网卡内部总线初始化。
(2)数据包发送模块
该模块主要完成无连接微端口驱动的多包发送。其支持数据包队列的形成与维护,上层协议需要发送数据包时会调用微端口的 MiniportSendPackcts()函数,将数据包指针传入驱动程序,发送模块将数据包排队依次准备发送。该模块与数据拆分/重组模块一起完成加密数据包的发送。
(3)数据拆分,重组模块
由于对数据包进行加密和重新封装需要对数据包进行拆分,因此地址信息可直接送入加密网卡的通信控制器,数据信息送入加/解密模块进行加密或解密处理。处理完的数据与用户标识以及密钥
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示  摘 要: 针对远程教学中学生机端同步显示教师机端教学内容的需求,提出了一种基于Mirror Driver的教师机端屏幕" />
免费阅读期刊
论文发表、论文指导
周一至周五
9:00&22:00
基于Mirror Driver的屏幕共享方案研究与实现
&&&&&&本期共收录文章20篇
  摘 要: 针对远程教学中学生机端同步显示教师机端教学内容的需求,提出了一种基于Mirror Driver的教师机端屏幕共享解决方案。该方案基于教师机端对DirectDraw非高依赖和Mirror Driver能精确高效捕捉屏幕变化区域的特点,首先对教师机端屏幕高效捕捉;然后将捕捉的变化图像压缩成JPEG格式,通过网络传输到学生机端;最后学生机端提取JPEG数据,并转换成BMP图像,将多变化区域图像合成显示。实验结果表明,此方案能够实现高效的屏幕捕捉并同步显示,具有良好的实时性,可以应用于远程监控、远程教学等领域。 中国论文网 /8/view-6193787.htm  关键词: Mirror Driver; 屏幕共享; 图像合成; JPEG   中图分类号:TP37 文献标志码:A 文章编号:(-03   Research and implementation of screen sharing scheme based on Mirror Driver   Zhou Shuyi1, Li Bin2, He Yuhu1   (1. Modern Technological Center in Education, Beijing University of Technology, Beijing 100124, China;   2. Department of Computer Science, Beijing University of Technology)   Abstract: To meet the demand of synchronous display between student-side and teacher-side in distant teaching, a resolution of teacher-side screen sharing technology based on Mirror Driver is introduced. In view of the characteristics of non-high dependence of DirectDraw on the teacher-side and Mirror Driver captures the screen variation region efficiently and precisely, this resolution firstly captures the teacher-side screen effectively. It compress the snapped varying picture to JPEG format and transmit it to the student-side over the network. The student-side extracts the JPEG data, converts them to BMP picture, composites and displays the changing area. The practice shows that this method can capture screen efficiently, and display synchronously. It has a good real-time performance, and may be applied in the domain of remote monitoring and distant teaching.   Key words: Mirror Driver; screen sharing; image synthesis; JPEG   0 引言   屏幕共享是一个很早就有的想法,它最初是在1968年被Engelbart展示出来的[1],但当时的共享主要是通过硬件实现的。后来随着网络的发展,逐渐出现了软件实现的屏幕共享方式。相对于硬件实现方式,软件实现方式很大程度上降低了成本,同时降低了复杂度。   目前主要有基于Hook和基于Mirror Driver的软件屏幕共享技术。Hook是Windows提供的一种重要的系统接口,当屏幕重绘消息被系统处理之前,会被Hook捕捉到并处理。基于Hook的方法计算量比较小,速度比较快,占用系统资源较少[1],能较好地平衡CPU占用率和生成文件的大小[2],但无法捕捉控制台等DOS窗口的变化[1],并且对屏幕变化的跟踪具有不确定性[2]。Mirror Driver是虚拟设备的显示驱动,对一个或多个额外的显示设备进行绘图映射,并且能够精确地捕捉屏幕的变化区域。基于Mirror Driver的方法在精确度、准确度、CPU占用率及稳定性等方面均满足理想要求。由于不支持DirectDraw,会对DirectDraw依赖较高的应用程序产生较大的影响,丧失硬件加速功能[3]。   综合考虑目前软件屏幕共享技术的优缺点,本文提出一种基于C/S(客户机/服务器)体系结构的远程教师机屏幕共享方案。   1 架构设计   1.1 系统体系结构   C/S软件体系结构是基于资源不对等,为实现资源共享提出来的[4],并且很多分布式系统都是以此体系结构实现的。该方案以教师机端作为服务器,学生机端作为客户端,实现学生机端同步显示教师机屏幕的功能。该方案的系统体系结构如图1所示。   1.2 系统功能设计   教师机端采用Mirror Driver技术实现屏幕动态变化区域捕捉,为了保证变化图像的稳定准确传输,将捕获到的图像压缩成JPEG(Joint Photographic Experts Group)格式,压缩后的图像压缩率达到95%以上,同时图像也能保证较高的清晰度。
  由于学生机端接收到JPEG图像后,需要将图像在指定位置显示,因此,教师机端需要对传输的JPEG图像加入包头信息,用于描述图像的位置、长度、捕捉的顺序等信息。   UDP协议不提供可靠通信保证[5],不能保证传输的数据能够到达目的地,是一种面向无连接的通信协议;TCP具备可靠的传输特性,能够保证数据准确有序到达目的地,是一种面向连接[6]的协议。在网络传输过程中丢帧会造成学生机端接收的图像出现不连续、花屏等现象,因此,为了保证变化图像能够准确有序地到达学生机端并显示,教师机端采用TCP协议传输变化图像。   由多幅JPEG图像内容合成的图像中往往存在质量因子或分块位置不一致[7]等问题。为了保证合成后图像的一致性和位置的准确性,同时降低图像合成的复杂性,并提高图像合成的效率,将学生机端接收到的JPEG图像转换成BMP(BitMap)图像。该方案实现的系统功能如图2所示。   2 系统实现   2.1 Mirror Driver技术   Mirror Driver由Display Driver与Video Miniport Driver驱动构成。Mirror Driver功能的实现主要依赖Display Driver驱动实现。Display Driver通过Win32 API与内核模式下GDI(Graphics Device Interface)组件交互,并且必须支持GDI调用所需的接口,这些接口是DrvEnableDriver,DrvGetModes,DrvEnablePDEV,DrvCompletePDEV,DrvEnableSurface,DrvDisableSurface,DrvDisablePDEV,DrDisableDriver,DrvAssertMode[3]。   2.2 打包格式   对将要发送的JPEG数据加入包头信息,其中序列号表示捕获的变化图像的顺序,保证学生机端以正确顺序显示变化图像;数据长度表示JPEG图像实际长度,用于在一次Socket接收的数据中分离出一个变化图像;起点x和起点y表示捕获图像在桌面左上角坐标;终点x和终点y表示捕获图像在桌面右下角的坐标。包头格式如图3所示。   2.3 学生机端接收缓冲区设置   Windows MFC对底层Socket[9-10]实现进行了面向对象的封装,使用起来更加方便。本系统使用CSyncSocket类实现网络中数据的异步传输。   当教师机端捕捉变化图像过多,学生机端没有足够缓冲区接收的情况下,就会出现丢帧现象,但是TCP协议会对丢失的帧进行超时重传,这样会影响学生机端对服务器端变化图像的实时显示。为解决这个问题,学生机端需要将底层Socket的缓冲区设置到尽可能大,使用CSyncSocket类中SetSockOpt函数设置,第一个参数使用SO_RCVBUF(用于指定接收缓冲区的大小)。   学生机端每接收一次数据,都需要在接收的数据中提取出JPEG图像,并且提取出的JPEG图像可能有很多个,然后发送消息通知应用程序接收数据,但应用程序不一定能及时处理缓冲区中的消息,如果不能及时处理接收到的数据,会出现丢帧现象,此时TCP不会重传丢失的帧。丢帧会造成客户端图像显示不连续等问题,为了解决此问题,本系统使用动态分配内存的循环缓冲队列方法。   当学生机端接收到数据后,需要根据图3中定义的包格式提取JPEG图像信息。由于JPEG图像的数据长度相差过大,若是提前分配空间,会造成空间浪费现象。此时可以分配足够大的数组空间用于记录已经分配空间的指针,该方案分配30个数组空间,使用WIN7操作系统,4核CPU,在高负载的情况下最高使用15个堆空间,并运转正常。使用循环队列的方式对指向堆空间的指针进行管理,当有数据到来时则分配堆空间,图像合成显示后则销毁指针指向的堆空间。动态分配循环队列缓冲区如图4所示。   2.4 JPEG图像转换成BMP图像   为了实现图像转换,本系统选用目前广泛使用的开源库Libjpeg[11]。Libjpeg库是一个完全由C语言实现的库,包含了JPEG解码、JPEG编码功能的实现。在这里为了能够将接收到的JPEG图像数据转换成BMP数据,并将转换后的BMP图像放入内存,需要对Libjpeg进行如下修改。   在结构体djpeg_dest_ptr中删除FILE*output_file,添加PBYTE pData和UINT nDataLen,记录输出缓冲区的地址和输出缓冲区的大小。   修改write_bmp_header函数,删除函数中写入位图文件[8]的信息,并将位图信息写入内存,添加如下代码:   memcpy(dest->pub.pData,bmpinfoheader,40);   修改finish_output_bmp函数信息,将转换后BMP图像写入输出缓存,添加如下代码:   for (col=dest->row_width; col>0; col--) {   memcpy(pData+i,data_ptr,1);   i++;   data_ptr++;   }   dinfo是jpeg_decompress_struct结构体类型,记录解压过程中的所有信息。JPEG图像转换成BMP图像过程如图5所示。   [初始化dinfo   jpeg_create_decompress()][将接收的jpeg图像数据写入缓存   jpeg_mem_src()][读取JPEG图像的头信息,写入dinfo   jpeg_read_header()][初始化输出缓冲区   jinit_write_bmp()][JPEG图像解压开始
  jpeg_start_decompress()] [将解压数据输出到虚缓冲区   start_output()][从虚缓冲区读数据到输出缓冲区   jpeg_read_scanlines()   put_pixel_rows()][解压完成   finish_output()][清除剩余资源   jpeg_finish_decompress()   jpeg_destroy_decompress()]   图5 JPEG图像转换成BMP图像   2.5 BMP图像的合成显示   学生机端第一次连接教师机端时,会接收到完整的屏幕图像。根据图3中描述的坐标信息,可以知道教师机端屏幕的分辨率,然后根据分辨率建立屏幕显示缓冲区。根据坐标信息,将转换后的BMP图像填充到缓冲区指定位置。BMP图像存储时要求每行的字节数是4的整数倍,若不满足此要求,需要对该行填充字节信息。为了保证图像正常显示,在将接收到的图像数据放到缓冲区指定位置前,去掉填充字节,然后利用Windows提供的GDI库对桌面显示缓冲的图像进行显示[12]。位图显示过程如图6所示。   3 实验结果   该方案实现后,教师机端能够高效捕捉变化区域图像,学生机端可以及时接收教师机端传送的变化图像。在教师机端传输变化图像过多时,学生机端依然能够对变化图像合成并正确显示。学生机端接收的JPEG图像和转换后的BMP图像清晰度对比如图7、图8所示。两个图像分辨率都是110×108。   该方案以教师机端每分钟鼠标移动次数为基准,对教师机端和学生机端进行性能测试,测试环境如下。   教师机端:操作系统,WIN7,32位;CPU,双核,3.0GHZ;内存3G。   学生机端:操作系统,WIN7,64位;CPU,四核,2.66GHZ;内存4G。   测试结果如表1所示。   实验结果表明,经过JPEG压缩,然后转换成BMP图像后,屏幕图像能够保持很好的清晰度,能够准确显示远端教师机屏幕变化;随着每分钟鼠标移动次数的增多,教师机端CPU使用率有很小幅度的升高,学生机端CPU使用率基本上没有变化, 效率较高。   4 结束语   本文旨在提供一种对远端计算机屏幕变化图像进行捕捉,通过网络传输到客户端,并合成显示的完整解决方案。此方案可以应用于远程教学,将教师机桌面变化及时呈现到学生机端;可以应用到远程监控,将多个计算机的屏幕变化图像统一传输到监控客户端,并统一显示。实际部署及应用结果表明,采用本方案实现的系统,性能优良,具有良好的应用前景。   参考文献:   [1] 杨红生,田地,王丰贵等.基于Hook和轮询检测机制的屏幕共享技   术[J].计算机工程与应用,):29-31   [2] 倪晓军,郑龙.基于Mirror Driver的自适应屏幕录制算法[J].计算机工   程,):281-282   [3] 周恕义,陈圣奇,贺玉虎等.基于Mirror Driver的屏幕图像捕捉技术[J].   计算机工程,):295-303   [4] 张友生,陈松乔.C/S与B/S混合软件体系结构模型[J].计算机工程   与应用,8-140   [5] 赵飞,叶震.UDP协议与TCP协议的对比分析与可靠性改进[J].计算   机技术与发展,):219-221   [6] 张艺濒,张志斌,赵咏等.TCP与UDP网络流量对比分析研究[J].计算   机应用究,).   [7] 李晟,张新鹏.利用JPEG压缩特性的合成图像检测[J].应用科学学   报,):281-283   [8] 徐殿武.位图文件操作的程序设计的研究[J].微计算机信息,   2007.05X:176-178   [9] 张允刚,刘常春,刘伟等.基于Socket和多线程的远程监控系统[J].控   制工程,):175-177   [10] 于涛,王健.基于Socket通讯技术的上层监控软件的实现[J].计算机   技术与发展,):243-245   [11] Wang H, You X, Wang R. Design of image capture and   transmission embedded system for remote monitoring[C]//Information Science and Digital Content Technology (ICIDT), 2012 8th International Conference on. IEEE,1-664   [12] 葛永慧,郭虎.谈谈BMP图像的高效率显示[J].测绘通报,2009.z1:   53-54
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。

我要回帖

更多关于 wan miniport 的文章

 

随机推荐