IP Library › Granted Patent US 7,712,110
Granted Patent B2
US 7,712,110 · App. 10/711,612 · Granted May 4, 2010

System and method for remoting twain function calls from a user session to a client system

Assignee: Citrix Systems, Inc.
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 7,712,110
App. No.
10/711,612
Filed
Sep 28, 2004
Granted
May 4, 2010
Kind
B2
Art Unit
2194
USPC
719/321
Abstract

A mechanism for remoting Twain function calls within a user session to a client system is disclosed. By hooking Twain function calls made by a Twain application on the server, the Twain function calls may be remoted over a virtual connection to a client system. A proxy application corresponding to the server-based Twain application is created on the client system. The proxy application communicates with the server and makes the appropriate function calls to the remainder of the Twain framework. The use of the proxy application allows multiple applications and devices to be supported simultaneously. Messages sent over the virtual connection are filtered prior to transmission thereby limiting the amount of required communication traffic. A multiplexor and demultiplexor are utilized in order to efficiently use bandwidth on the virtual channel. The present invention additionally compresses image data prior to transmission over the virtual channel.

Claims (52)

1. A method for controlling image acquisition devices associated with a client, the method comprising:

selecting, by a demultiplexor executing on a client, a TWAIN proxy application from a plurality of TWAIN proxy applications executing on the client communicating with a server via a presentation layer protocol, the selected TWAIN proxy application associated with a TWAIN application executing on the server;

receiving by said TWAIN proxy application, from the server, over a network using the presentation-layer protocol, a command directed to an image-acquisition device associated with the client;

issuing, by the TWAIN proxy application, a TWAIN Application Programming Interface (API) call to the associated image acquisition device, based on the received command;

receiving, from the image-acquisition device, an acquired image in a response to the issued TWAIN API call; and

transmitting, by the client, to the server, over the network, using the presentation layer protocol, the received response.

2. The method of claim 1 wherein receiving a command directed to an image-acquisition device further comprises receiving the command sent by the server over the network using a presentation layer protocol selected from the group consisting of ICA, RDP and XWINDOWS.

3. The method of claim 1 wherein issuing the TWAIN API call further comprises issuing to the image-acquisition device a device driver call based on the received command.

4. The method of claim 1 wherein issuing the TWAIN API call further comprises directly issuing to the image-acquisition device a TWAIN API call based on the received command.

5. The method of claim 1 wherein issuing the TWAIN API call further comprises issuing to the associated image-acquisition device a TWAIN API call based on the received command, the issued command including an indication to suppress display of a dialog box to a user.

6. The method of claim 5 further comprising displaying a second dialog box to a user in lieu of the suppressed dialog box.

7. The method of claim 1 further comprising receiving, from a second server via the network, a second command directed to the image-acquisition device associated with the client.

8. The method of claim 1 further comprising receiving, from the server via the network, a second command directed to a second image-acquisition device associated with the client.

9. The method of claim 1 further comprising receiving, from a second server via the network, a second command directed to a second image-acquisition device associated with the client.

10. The method of claim 1 wherein receiving the response to the issued TWAIN API call further comprises receiving, from the image-acquisition device, data representing an image.

11. The method of claim 10 wherein transmitting to the server further comprises transmitting to the server compressed image data.

12. The method of claim 11 wherein transmitting to the server further comprises determining that the image data includes more than one bit for each pixel location prior to transmitting the compressed image data to the server.

13. The method of claim 12 wherein determining further comprises:

compressing the image data using a first compression algorithm to form first compressed image data;

compressing the image data using a second compression algorithm to form second compressed image data; and

selecting for transmission the smaller of the first compressed image data and the second compressed image data.

14. The method of claim 11 further comprising compressing compressed image data during transmission to the server.

15. The method of claim 1 further comprising:

receiving, prior to receiving a response to the issued TWAIN API call, input from a user of the client; and

determining, prior to receiving a response to the issued TWAIN API call, whether to transmit the received input to the server.

16. A method for remotely controlling an image acquisition apparatus associated with a client, the method comprising:

receiving, by a server from a client associated with an image acquisition device, via a network using a presentation-layer protocol, an image acquisition event;

providing, by a redirector module executing on the server, the received event to a TWAIN application program executing on the server and associated with the image acquisition event;

receiving, by the server from the TWAIN application program, a response to the provided image acquisition event including a TWAIN Application Programming Interface (API) call;

transmitting, by the server via the network, the received response to the client executing a demultiplexor, the demultiplexor:

selecting a TWAIN proxy application from a plurality of TWAIN proxy applications executing on the client, the selected TWAIN proxy application associated with the TWAIN application program, and

forwarding the received response to the selected TWAIN proxy application; and

receiving, from the client via the network, data representing an image acquired by the image acquisition device apparatus associated with the client.

17. The method of claim 16 wherein providing the received event further comprises:

determining, from the received image acquisition event, a TWAIN application program associated with the received event; and

providing the received event to the determined TWAIN application program.

18. The method of claim 16 further comprising decompressing the received image acquisition data.

19. The method of claim 16 further comprising receiving an image acquisition event from a second client via the network.

20. The method of claim 19 further comprising providing the image acquisition event received from the second client to a second instance of a TWAIN application program associated with the image acquisition event.

21. A system for controlling image acquisition devices associated with a client system, the system comprising:

a server computer comprising a processor executing a TWAIN application;

a redirector module executing on the server and intercepting calls made by the TWAIN application;

a multiplexor executing on the server computer and transmitting the calls to a client system communicating with the server computer over a network via a presentation layer protocol;

a plurality of TWAIN proxy applications executing on the client system;

an image-acquisition device associated with the client system; and

a demultiplexor executing on the client system, the demultiplexor:

receiving the transmitted calls,

selecting at least one TWAIN proxy application from amongst the plurality of TWAIN proxy applications, the at least one TWAIN proxy application associated with the TWAIN application executing on the server, and

forwarding the received calls to the at least one TWAIN proxy application, the received call including a TWAIN Application Programming Interface Call.

22. The system of claim 21 , wherein the image-acquisition device generates image data responsive to receiving the calls.

23. The system of claim 22 , wherein the client system transmits the image data to the server computer.

24. The system of claim 23 , wherein the client system compresses the image data prior to transmission, and transmits the compressed data to the server computer.

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 →
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 →
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 Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
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 →
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 →
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 Dec 27, 2004
From: GULKIS, DANIEL ALEC
To: CITRIX SYSTEMS, INC.
Reel/Frame 015500/0604 →
Continuity (1)
Related Publication 20060070090A1 · Mar 30, 2006