专利名称:Twain协议的远程重定向方法及系统的制作方法
技术领域:
本发明涉及一种TWAIN协议的远程重定向方法及系统。
背景技术:
TWAIN协议,是应用软件从计算机外设获取静态图像的国际标准。TWAIN协议的协议架构使得TWAIN协议只能在同一系统环境中使用,不能支持虚拟化架构。在虚拟化架构中无法直接使用TWAIN协议,即客户端的本机系统通过远程桌面接入虚拟桌面,将服务端构架在远程桌面系统中时,通过客户端本机系统访问服务端第三方应用程序时,因为服务端的第三方应用程序运行在服务器系统中,而TWAIN驱动安装在客户端上,二者在不同的 系统环境中运行,因此服务端支持TWAIN协议的第三方应用程序无法直接使用客户端本机系统的TWAIN驱动,导致服务端支持TWAIN协议的第三方应用程序无法直接操作客户端的TWAIN驱动。
发明内容本发明要解决的技术问题,在于提供一种TWAIN协议的远程重定向方法及系统。本发明采用以下技术方案解决上述技术问题技术方案一、一种TWAIN协议的远程重定向方法,包括如下步骤步骤I、客户端本机系统通过远程桌面接入虚拟桌面,将服务端构架在虚拟桌面中,用户在虚拟桌面中打开支持TWAIN协议的第三方应用程序;步骤2、服务端的TWAIN协议截获模块截获所述第三方应用程序调用的TWAIN协议指令,并将所述第三方应用程序调用的TWAIN协议指令发送至服务端的第一网络通信模块;步骤3、第一网络通信模块通过虚拟通道将所述第三方应用程序调用的TWAIN协议指令发送至客户端的第二网络通信模块;步骤4、第二网络通信模块将所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN协议处理模块;步骤5、所述TWAIN协议处理模块将接收到的所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN驱动,接着接收TWAIN驱动处理TWAIN指令的结果,然后将所述TWAIN驱动处理TWAIN指令的结果经过第二网络通信模块发送至第一网络通信模块;步骤6、第一网络通信模块将接收到的所述TWAIN驱动处理TWAIN指令的结果转发至所述TWAIN协议截获模块,然后再由所述TWAIN协议截获模块将其返回至所述第三方应用程序,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序在客户端的使用。进一步地,所述TWAIN协议截获模块通过一新开发的源管理器截获TWAIN协议指令,所述源管理器能够截获TWAIN协议指令,并将TWAIN协议指令经第一网络通信模块、虚拟通道传递给客户端的TWAIN驱动进行处理。进一步地,所述TWAIN协议截获模块还截获Hook DSM_Entry函数,抓取DSM_Entry函数的入参,即TWAIN协议指令,进而达到截获TWAIN协议指令的目的。进一步地,所述TWAIN协议截获模块还通过Hook LoadLibrary函数,当检测到第三方应用程序载入服务端系统自带的TWAIN源管理器动态库时,改变LoadLibrary函数过程,使其载入本系统开发的实现了 DSM_Entry接口的动态库,当第三方应用程序调用DSM_Entry接口时,服务端系统就能够通过DSM_Entry函数入参,得知第三方应用程序的TWAIN协议指令,从而达到截获TWAIN指令的目的。
技术方案二、一种TWAIN协议的远程重定向系统,包括客户端系统,通过客户端系统的远程桌面接入虚拟桌面,将服务端构架在虚拟桌面中;服务端系统,通过虚拟桌面打开服务端系统中支持TWAIN协议的第三方应用程序;所述远程重定向系统还包括设于服务端的TWAIN协议截获模块和第一网络通信模块、设于客户端的TWAIN协议处理模块和第二网络通信模块;所述TWAIN协议截获模块截获所述第三方应用程序调用的TWAIN协议指令,并将所述第三方应用程序调用的TWAIN协议指令发送至第一网络通信模块;所述第一网络通信模块通过虚拟通道将所述第三方应用程序调用的TWAIN协议指令发送至第二网络通信模块;所述第二网络通信模块将所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN协议处理模块;所述TWAIN协议处理模块将接收到的所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN驱动,接着接收TWAIN驱动处理TWAIN指令的结果,然后将所述TWAIN驱动处理TWAIN指令的结果经过第二网络通信模块发送至第一网络通信模块;第一网络通信模块将接收到的所述TWAIN驱动处理TWAIN指令的结果转发至所述TWAIN协议截获模块,然后再由所述TWAIN协议截获模块将其返回至所述第三方应用程序,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序在客户端的使用。进一步地,所述TWAIN协议截获模块通过一新开发的源管理器截获TWAIN协议指令,所述源管理器能够截获TWAIN协议指令,并将TWAIN协议指令经第一网络通信模块、虚拟通道、第二网络通信模块传递给客户端的TWAIN驱动进行处理。进一步地,所述TWAIN协议截获模块还截获Hook DSM_Entry函数,抓取DSM_Entry函数的入参即TWAIN协议指令,进而达到截获TWAIN协议指令的目的。进一步地,所述TWAIN协议截获模块还通过Hook LoadLibrary函数,当检测到第三方应用程序载入服务端系统自带的TWAIN源管理器动态库时,改变LoadLibrary函数过程,使其载入本系统开发的实现了 DSM_Entry接口的动态库,当第三方应用程序调用DSM_Entry接口时,服务端系统就能够通过DSM_Entry函数入参,得知第三方应用程序的TWAIN协议指令,从而达到截获TWAIN指令的目的。本发明具有如下优点本发明通过截获服务端支持TWAIN协议的第三方应用程序的TWAIN协议指令,然后将该指令通过虚拟通道转发给客户端,客户端解析和处理这些指令,最后将处理结果返回给服务端,实现虚拟桌面中的第三方应用程序能够使用客户端中的TWAIN驱动。本发明还提供了三种截获方式1.替换系统TWAIN源管理器;2.直接截获应用程序的DSM_Entry的函数调用;3.截获第三方应用程序载入TWAIN源管理器的过程,改变其载入的源管理器;通过上述三种方式中的任意一种或多种方式截获到系统的TWAIN指令,即DSM_Entry函数的参数,然后将指令发送给客户端的TWAIN驱动,从而达到应用程序操作客户端TWAIN驱动的效果。
下面参照附图结合实施例对本发明作进一步的说明。图I为本发明TWAIN协议的远程重定向方法的系统构架图。
具体实施方式
请参阅图1,结合本发明的系统构架图对本发明的具体实施过程进行详细阐述。一种TWAIN协议的远程重定向方法,包括如下步骤步骤I、客户端本机系统通过远程桌面接入虚拟桌面,将服务端构架在虚拟桌面中,用户在虚拟桌面中打开服务端支持TWAIN协议的第三方应用程序;步骤2、所述第三方应用程序在打开的过程中调用TWAIN协议指令,服务端通过一TWAIN协议截获模块截获所述TWAIN协议指令,并将所述TWAIN协议指令发送至第一网络通信模块;所述TWAIN协议截获模块安装在服务端上;步骤3、第一网络通信模块通过虚拟通道将所述TWAIN协议指令发送至第二网络通信模块;所述虚拟通道,广义上来讲是指虚拟化协议客户端与虚拟化协议服务器组件之间的网络通信通道,其底层为网络连接层,通过TCP或者UDP协议进行通讯。虚拟通道是RDP、PCOIP、ICA等虚拟化协议的通讯基础;步骤4、第二网络通信模块将所述TWAIN协议指令传送至一 TWAIN协议处理模块;所述TWAIN协议处理模块安装在客户端上;步骤5、所述TWAIN协议处理模块将接收到的所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN驱动(所述TWAIN驱动即TWAIN源),接着接收TWAIN驱动处理TWAIN指令的结果,然后将所述TWAIN驱动处理TWAIN指令的结果经过第二网络通信模块发送至第一网络通信模块;所述传送是通过调用客户端系统自带的TWAIN源管理器的DSM_Entr函数接口传送给客户端的TWAIN驱动;所述TWAIN驱动处理TWAIN指令的结果即客户端上DSM_Entry函数的返回值和参数信息;步骤6、第一网络通信模块将接收到的所述TWAIN驱动处理TWAIN指令的结果转发至所述TWAIN协议截获模块,然后再由所述TWAIN协议截获模块将其返回至所述第三方应用程序,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序在客户端的使用。这里所述第三方应用程序为非本系统开发的第三方应用程序。客户端在Windows终端服务以及虚拟桌面下,所述TWAIN协议截获模块可以通过以下三种方式中的任意一种或多种截获第三方应用程序的TWAIN指令方式一、所述TWAIN协议截获模块通过一新开发的源管理器截获TWAIN协议指令;所述源管理器替换服务端系统中自带的TWAIN源管理器;因为服务端系统中自带的TWAIN源管理器只能操作服务端系统中的TWAIN驱动,无法操作客户端系统中的TWAIN驱动,而本发明开发的源管理器与服务端系统中自带的TWAIN源管理器的不同之处在于本发明开发的源管理器能够截获TWAIN协议指令,并将TWAIN协议指令通过虚拟通道传递给客户端的TWAIN驱动进行处理;方式二、所述TWAIN协议截获模块通过截获Hook DSM_Entry函数进而获得TWAIN协议指令;在TWAIN的协议定义中,第三方应用程序通过DSM_Entry函数调用TWAIN源管理器(即第三方程序在打开的过程中必须有通过DSM_Entry函数调用TWAIN源管理器),因此本发明通过TWAIN协议截获模块截获DSM_Entry函数的入参,从而获得TWAIN协议指令;方式三、本方式还包括一安装在服务端的实现了 DSM_Entry接口的动态库。所述TWAIN协议截获模块通过截获Hook LoadLibrary函数并使其载入所述动态库,当第三方应用程序调用DSM_Entry接口时,服务端系统就能够通过DSM_Entry函数入参,得知第三方应用程序的TWAIN协议指令,从而达到截获TWAIN指令的目的,进而截获TWAIN协议指令。 需要说明的是,依照TWAIN协议的规范,TWAIN源管理以动态库的形式存在于系统中。应用程序如果想要使用TWAIN驱动,必须先载入TWAIN源管理器动态库,然后调用TWAIN源管理器提供的DSM_Entry函数接口操作TWAIN源管理器。DSM_Entry的函数参数即是TWAIN协议指令,而在应用程序调用DSM_Entry函数时,TWAIN源管理会操作TWAIN驱动,操然后TWAIN源管理器将作结果以函数出参以及返回值的方式将结果反馈给应用程序。从应用程序的角度来看应用程序打开后,载入系统的TWAIN源管理器,然后通过DSM_Entry函数接口操作TWAIN源管理器。从TWAIN源管理器的角度=TWAIN源管理向应用程序提供DSM_Entry函数接口,每次应用程序调用此接口时,源管理就根据函数操作对应的对TWAIN驱动进行操作,然后将操作的结果返回,即是函数的返回值,返回给应用程序。请再参阅图1,本发明一种TWAIN协议的远程重定向系统,包括客户端系统,通过客户端系统的远程桌面接入虚拟桌面,将服务端构架在虚拟桌面中;服务端系统,通过虚拟桌面打开服务端系统中支持TWAIN协议的第三方应用程序;所述远程重定向系统还包括设于服务端的TWAIN协议截获模块和第一网络通信模块、设于客户端的TWAIN协议处理模块和第二网络通信模块;所述TWAIN协议截获模块截获所述第三方应用程序调用的TWAIN协议指令,并将所述第三方应用程序调用的TWAIN协议指令发送至第一网络通信模块;所述第一网络通信模块通过虚拟通道将所述第三方应用程序调用的TWAIN协议指令发送至第二网络通信模块;所述第二网络通信模块将所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN协议处理模块;所述TWAIN协议处理模块将接收到的所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN驱动,接着接收TWAIN驱动处理TWAIN指令的结果,然后将所述TWAIN驱动处理TWAIN指令的结果经过第二网络通信模块发送至第一网络通信模块;第一网络通信模块将接收到的所述TWAIN驱动处理TWAIN指令的结果转发至所述TWAIN协议截获模块,然后再由所述TWAIN协议截获模块将其返回至所述第三方应用程序,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序在客户端的使用。
这里所述第三方应用程序为非本系统开发的第三方应用程序。客户端在Windows终端服务以及虚拟桌面下,所述TWAIN协议截获模块可以通过以下三种方式中的任意一种或多种截获第三方应用程序的TWAIN指令方式一、所述TWAIN协议截获模块通过一新开发的源管理器截获TWAIN协议指令,所述源管理器能够截获TWAIN协议指令,并将TWAIN协议指令经第一网络通信模块、虚拟通道、第二网络通信模块传递给客户端的TWAIN驱动进行处理。方式二、所述TWAIN协议截获模块截获Hook DSM_Entry函数,抓取DSM_Entry函数的入参即TWAIN协议指令,进而达到截获TWAIN协议指令的目的。方式三、所述TWAIN协议截获模块通过Hook LoadLibrary函数,当检测到第三方应用程序载入服务端系统自带的TWAIN源管理器动态库时,改变LoadLibrary函数过程,使 其载入本系统开发的实现了 DSM_Entry接口的动态库,当第三方应用程序调用DSM_Entry接口时,服务端系统就能够通过DSM_Entry函数入参,得知第三方应用程序的TWAIN协议指令,从而达到截获TWAIN指令的目的。因此,本发明实现虚拟桌面中的第三方应用程序能够使用客户端中的TWAIN驱动,是通过改变系统原有的DSM_Entry函数流程,使其能够操作客户端的TWAIN源,具体为I.替换系统TWAIN源管理器;2.直接截获应用程序的DSM_Entry的函数调;3.截获第三方应用程序载入TWAIN源管理器的过程,改变其载入的源管理器,通过上述三种方式中的任意一种或多种方式截获到系统的TWAIN指令,即DSM_Entry函数的参数,然后将指令发送给客户端的TWAIN驱动,从而达到应用程序操作客户端TWAIN驱动的效果。虽然以上描述了本发明的具体实施方式
,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
权利要求
1.一种TWAIN协议的远程重定向方法,其特征在于包括如下步骤 步骤I、客户端本机系统通过远程桌面接入虚拟桌面,将服务端构架在虚拟桌面中,用户在虚拟桌面中打开支持TWAIN协议的第三方应用程序; 步骤2、服务端的TWAIN协议截获模块截获所述第三方应用程序调用的TWAIN协议指令,并将所述第三方应用程序调用的TWAIN协议指令发送至服务端的第一网络通信模块;步骤3、第一网络通信模块通过虚拟通道将所述第三方应用程序调用的TWAIN协议指令发送至客户端的第二网络通信模块; 步骤4、第二网络通信模块将所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN协议处理模块; 步骤5、所述TWAIN协议处理模块将接收到的所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN驱动,接着接收TWAIN驱动处理TWAIN指令的结果,然后将所述TWAIN驱动处理TWAIN指令的结果经过第二网络通信模块发送至第一网络通信模块; 步骤6、第一网络通信模块将接收到的所述TWAIN驱动处理TWAIN指令的结果转发至所述TWAIN协议截获模块,然后再由所述TWAIN协议截获模块将其返回至所述第三方应用程序,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序在客户端的使用。
2.根据权利要求I所述的TWAIN协议的远程重定向方法,其特征在于所述TWAIN协议截获模块通过一新开发的源管理器截获TWAIN协议指令,所述源管理器能够截获TWAIN协议指令,并将TWAIN协议指令经第一网络通信模块、虚拟通道传递给客户端的TWAIN驱动进行处理。
3.根据权利要求I或2所述的TWAIN协议的远程重定向方法,其特征在于所述TWAIN协议截获模块还截获Hook DSM_Entry函数,抓取DSM_Entry函数的入参,即TWAIN协议指令,进而达到截获TWAIN协议指令的目的。
4.根据权利要求I至3任意一项所述的TWAIN协议的远程重定向方法,其特征在于所述TWAIN协议截获模块还通过Hook LoadLibrary函数,当检测到第三方应用程序载入服务端系统自带的TWAIN源管理器动态库时,改变LoadLibrary函数过程,使其载入本系统开发的实现了 DSM_Entry接口的动态库,当第三方应用程序调用DSM_Entry接口时,服务端系统就能够通过DSM_Entry函数入参,得知第三方应用程序的TWAIN协议指令,从而达到截获TWAIN指令的目的。
5.—种TWAIN协议的远程重定向系统,包括 客户端系统,通过客户端系统的远程桌面接入虚拟桌面,将服务端构架在虚拟桌面中; 服务端系统,通过虚拟桌面打开服务端系统中支持TWAIN协议的第三方应用程序;其特征在于所述远程重定向系统还包括设于服务端的TWAIN协议截获模块和第一网络通信模块、设于客户端的TWAIN协议处理模块和第二网络通信模块; 所述TWAIN协议截获模块截获所述第三方应用程序调用的TWAIN协议指令,并将所述第三方应用程序调用的TWAIN协议指令发送至第一网络通信模块; 所述第一网络通信模块通过虚拟通道将所述第三方应用程序调用的TWAIN协议指令发送至第二网络通信模块; 所述第二网络通信模块将所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN协议处理模块; 所述TWAIN协议处理模块将接收到的所述第三方应用程序调用的TWAIN协议指令传送给客户端的TWAIN驱动,接着接收TWAIN驱动处理TWAIN指令的结果,然后将所述TWAIN驱动处理TWAIN指令的结果经过第二网络通信模块发送至第一网络通信模块;第一网络通信模块将接收到的所述TWAIN驱动处理TWAIN指令的结果转发至所述TWAIN协议截获模块,然后再由所述TWAIN协议截获模块将其返回至所述第三方应用程序,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序在客户端的使用。
6.根据权利要求5所述的TWAIN协议的远程重定向系统,其特征在于所述TWAIN协议截获模块通过一新开发的源管理器截获TWAIN协议指令,所述源管理器能够截获TWAIN协议指令,并将TWAIN协议指令经第一网络通信模块、虚拟通道、第二网络通信模块传递给客户端的TWAIN驱动进行处理。
7.根据权利要求5或6所述的TWAIN协议的远程重定向系统,其特征在于所述TWAIN协议截获模块还截获Hook DSM_Entry函数,抓取DSM_Entry函数的入参即TWAIN协议指令,进而达到截获TWAIN协议指令的目的。
8.根据权利要求5至7任意一项所述的TWAIN协议的远程重定向系统,其特征在于所述TWAIN协议截获模块还通过Hook LoadLibrary函数,当检测到第三方应用程序载入服务端系统自带的TWAIN源管理器动态库时,改变LoadLibrary函数过程,使其载入本系统开发的实现了 DSM_Entry接口的动态库,当第三方应用程序调用DSM_Entry接口时,服务端系统就能够通过DSM_Entry函数入参,得知第三方应用程序的TWAIN协议指令,从而达到截获TWAIN指令的目的。
全文摘要
本发明提供一种TWAIN协议的远程重定向方法,客户端在虚拟桌面中打开支持TWAIN协议的第三方应用程序,服务端截获第三方应用程序中调用的TWAIN协议指令请求,并将其发送至客户端,客户端把截获的TWAIN协议指令转化为对本地TWAIN驱动的操作请求,然后将TWAIN驱动返回的信息返回至服务端,从而实现了虚拟桌面中支持TWAIN协议的第三方应用程序直接操作客户端中的TWAIN源。
文档编号H04L29/08GK102752281SQ20121017068
公开日2012年10月24日 申请日期2012年5月28日 优先权日2012年5月28日
发明者张辉 申请人:福建升腾资讯有限公司