Title of Invention

A METHOD AND APPARATUS FOR UPDATING A GRAPHICAL DISPLAY IN A DISTRIBUTED PROCESSING ENVIRONMENT USING COMPRESSION

Abstract A system and method for updating a remote display unit that communicates with a computing system are described. The method includes accessing display update information from an update queue that stores drawing commands issued by an application executing on the computing system, caching the display update information, applying a lossy compression algorithm to the display update information to create a lossy display update, and transmitting the lossy update to the remote display. The method also includes applying a lossless compression algorithm to the display update information in the cache to create a lossless display update and transmitting the lossless display update a predetermined of time after transmitting the lossy update.
Full Text WO 2006/099328 PCT/US2006/008957
A METHOD AND APPARATUS FOR UPDATING A GRAPHICAL DISPLAY
IN A DISTRIBUTED PROCESSING ENVIRONMENT USING COMPRESSION
BACKGROUND OF THE INVENTION
[0001] Distributed computer systems utilize the technique of
distributing application execution. More specifically, an application server
locally executes an application program and provides the application output
data to clients/network users who then display the results on a display screen
that is locally-coupled to their local computer. Distributed systems can make
the best use available computing resources, i.e., the more capable server
performs compute and memory intensive application processing functions
while, the client that may be less capable computationally but potentially more
capable with respect to video performance, displays the output. In one type of
distributed computing system, a user of the client views application output data
on a local display during the execution of the application program and interacts
with the application program via keyboard, mouse inputs, or other device
inputs. The user's inputs correspond to requests to the application server to
perform certain actions that affect the operation of the application program.
The application server passes these requests to the application for further
processing. The application server also intercepts application output data
generated by the application program, and typically targeted to the operating
system of the application server, and transmits all or part of the data to the
client for display. From the perspective of the user, the application program
seems to be executing locally even though it is actually being executed on a
remote server and displayed locally.
1

WO 2006/099328 PCT/US2006/008957
[0002] There are various protocols that provide the above-described
functionality. One example of such a protocol is the Remote Desktop Protocol
("RDP") distributed by Microsoft Corporation of Redmond, Washington. RDP is
based on, and an extension of, the ITU T.I 20 family of protocols. RDP is a
multiple-channel capable protocol that allows for separate virtual channels
carrying device communication and presentation data from the application
server, as well as encrypted client mouse and keyboard data. RDP uses its own
video driver to render display output by constructing the rendering information
into network packets using RDP protocol and sending them over the network to
the client. On the client, RDP receives rendering data and interprets the packets
into corresponding Microsoft Win32 graphics device interface (GDI) API calls.
For the input path, client mouse and keyboard events are redirected from the
client to the server.
[0003] Another protocol that provides similar functionality is the
Independent Computing Architecture ("ICA") sold by Citrix Systems of Ft.
Lauderdale, Florida. ICA is a protocol that enables separate screen updates and
user input processing from the rest of an application's logic. All application
logic executes on a first computing system and only screen updates, mouse
movements, and keystrokes are transmitted during a session between the
displaying computing system and the first computing system.
[0004] Distributed application processing systems have performed well
for typical, office applications. However, certain applications that are
graphically intense can adversely affect the performance of a distributed
application processing system. Examples of graphically intense applications
can include, but are not limited to, computer-aided drafting ("CAD")
2

WO 2006/099328 PCT/US2006/008957
applications, video editing applications, and computer games. In these
graphically-intense applications, display updates typically require a large
amount of bandwidth because they are large, bitmap images. This problem is
exacerbated when an executing application program sends multiple display
updates in a short period of time, such as when a CAD/CAM program rotates a
three-dimensional model of a device for the user to view. The delay in output
due to the large size of the respective screen updates adversely affects user
experience and interaction with the application program and makes use of the
application program impractical in a distributed application processing
environment.
BRIEF SUMMARY OF THE INVENTION
[0005] In one aspect, the invention features a method of updating a
remote display unit that communicates with a computing system. The method
includes accessing display update information from an update queue that stores
drawing commands issued by an application executing on the computing
system, caching the display update information, applying a lossy compression
algorithm to the display update information to create a lossy display update,
and transmitting the lossy update to the remote display. The method also
includes applying a lossless compression algorithm to the display update
information in the cache to create a lossless display update and transmitting the
lossless display update a predetermined of time after transmitting the lossy
update.
[0006] In one embodiment, the method includes setting the operational
mode of the computing system to require the application of the lossy
compression algorithm. In another embodiment, the method includes
3

WO 2006/099328 PCT/US2006/008957
determining if the display update information has been previously transmitted
to the remote display unit and signaling the remote display unit when the
display update information has been previously transmitted.
[0007] In another aspect, the invention features a system for updating a
display unit remotely located from a computing system. The system includes a
queue, a cache, a thread, and a driver. The queue stores at least one system
drawing call representative of a graphical output of an application program
executing on the computer system. The cache stores the at least one drawing
call. The thread accesses the queue and executes a lossy compression
algorithm on the at least one drawing call of the queue to generate a lossy
display update. The thread also accesses the cache and executes a lossless
compression algorithm on the at least one drawing call of the cache to generate
a lossless display update. The driver transmits the lossy display update to the
remote display unit, waits a predetermined time period, and then transmits the
lossless display update after the expiration of the predetermined time period.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The invention may be better understood by referring to the
following description in conjunction with the accompanying drawings, in which
like numerals indicate like structural elements and features in various figures.
The drawings are not necessarily to scale, emphasis instead being placed upon
illustrating the principles of the invention.
[0009] Fig. 1 is a block diagram of a distributed application processing
system in which principles of the present invention can be practiced.
4

WO 2006/099328 PCT/US2006/008957
[0010] Fig. 2 is a flow chart depicting an operational mode of the
distributed application processing system of Fig. 1.
[0011 ] Fig. 3 is a block diagram of an embodiment of the computing
agent of Fig. 1.
[0012] Fig. 4 is a flow chart of an embodiment of a method of updating
a remote display unit in accordance with principles of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
[0013] The present invention features systems and methods for
updating a remote display unit 110. In one aspect, the invention combines a
"queue-and-toss" shared queue with the use of a lossy and lossless
compression to increase the efficiency with which the remote display is updated
without adversely affecting the end-user experience.
[0014] With reference to Fig. 1, a distributed application processing
system 100 includes one or more remote display units 110', 110" (hereinafter
each remote display unit or plurality of remote display units is generally
referred to as 110) in communication with one or more computing devices 150',
150" (hereinafter each computing device or plurality of computing devices is
generally referred to as 150) via a communications network 140. The network
140 can be a local-area network (LAN), a medium-area network (MAN), or a
wide area network (WAN) such as the Internet or the World Wide Web. Users of
the remote display unit 110 can be connected to the network 140 through a
variety of connections including standard telephone lines, LAN or WAN links
(e.g., Tl, T3, 56kb, X.25), broadband connections (e.g., ISDN, Frame Relay,
ATM), and wireless connections (e.g., IEEE 802.11). The connections can be
5

WO 2006/099328 PCT/US2006/008957
established using a variety of communication protocols (e.g., TCP/IP, IPX, SPX,
NetBIOS, and direct asynchronous connections). In some particularly
advantageous embodiments, the protocol used may be the Independent
Computing Architecture protocol manufactured by Citrix Systems, Inc. of Fort
Lauderdale, Florida or the Remote Display Protocol manufactured by Microsoft
Corporation of Redmond, Washington.
[0015] The bandwidth of the network 140 is one factor that affects the
performance of the distributed application processing system 100. A network
140 having a larger bandwidth relative a second network typically can support
transmission of more display data to the remote display unit 110. During
operation of the distributed application processing system 100, the bandwidth
of the network 140 fluctuates. As data is transmitted through the network 140
the amount of available bandwidth of the network is reduced. As display data is
received by the remote display unit 110, the available bandwidth of the network
140 increases, assuming no additional data is placed on the network. One
aspect of the invention features applying a lossy compression algorithm to
bitmap images prior to transmitting the images to the remote display unit 110.
This feature reduces the amount of network traffic and therefore improves the
speed at which the remote display unit 110 receives updates.
[0016] The remote display unit 110 typically includes a processor 112,
a volatile memory 114 (e.g., RAM cache), an operating system 116, a display
agent 118, a persistent storage memory 120, a network interface 122 (e.g., a
network interface card), a display application program 123, a keyboard 124,
one or more input device 126 (e.g., a mouse, a track ball, a space ball, a light
pen and tablet, a stylus or any other input device), and a display 128.
6

WO 2006/099328 PCT/US2006/008957
Operating system 116 can include, without limitation, Windows 3.x, Windows
95, Windows 98, Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows
CE, MAC/OS, Java, PALM OS, SYMB1AN OS, LINUX, SMARTPHONE OS, and UNIX.
The display agent 118 receives commands and data from the computing device
150 and from a user (not shown) of the remote display unit 110. The client
agent 118 uses the received information when interacting with other
components of the remote display unit 110 (e.g., when directing the operating
system 116 to output data onto the display 128). The display agent 118 also
transmits requests and data to the computing device 150 in response to
computing device-issued commands or user actions at the remote display unit
110.
[0017] The remote display unit 110 can be any personal computer (e.g.,
286, 386, 486, Pentium, Pentium II, Macintosh computer), Windows-based
terminal, Network Computer, wireless device, information appliance, RISC Power
PC, X-device, workstation, minicomputer, main frame computer, cellular
telephone or other computing device that provides sufficient memory for
executing the operating system 116 and the display application program 123.
It should be understood that the display application program 123 can be
integral with the operating system 116 or a stand-alone application. The
display presentation program 1 23 uses commands and data sent to it by the
computing device 150 across the network 140 to render a graphical output to
the user of the display 128 of the display unit.
[0018] Similarly, the computing device 150 may include a processor
152, a volatile memory 154, an operating system 156, an application program
1 58, a computing device agent 160, persistent storage memory 162, and a
7

WO 2006/099328 PCT/US2006/008957
network interface 164. The computing device agent 160 interfaces with the
display agent 118 and other components of the computing device 150 to
support the remote display and operability of the application program 158. In
the distributed application processing system 100, execution of application
programs occurs primarily on a computing device 150 and the user interface
produced by application execution is transmitted over the network 140 to the
remote display unit 110. The user provides inputs, such as keystrokes and
mouse movements, at the display unit 110 which are transmitted over the
network 140 to the computing device 1 50 to instruct the application programs
to perform further tasks.
[0019] Each computing device 150 hosts one or more application
programs 1 58 that can be accessed by the remote display units 110. Examples
of such applications include word processing programs such as MICROSOFT
WORD and spreadsheet programs such as MICROSOFT EXCEL, both
manufactured by Microsoft Corporation of Redmond, Washington, financial
reporting programs, customer registration programs, programs providing
technical support information, customer database applications, application set
managers, or computer-aided design and manufacturing applications, such as
AUTOCAD sold by Autodesk of San Rafael, California, CATIA sold by Dassault
Systemes of Suresnes Cedex, France, and PRO/ENGINEER sold by Parametric
Technology Corporation of Needham, Massachusetts.
[0020] During execution of the application program 158, a computing
device 1 50 communicates with the remote display unit 110 over a transport
mechanism (part of the computing device agent 160). In one embodiment, the
transport mechanism provides multiple virtual channels and one of the virtual
8

WO 2006/099328 PCT/US2006/008957
channels provides a protocol for transmission of graphical screen data from the
computing device 150 to the remote display unit 110.
[0021] Referring now to Fig.2, and in brief overview, a method 200 for
transmitting screen updates to the remote display unit 110 includes the step of
generating (step 210) application program output such as drawing commands;
intercepting and/or copying (step 220) the drawing commands; writing (step
230) the drawing commands to the a queue and/or a buffer; compressing (step
240) an image in the buffer; translating (step 250) the drawing command of the
queue in protocol; and transmitting (step 260) the protocol to the remote
display unit 110.
[0022] In more detail, the application program 1 58 generates output
(step 210) and issues drawing commands indicative of the graphical output of
the application program 158. Examples of drawing commands can include, but
are not limited to, raster operations, GDI commands provided by WINDOWS-
based operating systems, and QUICKDRAW or QUARTZ commands provided by
MAC/OS-based operating systems. It should be understood that other types of
drawing commands can also be used with the invention. For easy of use,
throughout the rest of the specification, drawing commands are referred to as
GDI commands.
[0023] A protocol driver intercepts (step 220), or "hooks," the drawing
commands issued by the application program 158. The protocol driver is
typically not associated with the application program 158.
[0024] The drawing commands are written (step 230) to a queue that is
accessible by two or more threads executing on the computing device 1 50. In
9

WO 2006/099328 PCT/US2006/008957
some embodiments, lower-level commands, such as interface calls to a device
driver associated with the graphical display of the computing device 150 are
also hooked and written to the queue. In still other embodiments, the graphical
display interface commands may be duplicated rather than intercepted. In
these embodiments, the display of the application program output data on a
virtual display (i.e., a buffer) of the computing device 150 and the remote
display unit 110 will be substantially similar, if not identical. In these
embodiments, the drawing commands also may be provided to operating
system 116 for processing and the output of the operating system stored in a
buffer of the computing device 1 50.
[0025] When the computing device 1 50 prepares to send an update to
the remote display unit 110, certain portions of the update may be subjected to
a lossy compression algorithm (step 240). For example, if the drawing
command of the queue indicates that a bitmap image stored in a buffer of the
computing device 150 is to be sent to the remote display unit 110, the bitmap
is copied from the buffer and subjected to a lossy compression algorithm
before transmission. In one embodiment, the application of lossy compression
is controlled by manually invoking an operational mode by setting a global flag.
The compression mode can be switched on and off by the user depending on
the desired operation of the distributed application computing system 100. In
one embodiment, the lossy compression algorithm is a photographic codec
(e.g., JPEG compression using arithmetic encoding). While this type of encoding
is more processor intensive, it can decrease the size of the display update frame
by as much as thirty percent relative to other codecs (e.g., JPEG compression
using optimized Huffman encoding). In other embodiments, other lossy
compression techniques are used.
10

WO 2006/099328 PCT/US2006/008957
[0026] The computing device 150 translates (step 250) the drawing
commands in the queue and the compressed buffer contents, if present, into
protocol commands. In one embodiment, the protocol is the RDP protocol
distributed by Microsoft Corporation of Redmond, Washington. In a preferred
embodiment, the ICA protocol distributed by Citrix Systems, Inc. of Ft.
Lauderdale, Florida is used. Subsequently, the computing device 150 transmits
(step 260) the protocol to the remote display unit 110.
[0027] Fig. 3 is a block diagram of an embodiment of the computing
device agent 160 of Fig. 1. The computing device agent 160 includes a
producer thread 300, a shared queue 304, a consumer thread 308, and a driver
module 312. The producer thread 300 is in communication with the shared
queue 304. The consumer thread 3088 is also in communication with shared
queue 304 and, in addition, is in communication with the driver module 312.
[0028] The producer thread 300 includes one or more application
threads 316', 316" (referred to generally as application thread 316) in
communication with a graphics engine 320. Also included in the producer
thread 300 is a buffer 324 that is in communication with the graphics engine
320. The buffer 324 can be a portion of the volatile memory 154.
[0029] The application threads 316 issue the drawing commands, such
as GDI commands, to graphics engine 320. In one embodiment, the drawing
commands are hooked, copied, and sent to the shared queue, in addition to
being sent to the graphics engine 320. The graphics engine 320 renders the
GDI commands into the buffer 324. The output of the graphic rendering engine
can be a complex bitmap or similar graphical representation. In essence, the
buffer 324 functions as a "virtual" display for storing display image for later
11

WO 2006/099328 PCT/US2006/008957
transmission to the remote display unit 110. In one embodiment, the graphics
engine is the GDI support for rendering GDI requests into a memory buffer.
[0030] Before writing the GDI commands to the shared queue 304, the
producer thread 300 examines the shared queue to determine if the new
command obscures and renders obsolete a command previously existing in the
shared queue. This method is known as the "queue-and-toss" method. This
feature provides amethod to reduce the number of updates that are sent to the
remote display unit. In one embodiment, a rectangle collision algorithm is used
to determine if a new command obscures an old command.
[0031] The shared queue 304 stores and queues the GDI commands
until the consumer thread 308 removes them from the shared queue 304. The
shared queue 304 can be a portion of the volatile memory 154. Although
shown as being separate from each of the producer thread 300 and the
consumer thread 308, it should be understood that the shared queue 304 can
be part of either thread as long as it is accessible by the each of the producer
thread 300 and the consumer thread 308.
[0032] The consumer thread 308 is in communication with the shared
queue 304 and includes a compressor module 328 and a cache 332.
Functionally, the consumer thread 308 periodically consumes the shared queue
304 and, in conjunction with the driver module 312, generates protocol that is
communicated to the remote display unit 110. In one embodiment, the
periodicity with which the consumer thread 308 access the shared queue 304 is
controlled by four factors: 1) the time since the last update was sent to the
remote display unit 110; 2) the amount of free buffering space in the driver
module 312; 3) the availability of the storage space in the cache 332; and 4) the
12

WO 2006/099328 PCT/US2006/008957
amount of space available in the shared queue for additional GDI commands. In
another embodiment, the periodicity of consumer thread 308 is random and
continually changing between two bounding times (e.g., 40 milliseconds to 1
second).
[0033] The compressor module 328 is in communication with the
shared queue 304 and the buffer 324. When the system 100 operates in the
compression mode as indicated by the global flag, the compressor module
performs lossy compression on the contents of the buffer 324 prior to
transmitting the display update to the remote device unit 110.
[0034] The cache 332 stores the original contents of the buffer 324,
that is, the uncompressed copy of image. Additionally, the cache 332 stores
bounding rectangle information that indicates which portions of the display
image have been subjected to lossy compression so that lossless version of the
display image can be later transmitted to the remote display unit 110. The
cache also stores information descriptive of whether a bitmap has already been
transmitted to the remote display 110.
[0035] The driver module 312 includes a translator module 336 for
formatting the display update frame according to the communication protocol
of the distributed application processing system 100. Once translated, the
driver module 312 transfers the protocol to the network interface 164 for
transmission to the remote display unit 110.
[0036] With reference to Fig. 4, a method 400 of updating a remote
display unit that communicates with computing system features accessing (step
410) the shared queue 304 to retrieve display update information; caching (step
13

WO 2006/099328 PCT/US2006/008957
420) the display update information; applying (step 430) lossy compression to
the display update information; transmitting (step 440) the lossy compressed
information to the remote display unit 110; applying (step 450)' a lossless
compression algorithm to the cached display update information; and
transmitting (step 460) the lossless display information to the remote display
unit 110.
[0037] In more detail, the consumer thread 308 periodically accesses
(step 410) the shared queue 304 to retrieve display update information. In one
embodiment, the display update information includes GDI drawings commands
and a bitmap image from the buffer 324. In some embodiments, the consumer
thread 308 accesses the shared queue in random time intervals. In a preferred
embodiment, when the lossy compression mode is enable the consumer thread
access the shared queue every 500 milliseconds.
[0038] After consuming the display update information, the consumer
thread 308 caches (step 420) a cyclic redundancy check ("CRC") key that is
subsequently used to determine if the image is already in the volatile memory
154. In some embodiments, the consumer thread 308 performs a check to
determine of the image of the buffer 324 has previously been transmitted to the
remote display unit 110. If the image has previously been transmitted, the
remote display unit is signaled to use the image previously sent by the
computing device 150.
[0039] A lossy compression algorithm is applied (step 430) to the
display update information to create a lossy display update. In one
embodiment, the entire display update is lossy compressed. In other
embodiments, only portions of the display update information are lossy
14

WWO 2006/099328 PCT/US2006/008957
compressed. In such embodiments, a list of the regions that are lossy
compressed is stored as an array in the cache 332.
[0040] The lossy display update is transmitted (step 440) to the remote
display unit. Subsequently, the consumer thread 308 pauses ("sleeps") for 500
milliseconds, as previously described. After the expiration of the 500
millisecond, the consumer thread 308 examines the shared queue 304 again to
determine if addition drawing commands were issued by the application
program threads 316.
[0041 ] If no new drawing commands are present in the shared queue
304, a lossless compression algorithm is applied (step 450) to a copy of the
display in the buffer 324 to generate a lossless display update, which is then
transmitted (step 460) to the remote display unit 110.
[0042] Although the present invention has been described with
reference to specific details, it is not intended that such details should be
regarded as limitations upon the scope of the invention, except as and to the
extent that they are included in the accompanying claims.
15

WO 2006/099328 PCT/US2006/008957
CLAIMS
What is claimed as new and desired to be protected by Letters Patent
of the United States is:
1. A method of updating a remote display unit in communication with a
computing system comprising:
(a) accessing display update information from an update queue
storing drawing commands issued by an application executing on the
computing system;
(b) caching the display update information;
(c) applying a lossy compression algorithm to the display update
information to create a lossy display update;
(d) transmitting the lossy update to the remote display;
(e) applying a lossless compression algorithm to the display update
information in the cache to create a lossless display update;
(f) transmitting the lossless display update a predetermined of time
after transmitting the lossy update.
2. The method of claim 1 further comprising setting the operational
mode of the computing system.
1

WO 2006/099328 PCT/US2006/008957
3. The method of claim 1 further comprising determining if the display
update information has been previously transmitted to the remote
display unit.
4. The method of claim 3 further comprising signal the remote display
unit the update information has been previously transmitted.
5. A system for updating a display unit remotely located from a
computing system comprising:
a queue storing at least one system drawing call representative of a
graphical output of an application program executing on the
computer system;
a cache storing the at least one drawing call;
a thread accessing the queue and executing a lossy compression
algorithm on the at least one drawing call of the queue to generate a
lossy display update and accessing the cache and executing a lossless
compression algorithm on the at least one drawing call of the cache to
generate a lossless display update; and
a driver transmitting the lossy display update to the remote display
unit, waiting a predetermined time period, and transmitting the
lossless display update after the expiration of the predetermined time
period.
2

WO 2006/099328 PCT/US2006/008957
6. The system of claim 5 further comprising a flag for setting the
operational mode of the computing system.
7. The system of claim 1 further comprising a cache for determining if
the display update information has been previously transmitted to the
remote display unit.
8. The system of claim 3 further comprising a transmitter for signal the
remote display unit to indicate that the update information has been
previously transmitted.
9. A system for updating a display unit remotely located from a
computing system comprising:
queue means for storing at least one system drawing call
representative of a graphical output of an application program
executing on the computer system;
cache means for storing a copy of the at least one drawing command;
thread means for accessing the queue and executing a lossy
compression algorithm on the at least one drawing call of the queue
to generate a lossy display update and for accessing the cache and
executing a lossless compression algorithm on the at least one
drawing command of the cache to generate a lossless display update;
and
drive means for transmitting the lossy display update to the remote
3

WO 2006/099328 PCT/US2006/008957
display unit, waiting a predetermined time period, and transmitting
the lossless display update after the expiration of the predetermined
time period.
10. The system of claim 9 further comprising means for setting the
operational mode of the computing system.
11. The system of claim 9 further comprising means for determining if the
display update information has been previously transmitted to the
remote display unit.
12. The system of claim 11 further comprising means for signal the
remote display unit the update information has been previously
transmitted.
4

A system and method for updating a remote display unit that communicates with a computing system are described.
The method includes accessing display update information from an update queue that stores drawing commands issued by an application executing on the computing system, caching the display update information, applying a lossy compression algorithm to the
display update information to create a lossy display update, and transmitting the lossy update to the remote display. The method also
includes applying a lossless compression algorithm to the display update information in the cache to create a lossless display update
and transmitting the lossless display update a predetermined of time after transmitting the lossy update.

Documents:

03591-kolnp-2007-abstract.pdf

03591-kolnp-2007-claims.pdf

03591-kolnp-2007-correspondence others.pdf

03591-kolnp-2007-description complete.pdf

03591-kolnp-2007-drawings.pdf

03591-kolnp-2007-form 1.pdf

03591-kolnp-2007-form 3.pdf

03591-kolnp-2007-form 5.pdf

03591-kolnp-2007-international publication.pdf

03591-kolnp-2007-international search report.pdf

3591-KOLNP-2007-(07-08-2014)-ABSTRACT.pdf

3591-KOLNP-2007-(07-08-2014)-CLAIMS.pdf

3591-KOLNP-2007-(07-08-2014)-CORRESPONDENCE.pdf

3591-KOLNP-2007-(07-08-2014)-DESCRIPTION (COMPLETE).pdf

3591-KOLNP-2007-(07-08-2014)-DRAWINGS.pdf

3591-KOLNP-2007-(07-08-2014)-FORM-1.pdf

3591-KOLNP-2007-(07-08-2014)-FORM-2.pdf

3591-KOLNP-2007-(07-08-2014)-FORM-3.pdf

3591-KOLNP-2007-(07-08-2014)-GPA.pdf

3591-KOLNP-2007-(07-08-2014)-OTHERS.pdf

3591-KOLNP-2007-(07-08-2014)-PETITION UNDER RULE 137-1.1.pdf

3591-KOLNP-2007-(07-08-2014)-PETITION UNDER RULE 137.pdf

3591-KOLNP-2007-(11-06-2014)-CORRESPONDENCE.pdf

3591-KOLNP-2007-(11-06-2014)-CORRESPONDENCE.tif

3591-KOLNP-2007-(12-12-2013)-CORRESPONDENCE.pdf

3591-KOLNP-2007-(12-12-2013)-OTHERS.pdf

3591-KOLNP-2007-(15-09-2014)-ANNEXURE TO FORM 3.pdf

3591-KOLNP-2007-(15-09-2014)-CORRESPONDENCE.pdf

3591-KOLNP-2007-(29-11-2011)-ASSIGNMENT.pdf

3591-KOLNP-2007-(29-11-2011)-CORRESPONDENCE.pdf

3591-KOLNP-2007-(29-11-2011)-FORM-3.pdf

3591-kolnp-2007-form 18.pdf

3591-KOLNP-2008-CORRESPONDENCE 1.1.pdf

3591-KOLNP-2008-OTHERS.pdf

abstract-03591-kolnp-2007.jpg


Patent Number 265149
Indian Patent Application Number 3591/KOLNP/2007
PG Journal Number 07/2015
Publication Date 13-Feb-2015
Grant Date 11-Feb-2015
Date of Filing 24-Sep-2007
Name of Patentee CITRIX SYSTEMS, INC.
Applicant Address 851 WEST CYPRESS CREEK ROAD, FORT LAUDERDALE FLORIDA
Inventors:
# Inventor's Name Inventor's Address
1 BULLARD JUSTIN C/O CITRIX SYSTEMS, INC., 851 WEST CYPRESS CREEK ROAD, FORT LAUDERDALE, FLORIDA 33309
2 OPFERMAN TOBY C/O CITRIX SYSTEMS, INC., 851 WEST CYPRESS CREEK ROAD, FORT LAUDERDALE, FLORIDA 33309
PCT International Classification Number G06F 3/14, G06F 9/44
PCT International Application Number PCT/US2006/008957
PCT International Filing date 2006-03-14
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 10/906,955 2005-03-14 U.S.A.