IP Library Granted Patent US 11,165,888
Granted Patent B1
US 11,165,888 · App. 16/862,078 · Granted Nov 2, 2021

Image acquisition device virtualization for remote computing

Inventors: Erica Tomes (Pompano Beach, FL); Jayadev Marulappa Niranjanmurthy (Parkland, FL); Georgy Momchilov (Parkland, FL)
Assignee: Citrix Systems, Inc.
H04L67/40G06F9/452G06F9/547G06T1/0007G06T1/60H04L67/02
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 11,165,888
App. No.
16/862,078
Granted
Nov 2, 2021
Kind
B1
Abstract

Methods and systems for image acquisition device virtualization are described herein. A user of a client computing device may access a remote operating system running on a host computing device via a client application running on a local operating system of the client computing device. An image acquisition device such as a scanner may be connected to the client computing device and the user may wish to use the image acquisition device to acquire image data (e.g., scan a photograph). In order for an image application (e.g., a photo editor) running on the remote operating system to read in the image data from the image acquisition devices, the remote operating system of the host computing device may intercept a service call from the image application at a service layer and redirect the service call, via a virtual channel, to the local operating system of the client computing device.

Claims (70)

1. A method comprising:

creating, at an image acquisition service layer of a remote operating system associated with a host computing device, an object that mimics functionality of an image acquisition service layer object that is native to the remote operating system;

receiving, by the object and from an image application running on the remote operating system, a service call;

sending, by the object and to a client application running on a local operating system of a client computing device, the service call;

receiving, by the object and in response to the service call, data from the client application;

storing the data in a local cache of the host computing device; and

sending, by the object and to the image application, the data.

2. The method of claim 1 , wherein the object is a component object model (COM) object.

3. The method of claim 1 , further comprising:

receiving, by the object and from the image application, a subsequent service call; and

in response to the subsequent service call, sending, by the object and to the image application, the data stored in the local cache.

4. The method of claim 1 , wherein the object comprises a virtual device manager object, and wherein the image acquisition service layer object comprises a native device manager object of the host computing device.

5. The method of claim 1 , further comprising:

installing, in the remote operating system, a hook;

intercepting, by the hook, a request, sent by the image application, for an instance of the image acquisition service layer object; and

sending, by the hook and to the image application, an indication of the object.

6. The method of claim 5 , wherein the request comprises a requested interface identifier, and

wherein the intercepting the request comprises comparing the requested interface identifier with a known interface identifier of the image acquisition service layer object of the remote operating system.

7. The method of claim 1 , wherein the service call comprises a request for at least one of:

enumerating one or more image acquisition devices associated with the client computing device,

reading or writing a device property associated with the one or more image acquisition devices,

acquiring image data via the one or more image acquisition devices, or

transferring the image data.

8. The method of claim 7 , wherein the one or more image acquisition devices comprise at least one of a scanner, a camera, a fax machine, an imaging device, a memory card reader, image storage, a photo library, or a storage medium.

9. The method of claim 1 , further comprising establishing, over a network, a virtual channel between the object and the client application,

wherein the sending the service call comprises sending the service call via the virtual channel.

10. The method of claim 1 , wherein the client application is configured to replay the received service call in the local operating system of the client computing device.

11. The method of claim 1 , further comprising: receiving, by the object and from the client application, a signal to launch the image application, wherein the signal is triggered by a button press on an image acquisition device associated with the client computing device.

12. The method of claim 1 , wherein the remote operating system is different from the local operating system, and

wherein the sending the service call comprises:

translating the service call according into a translated service call that is compatible with the local operating system; and

sending the translated service call to the client application.

13. An apparatus comprising:

local cache memory;

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

create, at an image acquisition service layer of a remote operating system associated with the apparatus, an object that mimics a functionality of an image acquisition service layer object that is native to the remote operating system;

receive, by the object and from an image application running on the remote operating system, a service call;

send, by the object and to a client application running on a local operating system of a client computing device, the service call;

receive, by the object and in response to the service call, data from the client application;

store the data in the local cache memory; and

send, by the object and to the image application, the data.

14. The apparatus of claim 13 , wherein the object is a component object model (COM) object.

15. The apparatus of claim 13 , wherein the instructions, when executed by the one or more processors, cause the apparatus to:

install, in the remote operating system, a hook;

intercept, by the hook, a request, sent by the image application, for an instance of the image acquisition service layer object; and

send, by the hook and to the image application, an indication of the object.

16. The apparatus of claim 13 , wherein the service call comprises a request for at least one of:

enumerating one or more image acquisition devices associated with the client computing device,

reading or writing a device property associated with the one or more image acquisition devices,

acquiring image data via the one or more image acquisition devices, or

transferring the image data, and

wherein the one or more image acquisition devices comprise at least one of a scanner, a camera, a fax machine, an imaging device, a memory card reader, or a storage medium.

17. A non-transitory computer-readable medium storing instructions that, when executed, cause a host computing device to:

create, at an image acquisition service layer of a remote operating system associated with the host computing device, an object that mimics a functionality of an image acquisition service layer object that is native to the remote operating system;

receive, by the object and from an image application running on the remote operating system, a service call;

send, by the object and to a client application running on a local operating system of a client computing device, the service call;

receive, by the object and in response to the service call, data from the client application;

store the data in a local cache of the host computing device; and

send, by the object and to the image application, the data.

18. The non-transitory computer-readable medium of claim 17 , wherein the instructions, when executed, cause the host computing device to:

install, in the remote operating system, a hook;

intercept, by the hook, a request, sent by the image application, for an instance of the image acquisition service layer object; and

send, by the hook and to the image application, an indication of the object.

19. The non-transitory computer-readable medium of claim 17 , wherein the service call comprises a request for at least one of:

enumerating one or more image acquisition devices associated with the client computing device,

reading or writing a device property associated with the one or more image acquisition devices,

acquiring image data via the one or more image acquisition devices, or

transferring the image data.

20. The non-transitory computer-readable medium of claim 19 , wherein the one or more image acquisition devices comprise at least one of a scanner, a camera, a fax machine, an imaging device, a memory card reader, or a storage medium.

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 Jul 20, 2021
From: TOMES, ERICA; MARULAPPA NIRANJANMURTHY, JAYADEV; MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 056916/0166 →
Cited By (1)
US 12,706,953