[发明专利]虚拟输入设备在驱动层的实现方法及其系统有效
申请号: | 201110181465.8 | 申请日: | 2011-06-30 |
公开(公告)号: | CN102854974A | 公开(公告)日: | 2013-01-02 |
发明(设计)人: | 张辉 | 申请(专利权)人: | 奇智软件(北京)有限公司 |
主分类号: | G06F3/01 | 分类号: | G06F3/01;G06F9/44 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 许志勇 |
地址: | 100016 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 虚拟 输入 设备 驱动 实现 方法 及其 系统 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种虚拟输入设备在驱动层的实现方法及其系统。
背景技术
在Windows 2000系统下,几乎所有的I/O都是包驱动的,每个工作命令描述一个单独的I/O操作,这个命令告诉驱动程序需要做什幺,并且通过I/O子系统跟踪请求的进展,这些命令被封装成为输入请求包(Iuput Request Package,简称IRP)的形式,当发出一个I/O系统服务时(比如创建文件或读文件的请求),I/O管理器就会通过构造一个描述此请求的IRP,并将该IRP的一个指针传给设备驱动开始对该请求进行处理。如果OS向I/O管理器和设备驱动完整地描述一个I/O请求,那么IRP中保存的信息就可以达到这个目的。
过滤层驱动就是一个拦截到一些已有软件模块的请求的中间层驱动,依靠在请求到达目标前截获请求,过滤驱动就有机会扩展或修改请求的原始接收者所提供的功能或服务。
Windows公开了一些应用程序编程接口(Application Programming Interface,简称API)函数,通过调用这些API或者发送消息的机制来达到对鼠标和键盘的控制。
在一些应用场景中,比如在系统修复自动化项目、软件安装卸载自动化项目、痕迹清理自动化项目等场景下,某些软件为了防止被利用或者非法破解、或者网络游戏出于对控制输入速度的和反外挂的目的,它们会对普通的鼠标和键盘API进行过滤,从而导致从应用层无法操作它们的界面,普通的控制鼠标和键盘的API函数都是无效的。
对于上述问题,现有技术中的一种解决方案是通过WinIo软件包直接控制鼠标和键盘硬件端口。WinIo是一个现在比较流行的第三方库,通过加载一个内核模式的设备驱动程序,利用几种底层编程技巧,使得Windows应用程序可以直接对I/O端口和物理内存进行存取,从而绕过了Windows系统的保护机制。WinIo包含了3个文件:WinIo.dll、WinIo.sys和WINIO.VXD,其中WINIO.VXD驱动程序用在Win95/98系统上,WinIo.sys驱动程序用在WinNT/2000/XP系统上,WinIo.dll提供了功能函数的调用。在WinIo.dll中有两个函数最重要:InitializeWinIo用来初始化WinIo的驱动程序,必须在调用所有其它功能函数之前调用该函数;ShutdownWinIo用来卸载WinIo的驱动程序,在中止应用函数之前或者不再需要使用WinIo时调用。
但是,在使用WinIO向鼠标或者键盘发送数据的时候,必须有硬件的支持(电脑上必须插入PS2鼠标);向串口直接读写数据存在效率的问题,而且存在串口数据同步问题。假如1秒内连续发送了100个数据,可能串口实际响应的只有10个数据,这样就存在同步的问题。WINIO是对物理鼠标直接发送数据,然而在程序发送数据的时候,人为的也可以对物理鼠标或键盘进行操作,这样就有可能导致数据混乱,出现鼠标满屏幕飞的效果或者键入字符错误的效果。
综上所述,对于屏蔽控制鼠标或键盘的API函数的情况下导致无法控制或键盘的问题,现有技术中尚未提出有效地解决方案。
发明内容
有鉴于屏蔽控制鼠标或键盘的API函数的情况下导致无法控制或键盘的问题而做出本发明,为此本发明的主要目的在于提供一种虚拟输入设备在驱动层的实现方法及其系统,其中:
为解决上述问题,本发明提供一种虚拟输入设备在驱动层的实现方法,包括:
调用系统应用程序编程接口API创建虚拟输入设备,在驱动层上挂载所述虚拟输入设备;
将系统输入设备的函数地址记录到所述虚拟输入设备的设备扩展结构体中,以使驱动层自动获得系统输入设备的函数地址;
获取应用层发送给所述虚拟输入设备的输入数据结构体;
所述驱动层根据虚拟输入设备中记录的设备扩展结构体,使用所获取的输入数据结构体控制虚拟输入设备的行为。
其中,所述设备扩展结构体,可以包括:系统输入设备的属性、连接系统输入设备的驱动地址、系统输入设备的端口地址、本驱动所处设备栈的位置信息,和/或所挂载设备的地址。
其中,所述输入数据结构体,可以包括:键盘的键码、键盘按键行为、鼠标的坐标、鼠标的按键类型、鼠标的点击行为、鼠标滚轮的滚动单位数值、和/或鼠标移动轨迹。
其中,所述虚拟输入设备的设备扩展结构体可以在创建所述虚拟输入设备的过程中生成。
其中,所述获取应用层发送给所述虚拟输入设备的输入数据结构体的步骤,可以包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于奇智软件(北京)有限公司,未经奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110181465.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:触控荧幕结构及其制造方法
- 下一篇:一种输送带连接件的带扣