虚拟输入设备在驱动层的实现方法及其系统的制作方法_2

文档序号:9375509阅读:来源:国知局
应用层发送给虚拟输入设备的输入数据结构体。
[0053]具体地,步骤S16包括:调用Windows驱动开发包中的API创建一个控制设备对象(Control Device Object,简称CD0)。在实际应用中,应用层会通过系统API向驱动层发送很多IRP,利用创建的CDO获取应用层发送至驱动层的控制虚拟输入设备的IRP,解析该IRP得到虚拟输入设备的输入数据结构体。
[0054]步骤S18,驱动层根据虚拟输入设备中记录的设备扩展结构体,使用所获取的输入数据结构体控制虚拟输入设备的行为。
[0055]根据解析得到的虚拟输入设备的输入数据结构体,构造出驱动层能够识别的输入数据结构体(数据结构),例如:对于虚拟鼠标,得到数据结构MOUSE_INPUT_DATA ;对于虚拟键盘,得到数据结构KEYBOARD_INPUT_DATA。通过设备扩展结构体对输入数据结构体进行回调实现控制,并返回实际的结果。
[0056]下面详细介绍构造的驱动层能够识别的输入数据结构体,具体包括:
[0057](I)鼠标或者键盘通信过程中使用的结构体:
[0058]USHORT MakeCode ;//指定按键的扫描码
[0059]USHORT Flags ;//按键码,即按下的是什么键,例如A,B,ESC,空格键等等
[0060]USHORT Flagsx ;//标志移动方式,相对移动还是绝对移动
[0061]USHORT ButtonFlags ; //标志是鼠标左键按下,左键弹起,右键按下,右键弹起等等
[0062]USHORT ButtonData ; //指定鼠标滚轮滚动多少个单位
[0063]LONG LastX ;//指定X轴绝对坐标或者相对坐标
[0064]LONG LastY ;//指定Y轴绝对坐标或者相对坐标
[0065](2)鼠标操作过程中使用的结构体:
[0066]USHORT Type ;/*鼠标动作类型,O:移动,1:按键,2:滚轮,3:移动(支持扩展屏幕)
[0067]USHORT SimulateType ; //模拟移动时米用的算法,O: Simple, 1: Line, 2: Adjust,3:Fast
[0068]USHORT AxisFlag ; //0:相对坐标,1:相对坐标
[0069]int X ;// 目标坐标
[0070]int y ;// 目标坐标
[0071]USHORT ButtonType ; /*0:按下和弹出单独模拟,1:按下和弹出同时模拟,并且可以指示多少个按键同时按下*/
[0072]USHORT ButtonFlags ;标志是鼠标左键按下,左键弹起,右键按下,右键弹起等等
[0073]short int Count ; /*滚动数量,上滚:正数;下滚:负数*/
[0074]通过以上描述可以看出,本发明能够创建虚拟输入设备并使得创建出来的虚拟输入设备能够模拟真实设备操作。在创建虚拟鼠标时其操作具有以下特点:
[0075](I)移动的灵敏度较高,可以精确到移动一个像素;
[0076](2)鼠标移动方式可以是绝对坐标和相对坐标;
[0077](3)鼠标的操作可以支持扩展屏幕;
[0078](4)可以指定移动的轨迹,可以是一步到位的移动,也可以是多步的移动,甚至是沿着某条曲线移动。
[0079]通过本发明的上述实施例,在软件屏蔽虚拟输入设备消息的情况下也能够控制虚输入拟设备,有效防止了软件的限制,并且具有操作精度高,速度快的特点。
[0080]根据本发明的实施例,还提供了一种虚拟输入设备在驱动层的实现系统。
[0081]图2是根据本发明实施例的虚拟输入设备在驱动层的实现系统的结构框图,如图2所示,该系统包括:虚拟输入设备创建模块10,记录模块20,获取模块30,控制模块40。
[0082]虚拟输入设备创建模块10用于调用系统API创建虚拟输入设备,在驱动层上挂载虚拟输入设备。
[0083]记录模块20用于将系统输入设备的函数地址记录到虚拟输入设备的设备扩展结构体中,以使驱动层自动获得系统输入设备的函数地址。该虚拟输入设备的设备扩展结构体在创建虚拟输入设备的过程中生成。其中,设备扩展结构体包括但不限于:系统输入设备的属性、连接系统输入设备的驱动地址、系统输入设备的端口地址、本驱动所处设备栈的位置信息,和/或所挂载设备的地址。
[0084]获取模块30用于获取应用层发送给虚拟输入设备的输入数据结构体。在具体应用中,输入数据结构体包括但不限于:键盘的键码、键盘按键行为、鼠标的坐标、鼠标的按键类型、鼠标的点击行为、鼠标滚轮的滚动单位数值、和鼠标移动轨迹。
[0085]如图3所示,获取模块30进一步包括:IRP获取单元32和解析单元34。IRP获取单元用于获取应用层发送至驱动层的控制虚拟输入设备的输入请求包IRP。具体地,IRP获取单元创建控制设备对象CD0,利用CDO获取应用层发送至驱动层的控制虚拟输入设备的IRP。解析单元34用于解析IRP得到虚拟输入设备的输入数据结构体。
[0086]控制模块40用于驱动层根据虚拟输入设备中记录的设备扩展结构体,使用所获取的输入数据结构体控制虚拟输入设备的行为。控制模块40通过设备扩展结构体对输入数据结构体进行回调实现控制。
[0087]综上所示,根据本发明上述技术方案,在软件屏蔽虚拟输入设备消息的情况下也能够控制虚拟输入设备,有效地防止软件的限制,并且具有操作精度高,速度快的特点?’另夕卜,本发明好具有良好的兼容行,能够兼容从windows2000到win7的多个版本。
[0088]以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
【主权项】
1.一种虚拟输入设备在驱动层的实现方法,其特征在于,包括: 调用系统应用程序编程接口 API创建虚拟输入设备,在驱动层上挂载所述虚拟输入设备; 将系统输入设备的函数地址记录到所述虚拟输入设备的设备扩展结构体中,以使驱动层自动获得系统输入设备的函数地址; 获取应用层发送给所述虚拟输入设备的输入数据结构体; 所述驱动层根据虚拟输入设备中记录的设备扩展结构体,使用所获取的输入数据结构体控制虚拟输入设备的行为。2.如权利要求1所述的方法,其特征在于,所述设备扩展结构体,包括:系统输入设备的属性、连接系统输入设备的驱动地址、系统输入设备的端口地址、本驱动所处设备栈的位置信息,和/或所挂载设备的地址。3.如权利要求1所述的方法,其特征在于,所述输入数据结构体,包括:键盘的键码、键盘按键行为、鼠标的坐标、鼠标的按键类型、鼠标的点击行为、鼠标滚轮的滚动单位数值、和/或鼠标移动轨迹。4.如权利要求1所述的方法,其特征在于,所述虚拟输入设备的设备扩展结构体在创建所述虚拟输入设备的过程中生成。5.如权利要求1所述的方法,其特征在于,所述获取应用层发送给所述虚拟输入设备的输入数据结构体的步骤,包括: 获取应用层发送至驱动层的控制所述虚拟输入设备的输入请求包IRP ; 解析所述IRP得到所述虚拟输入设备的输入数据结构体。6.根据权利要求5所述的方法,其特征在于,所述获取应用层发送至驱动层的控制所述虚拟输入设备的IRP的步骤,包括: 创建控制设备对象CDO ; 利用所述⑶O获取应用层发送至驱动层的控制所述虚拟输入设备的IRP。7.如权利要求1所述的方法,其特征在于,所述控制虚拟输入设备的行为的步骤,包括:通过设备扩展结构体对输入数据结构体进行回调实现控制。8.—种虚拟输入设备在驱动层的实现系统,其特征在于,包括: 虚拟输入设备创建模块,用于调用系统应用程序编程接口 API创建虚拟输入设备,在驱动层上挂载所述虚拟输入设备; 记录模块,用于将系统输入设备的函数地址记录到所述虚拟输入设备的设备扩展结构体中,以使驱动层自动获得系统输入设备的函数地址; 获取模块,用于获取应用层发送给所述虚拟输入设备的输入数据结构体; 控制模块,用于所述驱动层根据虚拟输入设备中记录的设备扩展结构体,使用所获取的输入数据结构体控制虚拟输入设备的行为。9.如权利要求8所述的系统,其特征在于,所述设备扩展结构体,包括:系统输入设备的属性、连接系统输入设备的驱动地址、系统输入设备的端口地址、本驱动所处设备栈的位置信息,和/或所挂载设备的地址。10.如权利要求8所述的系统,其特征在于,所述输入数据结构体,包括:键盘的键码、键盘按键行为、鼠标的坐标、鼠标的按键类型、鼠标的点击行为、鼠标滚轮的滚动单位数值、和/或鼠标移动轨迹。11.如权利要求8所述的系统,其特征在于,所述虚拟输入设备的设备扩展结构体在创建所述虚拟输入设备的过程中生成。12.如权利要求8所述的系统,其特征在于,所述获取模块,包括: IRP获取单元,用于获取应用层发送至驱动层的控制所述虚拟输入设备的输入请求包IRP ; 解析单元,用于解析所述IRP得到所述虚拟输入设备的输入数据结构体。13.根据权利要求12所述的系统,其特征在于,所述IRP获取单元,创建控制设备对象⑶O,利用所述⑶O获取应用层发送至驱动层的控制所述虚拟输入设备的IRP。14.如权利要求8所述的系统,其特征在于,所述控制模块,通过设备扩展结构体对输入数据结构体进行回调实现控制。
【专利摘要】本发明公开了一种虚拟输入设备在驱动层的实现方法及其系统,该方法包括:调用系统应用程序编程接口创建虚拟输入设备,在驱动层上挂载虚拟输入设备;将系统输入设备的函数地址记录到虚拟输入设备的设备扩展结构体中,以使驱动层自动获得系统输入设备的函数地址;获取应用层发送给虚拟输入设备的输入数据结构体;驱动层根据虚拟输入设备中记录的设备扩展结构体,使用所获取的输入数据结构体控制虚拟输入设备的行为。通过本发明,实现了在软件屏蔽虚拟输入设备消息的情况下控制虚拟输入设备的效果。
【IPC分类】G06F13/10
【公开号】CN105095121
【申请号】CN201510508677
【发明人】张辉
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
【公开日】2015年11月25日
【申请日】2011年6月30日
【公告号】CN102854974A, CN102854974B
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1