基于Windows显示体系下与小端口驱动通信方法

文档序号:8380805阅读:198来源:国知局
基于Windows显示体系下与小端口驱动通信方法
【技术领域】
[0001]本发明涉及一种基于Windows显示体系下与小端口驱动通信方法。
【背景技术】
[0002]在Windows显示体系下,用户态应用程序无法和显卡小端口驱动进行直接通信,用户态应用程序想和显卡小端口驱动进行通信,需要通过显示驱动来中转,通信数据流如图1所示,当显示驱动未加载的时候,则无法与显卡小端口驱动进行通信。

【发明内容】

[0003]本发明的目的是提供一种基于Windows显示体系下与小端口驱动通信方法,该方法通过绕过显示驱动,让用户态应用程序直接与显卡小端口驱动,这样在显示驱动还未加载的情况下,用户态应用程序也可以和显卡小端口驱动进行通信,同时当显卡驱动被加载起来以后,也不会影响显示驱动与显卡小端口驱动原本的通信行为。
[0004]本发明采用以下方法实现:一种基于Windows显示体系下与小端口驱动通信方法,其特征在于:提供用户态应用程序(M1),通过该用户态应用程序来通知显卡小端口驱动完成特定的任务;
显示驱动(M2),Windows显示体系下的显示驱动,完成⑶I引擎发送来的显示请求;
显卡小端口驱动(M3),Windows显示体系下的小端口驱动,完成显示驱动发送来的显示请求;
私有通信对象(M4),在显卡小端口驱动中创建的私有通信对象,用户态应用程序可以打开该对象,并与之通信;
全局对象表(M5),用于存放小端口驱动中存在的各类对象,包括创建的私有通信对象;
数据分发模块(M6),通过匹配全局对象表,来转发各类通信请求;
数据转换模块(M7),用于将IRP请求转换成VRP请求;以及
私有通信处理模块(M8),用于完成用户态应用程序需要显卡小端口驱动完成的任务;按照以下流程实现:
1)在显卡小端口驱动(M3)加载的过程中创建全局对象表(M5)以及私有的通信对象(M4),并将创建的私有通信对象保存于全局对象表(M5)中;
2)在显卡小端口驱动(M3)加载过程中替换掉显卡小端口驱动(M3)的函数分发表,用于接收用户态应用程序的通信请求;
3)用户态应用程(Ml)序使用Windows系统提供的API打开该私有通信对象(M4),然后使用Windows系统提供的API与私有通信对象(M4)来进行通信;
4)显卡小端口驱动(M3)收到用户态应用程序(Ml)发来的通信请求,会将请求转发到到数据分发模块(M6); 5)数据分发模块(M6)根据全局对象表(M5)来判断该请求是发送给私有通信对象(M4)的,还是来自于显卡驱动(M3)或其他的通信请求;
6)如果是私有通信请求,则转发给私有通信处理模块(M7)来完成该请求;
7)如果是来自于显示驱动(M2)或其他的通信请求,则发送给数据转换模块(M8)。
[0005]本发明的有益效果是:本发明实现了用户态应用程序绕过显示驱动,直接与显卡小端口驱动完成通信,同时又不会影响到显卡小端口驱动本身的通信行为,如在存在多个显示设备的系统中,其中部分显示设备的显示驱动还未加载,这时候用户态应用程序需要该显示设备的显卡小端口驱动完成一定的任务,就需要绕过该显示设备的显示驱动,直接与显卡小端口驱动进行通信。
【附图说明】
[0006]图1是现有Windows显示体系下用户态应用程序和显卡小端口驱动数据通信流程示意图。
[0007]图2是本发明各部分的相互关系示意图。
【具体实施方式】
[0008]为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的【具体实施方式】做详细的说明。
[0009]在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的【具体实施方式】的限制。
[0010]请参见图2,本发明的方法由以下几个部分组成:
1)用户态应用程序(Ml)
2)显示驱动(M2)
3)显卡小端口驱动(M3)
4)私有通信对象(M4)
5)全局对象表(M5)
6)数据分发模块(M6)
7)数据转换模块(M7)
8)私有通信处理模块(M8)
其中各部分主要技术特征:
I)用户态应用程序(Ml):
通过用户态应用程序来通知显卡小端口驱动来完成一些特定的任务。
[0011]2)显示驱动(M2):
Windows显示体系下的显示驱动,主要完成⑶I引擎发送来的显示请求。
[0012]3)显卡小端口驱动(M3):
Windows显示体系下的小端口驱动,主要完成显示驱动发送来的显示请求。
[0013]4)私有通信对象(M4):
在显卡小端口驱动中创建的私有通信对象,用户态应用程序可以打开该对象,并与之通信。
[0014]5)全局对象表(M5):
用于存放小端口驱动中存在的各类对象,包括我们创建的私有通信对象。
[0015]6)数据分发模块(M6):
通过匹配全局对象表,来转发各类通信请求。
[0016]7)数据转换模块(M7):
用于将IRP请求转换成VRP请求。
[0017]8)私有通信处理模块(M8):
用于完成用户态应用程序需要显卡小端口驱动完成的任务。
具体的操作过程如下:
1)在显卡小端口驱动(M3)加载的过程中创建全局对象表(M5)以及私有的通信对象(M4),并将创建的私有通信对象保存于全局对象表(M5)中。
2)在显卡小端口驱动(M3)加载过程中替换掉显卡小端口驱动(M3)的函数分发表,用于接收用户态应用程序的通信请求。
[0018]3)用户态应用程(Ml)序使用Windows系统提供的API打开该私有通信对象(M4),然后使用Windows系统提供的API与私有通信对象(M4)来进行通信。
[0019]4)显卡小端口驱动(M3)收到用户态应用程序(Ml)发来的通信请求,会将请求转发到到数据分发模块(M6)。
[0020]5)数据分发模块(M6)根据全局对象表(M5)来判断该请求是发送给私有通信对象(M4)的,还是来自于显卡驱动(M3)或其他的通信请求。
[0021]6)如果是私有通信请求,则转发给私有通信处理模块(M7)来完成该请求。
[0022]7)如果是来自于显示驱动(M2)或其他的通信请求,则发送给数据转换模块(M8)。
[0023]本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
【主权项】
1.一种基于Windows显示体系下与小端口驱动通信方法,其特征在于:提供 用户态应用程序(M1),通过该用户态应用程序来通知显卡小端口驱动完成特定的任务; 显示驱动(M2),Windows显示体系下的显示驱动,完成⑶I引擎发送来的显示请求; 显卡小端口驱动(M3),Windows显示体系下的小端口驱动,完成显示驱动发送来的显示请求; 私有通信对象(M4),在显卡小端口驱动中创建的私有通信对象,用户态应用程序可以打开该对象,并与之通信; 全局对象表(M5),用于存放小端口驱动中存在的各类对象,包括创建的私有通信对象; 数据分发模块(M6),通过匹配全局对象表,来转发各类通信请求; 数据转换模块(M7),用于将IRP请求转换成VRP请求;以及 私有通信处理模块(M8),用于完成用户态应用程序需要显卡小端口驱动完成的任务;按照以下流程实现: 1)在显卡小端口驱动(M3)加载的过程中创建全局对象表(M5)以及私有的通信对象(M4),并将创建的私有通信对象保存于全局对象表(M5)中; 2)在显卡小端口驱动(M3)加载过程中替换掉显卡小端口驱动(M3)的函数分发表,用于接收用户态应用程序的通信请求; 3)用户态应用程(Ml)序使用Windows系统提供的API打开该私有通信对象(M4),然后使用Windows系统提供的API与私有通信对象(M4)来进行通信; 4)显卡小端口驱动(M3)收到用户态应用程序(Ml)发来的通信请求,会将请求转发到到数据分发模块(M6); 5)数据分发模块(M6)根据全局对象表(M5)来判断该请求是发送给私有通信对象(M4)的,还是来自于显卡驱动(M3)或其他的通信请求; 6)如果是私有通信请求,则转发给私有通信处理模块(M7)来完成该请求; 7)如果是来自于显示驱动(M2)或其他的通信请求,则发送给数据转换模块(M8)。
【专利摘要】本发明涉及基于Windows显示体系下与小端口驱动通信方法,在显卡小端口驱动的加载过程中,创建私有的通信对象,并替换掉显卡小端口驱动原本的函数分发表,这样用户态的应用程序就可以直接打开该通信对象,与之完成通信,但因为我们替换掉了显卡小端口驱动原本的函数分发表,故显卡小端口驱动原本的通信请求也被我们所截获,所以需要通过的恰当的方式来完成这些请求,以避免改变了显卡小端口驱动原本的通信行为。
【IPC分类】G06F9-54
【公开号】CN104699543
【申请号】CN201510138370
【发明人】杨明静
【申请人】福州大学
【公开日】2015年6月10日
【申请日】2015年3月27日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1