IP Library Granted Patent US 9,813,504
Granted Patent B2
US 9,813,504 · App. 14/816,800 · Granted Nov 7, 2017

Virtualizing device management services on a multi-session platform

Inventors: Sandeep Kumar (Cupertino, CA); Terry N. Treder (Delray Beach, FL)
Assignee: Citrix Systems, Inc.
H04L67/14G06F9/54
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,813,504
App. No.
14/816,800
Granted
Nov 7, 2017
Kind
B2
Abstract

Methods, systems, computer-readable media, and apparatuses may provide virtualization of device management services (e.g., device drivers) dedicated managing a particular device and designed under for or under the assumption the particular device and the device management service will be utilized in a single session/user environment, so that virtual instances of the device management services may be used in a multi-session environment. Further, a redirection and/or virtualization layer may be created for each session in the multi-session environment to perform global database redirection, object name translation, and file system translation to ensure session boundaries are maintained and global/shared resources are not inappropriately altered by a session. As an example, the redirection/virtualization layer may redirect communications associated with a session and for a global resource to access a virtual instance of the resource specific to the session.

Claims (63)

1. A system comprising:

a first computing device configured to provide a virtual environment comprising a plurality of sessions where each session is specific to a different user and comprises at least one virtual instance of an application executed by the first computing device; and

a second computing device communicatively coupled to the first computing device via a wide area network, the second computing device being associated with a session, of the plurality of sessions, and configured to interact with a virtual instance of the application specific to the session,

wherein the second computing device is communicatively coupled to a service managed computing device configured to be managed by a device management service,

wherein the session comprises a virtual instance of the device management service for use with the session and a redirection layer for use with the session, and

wherein the redirection layer is configured to intercept a communication between the virtual instance of the application specific to the session and the virtual instance of the device management service for use with the session.

2. The system of claim 1 , wherein the redirection layer is configured to:

in response to determining that the communication comprises a write instruction to a location of a global registry database, determine whether a location of a database specific to the session and corresponding to the location of the global registry database exists.

3. The system of claim 2 , wherein the redirection layer is configured to:

in response to determining that the location of the database specific to the session and corresponding to the location of the global registry database does not exist, create the location of the database specific to the session and corresponding to the location of the global registry database and route the write instruction to the location of the database specific to the session and corresponding to the location of the global registry database.

4. The system of claim 2 , wherein the redirection layer is configured to:

in response to determining that the location of the database specific to the session and corresponding to the location of the global registry database exists, route the write instruction to the location of the database specific to the session and corresponding to the location of the global registry database.

5. The system of claim 1 , further comprising:

in response to determining that the communication comprises a read instruction to a location of a global registry database, determine whether the redirection layer has previously intercepted a write instruction to the location of the global registry database.

6. The system of claim 5 , further comprising:

in response to determining that the redirection layer has previously intercepted the write instruction to the location of the global registry database, route the read instruction to a location of a database specific to the session where the write instruction was previously routed.

7. The system of claim 5 , further comprising:

in response to determining that the redirection layer has not previously intercepted the write instruction to the location of the global registry database, route the read instruction to the location of the global registry database.

8. The system of claim 1 , further comprising:

determine whether the communication comprises a global object name; and

in response to determining that the communication comprises the global object name, renaming the global object name with a name specific to the session and that is indicative of the session.

9. The system of claim 1 ,

wherein the system does not comprise a hypervisor and does not comprise virtual instances of an operating system, and

wherein the service managed device is a universal serial bus-enabled device and the device managed service is a device driver of the service managed device.

10. The system of claim 1 , wherein the redirection layer is configured to:

in response to determining that the communication comprises a write instruction to a global resource, determine whether a virtual instance of the global resource that is specific to the session exists;

in response to determining that the virtual instance of the global resource that is specific to the session does not exist, generate the virtual instance of the global resource that is specific to the session; and

in response to determining that the virtual instance of the global resource that is specific to the session exists, access the virtual instance of the global resource that is specific to the session.

11. An apparatus comprising:

a processor; and

a computer readable medium storing instructions that, when executed by the processor, configure the apparatus to:

generate a plurality of sessions where each session is specific to a different user and comprises at least one virtual instance of an application;

perform one or more functions of a virtual instance of the application for a session, of the plurality of sessions, based on one or more user inputs received from a user device different from the apparatus;

determine whether the user device is connected to a peripheral device configured to be managed by a device driver; and

in response to determining that the user device is connected to the peripheral device configured to be managed by the device driver, generate a virtual instance of the device driver for the session and a redirection layer for the virtual instance of the device driver for the session.

12. The apparatus of claim 11 , wherein the computer readable medium stores instructions that, when executed by the processor, further configure the apparatus to:

perform one or more functions of a different virtual instance of the application for a different session, of the plurality of sessions, based on one or more user inputs received from a different user device;

determine whether the different user device is connected to a different peripheral device configured to be managed by the device driver; and

in response to determining that the different user device is connected to the different peripheral device configured to be managed by the device driver, generate a different virtual instance of the device driver for the different session and a different redirection layer for the different virtual instance of the device driver for the different session.

13. The apparatus of claim 11 , wherein the computer readable medium stores instructions that, when executed by the processor, further configure the apparatus to:

intercept a communication between the virtual instance of the device driver and the virtual instance of the application; and

in response to determining that the communication comprises a write instruction to a location of a global registry database, route the write instruction to a location of a database specific to the session and corresponding to the location of the global registry database.

14. The apparatus of claim 11 , wherein the computer readable medium stores instructions that, when executed by the processor, further configure the apparatus to:

intercept a communication between the virtual instance of the device driver and the virtual instance of the application; and

in response to determining that the communication comprises a read instruction for a location of a global registry database, route the read instruction to a location of a database specific to the session and corresponding to the location of the global registry database.

15. The apparatus of claim 11 , wherein the computer readable medium stores instructions that, when executed by the processor, further configure the apparatus to:

intercept a communication between the virtual instance of the device driver and the virtual instance of the application; and

in response to determining that the communication includes a reference to a global object:

generate a virtual instance of the global object that is specific to the session; and

modify the reference to the global object to a reference to the virtual instance of the global object that is specific to the session.

16. A method comprising:

generating, by a computing device, a plurality of sessions where each session is specific to a different user and comprises at least one virtual instance of an application;

performing, by the computing device, one or more functions of a virtual instance of the application for a session, of the plurality of sessions, based on one or more user inputs received from a user device different from the computing device;

in response to determining that the user device is connected to a peripheral device configured to be managed by a device driver, generate a virtual instance of the device driver for the session and a redirection layer for the virtual instance of the device driver for the session; and

rerouting messages associated with a session and intended for a global resource to a virtual instance of the global resource that is specific to the session.

17. The method of claim 16 , wherein each of the plurality of sessions is in communication with a same operating system and is not in communication with a hypervisor.

18. The method of claim 16 , further comprising:

renaming global object names in the messages to object names specific to the session.

19. The method of claim 16 , wherein at least one of the messages associated with the session and intended for a global resource comprise a write instruction or a read instruction to a location of a global registry database.

20. The method of claim 16 , further comprising:

intercepting a read instruction associated with the session;

determining that the read instruction associated with the session is for a location of a global registry database; and

in response to determining that a write instruction associated with the session and for the location of the global registry database has been previously rerouted to a location of a database specific to the session and corresponding to the location of the global registry database, routing the read instruction to the location of the database specific to the session and corresponding to the location of the global registry database.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2015
From: KUMAR, SANDEEP; TREDER, TERRY N.
To: CITRIX SYSTEMS, INC.
Reel/Frame 036494/0659 →
Continuity (1)
Related Publication 20170041398A1 · Feb 9, 2017