Labels

Wednesday, July 13, 2011

ICA Virtual Channels



ICA
The Independent Computing Architecture (ICA) is the communication protocol by which servers and client devices exchange data in a server environment. ICA is optimized to enhance the delivery and performance of this exchange, even on low bandwidth connections
 Virtual Channel
The functionality and communication between the XenApp Plugin and XenApp Server takes place over virtual channels. Whether for graphics, disks, COM ports, LPT ports, printers, audio, video, smart card or even third-party custom virtual channels, virtual channels are an integral part of the Remote Computing experience with XenApp Server.


 
 A virtual channel consists of a client-side virtual driver that communicates with a server-side application. XenApp products ship with various included virtual channels and are designed in a way to allow customers and third-party vendors to create their own virtual channels by using one of the provided Software Development Kits (SDKs).
Virtual channels provide a secure way to accomplish a variety of tasks, for example, an application running on a XenApp Server communicating with a client-side device or an application communicating with the client-side environment. 
On the client side, virtual channels correspond to virtual drivers; each providing a specific function. Some are required for normal operation, and others are optional.
Virtual drivers operate at the presentation layer protocol level. There can be a number of these protocols active at any given time by multiplexing channels that are provided by the WinStation protocol layer
The VirtualDriver Registry Key under the following Registry Path:
HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0
Thinwire3.0, (Required)
ClientDrive,
ClientPrinterQueue,
ClientPrinterPort,
Clipboard,
ClientComm,
ClientAudio,
LicenseHandler, (Required)
ProgramNeighborhood, (Required)
TWI, (Required)
ZL_FONT,
ZLC,
SmartCard,
Multimedia,
ICACTL, (Required)
SpeechMike,
SSPI,
TwainRdr,
UserExperience
 Note: It is possible to disable specific client functionality by removing one or more of these values. For example, if you wanted to remove Client Clipboard functionality, edit the above registry key, and remove the word, Clipboard.

The following lists the client virtual driver files and their respective function as used by the XenApp Plugins for Windows. 
They are in the form of Dynamic Link Libraries (user mode) and not Windows drivers (Kernel Mode).
 vdcamN.dll – Bi-directional Audio
vdcdm30n.dll – Client Drive Mapping
vdcmN.dll – Client Management Support (no longer present in 10.00 and later)
vdcom30N.dll - Client COM Port Mapping
vdcpm30N.dll – Client Printer Mapping
vdctln.dll – ICA Controls Channel
vdeuemn.dll - End User Experience Monitoring
vdfon30n.dll – Client Font System for Speed Screen Latency Reduction (ZLC)
vdkbhook.dll – Transparent Key Pass-Through
vdmmn.dll – Multimedia Support
vdpnn.dll – Support for PN.exe
vdscardn.dll – Smartcard support
vdspl30n.dll – Client UPD
vdspmike.dll – Philips Speech Mike recorder and foot pedal.
vdsspin.dll – Kerberos
vdtw30n.dll – Client ThinWire
vdtwin.dll – Seamless
vdtwn.dll – Twain
vdzlcn.dll – Client Local Text Echo/Speed Screen Latency Reduction (ZLC)
Note: Some virtual channels are compiled into other files, for example Clipboard Mapping is contained in wfica32.exe.
Although the XenApp Plugin for Windows is 64-bit compatible, none of the virtual drivers are implemented as 64-bit DLL’s 

How ICA Virtual Channels work
The user mode virtual channel support on the server side is loaded by Wfshell.exe, for example: SpeedBrowse, EUEM, Speech Mike, Bi- Audio, Twain, Time Zone, Clipboard, Multimedia, Seamless Session Sharing, and SpeedScreen Latency Reduction (ZLC).
Others are loaded as Kernel mode, for example CDM.sys and vdtw30.sys.
All client virtual channels are routed through the WinStation Driver, Wdica.sys on the server side and are polled on the client side by the corresponding WinStation Driver, built into wfica32.exe.

.
Client-Server data exchange using a virtual channel
  1. The client connects to the XenApp Server. The client passes information about the virtual channels it supports to the server.
  2. The server-side application starts, obtains a handle to the virtual channel, and optionally queries for additional information about the channel.
  3. The client virtual driver and server-side application pass data using the following two methods:If the server application has data to send to the client, the data is sent to the client immediately.                          When the data is received by the client, the WinStation driver de-multiplexes the virtual channel data from the ICA stream and immediately passes it to the client virtual driver.                                                         If the client virtual driver has data to send to the server, the data is sent the next time the WinStation driver polls it. When the data is received by the server, it is queued until the virtual channel application reads it. There is no way to alert the server virtual channel application that data was received.
  4. When the server virtual channel application is finished, it closes the virtual channel and frees any allocated resources.

No comments:

Post a Comment