CN102246154B - 基于用户模式的远程桌面协议(rdp)编码体系结构 - Google Patents
基于用户模式的远程桌面协议(rdp)编码体系结构 Download PDFInfo
- Publication number
- CN102246154B CN102246154B CN200980150145.7A CN200980150145A CN102246154B CN 102246154 B CN102246154 B CN 102246154B CN 200980150145 A CN200980150145 A CN 200980150145A CN 102246154 B CN102246154 B CN 102246154B
- Authority
- CN
- China
- Prior art keywords
- rdp
- data
- tunnel
- space
- scrambler
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Digital Computer Display Output (AREA)
Abstract
本发明公开了用于基于用户模式的远程桌面协议(RDP)编码体系结构。用户模式桌面应用程序和用户模式虚拟通道应用程序在用户模式会话空间中运行。来自虚拟通道应用程序的虚拟通道数据被编组并被发送到用户模式系统空间中的RDP编码器进程。它被转换成RDP协议数据单元(PDU)并被跨通信网络发送到远程客户机。将来自桌面应用程序的图形数据发送到内核模式会话空间中的显示驱动器,然后发送到图形反射器,图形反射器编组图形数据并将其发送到RDP编码器用于类似的转换。
Description
发明背景
视窗(Windows)家族中的某些操作系统提供一些工具,用户可以通过这些工具与属于在另一计算机上运行的应用程序的用户接口远程交互。这些工具被称为远程桌面或终端服务。这种工具的示例是WINDOWSTERMINAL 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,以及用于读写诸如CDROM或其他光学介质之类的可移动光盘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),即表示图形对象并将它们发送到监视器和打印机之类的输出设备的MICROSOFTWINDOWSTM的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如何将其所接收数据处理成至少一个RDPPDU相类似,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),即表示图形对象并将它们发送到监视器和打印机之类的输出设备的MICROSOFTWINDOWSTM的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操作可以与诸如WINDOWSTERMINAL 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的实现之间的其它辅助性不同。
Claims (20)
1.一种用于在计算机的用户模式地址空间中编码图形数据的方法,包括:
将与来自客户机的请求相对应的图形数据从在用户模式会话空间(324a)中执行的用户应用程序发送到在内核模式(324b)中执行的显示驱动器,所述会话空间包括为用户会话保留的存储器空间;
将所述图形数据从在内核模式中执行的所述显示驱动器发送到在用户模式系统空间(324c)中执行的远程桌面协议编码器进程(312),所述系统空间包括为所述系统保留的存储器空间;以及
将所述图形数据从所述远程桌面协议编码器进程(312)通过通信网络发送到所述客户机(318a)。
2.如权利要求1所述的方法,其特征在于,所述图形数据经由共享存储器机构发送到所述远程桌面协议编码器进程。
3.如权利要求2所述的方法,还包括在将所述图形数据发送到所述远程桌面协议编码器进程之前编组所述图形数据。
4.如权利要求1所述的方法,其特征在于,所述用户应用程序在计算机虚拟机上执行的客机操作系统的用户模式会话空间中执行,并且所述显示驱动器在所述客机操作系统的内核模式会话空间中执行。
5.如权利要求1所述的方法,其特征在于,所述显示驱动器在内核模式会话空间中执行。
6.如权利要求1所述的方法,其特征在于,所述图形数据包括图形设备接口格式、桌面视窗管理器格式或DirectX格式的数据。
7.如权利要求1所述的方法,其特征在于,还包括:
将与来自所述客户机的请求相对应的虚拟通道数据从在用户模式会话空间中执行的虚拟通道应用程序发送到所述远程桌面协议编码器进程;以及
将所述虚拟通道数据从所述远程桌面协议编码器进程通过通信网络发送到所述客户机。
8.如权利要求7所述的方法,其特征在于,所述虚拟通道数据经由指定管道发送到所述远程桌面协议编码器进程。
9.如权利要求8所述的方法,还包括在将所述虚拟通道数据发送到所述远程桌面协议编码器进程之前编组所述虚拟通道数据。
10.如权利要求7所述的方法,其特征在于,所述虚拟通道数据对应于所述图形数据。
11.如权利要求1所述的方法,其特征在于,所述远程桌面协议编码器进程在所述图形数据上执行一组动作中的至少一个,所述组包括:使所述图形数据成帧、压缩所述图形数据、以及加密所述图形数据。
12.如权利要求1所述的方法,其特征在于,还包括:
在将所述图形数据发送到所述远程桌面协议编码器进程之前,由所述显示驱动器将所述图形数据编码成能够由所述远程桌面协议编码器进程理解的至少一个命令。
13.一种用于在计算机的用户模式地址空间中编码图形数据的系统,包括:
在内核模式空间(326b)中执行的显示驱动器,被配置成从在用户模式会话空间(326a)中执行的用户应用程序(302a)接收图形数据,所述会话空间包括为用户会话保留的存储器空间;
在用户模式系统空间(324c)中执行的远程桌面协议编码器(312a),被配置成从所述显示驱动器接收所述图形数据、编码所述图形数据、并且跨通信网络将所编码的图形数据发送到与所述图形数据对应的客户机(318a),所述系统空间包括为所述系统保留的存储器空间。
14.如权利要求13所述的系统,其特征在于,所述远程桌面协议编码器还被配置成:
从在用户模式会话空间中执行的虚拟通道应用程序接收虚拟通道数据,编码所述虚拟通道数据,并跨所述通信网络将所编码的虚拟通道数据发送到所述客户机。
15.如权利要求14所述的系统,其特征在于,所述远程桌面协议编码器还被配置成:
跨虚拟通道反射器接收所述虚拟通道数据,所述虚拟通道反射器包括指定管道,其中所述虚拟通道反射器编组所述虚拟通道数据并且将经编组的虚拟通道数据发送到所述远程桌面协议编码器。
16.如权利要求13所述的系统,其特征在于,所述远程桌面协议编码器还被配置成:
跨图形反射器接收所述图形数据,所述图形反射器包括共享存储器。
17.如权利要求13所述的系统,其特征在于,所述用户应用程序在所述计算机的虚拟机上执行的客机操作系统的用户模式会话空间中执行,并且所述显示驱动器在所述客机操作系统的内核模式会话空间中执行。
18.如权利要求13所述的系统,其特征在于,所编码的图形数据包括远程桌面协议格式的图形数据。
19.一种用于在计算机的用户模式地址空间中编码图形数据的方法,包括:
将与来自客户机(318a)的请求对应的图形数据从在用户模式会话空间(326a)中执行的用户应用程序发送到在内核模式(326b)中执行的显示驱动器,所述会话空间包括为用户会话保留的存储器空间;
由所述显示驱动器将所述图形数据转换成采用能够由远程桌面协议编码器进程理解的格式的至少一个图形命令;
编组每个协议数据单元;
跨图形反射器将每个经编组的协议数据单元发送到在用户模式系统空间中执行的所述远程桌面协议编码器进程,所述图形反射器包括共享存储器,所述系统空间包括为所述系统保留的存储器空间;
逆编组每个协议数据单元;
由所述远程桌面协议编码器进程压缩每个协议数据单元;
将每个经压缩的协议数据单元从所述远程桌面协议编码器进程(312a)通过通信网络发送到所述客户机(318a);
将来自在用户模式会话空间(326a)中执行的虚拟通道应用程序(320a)的与所述来自客户机的请求相对应的虚拟通道数据进行编组;
跨虚拟通道反射器将经编组的虚拟通道数据发送到所述远程桌面协议编码器进程(312a),所述虚拟通道反射器包括指定管道;
逆编组所述虚拟通道数据;
将所述虚拟通道数据转换成至少一个虚拟通道远程桌面协议协议数据单元;
压缩每个虚拟通道远程桌面协议协议数据单元;以及
将每个经压缩的虚拟通道远程桌面协议协议数据单元从所述远程桌面协议编码器进程通过通信网络发送到所述客户机(318a)。
20.如权利要求19所述的方法,其特征在于,所述用户应用程序在所述计算机的虚拟机上执行的客机操作系统的用户模式会话空间中执行,并且所述显示驱动器在所述客机操作系统的内核模式会话空间中执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/331,298 | 2008-12-09 | ||
US12/331,298 US8180905B2 (en) | 2008-12-09 | 2008-12-09 | User-mode based remote desktop protocol (RDP) encoding architecture |
PCT/US2009/064039 WO2010077446A2 (en) | 2008-12-09 | 2009-11-11 | User-mode based remote desktop protocol (rdp) encoding architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102246154A CN102246154A (zh) | 2011-11-16 |
CN102246154B true CN102246154B (zh) | 2014-07-09 |
Family
ID=42232314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980150145.7A Active CN102246154B (zh) | 2008-12-09 | 2009-11-11 | 基于用户模式的远程桌面协议(rdp)编码体系结构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8180905B2 (zh) |
EP (1) | EP2377037A4 (zh) |
JP (1) | JP2012511777A (zh) |
CN (1) | CN102246154B (zh) |
WO (1) | WO2010077446A2 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732496B2 (en) * | 2011-03-24 | 2014-05-20 | Nvidia Corporation | Method and apparatus to support a self-refreshing display device coupled to a graphics controller |
US8745366B2 (en) | 2011-03-31 | 2014-06-03 | Nvidia Corporation | Method and apparatus to support a self-refreshing display device coupled to a graphics controller |
CN103748553B (zh) | 2011-06-28 | 2018-09-21 | 惠普发展公司,有限责任合伙企业 | 客户端的操作状态信息在远程桌面会话中的显示 |
WO2013002766A1 (en) | 2011-06-28 | 2013-01-03 | Hewlett-Packard Development Company, L.P. | Display of host operating system user interface elements within a guest operating system of a virtual machine |
US8645967B2 (en) * | 2011-08-30 | 2014-02-04 | Microsoft Corporation | Efficient secure data marshaling through at least one untrusted intermediate process |
US8635152B2 (en) | 2011-09-14 | 2014-01-21 | Microsoft Corporation | Multi tenancy for single tenancy applications |
US8589481B2 (en) | 2011-09-14 | 2013-11-19 | Microsoft Corporation | Multi tenant access to applications |
US20130093776A1 (en) * | 2011-10-14 | 2013-04-18 | Microsoft Corporation | Delivering a Single End User Experience to a Client from Multiple Servers |
US9466182B2 (en) | 2012-02-27 | 2016-10-11 | Bally Gaming, Inc. | Coordinating access to wagering game machine windows |
CN102868728B (zh) * | 2012-08-23 | 2015-07-22 | 福建升腾资讯有限公司 | 在vdi环境下基于虚拟通道的网络代理方法 |
EP2943878B1 (en) * | 2013-01-08 | 2018-09-19 | BlackBerry Limited | Clipboard management |
US9374415B1 (en) | 2013-09-16 | 2016-06-21 | The Boeing Company | Remote peripheral controller |
CN104811455B (zh) * | 2015-05-18 | 2018-05-04 | 成都卫士通信息产业股份有限公司 | 一种云计算身份认证方法 |
US10157287B2 (en) * | 2016-02-09 | 2018-12-18 | Wyse Technology L.L.C. | Secure access client |
KR101742258B1 (ko) * | 2016-02-29 | 2017-05-31 | 경희대학교 산학협력단 | 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치 |
CN107249032A (zh) * | 2017-06-15 | 2017-10-13 | 华中师范大学 | 一种基于远程桌面传输的课件资源同步阅览装置及其工作方法 |
CN112068908B (zh) | 2017-10-23 | 2024-01-30 | 华为技术有限公司 | 图形处理方法及相关装置和设备 |
CN108769135B (zh) * | 2018-05-07 | 2021-01-12 | 广州杰赛科技股份有限公司 | 云桌面连接方法、装置、设备及系统 |
TWI731287B (zh) * | 2018-12-22 | 2021-06-21 | 威聯通科技股份有限公司 | 網路應用程式產品及處理應用層協定的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101035043A (zh) * | 2007-01-29 | 2007-09-12 | 成都金山数字娱乐科技有限公司 | 一种通过网络数据包控制输入的远程协助其他网络用户的方法 |
US7562131B2 (en) * | 2004-06-25 | 2009-07-14 | Intel Corporation | UPnP user interface system and method |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7188180B2 (en) * | 1998-10-30 | 2007-03-06 | Vimetx, Inc. | Method for establishing secure communication link between computers of virtual private network |
US6278478B1 (en) * | 1999-03-18 | 2001-08-21 | Microsoft Corporation | End-to-end network encoding architecture |
US7219354B1 (en) * | 2000-12-22 | 2007-05-15 | Ensim Corporation | Virtualizing super-user privileges for multiple virtual processes |
US7099948B2 (en) * | 2001-02-16 | 2006-08-29 | Swsoft Holdings, Ltd. | Virtual computing environment |
US7461144B1 (en) * | 2001-02-16 | 2008-12-02 | Swsoft Holdings, Ltd. | Virtual private server with enhanced security |
US7171444B2 (en) * | 2001-11-14 | 2007-01-30 | Sharp Laboratories Of America, Inc. | Remote desktop protocol compression system |
US6931530B2 (en) * | 2002-07-22 | 2005-08-16 | Vormetric, Inc. | Secure network file access controller implementing access control and auditing |
US7475419B1 (en) * | 2003-09-19 | 2009-01-06 | Hewlett-Packard Development Company, L.P. | System and method for controlling access in an interactive grid environment |
US7275212B2 (en) * | 2003-10-23 | 2007-09-25 | Microsoft Corporation | Synchronized graphics and region data for graphics remoting systems |
US20050193396A1 (en) * | 2004-02-27 | 2005-09-01 | Stafford-Fraser James Q. | Computer network architecture and method of providing display data |
US7590750B2 (en) * | 2004-09-10 | 2009-09-15 | Microsoft Corporation | Systems and methods for multimedia remoting over terminal server connections |
US20060082581A1 (en) * | 2004-10-14 | 2006-04-20 | Microsoft Corporation | Encoding for remoting graphics to decoder device |
US8549149B2 (en) * | 2004-12-30 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing |
US8171169B2 (en) * | 2005-03-14 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for updating a graphical display in a distributed processing environment |
US7676549B2 (en) * | 2005-05-27 | 2010-03-09 | Microsoft Corporation | Techniques for providing accessibility options in remote terminal sessions |
US20070050471A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Portable Remoting Component With A Scaleable Feature Set |
US7653749B2 (en) * | 2005-08-31 | 2010-01-26 | Microsoft Corporation | Remote protocol support for communication of large objects in arbitrary format |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7904563B2 (en) * | 2006-03-31 | 2011-03-08 | Microsoft Corporation | Establishing and utilizing terminal server dynamic virtual channels |
JP4859546B2 (ja) * | 2006-06-08 | 2012-01-25 | 三菱電機株式会社 | コンピュータシステム、コンピュータシステムのトレースデータ蓄積方法およびトレースデータ蓄積プログラム |
US20080201481A1 (en) * | 2007-02-20 | 2008-08-21 | Microsoft Corporation | Remote interface marshalling |
US7930732B2 (en) * | 2008-02-22 | 2011-04-19 | Novell, Inc. | Techniques for secure transparent switching between modes of a virtual private network (VPN) |
-
2008
- 2008-12-09 US US12/331,298 patent/US8180905B2/en active Active
-
2009
- 2009-11-11 EP EP09836591A patent/EP2377037A4/en not_active Ceased
- 2009-11-11 JP JP2011540750A patent/JP2012511777A/ja active Pending
- 2009-11-11 CN CN200980150145.7A patent/CN102246154B/zh active Active
- 2009-11-11 WO PCT/US2009/064039 patent/WO2010077446A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7562131B2 (en) * | 2004-06-25 | 2009-07-14 | Intel Corporation | UPnP user interface system and method |
CN101035043A (zh) * | 2007-01-29 | 2007-09-12 | 成都金山数字娱乐科技有限公司 | 一种通过网络数据包控制输入的远程协助其他网络用户的方法 |
Non-Patent Citations (2)
Title |
---|
Implementing Remote Display on Commodity Operating Systems;Lei ZHANG;《Scientific Commons》;20060131;10-16 * |
Lei ZHANG.Implementing Remote Display on Commodity Operating Systems.《Scientific Commons》.2006,10-15. |
Also Published As
Publication number | Publication date |
---|---|
CN102246154A (zh) | 2011-11-16 |
US8180905B2 (en) | 2012-05-15 |
US20100146127A1 (en) | 2010-06-10 |
JP2012511777A (ja) | 2012-05-24 |
WO2010077446A2 (en) | 2010-07-08 |
WO2010077446A3 (en) | 2010-08-26 |
EP2377037A2 (en) | 2011-10-19 |
EP2377037A4 (en) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102246154B (zh) | 基于用户模式的远程桌面协议(rdp)编码体系结构 | |
KR102403108B1 (ko) | 시각적 질문응답 모델, 전자 기기 및 저장 매체 | |
KR101507629B1 (ko) | 기존 애플리케이션들의 커스터마이징 및 분산을 위한 브라우저-기반 프록시 서버 | |
US8132191B2 (en) | Method and apparatus for adapting and hosting legacy user interface controls | |
US20120191922A1 (en) | Object synchronization in shared object space | |
US9235452B2 (en) | Graphics remoting using augmentation data | |
CN102932324B (zh) | 支持降低的网络带宽使用的跨帧渐进损坏 | |
US20160371874A1 (en) | Command remoting | |
WO2008061903A1 (en) | Method and system for client / server distributed image processing | |
TW201044272A (en) | Parallel processing method for a dual operating system | |
CN102411786A (zh) | 用于基于dwt的系统的运动补偿的低复杂度方法 | |
US11263064B2 (en) | Methods and apparatus to facilitate improving processing of machine learning primitives | |
JP2014534488A (ja) | 同じタイプの複数のメタデーター表現の効率的な提供 | |
CN110807111A (zh) | 三维图形的处理方法及装置、存储介质、电子设备 | |
US20020038351A1 (en) | System, method and computer program product for transcoding form content for display on thin client devices | |
CN111026463B (zh) | 一种页面加载方法、装置、设备和存储介质 | |
JP2009543253A (ja) | 画像の複数のかつネイティブな表現方法 | |
JP5536093B2 (ja) | 改良されたコマンドリモーティング技術 | |
US10620980B2 (en) | Techniques for native runtime of hypertext markup language graphics content | |
EP3791274B1 (en) | Method and node for managing a request for hardware acceleration by means of an accelerator device | |
CN112948141A (zh) | 一种基于消息中间件的数据处理方法、装置和系统 | |
US20240223788A1 (en) | Segmented bitstream processing using fence identifiers | |
US7895608B1 (en) | Virtual processing chains | |
CN116977467A (zh) | 图标生成方法、装置、电子设备及存储介质 | |
CN116185366A (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: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150427 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150427 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |