Providing remote access to applications through interface hooks
First Claim
1. A method comprising:
- providing, by a host device, a shadow desktop environment segregated from a first local desktop environment of the host device, output from applications of the first local desktop environment being presented to a local user on the host device, output from the shadow desktop environment being presented to a remote client, and instances of applications of the shadow desktop environment being unable to interact with instances of applications of the first local desktop environment;
transforming, by the host device, an instance of an application in the first local desktop environment from a local mode to a remote access mode in the shadow desktop environment by;
transferring execution of the instance of the application from the first local desktop environment to the shadow desktop environment;
assigning a port to the instance of the application; and
hooking one or more application programming interfaces (APIs) associated with the instance of the application to generate one or more first hooks, the one or more first hooks are configured such that;
first input, from a remote application viewer application locally executing on the remote client, is redirected to the instance of the application executing in the shadow desktop environment of the host device;
output from the instance of the application is redirected to the remote client;
second input, from the first local desktop environment of the host device and associated with the instance of the application, is suppressed; and
third input, from the host device and associated with different instances of the application executing on the host device, is permitted;
receiving, by the host device, user input from the remote client through the port;
providing, by the host device, the user input to the instance of the application via the one or more APIs;
identifying, by the host device, an application window associated with the instance of the application in the shadow desktop environment based on an identifier extracted via one or more composition APIs associated with a window composition module associated with the shadow desktop environment;
extracting the application window as image data from the window composition module; and
sending, by the host device, output from the shadow desktop environment to the remote client, wherein the output includes the application window associated with the instance of the application.
8 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems, and computer-readable media for providing remote access to applications executing on a host device are presented. Aspects described herein may enable a host device to provide remote access to applications executing in a user session by hooking one or more APIs (or other interfaces) associated with an application instance and a window composition module. Dynamically assigned ports may be generated and used to allow a client device to provide remote user input to an application instance operating in a remote access mode. One or more APIs associated with the application instance may be hooked to provide the remote user input to an input queue of the application instance, bypassing an operating system input queue in some embodiments. APIs associated with the application instance and the window composition module may be hooked to allow the host device to recognize window textures generated by the application instance. These recognized window textures may be sent to the remote client device. As a result, according to some aspects, a host device may enable remote access to the application instance by providing remote input to the application instance and forwarding output from the application instance to the remote client device. These and other features will be discussed further herein.
-
Citations
20 Claims
-
1. A method comprising:
-
providing, by a host device, a shadow desktop environment segregated from a first local desktop environment of the host device, output from applications of the first local desktop environment being presented to a local user on the host device, output from the shadow desktop environment being presented to a remote client, and instances of applications of the shadow desktop environment being unable to interact with instances of applications of the first local desktop environment; transforming, by the host device, an instance of an application in the first local desktop environment from a local mode to a remote access mode in the shadow desktop environment by; transferring execution of the instance of the application from the first local desktop environment to the shadow desktop environment; assigning a port to the instance of the application; and hooking one or more application programming interfaces (APIs) associated with the instance of the application to generate one or more first hooks, the one or more first hooks are configured such that; first input, from a remote application viewer application locally executing on the remote client, is redirected to the instance of the application executing in the shadow desktop environment of the host device; output from the instance of the application is redirected to the remote client; second input, from the first local desktop environment of the host device and associated with the instance of the application, is suppressed; and third input, from the host device and associated with different instances of the application executing on the host device, is permitted; receiving, by the host device, user input from the remote client through the port; providing, by the host device, the user input to the instance of the application via the one or more APIs; identifying, by the host device, an application window associated with the instance of the application in the shadow desktop environment based on an identifier extracted via one or more composition APIs associated with a window composition module associated with the shadow desktop environment; extracting the application window as image data from the window composition module; and sending, by the host device, output from the shadow desktop environment to the remote client, wherein the output includes the application window associated with the instance of the application. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system comprising:
-
one or more processors; and memory storing computer-readable instructions that, when executed by the one or more processors, cause the system to; provide a shadow desktop environment segregated from a first local desktop environment of the system, output from applications of the first local desktop environment being presented to a local user of the system, output from the shadow desktop environment being presented to a remote client, and instances of applications of the shadow desktop environment being unable to interact with instances of applications of the first local desktop environment; transform an instance of an application in the first local desktop environment from a local mode to a remote access mode in the shadow desktop environment by; transferring execution of the instance of the application from the first local desktop environment to the shadow desktop environment; assigning a port to the instance of the application; and hooking one or more application programming interfaces (APIs) provided by the instance of the application or a window composition module to generate one or more first hooks, the one or more first hooks being configured such that; first input, from a remote application viewer application locally executing on the remote client, is redirected to the instance of the application executing in the shadow desktop environment of the system; output from the instance of the application is redirected to the remote client; second input, from the first local desktop environment of the system and associated with the instance of the application, is suppressed; and third input, from the local user of the system and associated with different instances of the application executing on the system, is permitted; receive user input from the remote client through the port; provide the user input to the instance of the application using the hooked one or more APIs; identify an application window associated with the instance of the application in the shadow desktop environment based on an identifier extracted using the hooked one or more APIs extract the application window as an image from the window composition module; and send output from the shadow desktop environment to the remote client, wherein the output includes the extracted application window. - View Dependent Claims (11, 12)
-
-
13. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors of a host device, cause the host device to:
-
provide a shadow desktop environment segregated from a first local desktop environment of the host device, output from applications of the first local desktop environment being presented to a local user on the host device, output from the shadow desktop environment being presented to a remote client, and instances of applications of the shadow desktop environment being unable to interact with instances of applications of the first local desktop environment; transform an instance of an application in the first local desktop environment from a local mode to a remote access mode in the shadow desktop environment by; transferring execution of the instance of the application from the first local desktop environment to the shadow desktop environment; assigning a port to the instance of the application; and hooking one or more application programming interfaces (APIs) associated with the instance of the application to generate one or more first hooks, the one or more first hooks are configured such that; first input, from a remote application viewer application locally executing on the remote client, is redirected to the instance of the application executing in the shadow desktop environment of the host device; output from the instance of the application is redirected to the remote client; second input, from the first local desktop environment of the host device and associated with the instance of the application, is suppressed; and third input, from the host device and associated with different instances of the application executing on the host device, is permitted; receive user input from the remote client through the port; provide the user input to the instance of the application via the one or more APIs; identify an application window associated with the instance of the application in the shadow desktop environment based on an identifier extracted via one or more composition APIs associated with a window composition module associated with the shadow desktop environment; extract the application window as image data from the window composition module; and send output from the shadow desktop environment to the remote client, wherein the output includes the application window associated with the instance of the application. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
Specification