Programming guide

Virtual channels are referred to by a seven-character (or shorter) ASCII name. In several previous versions of the ICA protocol, virtual channels were numbered; the numbers are now assigned dynamically based on the ASCII name, making implementation easier.

When developing virtual channel code for internal use only, you can use any seven-character name that does not conflict with existing virtual channels. Use only upper and lowercase ASCII letters and numbers. Follow the existing naming convention when adding your own virtual channels. The predefined channels, which begin with the OEM identifier CTX, are for use only by Citrix.

For more information, see Citrix Workspace app for Windows Virtual Channel SDK documentation.

Server-side functions overview

Server-side functions are entry points to virtual channel services provided by the Linux VDA. The ctxvdapi.h header file of this SDK contains constants and function prototypes. Use these functions to open and close virtual channels and to read, write, query, and purge incoming or outgoing data.

Virtual channel functions

Function Description
LFVirtualChannelOpen Opens a handle to a specific virtual channel.
LFVirtualChannelWrite Writes data to a virtual channel.
LFVirtualChannelRead Reads data from a virtual channel.
LFVirtualChannelQuery Returns data related to a virtual channel.
LFVirtualChannelPurgeInput Purges all queued input data sent from the client to the server on a specific virtual channel.
LFVirtualChannelPurgeOutput Purges all queued output data sent from the server to the client on a specific virtual channel.
LFVirtualChannelClose Closes a handle to a specific virtual channel.

Session event functions

Function Description
LFSessionEventInit Opens a handle for session event monitoring.
LFWaitForSessionEvent Subscribes to and waits for session events.
LFSessionEventDestroy Closes the handle.
Programming guide