Citrix Virtual Apps and Desktops

Canales virtuales ICA® de Citrix

Advertencia:

Modificar el registro de forma incorrecta puede causar problemas graves que podrían requerir la reinstalación de tu sistema operativo. Citrix no puede garantizar que los problemas derivados del uso incorrecto del Editor del Registro puedan resolverse. Usa el Editor del Registro bajo tu propia responsabilidad. Asegúrate de hacer una copia de seguridad del registro antes de modificarlo.

¿Qué son los canales virtuales ICA?

Gran parte de la funcionalidad y la comunicación entre la aplicación Citrix Workspace™ y los servidores Citrix Virtual Apps and Desktops™ se produce a través de canales virtuales. Los canales virtuales son una parte necesaria de la experiencia de computación remota con los servidores Citrix Virtual Apps and Desktops. Los canales virtuales se utilizan para:

  • Audio
  • Puertos COM
  • Discos
  • Gráficos
  • Puertos LPT
  • Impresoras
  • Tarjetas inteligentes
  • Canales virtuales personalizados de terceros
  • Vídeo

A veces se lanzan nuevos canales virtuales con las nuevas versiones de los servidores Citrix Virtual Apps™ and Desktops y los productos de la aplicación Citrix Workspace para proporcionar más funcionalidad.

Canales virtuales

Un canal virtual consta de un controlador virtual del lado del cliente que se comunica con una aplicación del lado del servidor. Citrix Virtual Apps and Desktops se distribuye con varios canales virtuales incluidos. Están diseñados para permitir a los clientes y a los proveedores de terceros crear sus propios canales virtuales utilizando uno de los kits de desarrollo de software (SDK) proporcionados.

Los canales virtuales proporcionan una forma segura de realizar diversas tareas. Por ejemplo, una aplicación que se ejecuta en un servidor Citrix Virtual Apps que se comunica con un dispositivo del lado del cliente o una aplicación que se comunica con el entorno del lado del cliente.

En el lado del cliente, los canales virtuales corresponden a controladores virtuales. Cada controlador virtual proporciona una función específica. Algunos son necesarios para el funcionamiento normal y otros son opcionales. Los controladores virtuales operan a nivel de protocolo de la capa de presentación. Puede haber varios protocolos activos en cualquier momento multiplexando los canales que proporciona la capa de protocolo de Windows Station (WinStation).

Las siguientes funciones están contenidas en el valor del registro VirtualDriver bajo esta ruta de registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0

O

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 (para 64 bits)

  • Thinwire3.0 (Obligatorio)
  • ClientDrive
  • ClentPrinterQueue
  • ClentPrinterPort
  • Clipboard
  • ClientComm
  • ClientAudio
  • LicenseHandler (Obligatorio)
  • TWI (Obligatorio)
  • SmartCard
  • ICACTL (Obligatorio)
  • SSPI
  • TwainRdr
  • UserEXperience
  • Vd3d

Nota:

Puedes deshabilitar una funcionalidad específica del cliente quitando uno o varios de estos valores de la clave del registro. Por ejemplo, si quieres quitar el Portapapeles del cliente, quita la palabra Clipboard.

Esta lista contiene los archivos de controlador virtual del cliente y sus funciones respectivas. Citrix Virtual Apps y la aplicación Citrix Workspace para Windows usan estos archivos. Tienen la forma de bibliotecas de vínculos dinámicos (modo de usuario) y no son controladores de Windows (modo de kernel), excepto para el USB genérico, como se describe en el canal virtual USB genérico.

  • vd3dn.dll – Canal virtual Direct3D utilizado para la redirección de la composición del escritorio
  • vdcamN.dll – Audio bidireccional
  • vdcdm30n.dll – Asignación de unidades de cliente
  • vdcom30N.dll - Asignación de puertos COM de cliente
  • vdcpm30N.dll – Asignación de impresoras de cliente
  • vdctln.dll – Canal de controles ICA
  • vddvc0n.dll – Canal virtual dinámico
  • vdeuemn.dll - Supervisión de la experiencia del usuario final
  • vdgusbn.dll – Canal virtual USB genérico
  • vdkbhook.dll – Transferencia de claves transparente
  • vdlfpn.dll – Canal de visualización Framehawk a través de un transporte similar a UDP
  • vdmmn.dll – Compatibilidad multimedia
  • vdmrvc.dll – Canal virtual de Mobile Receiver
  • vdmtchn.dll - Compatibilidad multitáctil
  • vdscardn.dll – Compatibilidad con tarjetas inteligentes
  • vdsens.dll – Canal virtual de sensores
  • vdspl30n.dll – UPD de cliente
  • vdsspin.dll – Kerberos
  • vdtuin.dll – Interfaz de usuario transparente
  • vdtw30n.dll – Thinwire de cliente
  • vdtwin.dll – Sin interrupciones
  • vdtwn.dll – Twain

Algunos canales virtuales se compilan en otros archivos. Por ejemplo, la asignación del Portapapeles está disponible en wfica32.exe

Compatibilidad con 64 bits

La aplicación Citrix Workspace para Windows es compatible con 64 bits. Al igual que la mayoría de los binarios compilados para 32 bits, estos archivos de cliente tienen equivalentes compilados para 64 bits:

  • brapi64.dll
  • confmgr.dll
  • ctxlogging.dll
  • ctxmui.dll
  • icaconf.exe
  • icaconfs.dll
  • icafile.dll
  • pnipcn64.dll
  • pnsson.dll
  • ssoncom.exe
  • ssonstub.dll
  • vdkbhook64.dll

Canal virtual USB genérico

La implementación del canal virtual USB genérico utiliza dos controladores en modo kernel junto con el controlador de canal virtual vdgusbn.dll:

  • ctxusbm.sys
  • ctxusbr.sys

Cómo funcionan los canales virtuales ICA

Los canales virtuales se cargan de varias maneras. El Shell (WfShell para el servidor y PicaShell para la estación de trabajo) carga algunos canales virtuales. Algunos canales virtuales se alojan como servicios de Windows.

Módulos de canal virtual cargados por el Shell, por ejemplo:

  • EUEM
  • Twain
  • Portapapeles
  • Multimedia
  • Uso compartido de sesiones sin interrupciones
  • Zona horaria

Algunos se cargan en modo kernel, por ejemplo:

  • CtxDvcs.sys – Canal virtual dinámico
  • Icausbb.sys – Redirección USB genérica
  • Picadm.sys – Asignación de unidades de cliente
  • Picaser.sys – Redirección de puertos COM
  • Picapar.sys – Redirección de puertos LPT

Canal virtual de gráficos en el lado del servidor

El ctxgfx.exe aloja el canal virtual de gráficos para sesiones basadas tanto en estaciones de trabajo como en servidores de terminal. Ctxgfx aloja módulos específicos de la plataforma que interactúan con el controlador correspondiente (Icardd.dll para RDSH y vdod.dll y vidd.dll para estaciones de trabajo).

Para las implementaciones de XenDesktop® 3D Pro, se instala un controlador de gráficos OEM para la GPU correspondiente en el VDA. Ctxgfx carga módulos adaptadores especializados para interactuar con el controlador de gráficos OEM.

Alojamiento de canales especializados en servicios de Windows

En los servidores Citrix Virtual Apps and Desktops, varios canales se alojan como servicios de Windows. Dicho alojamiento proporciona una semántica de uno a muchos para múltiples aplicaciones en una sesión y múltiples sesiones en el servidor. Algunos ejemplos de estos servicios incluyen:

  • Servicio de redireccionamiento de dispositivos de Citrix
  • Servicio de canal virtual dinámico de Citrix
  • Servicio de supervisión de la experiencia del usuario final de Citrix
  • Servicio de canal virtual de ubicación y sensor de Citrix
  • Servicio de redireccionamiento multitáctil de Citrix
  • Servicio de administrador de impresión de Citrix
  • Servicio de tarjetas inteligentes de Citrix
  • Servicio de redireccionamiento de audio de Citrix (solo para Citrix Virtual Desktops™)
  • Servicio de canal de estado de ICA de Citrix

El canal virtual de audio en Citrix Virtual Apps se aloja utilizando el servicio de audio de Windows.

En el lado del servidor, todos los canales virtuales del cliente se enrutan a través del controlador WinStation, Wdica.sys. En el lado del cliente, el controlador WinStation correspondiente, integrado en wfica32.exe, sondea los canales virtuales del cliente. Esta imagen ilustra la conexión cliente-servidor del canal virtual.

Conexiones de canal virtual

Esta descripción general contiene un intercambio de datos cliente-servidor mediante un canal virtual.

  1. El cliente se conecta al servidor de Citrix Virtual Apps and Desktops. El cliente pasa al servidor información sobre los canales virtuales que admite.
  2. La aplicación del lado del servidor se inicia, obtiene un identificador para el canal virtual y, opcionalmente, consulta información adicional sobre el canal.
  3. El controlador virtual del cliente y la aplicación del lado del servidor pasan datos utilizando los dos métodos siguientes:

    • Si la aplicación del servidor tiene datos que enviar al cliente, los datos se envían al cliente inmediatamente. Cuando el cliente recibe los datos, el controlador de WinStation desmultiplexa los datos del canal virtual del flujo ICA y los pasa inmediatamente al controlador virtual del cliente.
    • Si el controlador virtual del cliente tiene datos que enviar al servidor, los datos se envían la próxima vez que el controlador de WinStation los sondea. Cuando el servidor recibe los datos, se ponen en cola hasta que la aplicación del canal virtual los lee. No hay forma de alertar a la aplicación del canal virtual del servidor de que se han recibido datos.
  4. Cuando la aplicación del canal virtual del servidor finaliza, cierra el canal virtual y libera los recursos asignados.

Crear tu propio canal virtual con el SDK de canales virtuales

Nota:

Los SDK de Citrix están disponibles en el portal para desarrolladores de Citrix en https://developer.cloud.com.

Crear un canal virtual con el SDK de canales virtuales requiere conocimientos de programación intermedios. Usa este método para proporcionar una ruta de comunicación principal entre el cliente y el servidor. Por ejemplo, si estás implementando el uso de un dispositivo en el lado del cliente, como un escáner, para usarlo con un proceso en la sesión.

Nota:

Crear tu propio canal virtual con el SDK de objetos de cliente ICA

Crear un canal virtual con el objeto de cliente ICA (ICO) es más fácil que usar el SDK de canales virtuales. Usa el ICO creando un objeto con nombre en tu programa mediante el método CreateChannels.

Importante:

Debido a la seguridad mejorada a partir de la versión 10.00 de Citrix Receiver para Windows y posteriores (y las aplicaciones Citrix Workspace para Windows), debes dar un paso adicional al crear un canal virtual ICO.

Funcionalidad de paso a través de los canales virtuales

La mayoría de los canales virtuales que proporciona Citrix funcionan sin modificaciones cuando usas la aplicación Citrix Workspace para Windows dentro de una sesión ICA (también conocida como sesión de paso a través). Hay consideraciones al usar el cliente en saltos adicionales.

Las siguientes funciones funcionan de la misma manera en saltos únicos o múltiples:

  • Asignación de puertos COM del cliente
  • Asignación de unidades del cliente
  • Asignación de impresoras del cliente
  • UPD del cliente
  • Supervisión de la experiencia del usuario final
  • USB genérico
  • Kerberos
  • Compatibilidad multimedia
  • Compatibilidad con tarjetas inteligentes
  • Paso a través de claves transparente
  • Twain

Debido a la naturaleza inherente de la latencia y a factores como la compresión, la descompresión y la representación que se realizan en cada salto, el rendimiento podría verse afectado con cada salto adicional que experimente el cliente. Las áreas afectadas son:

  • Audio bidireccional
  • Transferencias de archivos
  • Redirección USB genérica
  • Seamless
  • Thinwire

Importante:

De forma predeterminada, las unidades de cliente asignadas por una instancia del cliente que se ejecuta en una sesión de paso a través están restringidas a las unidades de cliente del cliente que se conecta.

Funcionalidad de paso a través de los canales virtuales entre una sesión de Citrix Virtual Desktops y una sesión de Citrix Virtual Apps

La mayoría de los canales virtuales que proporciona Citrix funcionan sin modificaciones cuando usas la aplicación Citrix Workspace para Windows dentro de una sesión ICA en un servidor de Citrix Virtual Desktops (también conocida como sesión de paso a través).

Específicamente, en el servidor de Citrix Virtual Desktops, hay un hook de VDA que ejecuta picaPassthruHook. Este hook hace que el cliente crea que se está ejecutando en un servidor CPS y lo coloca en su modo de paso a través tradicional.

Admitimos los siguientes canales virtuales tradicionales y su funcionalidad:

  • Cliente
  • Asignación de puertos COM del cliente
  • Asignación de unidades del cliente
  • Asignación de impresoras del cliente
  • USB genérico (limitado debido al rendimiento)
  • Compatibilidad multimedia
  • Compatibilidad con tarjetas inteligentes
  • SSON
  • Paso a través de claves transparente

Seguridad y canales virtuales ICA

Proteger el uso es una parte importante de la planificación, el desarrollo y la implementación de canales virtuales. Hay varias referencias a áreas específicas de seguridad a lo largo de este documento.

Prácticas recomendadas

Abre los canales virtuales cuando te conectes y reconectes. Cierra los canales virtuales cuando cierres sesión y te desconectes.

Ten en cuenta las siguientes directrices al crear scripts que usen funciones de canal virtual.

Nomenclatura de los canales virtuales:

Puedes crear un máximo de 32 canales virtuales. Diecisiete de los 32 canales están reservados para fines especiales.

  • Los nombres de los canales virtuales no deben tener más de siete caracteres.

  • Los tres primeros caracteres están reservados para el nombre del proveedor y los cuatro siguientes para el tipo de canal. Por ejemplo, CTXAUD representa el canal virtual de audio de Citrix.

Los canales virtuales se denominan con un nombre ASCII de siete caracteres (o menos). En algunas versiones anteriores del protocolo ICA, los canales virtuales estaban numerados. Los números ahora se asignan dinámicamente en función del nombre ASCII, lo que facilita la implementación. Los usuarios que desarrollan código de canal virtual solo para uso interno pueden usar cualquier nombre de siete caracteres que no entre en conflicto con los canales virtuales existentes. Usa solo números y ASCII en mayúsculas y minúsculas. Sigue la convención de nomenclatura existente al agregar tus propios canales virtuales. Hay varios canales predefinidos. Los canales predefinidos comienzan con el identificador OEM CTX y son solo para uso de Citrix.

Compatibilidad con doble salto:

| Canal virtual | ¿Es compatible con doble salto? | |—|—| | Audio | No | | Redirección de contenido del navegador | No | | CDM | Sí | | CEIP | No | | Portapapeles | Sí | | Continuum (MRVC) | No | | Control VC | Sí | | Redirección de vídeo HTML5 (v1) | Sí | | Teclado, ratón | Sí | | Multitáctil | No | | NSAPVC | No | | Impresión | Sí | | SensVC | No | | Tarjeta inteligente | Sí | | Twain | Sí | | USB VC | Sí | | Dispositivos WAYCOM -K2M usando USB VC | Sí | | Compresión de vídeo de cámara web | Sí | | Redirección de Windows Media | Sí |

Consulta también

  • SDK de canales virtuales ICA
  • La Red de desarrolladores de Citrix es el hogar de todos los recursos técnicos y debates relacionados con el uso de los SDK de Citrix. En esta red, puedes encontrar acceso a SDK, código y scripts de ejemplo, extensiones y complementos, y documentación de SDK. También se incluyen los foros de la Red de desarrolladores de Citrix, donde se llevan a cabo debates técnicos sobre cada uno de los SDK de Citrix.