[go: up one dir, main page]

CN100512271C - 一种终端网络环境中的分布式设备重定向系统及其方法 - Google Patents

一种终端网络环境中的分布式设备重定向系统及其方法 Download PDF

Info

Publication number
CN100512271C
CN100512271C CNB200410073676XA CN200410073676A CN100512271C CN 100512271 C CN100512271 C CN 100512271C CN B200410073676X A CNB200410073676X A CN B200410073676XA CN 200410073676 A CN200410073676 A CN 200410073676A CN 100512271 C CN100512271 C CN 100512271C
Authority
CN
China
Prior art keywords
terminal
service agent
module
agent module
equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB200410073676XA
Other languages
English (en)
Other versions
CN1744591A (zh
Inventor
叶剑
朱珍民
李锦涛
史红周
郭俊波
顾晓光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING AUMIWALKER TECHNOLOGY CO LTD
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CNB200410073676XA priority Critical patent/CN100512271C/zh
Publication of CN1744591A publication Critical patent/CN1744591A/zh
Application granted granted Critical
Publication of CN100512271C publication Critical patent/CN100512271C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明提供一种终端网络环境中的分布式设备重定向系统,包括虚拟驱动模块、服务代理模块和终端代理模块,通过应用→虚拟驱动模块→服务代理模块→终端代理模块→终端设备驱动→终端设备的通道,将应用对设备的访问逻辑反映到终端设备上,并按照原通道的逆返回。在这一通信过程中,虚拟驱动往往并不关心操作的细节,只是将设备访问逻辑通过网络传递至终端设备并原路返回。采用上述通信描述过程可以屏蔽不同设备访问细节的差异,具有很强的通用性;同时通过提供特定接口,对某些特殊需要的设备操作提供支持,具有较强的可扩展性。

Description

一种终端网络环境中的分布式设备重定向系统及其方法
技术领域
本发明涉及图形终端应用协议中的终端设备远程访问技术,更具体地说,本发明涉及一种终端网络环境中的分布式设备重定向方法。
背景技术
随着网络基础设施和互联网络的迅速发展,分布在网络中的终端设备的使用日益普及。使用网络终端访问网络上的各种应用已经成为人们获取信息和各种网络服务的重要方式。许多网络终端应用不仅涉及用户接口操作,同时需要操作多种设备。
在图形终端应用中,应用逻辑在应用服务器上实现,终端通过网络执行服务器上的应用程序。应用程序访问的目标是服务器上的设备,而终端用户往往希望应用能够与终端本地的设备实现交互。例如用户终端登陆到服务器,并打开mp3播放器播放音频。用户的目的显然是希望音频内容能够在终端声卡设备而不是服务器的声卡上回放。应用服务器对多个用户所在终端的设备访问是一个复杂而又关键的问题。
在桌面环境中应用对设备的访问主要包括如下过程:设备的打开、初始化、读写操作和关闭。在这一过程中,驱动程序首先要完成在操作系统上的注册,同时提供文件操作接口,在接口中定义设备操作函数,以满足并对应于上述设备操作和控制。应用程序运行在用户空间,设备驱动运行在内核空间。应用对设备的访问就是在用户空间与内核空间的频繁数据流动中完成。在终端网络环境中,用户对应用的操作通过应用服务器和终端间的信息交互实现,用户的操作目标是终端本地的设备。虽然图形用户接口在终端本地显示,但应用逻辑发生在服务器上,默认的应用对服务器设备的访问就无法满足终端用户的需求。因此为了满足多个终端用户的设备资源访问需求,需要将应用对服务器设备的访问通过网络转化为对终端本地设备的访问。对设备的访问要满足用户透明性,用户对服务器上应用访问的用户接口在本地显示,同时通过应用访问本地设备,实现设备重定向功能。此外,这种访问机制需要满足对应用的透明性。应用的默认实现是对服务器设备的访问,需要将这种访问逻辑反映到终端本地设备上。
发明内容
本发明的目的在于为网络终端环境中终端应用对设备的访问提供一种可行的、具有高扩展性和通用性的设备重定向方法。
本发明的一个目的是满足网络终端环境多用户要求,应用的设备访问逻辑应当重定向到启动应用的用户所在终端的设备上。
本发明的另一目的是设备重定向方法应具有通用性,满足设备访问的通用接口需求,即满足通用性要求。
本发明的另一个目的是可以对特定设备所独具的访问逻辑提供特殊的支持,支持同类设备的多个子设备支持,即满足扩展性要求。
本发明的另一个目的是设备重定向方法需要服务器端通用设备虚拟驱动的支持,虚拟驱动与服务器本地标准设备驱动满足兼容性要求。
为了实现上述发明目的,本发明提供一种终端网络环境中的分布式设备重定向系统,包括虚拟驱动模块、服务代理模块和终端代理模块,通过从应用依次经过虚拟驱动模块、服务代理模块、终端代理模块、终端设备驱动到终端设备的通道,将应用对设备的访问逻辑反映到终端设备上,并按照所述的通道逆返回,其中:
虚拟驱动模块,支持注册/注销、监听端口和设备文件操作接口,基于重定向协议,实现与服务代理模块间的数据通信;
服务代理模块,用于实现多用户登陆支持,监视登陆用户情况,判断启动应用的用户;实现服务代理模块与虚拟驱动模块以及服务代理模块与终端代理模块间的通信接口和协议描述;
终端代理模块,发送用户登陆请求,实现与服务代理模块间的通信接口和协议描述,解析设备访问逻辑继而操作终端本地设备。
为了实现上述发明目的,本发明提供一种终端网络环境中的分布式设备重定向方法,包括以下步骤:
加载虚拟驱动;
启动服务代理,建立与虚拟驱动的连接;
用户远程登陆;
用户在终端应用环境中启动应用;
应用访问设备;
设备访问逻辑通过虚拟驱动传给服务代理;
设备访问逻辑通过服务代理传给终端代理;
终端代理解析访问逻辑,并实现本地设备访问;
由上可知,本发明在服务器上实现的是轻量虚拟驱动。与标准驱动相比,两者的设备文件的注册/注销和操作接口一致,但实际的设备操作却未执行,而是将应用的操作逻辑通过网络传输至终端,并将反馈返回至服务器上的应用。在这一通信过程中,虚拟驱动往往并不关心操作的细节,只是将设备访问逻辑通过网络传递至终端设备并原路返回。采用上述通信描述过程可以屏蔽不同设备访问细节的差异,具有很强的通用性;同时通过提供特定接口,对某些特殊需要的设备操作提供支持,具有较强的可扩展性。
附图说明
图1是本发明的设备重定向系统结构示意图;
图2是本发明应用进程标识pid与用户会话标识sid关系建立流程图;
图3是本发明的方法流程图;
图4是本发明的虚拟驱动的流程图;
图5是本发明协议交互的示意图。
具体实施方式
下面参照附图详细说明本发明的技术方案。
如图1所示,为了实现上述发明目的,本发明提供一种图形终端环境中的分布式设备重定向系统,主要包括虚拟驱动模块、服务代理模块和终端代理模块,通过“应用→虚拟驱动模块→服务代理模块→终端代理模块→终端设备驱动→终端设备”的通道,将应用对设备的访问逻辑反映到终端设备上,并按照原通道的逆返回,实现设备重定向,满足多用户终端网络环境中的设备支持需要。
更具体地说,设备重定向系统包括虚拟驱动模块,支持注册/注销、监听端口和设备文件操作接口,基于重定向协议,实现与服务代理模块间的数据通信。其中,虚拟驱动模块又包括:
注册接口单元,注册的主次设备号与系统标准设备的设备号一致,根据实际的设备需要,注册多个次设备,满足扩展性要求。注册接口提供内核空间多线程支持,在新线程中提供端口监听功能。
端口监听单元,建立虚拟驱动到服务代理的重定向通道,完成通信端口的建立和监听。虚拟驱动接收服务代理发来的登陆会话标识sid,并记录sid与通信端口间的对应关系。
设备文件操作接口单元,按照设备打开、设备I/O控制、设备读写和设备关闭的过程支持标准设备访问接口。接口定义符合标准驱动设计原则,满足与标准设备的兼容性要求。
设备打开接口单元,与服务代理完成应用进程标识pid和会话标识sid的转换,根据结果判定启动应用的用户会话。将打开逻辑描述发送给服务代理,并接受来自服务代理的反馈。
设备I/O控制接口单元,将I/O控制逻辑描述发送给服务代理,并接受来自服务代理的反馈。
设备读接口单元,将读逻辑描述发送给服务代理,并接受来自服务代理的反馈,反馈中包含读设备获取的设备信息。
设备写接口单元,将写逻辑描述发送给服务代理,描述包含向设备写的数据,并接受服务代理的反馈。
设备关闭接口单元,将关闭逻辑描述发送给服务代理,并接受来自服务代理的反馈。
设备重定向系统还包括服务代理模块,用于实现多用户登陆支持,监视登陆用户情况,判断启动应用的用户;实现服务代理模块与虚拟驱动模块以及服务代理模块与终端代理模块间的通信接口和协议描述。其中,服务代理模块包括:
多线程管理单元,监听并管理多个终端用户登陆的会话环境。共享内存单元,记录用户会话标识。
“服务代理模块—虚拟驱动模块”通信接口单元,交互用户会话标识和应用进程标识,构建服务代理模块与虚拟驱动模块间的设备重定向通道,透明地实现两者间设备访问逻辑的传输。
“服务代理模块—终端代理模块”通信接口单元,构建服务代理模块与终端代理模块间的设备重定向通道,透明地实现两者间设备访问逻辑的传输。
设备重定向系统还包括终端代理模块,发送用户登陆请求,实现与服务代理模块间的通信接口和协议描述,解析设备访问逻辑继而操作终端本地设备。其中,终端代理模块包括:
“终端代理模块—服务代理模块”通信接口单元,发送登陆请求,构建终端代理模块与服务代理模块间的设备重定向通道。
访问逻辑解析单元,分析出不同的访问逻辑描述。
设备访问单元,根据解析结果访问终端本地设备,完成终端用户启动的应用程序执行的设备打开、I/O控制、设备读写和关闭操作,并将设备访问的反馈回传服务代理。
下面结合附图,首先对本发明的实施方式作功能描述,然后结合音频设备重定向的开发实例,详细描述设备重定向的信息交互过程。
虚拟驱动模块的设计与实现:
在图形终端应用中,应用服务器上的虚拟驱动通过内核或者模块方式运行,并监听来自终端服务代理的请求。用户如果未运行音频应用,则虚拟驱动和终端服务代理间的通信状态不变;如果用户运行服务器上的音频应用,则访问逻辑按照应用的描述执行。
虚拟驱动的注册/注销的实现遵循标准驱动设计,接口为init_module()和cleanup_module(),注册的主次设备号与系统标准设备的设备号一致,通过devfs_register_dev()和devfs_mk_dir()函数完成,满足服务器端设备描述一致性要求。
本发明的虚拟驱动通过kernel_thread(),启动监听线程,监听与服务代理之间的通信端口。监听过程如图所示。监听线程等待来自服务代理的连接请求,以便获取登陆或注销的会话信息。服务代理的请求格式为“会话描述+会话标识”。登陆和注销会话分别由“CN”和“DS”表示。虚拟驱动获取会话标识sid,对登陆会话将sid与通信端口间的对应关系记录到系统列表中,以备后用;对注销会话,将其和对应通信端口信息从列表中删除。
应用对设备的操作按照设备打开、设备I/O控制、设备读写和设备关闭的顺序进行。应用对设备的操作在驱动中通过设备文件操作接口file_operations结构定义实现。虚拟驱动主要通过“应用→虚拟驱动→服务代理→终端代理→终端设备驱动→终端设备”的通道,将应用对设备的访问逻辑反映到终端设备上,并按照原通道的逆返回。值得注意的是,每种访问逻辑都包含操作码和操作数,分别描述操作命令和操作对象。上述通信过程具有透明性,这种透明性一直保持在上述通信过程的始终,中间的虚拟驱动和各个代理并不关心命令的细节。分析工作在终端代理的最后进行。终端代理解析操作码和操作数,并根据结果通过标准的调用接口完成真正设备的I/O控制操作。
本发明通过虚拟驱动在内核中注册的打开设备接口,获取音频应用的进程标识pid,通过虚拟驱动与终端服务代理间的数据通信,将pid传至服务代理,并在代理上获得音频应用的启动用户会话标识sid,并返回驱动。合法的sid返回表明音频应用由合法终端登陆用户执行,查找sid与通信端口关系对照列表,获得与相应会话的通信端口,此时建立了用户和应用间的对应关系,服务于之后的不同会话进程数据的分离。过程如图2所示。同时,向应用返回正常打开信息。
应用在打开设备之后,需要通过设备I/O控制接口ioctl操作,对设备的I/O属性进行设置、获取和修改。I/O控制是设备驱动程序中较为复杂的操作,接口定义包含命令字(操作码)和参数(操作数)。本发明中应用在进行设备I/O控制操作时,虚拟驱动只是从系统调用接口得到应用程序使用的控制命令字并进行分析,针对操作码通过宏定义_IOC_DIR()获得操作类型是NONE、OUT、IN或者INOUT型命令,分别对应不带参数,设置参数,读取参数,协商参数四种类型,然后分别调用相应的处理过程,利用协议交互部分完成其功能,将应用对设备的I/O控制重定向到终端设备上。
在设备操作中,读写操作是发生最为频繁的操作,一般都处于应用程序的循环逻辑中。读写操作具有两个显著特点:一是操作数部分庞大,往往传递的是缓冲区指针;二是读写的状态需要返回,影响返回状态的因素较多。本发明在设计读写操作的通信协议时,操作数据缓冲区部分往往采用不定长方式,并配以长度字节描述实际缓冲区的大小。返回状态完全依赖于对终端设备实际操作的反馈。
本发明的关闭设备操作通过虚拟驱动模块与服务代理模块间定义的重定向协议,透明地传递给服务代理。
服务代理模块的设计和实现:
本发明中,服务代理模块主要包括信息发送和接收接口。信息发送接口实现从虚拟驱动接收各种请求,并重新打包成服务——终端代理间的协议格式(主要是字节序不同),将请求转发到客户端代理;信息接收接口从客户端代理接收各种应答,并重新打包成服务代理与虚拟驱动间的协议格式(主要是字节序不同),发往虚拟驱动。
终端代理模块的设计和实现
本发明中,客户端代理部分提供相应于服务代理模块收发的协议交互部分。此外,需要根据服务代理通知的访问逻辑描述,设计实现对本地设备的访问。对本地设备的访问采用标准的设备操作接口,操作结果的反馈需要返回给终端服务代理。
4、通信协议的设计和实现,即重定向协议的设计和实现:
包括三部分:设备发现、设备描述和设备访问。
设备发现主要实现对终端现有设备的发现、通知和反馈。某些设备在终端加电之初就已经存在并生效,比如键盘/鼠标、三卡(显卡、网卡和声卡)等。这些设备在用户登陆终端服务时就会通知服务代理并在服务端记录;而有些设备支持即插即用功能,USB设备就是如此。诸如此类的设备可能在用户登陆之前或之后与终端连接并通知终端服务。无论上述哪种情况,协议均需要向终端服务描述设备发现消息,并将终端服务的反馈描述返回至终端代理。
设备描述,设备一旦被发现,就需要终端能够向服务端提供设备的具体描述信息。描述信息至少应当包括设备类型、设备描述符、设备能力描述。
终端设备大致分为两类:字符设备和块设备。字符设备的输入/输出以字节为单位,而块设备的输入/输出以记录块或“扇区”为单位。通过数十年的发展,块设备和字符设备之间的界限已经模糊了,但还是沿用着这样的划分。
设备描述符主要是用于区分终端上的具体设备,可以直接采用终端设备描述符,比如音频设备可用dsp、mixer等,磁盘设备可用hda、sda等;也可以采用主次设备号描述,主次设备号的分配按照终端操作系统的设备的主次设备号描述,比如音频设备的dsp和mixer的主次设备号分别为14/3和14/0等。
设备能力描述是设备相关辅助信息,依赖于具体的设备,描述设备的当前I/O能力、使用状态等。设备能力描述也是服务于今后终端设备自适应能力支持的需要。
设备访问,在发明申请中主要介绍的是这部分的实现,描述设备的打开、I/O控制、读写和关闭逻辑。
本发明中,代理模块间的通信协议包括服务到终端的请求和终端到服务的响应两部分。分别描述如下:
1)请求数据包格式如表1所示:
表1  虚拟驱动到终端的数据包格式
 
长度 操作代码 参数字段表
2字节 1字节 可变长度
其中各字段定义如下:
长度字段:整个数据包的长度。
Figure C200410073676D00111
operations结构中操作的定义中并没有poll项。poll操作用于系统中的select调用,专门用于处理高速CPU和低速的外设操作之间的矛盾。Select系统调用的实质是将系统中单一进程的睡眠等待变成多目标的睡眠等待,提高整个系统的运行效率。如果终端服务进程调用了select系统调用,实际等待的应该是从远程终端上返回的操作,取决于两个因素:终端上的读等待过程和终端将所读结果经过网络传送到虚拟驱动。因此poll的调用实际应该对应于为虚拟驱动程序和终端之间提供数据传输的socket调用。因此在表2中并不需要规定将poll操作传送到终端的操作代码,对于poll操作只需要直接调用相应的socket的poll过程即可。
参数字段:规定相应操作代码的参数格式,具体格式如表3所示。其中参数类型规定此参数中数据的格式,如16位整数、32位整数、字节流等。只有当参数数据类型为字节流时,参数结构中才有参数长度字段。随后的参数值字段为实际的参数值。
表3  参数格式
 
参数类型 参数长度 参数值
1字节 2字节 可变长度
2)响应数据包格式如表4所示:
表4  终端设备操作响应
 
成功标记 长度 参数字段表
1字节 2字节 可变长度
其中各字段的意义如下:
成功标记:表示由应用发起的访问请求在终端实际设备上的执行结果,值为1表示执行成功,否则表示在执行过程中出错。
长度字段:表示后面的数据的总长度。
参数字段:具体格式如表所示。为此次操作的返回值或可选参数。
如图3所示,本发明的重定向方法包括以下步骤:
步骤100,加载虚拟驱动;
步骤110,启动服务代理,建立与虚拟驱动的连接;
步骤120,用户远程登陆(此时,通过服务代理,在虚拟驱动中记录会话标识sid与通信端口间的关系);
步骤130,用户在终端应用环境中启动应用;
步骤140,应用向虚拟驱动发出设备访问请求,形成设备访问逻辑;
步骤150,设备访问逻辑通过虚拟驱动传给服务代理;
步骤150,设备访问逻辑通过虚拟驱动传给服务代理;
步骤160,设备访问逻辑通过服务代理传给终端代理;
步骤170,终端代理解析访问逻辑,并实现本地设备访问;
设备访问的反馈由上述路线返回;
如图4所示,虚拟驱动的实现流程包括以下步骤:
步骤200,应用系统调用;
步骤210,判断系统调用的种类,如果系统调用为open调用,则执行下一步,如果系统调用为ioctl调用,则执行步骤230,如果为其它调用,则执行步骤240;其中,系统调用包括open调用,release调用,read调用,write调用,ioctl调用,poll调用。
步骤220,获取与相应会话通信的端口信息,执行步骤240;
步骤230,判断ioctl类型,并作相应处理,执行步骤240;
步骤240,协议交互;
步骤250,调用返回。
在步骤240中,如图5所示,1—3为访问逻辑映射,4—6为访问反馈。
在图形终端环境中,多媒体应用是一个重要的应用。为了满足对有声应用的支持,在终端网络中更好地支持音频设备,是本发明所研究的设备重定向的重点。
结合上述发明实施过程描述,以音频设备重定向为实施实例,描述本发明所述设备重定向的具体实施过程。随着声音设备硬件的发展和应用的丰富,音频应用需要声卡能够支持MIDI设备、混音器设备等。其中,混音器设备/dev/mixer作为音量调节工具,在多数音频应用中得到广泛应用。本发明具有较好的扩展性,可以支持多种设备描述。混音器的实现原理与传统音频设备完全相同,下面主要介绍针对传统音频设备/dev/dsp的实施实例。
1)用户登陆和注册
虚拟驱动首先以模块方式加载到内核中,在内核的注册过程如上所述。注册完毕启动端口监听线程,监听来自服务代理的信息(此时服务代理尚未启动)。启动服务代理,监听来自终端代理的信息。终端代理发起用户登陆请求,建立与服务代理的连接。对每一个新登陆的用户,服务代理分配用户会话标识sid,启动线程维护与用户的连接和数据通信。在线程中将用户的sid通过请求信息传递给虚拟驱动。虚拟驱动接收到服务代理传来的sid,记录sid与通信端口的关系信息,完成用户登陆和注册过程。
2)应用启动过程
终端用户通过图形接口启动服务上的音频应用程序。音频应用首先通过open命令,操作音频设备文件描述符/dev/dsp,进行音频设备的打开操作,这一操作信息通过内核传递给虚拟驱动的设备文件打开接口dev_open。在此接口中,按照上述过程,将获取到的应用进程标识pid传递给服务代理。服务代理得到pid,通过访问/proc文件系统,获取会话标识sid,并回传给虚拟驱动。虚拟驱动通过记录的sid和通信端口间的关系,获得与音频应用进程对应的会话通信的通信端口。
3)应用对声卡的访问
声卡的I/O控制比较丰富,可以设置和获取许多有关声卡设备属性的信息,以缓冲区信息为例,声卡可以设置和获取缓冲区的大小,这分别对应于上述OUT和IN型命令。应用中对声卡缓冲区设置的接口定义为:
ioctl(int audio_fd,int cmd,char*blocksize)
其中,audio_fd为声卡设备文件号,cmd为命令字,在此为SNDCTL_DSP_GETBLKSIZE,表示此命令需要获取缓冲区大小,blocksize为返回的缓冲区大小。此命令映射到虚拟驱动,虚拟驱动中的操作接口为
dev_ioctl(struct inode*inode,struct file*file,unsigned int cmd,unsigned long arg)
其中cmd对应命令字,arg对应参数。虚拟驱动需要通过_IOC_DIR(cmd)解析命令字的类型,根据类型将命令字和参数的组合透明地传给服务代理。
设置缓冲区大小及其他的I/O控制与上述过程是一样的。
对声卡设备的主要操作是读写声卡。应用对声卡的读写对应于音频录音和回放功能。下面以音频应用写缓冲区的接口为例介绍。音频应用写缓冲区的接口为:
write(int audio_fd,const void*buffer,size_t count)
其中audio_fd为声卡设备文件号,buffer为存储音频数据的缓冲区指针,count以字节为单位表示缓冲区大小。此命令映射到虚拟驱动,虚拟驱动中的操作接口为
dev_write(struct file*file,const char*buffer,size_t count,loff_t*ppos)
其中buffer为接收用户空间音频数据的缓冲区的指针,count为缓冲区大小。音频应用对声卡的写逻辑反映到虚拟驱动,既而透明地传递给服务代理。
音频应用的读逻辑与写逻辑映射过程类似,但数据流方向相反。
4)声卡的关闭
音频应用的设备关闭通过虚拟驱动传递给服务代理。
5)虚拟设备驱动的注销
虚拟驱动一旦加载后,一般不会从内核中注销。为了满足与标准设备驱动的一致性,虚拟驱动提供设备注销接口,通过devfs_unregister_chrdev()和devfs_unregister()实现。
上述介绍的是本发明的核心——虚拟设备驱动的实施实例。服务代理、终端代理与虚拟设备驱动共同构成了设备重定向的通信通道,实施的关键是通信协议的定义。下面以音频应用发生最频繁的音频数据写为例,介绍服务和终端代理间的通信协议。
服务代理接收到虚拟驱动的写操作命令后,按照代理间定义的设备重定向协议,组织数据包,发送给终端代理。例如如果每次写操作所写声音数据大小为4096字节,则构建数据包如下所示:
 
长度 操作代码 参数类型 参数长度 参数值
4100 3 B 4096 音频数据
其中长度字段为4100(1+1+2+4096),表示发送数据总长(不包括长度字段)为4100字节;操作码为3表明此操作为写操作;参数类型为”B”,表明后续数据为字节流;参数长度为4096,表明参数值字段长度为4096字节;参数值部分存放的是由音频应用来,并需要写到声卡中的音频数据。
由于声卡写操作只需反馈成功与否,因此,返回消息简单,仅描述是否成功即可。如果是声卡读或者I/O操作的IN型命令等,例如一次读4096字节数据,则返回消息如下所示:
 
成功标记 长度 参数类型 参数长度 参数值
1 4099 B 4096 音频数据
其中成功标记字段为1,表示返回有效;长度字段为4099,表示后续数据总长为4099字节;参数类型字段为“B”,表明后面的数据为字节流;参数长度字段为4096,表明参数值长度为4096字节;参数值部分为音频数据。
本发明的设备重定向方法实现简单,通用性强。在服务器上实现的是轻量虚拟驱动。与标准驱动相比,两者的设备文件的注册/注销和操作接口一致,但实际的设备操作却未执行,而是将应用的操作逻辑通过网络传输至终端,并将反馈返回至服务器上的应用。在这一通信过程中,虚拟驱动往往并不关心操作的细节,只是将设备访问逻辑通过网络传递至终端设备并原路返回。采用上述通信描述过程可以屏蔽不同设备访问细节的差异,具有很强的通用性;同时通过提供特定接口,对某些特殊需要的设备操作提供支持,具有较强的可扩展性;上述方式的通信逻辑清晰,服务代理和终端代理之间的网络通信采用智能网络应用协议的子集,即设备重定向协议。
最后应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1、一种终端网络环境中的分布式设备重定向系统,其特征在于,包括虚拟驱动模块、服务代理模块和终端代理模块,通过应用依次经过虚拟驱动模块、服务代理模块、终端代理模块、终端设备驱动和终端设备的通道,将应用对设备的访问逻辑反映到终端设备上,并按照所述的通道逆返回,其中:
虚拟驱动模块,支持注册/注销、监听端口和设备文件操作接口,基于重定向协议,实现与服务代理模块间的数据通信;
服务代理模块,用于实现多用户登陆支持,监视登陆用户情况,判断启动应用的用户;实现服务代理模块与虚拟驱动模块以及服务代理模块与终端代理模块间的通信接口和协议描述;
终端代理模块,发送用户登陆请求,实现与服务代理模块间的通信接口和协议描述,解析设备访问逻辑继而操作终端本地设备。
2、如权利要求1所述的系统,其特征在于,虚拟驱动模块包括注册接口单元,端口监听单元,设备文件操作接口单元,设备打开接口单元,设备I/O控制接口单元,设备读接口单元,设备写接口单元和设备关闭接口单元,其中:
注册接口单元,用于注册主次设备,提供内核空间多线程支持,在新线程中提供端口监听功能;
端口监听单元,用于建立虚拟驱动模块到服务代理模块的重定向通道;
设备文件操作接口单元,用于按照设备打开、设备I/O控制、设备读写和设备关闭的过程支持标准设备访问接口;
设备打开接口单元,用于与服务代理模块完成应用进程标识pid和会话标识sid的转换,根据结果判定启动应用的用户会话,并将打开逻辑描述发送给服务代理模块,并接受来自服务代理模块的反馈;
设备I/O控制接口单元,用于将I/O控制逻辑描述发送给服务代理模块,并接受来自服务代理模块的反馈;
设备读接口单元,用于将读逻辑描述发送给服务代理模块,并接受来自服务代理模块的反馈;
设备写接口单元,将写逻辑描述发送给服务代理模块,描述包含向设备写的数据,并接受服务代理模块的反馈;
设备关闭接口单元,用于将关闭逻辑描述发送给服务代理模块,并接受来自服务代理模块的反馈。
3、如权利要求2所述的系统,其特征在于,所述注册接口单元注册的主次设备号与系统标准设备的设备号一致。
4、如权利要求1所述的系统,其特征在于,所述服务代理模块包括多线程管理单元和共享内存单元,所述的服务代理模块与虚拟驱动模块之间的通信接口单元,及服务代理模块到终端代理模块之间的通信接口单元,其中:
多线程管理单元,用于监听并管理多个终端用户登陆的会话环境;
共享内存单元,用于记录用户会话标识;
服务代理模块与虚拟驱动模块之间的通信接口单元,用于交互用户会话标识和应用进程标识,构建服务代理模块与虚拟驱动模块间的设备重定向通道,实现两者间设备访问逻辑的传输;
服务代理模块到终端代理模块的通信接口单元,用于构建服务代理模块与终端代理模块间的设备重定向通道,实现两者间设备访问逻辑的传输。
5、如权利要求1所述的系统,其特征在于,所述终端代理模块包括终端代理模块—服务代理模块通信接口单元,访问逻辑解析单元及设备访问单元,其中:
终端代理模块—服务代理模块通信接口单元,用于发送登陆请求,构建终端代理模块与服务代理模块间的设备重定向通道;
访问逻辑解析单元,用于分析出不同的访问逻辑描述;
设备访问单元,用于根据解析结果访问终端本地设备,完成终端用户启动的应用程序执行的设备打开、I/O控制、设备读写和关闭操作,并将设备访问的反馈回传服务代理模块。
6、如权利要求1所述的系统,其特征在于,重定向协议包括设备发现、设备描述和设备访问,其中:设备发现用于实现对终端现有设备的发现、通知和反馈;设备描述符主要是用于区分终端上的具体设备;设备访问用于描述设备的打开、I/O控制、读写和关闭逻辑。
7、一种终端网络环境中的分布式设备重定向方法,包括以下步骤:
a)加载虚拟驱动;
b)启动服务代理,建立与虚拟驱动的连接;
c)用户远程登陆;
d)用户在终端应用环境中启动应用;
e)应用向虚拟驱动发出设备访问请求,形成设备访问逻辑;
f)设备访问逻辑通过虚拟驱动传给服务代理;
g)设备访问逻辑通过服务代理传给终端代理;
h)终端代理解析访问逻辑,并实现本地设备访问。
8、如权利要求7所述的方法,其特征在于,步骤c)中,通过服务代理,在虚拟驱动中记录会话标识sid与通信端口间的关系。
9、如权利要求7所述的方法,其特征在于,虚拟驱动实现包括以下步骤:
a1).接收来自应用系统的系统调用;
b1).判断系统调用的种类,如果系统调用为open调用,则执行下一步,如果系统调用为ioctl调用,则执行步骤d1),如果为其它调用,则执行步骤e1);
c1).获取与相应会话通信的端口信息,执行步骤e1);
d1).判断ioctl类型,并作相应处理,执行步骤e1);
e1).协议交互;
f1).调用返回。
CNB200410073676XA 2004-08-31 2004-08-31 一种终端网络环境中的分布式设备重定向系统及其方法 Expired - Fee Related CN100512271C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB200410073676XA CN100512271C (zh) 2004-08-31 2004-08-31 一种终端网络环境中的分布式设备重定向系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB200410073676XA CN100512271C (zh) 2004-08-31 2004-08-31 一种终端网络环境中的分布式设备重定向系统及其方法

Publications (2)

Publication Number Publication Date
CN1744591A CN1744591A (zh) 2006-03-08
CN100512271C true CN100512271C (zh) 2009-07-08

Family

ID=36139785

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410073676XA Expired - Fee Related CN100512271C (zh) 2004-08-31 2004-08-31 一种终端网络环境中的分布式设备重定向系统及其方法

Country Status (1)

Country Link
CN (1) CN100512271C (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103778B (zh) * 2011-02-23 2014-04-30 中兴通讯股份有限公司 移动支付系统、移动终端及移动支付业务的实现方法
CN102857535B (zh) * 2011-07-01 2015-09-09 云联(北京)信息技术有限公司 一种计算机处理单元、计算机网关、交互式系统
CN102508795B (zh) * 2011-10-14 2014-10-22 深圳市京华科讯科技有限公司 一种并行端口重定向的方法及系统
CN102508796B (zh) * 2011-10-14 2014-10-22 深圳市京华科讯科技有限公司 一种串行端口重定向的方法及系统
CN102915317B (zh) * 2012-03-08 2016-01-20 北京金山安全软件有限公司 声音控制方法与装置
CN103473110A (zh) * 2012-06-08 2013-12-25 腾讯科技(深圳)有限公司 一种控制设备的方法、装置和系统
CN106027487B (zh) * 2016-04-28 2019-07-23 广州广电运通金融电子股份有限公司 一种硬件设备的访问管理方法及系统
CN107613020B (zh) 2017-10-16 2020-04-24 北京东土科技股份有限公司 一种设备管理方法及装置
CN109982121B (zh) * 2019-03-28 2021-07-06 烽火通信科技股份有限公司 一种机顶盒、云端虚拟系统以及设备重定向方法
CN111885170B (zh) * 2020-07-23 2022-03-11 平安科技(深圳)有限公司 物联网控制系统的处理方法、系统、云端服务器及介质
CN112422681B (zh) * 2020-11-18 2023-01-13 中盈优创资讯科技有限公司 一种跨平台分布式通讯调用方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1201943A (zh) * 1997-06-04 1998-12-16 国际商业机器公司 通过分布式编程对象进行主机信息访问
CN1210308A (zh) * 1997-06-04 1999-03-10 国际商业机器公司 用于非始发主机的控制访问的小应用程序重定向
CN1266321A (zh) * 1998-09-21 2000-09-13 阿尔卡塔尔公司 智能卡、相应的终端、通信系统和访问远程应用的方法
WO2001022238A1 (en) * 1999-09-21 2001-03-29 Wyse Technology Displaying windowing application programs on a terminal
US20030139931A1 (en) * 2002-01-21 2003-07-24 Samsung Electronics Co., Ltd. Client device of thin client network system and method of controlling the same

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1201943A (zh) * 1997-06-04 1998-12-16 国际商业机器公司 通过分布式编程对象进行主机信息访问
CN1210308A (zh) * 1997-06-04 1999-03-10 国际商业机器公司 用于非始发主机的控制访问的小应用程序重定向
CN1266321A (zh) * 1998-09-21 2000-09-13 阿尔卡塔尔公司 智能卡、相应的终端、通信系统和访问远程应用的方法
WO2001022238A1 (en) * 1999-09-21 2001-03-29 Wyse Technology Displaying windowing application programs on a terminal
US20030139931A1 (en) * 2002-01-21 2003-07-24 Samsung Electronics Co., Ltd. Client device of thin client network system and method of controlling the same

Also Published As

Publication number Publication date
CN1744591A (zh) 2006-03-08

Similar Documents

Publication Publication Date Title
RU2504829C2 (ru) Системы и способы для управления мультимедийными операциями в удаленных сеансах
CN100454283C (zh) 虚拟通用串行总线设备系统及其数据传输方法
CN101582926B (zh) 实现远程媒体播放重定向的方法和系统
CN100512271C (zh) 一种终端网络环境中的分布式设备重定向系统及其方法
CN102549968B (zh) 在远程用户界面服务器和远程用户界面客户端间界面连接的装置和方法
EA006814B1 (ru) Система и способ использования множества приложений
KR20110027845A (ko) 세션 기술 메시지 확장
DE102019105078A1 (de) Verfahren und einrichtung zum verlagern von medienströmen in hostvorrichtungen
US8645559B2 (en) Redirection of multiple remote devices
US11394776B2 (en) Systems and methods for transport layer processing of server message block protocol messages
WO2015188575A1 (zh) 视频数据提供方法、视频播放方法、装置及系统
CN106341777A (zh) Usb虚拟设备创建方法、设备及系统
US20070198976A1 (en) Transferring data between virtual machines by way of virtual machine bus in pipe mode
CN107957908A (zh) 一种麦克风共享方法、装置、计算机设备及存储介质
US11868819B2 (en) System and method for constructing filter graph-based media processing pipelines in a browser
CN101246564A (zh) 一种基于Web Service和以XML为资产定义的资产管理系统
Lohse et al. Network-integrated multimedia middleware (NMM)
CN112637626A (zh) 推流方法、系统、装置、电子设备及存储介质
CN104869133B (zh) 一种数据记录的方法、系统以及接入服务器
CN116132434A (zh) 一种共享笔记本摄像头设备到云桌面的方法和系统
CN101707595B (zh) 数字家庭中实现混合媒资文件传输管理的系统及方法
US20080126752A1 (en) Dual-processor communication
CN112286700B (zh) 远程信息交互的方法及装置
CN114531416A (zh) 跨NAT网段的ceph rbd块存储单一端口访问方法和系统
CN100574308C (zh) 一种多节点智能网络应用服务系统中的远程设备访问方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING AUMIWALKER TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: INSTITUTE OF COMPUTING TECHNOLOGY, CHINESE ACADEMY OF SCIENCES

Effective date: 20121205

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100080 HAIDIAN, BEIJING TO: 100071 FENGTAI, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20121205

Address after: 100071, B402, 10 Spark Road, Fengtai District Science City, Beijing

Patentee after: Beijing Aumiwalker Technology Co.,Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090708

Termination date: 20130831