User-Mode RDP Encoder Architecture for Kernel Maintenance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing remote desktop protocols (RDP) implemented with kernel mode drivers are difficult to service, maintain, and extend due to their complexity, which hinders efficient remote desktop and terminal services functionality.
Innovation Solution
A user-mode based RDP encoding architecture is introduced, where data is extracted from a session space process and marshaled to a system space user-mode process for encoding, allowing graphics and virtual channel data to be efficiently marshaled and encoded without relying on device driver interfaces or session application threads, using shared memory and named pipes for data transfer.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If kernel mode drivers are used for RDP protocol encoding, then easy access to data for encoding is achieved, but difficulty in servicing, maintaining, and extending functionality increases
Solution Approach 1:
The patent extracts the RDP protocol encoding functionality from the kernel mode driver and places it in a user mode process. This separates the encoding logic from the kernel, allowing the driver to focus only on data collection and transmission, while the user mode process handles the complex encoding tasks. This extraction resolves the contradiction by maintaining easy data access through the driver while improving ease of servicing through user mode encapsulation.
Solution Approach 2:
The patent introduces a user mode process as an intermediary between the kernel mode driver and the RDP encoding logic. This intermediary layer receives data from the driver, performs the encoding operations, and manages the protocol complexity. This mediator resolves the contradiction by allowing the driver to access data easily while the intermediary handles the difficult encoding and maintenance tasks in user mode.
2Ease of manufacture
If kernel mode drivers are used for RDP protocol encoding, then direct access to encoding data is achieved, but complexity of development and maintenance increases
Solution Approach 1:
The patent extracts the complex RDP encoding logic from the kernel mode driver and relocates it to a user mode process. This separation reduces kernel complexity by removing difficult-to-maintain encoding code, while the driver retains only simple data collection and transmission functions. This resolves the contradiction by maintaining easy data access while reducing development complexity.
Solution Approach 2:
The patent segments the RDP system into distinct components: a kernel mode driver responsible for data collection and a user mode process responsible for encoding. This segmentation allows each component to be developed and maintained independently, reducing overall system complexity while maintaining efficient data access between components.
3Productivity
If multiple threads are used for graphics and virtual channel data processing, then data processing capability is improved, but performance optimization becomes difficult
Solution Approach 1:
The patent merges the processing of graphics data and virtual channel data into a single user mode process. This consolidation allows for optimized thread management within one process context, reducing the complexity of coordinating multiple threads across different processes or kernels while maintaining high data processing capability through efficient internal threading strategies.
Data Source
AI summary
Techniques are disclosed for a user-mode based remote desktop protocol (RDP) encoding architecture. A user mode desktop application and user mode virtual channel application run in user-mode session space. Virtual channel data from the virtual channel application is marshaled and sent to a RDP encoder process in user-mode system space. There it is converted to RDP protocol data units (PDU) and sent to a remote client across a communications network. Graphics data from the desktop application is sent to a display driver in kernel-mode session space and then to a graphics reflector that marshals the graphics data and sends it to the RDP encoder for a similar transformation.


