首页> 中国专利> 基于用户模式的远程桌面协议(RDP)编码体系结构

基于用户模式的远程桌面协议(RDP)编码体系结构

摘要

公开了用于基于用户模式的远程桌面协议(RDP)编码体系结构。用户模式桌面应用程序和用户模式虚拟通道应用程序在用户模式会话空间中运行。来自虚拟通道应用程序的虚拟通道数据被编组并被发送到用户模式系统空间中的RDP编码器进程。它被转换成RDP协议数据单元(PDU)并被跨通信网络发送到远程客户机。将来自桌面应用程序的图形数据发送到内核模式会话空间中的显示驱动器,然后发送到图形反射器,图形反射器编组图形数据并将其发送到RDP编码器用于类似的转换。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-13

    专利权的转移 IPC(主分类):G06F15/16 变更前: 变更后: 登记生效日:20150427 申请日:20091111

    专利申请权、专利权的转移

  • 2014-07-09

    授权

    授权

  • 2012-02-08

    实质审查的生效 IPC(主分类):G06F15/16 申请日:20091111

    实质审查的生效

  • 2011-11-16

    公开

    公开

说明书

发明背景

视窗(Windows)家族中的某些操作系统提供一些工具,用户可以通 过这些工具与属于在另一计算机上运行的应用程序的用户接口远程交互。 这些工具被称为远程桌面或终端服务。这种工具的示例是WINDOWS  TERMINAL SERVERTM或远程桌面协议(RDP)设备。由于负责RDP协议 编码的代码由一组内核模式驱动器实现这一事实,这些工具具有缺点。通 常使用这些内核模式驱动器是因为这种驱动器能够轻易地访问编码到协议 中的数据。然而,这些驱动器难于维护,并且在功能上很难开发、维护或 扩展。为此,如果可以在用户模式进程中实现这些工具,则这些限制可以 得到降低。

发明内容

本发明的实施例包括基于用户模式的远程桌面协议(RDP)编码体系 结构。在该实施例中,可以从会话空间进程提取数据并将数据编组(marshal) 到系统空间用户模式进程以便进行编码。在该实施例中,进程在用户模式 会话空间、内核模式会话空间和用户模式系统空间中的每一个中执行。

将来自在用户模式会话空间中操作的用户模式桌面应用程序的图形数 据通过在内核模式会话空间中操作的显示驱动器而发送。该驱动器将图形 数据发送到内核模式会话空间中的图形反射器(reflector),该图形反射器 编组该数据并将其发送到用户模式系统空间中的RDP编码器进程。

类似地,将来自在用户模式会话空间中操作的用户模式虚拟通道应用 程序的虚拟通道数据通过用户模式会话空间中的虚拟通道反射器而发送, 该虚拟通道反射器编组该数据并将经编组的虚拟通道数据发送到RDP编码 器进程。

RDP编码器进程取得此二类数据,将其编码成RDP协议数据单元 (PDU),并将这些单元发送到具有与执行该技术的计算机进行相应RDP 会话的客户机。

该解决方案提供将来自会话空间的图形数据接口(GDI)和虚拟通道 数据编组到在系统空间中用户模式上下文中运行的进程的机制和体系结 构。这允许终端服务实现,其中协议编码在单个、机器范围、用户模式组 件中实现。

这些技术可以应用于在单个操作系统(OS)上运行的会话、或应用于 在具有主机OS的主机上由客机OS主宿的虚拟机(VM)内的客机OS上 运行的会话。在后一实施例的情况下,这些技术可以应用于多个这种客机 OS。

在一实施例中,通过低开销共享存储器机构编组图形数据,并且通过 指定(named)管道编组虚拟通道数据。可以使用指定管道以便保留用于任 何现有终端服务器虚拟通道应用编程接口(API)的语义,而可以使用通常 更快的共享存储器机构,在此共享存储器机构中这些指定管道没有必要保 留这些语义。

以上技术允许通过不取决于设备驱动器接口或会话应用线程的单个用 户模式系统空间进程(RDP编码器进程)来控制图形和数据输出。即,用 于实现这些技术的线程数可以是已知的,并限制、保持在性能优化的数量。

公开了执行以上和类似进程的系统、方法和计算机可读存储介质。

本领域技术人员会意识到,本公开的一个或多个方面可包括但不限于 用于实现本公开的本文所述方面的电路和/或编程;该电路和/或编程实质上 可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取 决于系统设计者的设计选择。

以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域 技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。

附图说明

图1示出其中可实现本发明的各方面的示例计算机系统。

图2示出基于内核模式的终端服务体系结构的示例。

图3示出基于用户模式的终端服务体系结构的示例。

图3A示出基于用户模式的终端服务体系结构的另一示例。

具体实施方式

本公开的实施例可以在一个或更多计算机上执行。图1和以下讨论旨 在提供其中可以实现本发明的适当计算环境的简要描述。本领域技术人员 可以理解,图1计算机系统组件的某些或全部可以用于实现图2、3和3A 的计算机。

本公开中使用的术语“电路”可以包括专用硬件组件,诸如硬件中断 控制器、硬驱动、网络适配器、图形处理器和音频编解码器。在相同实施 例或其他实施例中,电路可包括配置成通过固件或设定开关执行功能的微 处理器。在相同或其他示例性实施例中,电路可以包括一个或多个逻辑处 理器,例如多核通用处理单元的一个或多个核。本示例中的逻辑处理器可 以由从例如RAM、ROM、固件和/或虚拟存储器之类的存储器加载的软件 指令来配置,软件指令体现为可用于执行功能的逻辑。在电路包括硬件和 软件的组合的示例性实施例中,实现者可以编写体现为逻辑的源代码,该 源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技 术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎 没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的 设计选择。更具体而言,本领域技术人员可以明白软件进程可被变换成等 价的硬件结构,而硬件结构本身可被变换成等价的软件进程。因此,是硬 件实现还是软件实现的选择是设计选择之一并留给实现者。

现在参考图1,示出了示例性通用计算机系统。通用计算系统可包括 常规的计算机20或类似设备,它包括可以包含一个或多个逻辑处理器的通 用处理单元21、系统存储器22和将包括系统存储器在内的各种系统组件耦 合到处理单元21的系统总线23。系统总线23可以是几种类型的总线结构 中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种 总线体系结构中的任一种的局部总线。系统存储器包括只读存储器(ROM) 24和随机存取存储器(RAM)25。基本输入/输出系统26(BIOS)被存储在 ROM 24中,包含了诸如在启动期间帮助在计算机20内的元件之间转移信 息的基本例程。计算机20还可以包括用于读写硬盘(未示出)的硬盘驱动 器27、用于读写可移动磁盘29的磁盘驱动器28,以及用于读写诸如CD  ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。在一些示例 性实施例中,实施本公开各方面的计算机可执行指令可以存储在ROM 24、 硬盘(未示出)、RAM 25、可移动磁盘29、光盘31和/或通用处理单元21 的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光驱动器30分别通 过硬盘驱动器接口32、磁盘驱动器接口33,以及光驱动器接口34连接到 系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了 对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。 虽然本文描述的示例性环境采用硬盘、可移动磁盘29和可移动光盘31,但 本领域技术人员应当理解,在该示例性操作环境中也能使用可存储能由计 算机访问的数据的其它类型计算机可读介质,如盒式磁带、闪存卡、数字 视频盘、柏努利(Bernoulli)盒式磁带、随机存取存储器(RAM)、只读 存储器(ROM)等。

可以有若干个程序模块存储在硬盘、磁盘29、光盘31、ROM 24、或 RAM 25上,包括操作系统35、一个或多个应用程序36、其他程序模块37、 以及程序数据38。用户可以通过诸如键盘40和定点设备42之类的输入设 备向计算机20中输入命令和信息。其他输入设备(未示出)可以包括麦克 风、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入 设备常通过耦合到系统总线的串行端口接口46连接到通用处理单元21,但 也可通过其它接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。 显示器47或其他类型的显示设备也可以通过诸如视频适配器48之类的接 口连接到系统总线23。除了显示器47之外,计算机通常还包括其他外围输 出设备(未示出),如扬声器和打印机。图1的示例性系统也包括主机适 配器55、小型计算机系统接口(SCSI)总线56,以及连接到SCSI总线56 的外部存储设备62。

计算机20可以使用到诸如远程计算机49之类的一个或多个远程计算 机的逻辑连接在联网环境中操作。远程计算机49可以是另一计算机、服务 器、路由器、网络PC、对等设备或其他公共网络节点,并且通常可包括上 文参考计算机20所描述的许多或全部元件,但是在图1中只示出了存储设 备50。图1中所描绘的逻辑连接可包括局域网(LAN)51和广域网(WAN) 52。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网 中是普遍现象。

当在LAN网络环境中使用时,计算机20可通过网络接口或适配器53 连接到LAN 51。当在WAN网络环境中使用时,计算机20通常可包括调 制解调器54,或用于通过广域网52(如通过因特网)建立通信的其他装置。 可以是内置或外置的调制解调器54可通过串行端口接口46连接到系统总 线23。在联网环境中,相对于计算机20所描述的程序模块或其部分可被存 储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且 可以使用在计算机之间建立通信链路的其他手段。此外,尽管可以预想本 发明的很多实施例特别适合于计算机化系统,但是本文中没有任何表述旨 在将本公开限制于这样的实施例。

上述详细描述通过示例和/或操作图阐明了系统和/或进程的各种实施 例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术 人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬 件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。

虽然已示出和描述了本文中描述的主题内容的特定方面,但是本领域 技术人员将明白,基于本文中的教导,可作出改变和修改而不脱离本文中 描述的主题内容,并且其更广泛的诸方面以及因此所附权利要求旨在涵盖 落在本文中描述的主题内容的真实精神和范围内的所有此类改变和修改。

图2示出基于内核模式的终端服务体系结构的示例。

在这些实施例中,进程可以在用户模式会话空间、内核模式会话空间 和内核模式系统空间中的每一个中执行。内核模式空间通常是为运行内核、 内核扩展和某些设备驱动器而保留的存储器空间。用户模式空间通常是其 中执行所有用户模式应用程序的存储器。会话空间是为特定用户会话保留 的存储器空间。系统空间是在系统操作时为系统保留的存储器。内核模式 和用户模式空间可以与会话或系统空间组合以提供上述空间,诸如用户模 式系统空间。其它实施例可以利用用户模式系统空间。

用户模式会话空间202中的应用程序(诸如文字处理器或web浏览器) 首先生成图形数据。在应用程序202是文字处理器的情况下,该图形数据 可以是以特定排列(诸如在正被编辑的文档页上居中并被加粗)在屏幕上 显示的文本或图像。然后,根据设备驱动器接口(DDI)206将该图形数据 发送到设备驱动器204用于处理。驱动器204和DDI 206存在于内核模式 会话空间中。设备驱动器是允许诸如文字处理器之类的高级计算机程序与 诸如计算机打印机或计算机监视器之类的硬件设备通信的组件或计算机程 序。驱动器204通常通过与硬件物理连接的计算机通信子系统与关联硬件 通信。相应DDI 206采用该驱动器专用的应用编程接口(API)的形式。程 序202根据DDI 206进行调用,该调用由DDI 206和驱动器204翻译成相 应硬件理解的通信。当从硬件收到对程序202的通信时,DDI 206和驱动器 204进行类似转换。

在实施例中,DDI 204可以包括图形设备接口(GDI),即表示图形对 象并将它们发送到监视器和打印机之类的输出设备的MICROSOFT  WINDOWSTM的API。GDI执行诸如画线和画曲线、呈现字体以及处理调色 板之类的任务。在其他实施例中,DDI 204可以包括支持DirectX(DX)或 桌面视窗管理器(DWM)的接口。

在其中经由远程桌面协议(RDP)跨通信网络发送图形数据的实施例 中,驱动器204部分地将所接收的数据编码成至少一个RDP图形协议数据 单元(PDU)。RDP PDU是在RDP协议中规定的单元。然后,驱动器204 将每个RDP PDU发送到实现余下编码的系统空间内核模式驱动器208。该 系统空间内核模式驱动器208存在于内核模式系统空间中。编码可以包括 压缩和加密两者。在系统空间内核模式驱动器208编码PDU之后,它将PDU 发送到低级内核传送驱动器210。该内核传送驱动器210存在于内核模式系 统空间中。内核传送驱动器210将PDU发送到PDU的预期接收方212。例 如,在客户机212上的用户与当前机器进行RDP会话的情况下,内核传送 驱动器210根据RDP跨通信网络将PDU发送到客户机212。

与用户模式桌面应用程序202类似,用户模式虚拟通道应用程序214 可以存在于用户模式会话空间中。例如,虚拟通道应用程序214可以是远 程剪切板,其中在与当前机器200通信的远程客户机212上的用户可以将 在相同会话中运行的另一应用程序(诸如桌面应用程序202)上的文本或图 像复制到远程剪切板,然后将所复制的数据粘贴到另一文档。该虚拟通道 数据直接通过存在于内核模式会话空间中的文件输入/输出(I/O)子系统驱 动器216发送。与设备驱动器204如何将其所接收数据处理成至少一个RDP PDU相类似,I/O子系统216可以向所接收的虚拟通道数据施加成帧、压 缩和加密以产生至少一个RDP PDU,并且将每个PDU发送到子系统空间 RDP内核模式驱动器208。RDP内核模式驱动器208将每个PDU发送到系 统空间内核模式传送驱动器210,后者将PDU发送到PDU的预期接收方 212。

图2的该系统允许数据通过堆栈而无需任何显式编组。这产生不需要 复杂数据处理和编组的基于简单内核模式的RDP编码体系结构。该体系结 构被限制为编码代码在内核模式中运行。

图3示出与图2形成对比、基于用户模式的终端服务体系结构示例的 对比系统。

在该实施例中,用户模式桌面应用程序302和用户模式虚拟通道应用 程序320存在于用户模式会话空间中。

用户模式桌面应用程序302(诸如文字处理器或web浏览器)首先生 成图形数据。在应用程序302是文字处理器的情况下,该图形数据可以是 以特定排列(诸如在正被编辑的文档页上居中并被加粗)在屏幕上显示的 文本或图像。然后,根据设备驱动器接口(DDI)306将该图形数据发送到 设备驱动器304用于处理。驱动器304和DDI 306存在于内核模式会话空 间中。设备驱动器是允许诸如文字处理器之类的高级计算机程序与诸如计 算机打印机或计算机监视器之类的硬件设备通信的组件或计算机程序。驱 动器304通常通过与硬件物理连接的计算机通信子系统与关联硬件通信。 相应DDI 306采用针对驱动器的应用编程接口(API)的形式。程序302根 据DDI 306进行调用,该调用由DDI 306和驱动器304翻译成相应硬件理 解的通信。当从硬件收到对程序302的通信时,DDI 306和驱动器304进行 类似转换。

在实施例中,DDI 304可以包括图形设备接口(GDI),即表示图形对 象并将它们发送到监视器和打印机之类的输出设备的MICROSOFT  WINDOWSTM的API。GDI执行诸如画线和画曲线、呈现字体以及处理调色 板之类的任务。

在其中经由远程桌面协议(RDP)跨通信网络发送图形数据的实施例 中,驱动器304部分地将所接收的数据编码成能够被RDP编码器进程理解 的至少一个命令。驱动器306将每个命令发送到存在于内核模式会话空间 中的共享存储器图形反射器308。共享存储器图形反射器308包括可以由多 个程序同时访问以便在它们之间提供通信的存储器。该共享存储器图形反 射器308编组所有接收到的数据并将其发送到用户模式系统空间中的图形 反射器310。反射器确保在用户会话空间与系统空间之间互换数据的通常复 杂的任务以高效的方式进行。

编组是将对象的存储器表示转换成适合存储或传输的数据格式的进 程,并且通常在必需在计算机程序的不同部分之间或者从一个程序向另一 个程序移动数据时使用。相反的操作被称为“逆编组”。

两个反射器308、310基于在内核模式会话空间驱动器(共享存储器图 形反射器310)和用户模式系统空间进程(图形反射器310)之间映射的共 享存储器来通信。

在一实施例中,图形反射器310连同RDP输出调度器和编码器314以 及用户模式传送316一起是RDP编码器进程312的一部分。RDP编码器进 程312存在于用户模式系统空间中。

图形反射器310取得所接收的图形数据并将其发送到RDP输出调度器 和编码器314。如图2所示,内核模式体系结构使用产生RDP数据的应用 程序的实际线程来编码该数据并跨网络发送该数据。在大多数情形中,在 编码数据时阻挡这些应用程序。在如图3所示的用户模式体系结构中,编 码由RDP输出调度器和编码器组件314来执行。输出调度器组件314负责 消耗虚拟通道数据和图形编组数据并将该数据在其自身的一组线程上编码 成RDP格式。该体系结构允许对机器上出现的每个RDP会话的编码由单 个组件在有限和最佳的一组线程上执行。

当RDP输出调度器和编码器314已经将所接收的图形数据编码成至少 一个RDP PDU时,它将每个PDU发送到用户模式传送316。用户模式传 送316将PDU发送到PDU的预期接收方318。例如,在客户机318上的用 户与当前机器进行RDP会话时,用户模式传送316根据RDP跨通信网络 地将PDU发送到客户机318。

与用户模式桌面应用程序302类似,用户模式虚拟通道应用程序320 可以存在于用户模式会话空间中。例如,虚拟通道应用程序320可以是远 程剪切板,其中在与当前机器300通信的远程客户机318上的用户可以将 在相同会话中运行的另一应用程序(诸如桌面应用程序302)上的文本或图 像复制到远程剪切板,然后将所复制的数据粘贴到另一文档。将该虚拟通 道数据从用户模式虚拟通道应用程序320通过虚拟通道反射器322发送到 RDP输出调度器和编码器314。虚拟通道反射器322编组所接收的虚拟通 道数据并将相应的所编组虚拟通道数据发送到RDP输出调度器和编码器 314。

在一实施例中,虚拟通道反射器322使用指定管道和指定管道句柄。 可以对进程间通信使用指定管道,例如由虚拟通道反射器322来完成。指 定管道是对多个进程提供系统持久进程间通信(IPC)通道以彼此通信并且 通常对进程呈现为文件的API。进程通常附加到指定管道上以执行与另一 进程的进程间通信。在一实施例中,指定管道存储并取得存储器中的数据, 而且在需要时对数据进行检索(retrieve)。指定管道句柄是对指定管道的 句柄。

通过使用指定管道句柄,通道句柄上的I/O操作可以与诸如WINDOWS  TERMINAL SERVERTM API之类的预先存在的终端服务器API兼容。这对 提供与基于虚拟通道的当前应用程序的兼容性至关重要。如果虚拟通道反 射器322未使用指定管道,则基于虚拟通道的当前应用程序通过虚拟通道 反射器322呈现为不可操作。

与RDP输出调度器和编码器314如何将从图形反射器310接收的图形 数据编码成至少一个RDP PDU类似,RDP输出调度器和编码器314将从 虚拟通道反射器322接收的虚拟通道数据编码成至少一个RDP PDU。然后, RDP输出调度器和编码器314将每个PDU发送到用户模式传送316,后者 将PDU发送到PDU的预期接收方318。

图3A示出图3系统的实现,其中图形和虚拟通道数据由在该系统上运 行的虚拟机(VM)产生。通过反射器308a、310a、322a从在VM 328上运 行的客机中运行的用户会话收集数据,并将其发送到在机器300a上的主机 OS中运行的RDP编码器进程312a用于编码。在该实施例中,主机OS编 码器进程312a可以编码从多个VM到达的数据。在该实施例中,反射器组 件308a、310a、322a的实现基于主机-客机数据交换专用的机制。图形反射 器308a、310a可以使用在客机和主机之间共享的存储器,而VC反射器可 以利用VM总线(VMBUS)322a。在该实施例中,用户模式桌面应用程序 302a和用户模式虚拟通道应用程序320a在客机OS用户模式会话空间326a 中执行。设备驱动器接口306a和用户会话DRP内核模式显示驱动器304a 在客机OS内核模式会话空间326b中执行。此外,RDP编码器进程312a 在主机OS用户模式系统空间324c中执行。

为了清晰和简洁,有必要将某些组件从以上附图中省略。例如,在图 2和图3、3A的实现之间,传输控制协议(TCP)或传送接听者(listener) 可以不同。在图2的内核模式体系结构中的TCP接听者使用内核模式接听 者,而图3和3A的TCP接听者使用基于用户模式的接听者。用于处理 输入入射组件中可以采用类似方法。本领域技术人员会明白图2和图3、3A 的实现之间的其它辅助性不同。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号