基于数据过滤的多输入支持原理

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:mayi2800
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文从驱动级过滤多输入的数据,提供了一种方法用来支持一台计算机的多输入设备的实时运行,如多鼠标、多键盘运行,将此方法实现为多设备输入接口,并使用此接口制作了计算机的多鼠标实时操控过滤驱动,命名为MouFi。
  关键词:计算机;多输入设备;原理
  中图分类号:TP391.1 文献标识码:A 文章编号:1007-9599 (2012) 10-0000-02
  随着团队协作工作和人机交互的进一步发展,支持多人同时操作同一计算机显得十分有意义,使用多个同类输入设备(如多个鼠标)对同一主机进行实时操控,独立完成各项操作互不影响,可使多人同时共享一台电脑的各项资源,特别在电脑紧缺或不方便联网的情况,提高电脑的利用率,并在单机多人游戏领域显示其优势。本文从驱动级过滤多输入的数据,提供了一种方法用来支持一台计算机的多输入设备的实时运行,如多鼠标、多键盘运行,将此方法实现为多设备输入接口,并使用此接口制作了计算机的多鼠标实时操控过滤驱动,命名为MouFi。
  主要贡献有以下几个方面:1.本文所提供的内核级信号过滤方法普适于所有人机交互输入设备(human interface devices input)。2.本方法主要用于提供內核级信号过滤接口,在此基础上,可编写多种应用程序实现多输入的用户级应用。3.本文所提供的方法实现接口后,内核运行在系统进程,属于驱动程序级别,更贴近底层,过滤效率高,系统资源占用较少。4.本文所实现的范例系统可以支持2到6部甚至更多鼠标独立工作。
  相关工作:目前国内外已有不少支持多输入的软件,但大都存在不足有待改进。TeamPlayer软件支持同一电脑多鼠标、多键盘的操作。但降低了输入设备的灵活性,并不适用于一些高速游戏。且鼠标操作中会有冲突,仅能实现鼠标的分时控制。MultiPointer以软件形式,通过切换当前的操作鼠标为默认指针的方式,支持同一电脑的最多5个鼠标的同时操作。但不同鼠标的同时操作会产生闪烁,并无法支持同时点击,鼠标拖曳操作也会受到其他移动中鼠标的影响。而此类多个输入设备同时控制不同对象的问题则可以通过本文提供的接口编程解决。
  系统设计:
  相关定义:
  IRP(I/O request packets):I/O请求包,内核模式的结构体,Windows驱动模型和Windows NT设备驱动间通过传递此结构体与操作系统进行信息交流。
  MOUSE_INPUT_DATA:IRP包中的一个结构体,包含了鼠标输入数据。当鼠标器产生一个中断时,此数据结构中的各参数值将被设置,并包含在IRP中传回操作系统,操作系统根据其数值产生相应消息,插入消息队列等待执行。
  相关原理:
  鼠标工作原理:鼠标设备接入计算机后,操作系统为了获取一次鼠标操作,首先会产生一个鼠标相关的I/O请求包(IRP_MJ_READ(MouClass)),分层级发送到鼠标物理驱动的设备栈,驱动收到此IRP后会一直保持为等待(pending)状态。当鼠标器有动作引发中断时,鼠标物理驱动就会将鼠标事件的相关数据以系统定义的MOUSE_INPUT_DATA数据结构形式填入IRP中,并完成这个IRP,由驱动设备自底向上传送。操作系统获取该鼠标操作,产生Windows消息插入消息队列中,之后立即产生下一个鼠标相关I/O请求包,进入下一轮等待。
  鼠标工作驱动设置:Windows操作系统利用mouclass驱动将不同类型(如PS2、USB或触板等)鼠标进行抽象,在系统进程读取鼠标数据的时候,并不对具体端口进行区分。在驱动结构中,每个mouclass驱动中都有若干PointerClass设备,其数量由系统鼠标总数决定,每个PointerClass设备都依附于其独有的鼠标接口设备PointerPort。
  鼠标数据过滤方法:指在操作系统获取鼠标操作、产生消息并插入消息队列、供用户程序处理的全过程中,通过特定过滤方法,使得流过的数据经指定处理后传递给上一层。过滤方法主要分为内核级过滤和用户级过滤。内核级过滤是指在分层驱动模型中允许某一驱动构造一个匿名的设备对象,在相应层级接受分层传递的IRP,使得该IRP经该对象的过滤设备驱动程序处理后再继续向上传递。用户级过滤方法主要有消息钩子(Message Hook)等,利用应用程序接口(API)以消息为单位进行过滤,在用户程序处理之前对该消息进行指定处理。比较实现方式原理可知,内核级过滤方法更高效并具有更强的可靠性。
  实现方法:
  为了高效的支持多输入设备的运行并简化用户级程序的操作,本方法采取内核级过滤方式对设备的输入数据进行过滤修改继续上传,并根据过滤获得的鼠标事件真实数据进行模拟操作,创建了WDM式过滤驱动MouFi。
  过滤驱动的初始化
  计算机启动后,操作系统载入系统驱动时由DriverEntry入口进入该过滤驱动程序,将其载入系统,设置在接口驱动及鼠标类驱动之间,过滤驱动MouFi创建主设备(MainDevice)及其符号链接,并初始化各种状态变量。在计算机运行过程中,若有新的鼠标器设备接入主机,过滤驱动MouFi使用AddDevice在该鼠标类设备PointerClass及其对应端口类设备PointerPort之间创建过滤设备,逻辑上插入了二者之间,接受和发送IRP,此后过滤驱动MouFi主要进行以下两方面的操作。
  数据过滤
  1.各鼠标器设备下层对应设置的过滤设备接收下级端口驱动设备对象上传的IRP,将IRP鼠标数据传递到主设备,将包中MOUSE_INPUT_DATA数据放入主设备缓冲区等待用户程序调用,并根据IRP中的MOUSE_INPUT_DATA数据结构的硬件编号将原IRP包中MOUSE_INPUT_DATA的对应鼠标实例的位置信息、操作信息等全部项清零。
  2.将清零后的IRP包向上传递到鼠标器驱动设备对象PointerClass进行进一步处理。操作系统接收返回的IRP,分析清零后的MOUSE_INPUT_DATA产生无效果的Windows消息,随即产生下次IRP操作。   事件模拟
  用户程序从主设备缓存获取真实MOUSE_INPUT_DATA数据结构,对数据结构参数值(硬件编号、X轴Y轴位移量、按键等数据)进行提取。依据所提取参数值使用Win32 API mouse_event来模拟响应的动作。对于涉及鼠标移动的动作,得到动作响应后确定当前系统默认鼠标的指针图标HCURSOR,并利用BitBlt等API函数将指针画在该鼠标实例的指针层窗体上。
  在过滤驱动运行过程中,操作系统始终无法获得有效的鼠标操作数据,因而鼠标指针不受操作系统支配。只有某个用户级的应用程序通过读取過滤驱动的主设备,才可获得真实的鼠标操作数据,进而根据硬件编号进行区分,根据偏移和按键进行实践模拟,依次产生相应响应动作。用户体验近似多鼠标控制计算机,模拟支持多输入设备工作。
  系统演示:对本文提供的接口经上述过程编程完成了多鼠标过滤驱动MouFi的实现,点击安装后重启计算机,即完成了过滤驱动的初始化,插入多个鼠标设备后,计算机显示器上则会显示多个鼠标器指针,可同时独立完成多项操作。
  讨论:本文所提供的接口程序在理论上可用以支持无限多个人机交互设备同时运行,但在实际运行中会存在硬件资源限制、计算机处理时间迟延等约束,使得所支持的输入设备存在上限。以鼠标器为例,Windows操作系统采样两次鼠标器中断的最短时间间隔T为15.625ms,而系统处理一次鼠标器操作的时间为Min{cpu处理一个中断的时间t1,算法模拟一次鼠标器操作时间t2}。鼠标器个数最大值为n = T / t
  总结:本文提供了一种基于内核级数据过滤的多设备输入支持方法,并基于此方法实现了多设备输入的接口,可用于实现多个设备对同一计算机的独立操作,开发用户可在此基础上编写程序,实现多个输入设备同时独立控制多个对象。为了进一步展示此接口的用途,本文利用此接口实现了多鼠标输入的系统,可以同时支持2到6部甚至更多鼠标器设备在同一计算机上运行。
  参考文献:
  [1]王淼,沈超.输入消息截获方法对鼠标动力学识别的影响[D].西安交通大学博士生论文,2011
  [2]谭文,杨潇,邵坚磊.Windows内核安全编程[M].北京:电子工业出版社,2009:17-83
  [3]SARGENT,M,SHOEMAKER, R.L.The personal computer from the inside out (3rd ed.).New York, Addison-Wesley.1995
  [4]SEGALOWITZ,S.,GRAVES,R. .Suitability of the IBM XT, AT, and PS/2 keyboard, mouse, and game port as response devices in reaction time paradigms.Behavior Research Methods, Instruments, & Computers,1990: 283–289
其他文献
曾几何时,当计算机不再只为计算庞大的数据而生;曾几何时当计算机成为了家电下乡产品中的一员,而被定义为普通家用电器时,你是否觉得计算机在你我的生活之中几乎无孔不入呢?人们越来越接受计算机,将其视为必备日常家电,是因为计算机强大的功能。计算机不再只跟数字打交道,它几乎深入了我们生活的方方面面,可以说小到开门七件事,大到宇宙和国防都少不了计算机的身影。计算机最拿手的除了数据运算以外,就是它的多媒体处理能
用磁控溅射法分别在玻璃基底和硅片上沉积Tbx(Fe85Co15)100-x(x=24.7,40.8,厚-20nm)薄膜和Fe51Pt49(8nm)/Tb~(Fe85Co15)100x(~70nm)双层薄膜,研究了非晶TbFeCo薄膜中富FeCo晶粒的存在对薄膜磁
采用氧化物法制备了Ni0.6Cu0.05Zn0.35Fe2O4材料。研究了Bi2O3掺杂对NiCuZn铁氧体材料旋磁性能的影响。用XRD和SEM研究样品的晶体结构及微观形貌。结果表明,掺入3wt%的Bi2O3可
随着基于TCP/IP技术的Internet在世界范围的飞速发展和普及,Internet上传送的业务已由E—mail,FTP,WWW等数据业务为主向传送语音、视频、数据等综合业务过渡,如何向用户提供不同级
<正> 自然换羽是鸡的一种生理现象,换羽时间达4个月,鸡在换羽期间产蛋量大大减少,且因个体换羽时间有早有晚,换羽后开产也有先有后,产蛋高峰期来的晚,给饲养管理带来很多不便
用化学沉淀法制备Fe3O4磁性颗粒,然后在偏硅酸钠溶液中进行的酸化处理,获得了表面包覆Si02层的Fe3O4磁性颗粒。采用X射线衍射仪、扫描电镜、光电能谱仪分析了Fe3O4微粒的形貌、
工程项目管理是复杂的系统协同工程,涉及多方面的协作和系统运行及众多部门的信息交流与沟通,因此工程项目管理系统中信息的收集整理、各部门在管理过程中的沟通和协调工作量很
在海洋工程和港口与近海工程实验研究领域,研究人员通常采用实验室水槽造波技术来模拟海洋波浪,波浪的模拟是一种重要的实验技术,而造波机是进行水槽实验的必备实验装置。根据造波板运动形式的不同,可以分为平推式和摇摆式造波机。平推式和摇摆式造波机由于造波原理不同,其力学性能和波浪特征参数也各不相同,由于实验要求的复杂性和多样性,在实验需要不同的波浪时,单一运动形式的造波机已不能满足要求。为适应不同的实验要求
开放式软件保护模式恢复并发扬了久违的程序员精神——自由、开放、创新和共享,并推翻了微软的话语霸权,重新修订了“我做了操作系统,你付钱”的旧有的游戏规则,开创了“我给你一
采用水热法一步合成了Co0.7Fe0.3/CoFe2O4纳米复合材料。利用粉末X射线衍射(XRD)、透射电子显微镜(TEM)观察了纳米复合材料的结构及形貌。室温穆斯堡尔谱(MS)明显地由对应于尖晶石型钴