Citrix ICA® virtual channels

警告:

不正确地编辑注册表可能会导致严重问题,甚至可能需要重新安装操作系统。Citrix 无法保证能够解决因不正确使用注册表编辑器而导致的问题。请自行承担使用注册表编辑器的风险。编辑注册表之前,请务必备份注册表。

什么是 ICA 虚拟通道

Citrix Workspace™ 应用程序与 Citrix Virtual Apps and Desktops™ 服务器之间的大部分功能和通信都通过虚拟通道进行。虚拟通道是使用 Citrix Virtual Apps and Desktops 服务器进行远程计算体验的必要组成部分。虚拟通道用于:

  • 音频
  • COM 端口
  • 磁盘
  • 图形
  • LPT 端口
  • 打印机
  • 智能卡
  • 第三方自定义虚拟通道
  • 视频

Citrix Virtual Apps and Desktops 服务器和 Citrix Workspace 应用程序产品的新版本有时会发布新的虚拟通道,以提供更多功能。

虚拟通道(/zh-cn/citrix-virtual-apps-desktops/2507-ltsr/media/ica-virtual-channels-1.png)

虚拟通道由一个客户端虚拟驱动程序组成,该驱动程序与服务器端应用程序通信。Citrix Virtual Apps and Desktops 附带了各种虚拟通道。它们旨在允许客户和第三方供应商使用提供的软件开发工具包 (SDK) 之一创建自己的虚拟通道。

虚拟通道提供了一种安全的方式来完成各种任务。例如,在 Citrix Virtual Apps 服务器上运行的应用程序与客户端设备通信,或者应用程序与客户端环境通信。

在客户端,虚拟通道对应于虚拟驱动程序。每个虚拟驱动程序都提供特定的功能。有些是正常运行所必需的,有些是可选的。虚拟驱动程序在表示层协议级别运行。通过多路复用 Windows Station (WinStation) 协议层提供的通道,可以随时激活多个协议。

以下功能包含在此注册表路径下的 VirtualDriver 注册表值中:

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

或者

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 (适用于 64 位)

  • Thinwire3.0 (Required)
  • 客户端驱动器
  • 客户端打印队列
  • 客户端打印端口
  • 剪贴板
  • 客户端通信
  • 客户端音频
  • 许可证处理程序 (必需)
  • TWI (必需)
  • 智能卡
  • ICA 控制 (必需)
  • 安全支持提供程序接口
  • 图像采集接口重定向
  • 用户体验
  • Vd3d

注意:

您可以通过从注册表项中删除一个或多个这些值来禁用特定的客户端功能。例如,如果要删除客户端剪贴板,请删除单词 Clipboard

此列表包含客户端虚拟驱动程序文件及其各自的功能。Citrix Virtual Apps 和适用于 Windows 的 Citrix Workspace 应用程序使用这些文件。它们以动态链接库(用户模式)的形式存在,而不是 Windows 驱动程序(内核模式),但通用 USB 除外,如通用 USB 虚拟通道中所述。

  • vd3dn.dll – 用于桌面合成重定向的 Direct3D 虚拟通道
  • vdcamN.dll – Bidirectional audio
  • vdcdm30n.dll – 客户端驱动器映射
  • vdcom30N.dll - Client COM port mapping
  • vdcpm30N.dll – 客户端打印机映射
  • vdctln.dll – ICA controls channel
  • vddvc0n.dll – 动态虚拟通道
  • vdeuemn.dll - 最终用户体验监控
  • vdgusbn.dll – Generic USB virtual channel
  • vdkbhook.dll – Transparent key pass-through
  • vdlfpn.dll – 用于 Framehawk 显示通道,采用类似 UDP 的传输协议
  • vdmmn.dll – 提供多媒体支持
  • vdmrvc.dll – 移动接收器虚拟通道
  • vdmtchn.dll - Multi-touch support
  • vdscardn.dll – Smartcard support
  • vdsens.dll – 传感器虚拟通道
  • vdspl30n.dll – 客户端通用打印驱动程序
  • vdsspin.dll – Kerberos
  • vdtuin.dll – 透明用户界面模块
  • vdtw30n.dll – 客户端 精简线路技术
  • vdtwin.dll – Seamless
  • vdtwn.dll – Twain

一些虚拟通道被编译到其他文件中。例如,剪贴板映射在 wfica32.exe 中可用。

64 位兼容性

适用于 Windows 的 Citrix Workspace 应用程序与 64 位兼容。与大多数为 32 位编译的二进制文件一样,这些客户端文件具有 64 位编译的等效项:

  • 布拉皮64.dll
  • 康夫姆格.dll
  • ctxlogging.dll
  • ctxmui.dll
  • icaconf.exe
  • icaconfs.dll
  • icafile.dll
  • pnipcn64.dll
  • pnsson.dll
  • ssoncom.exe
  • ssonstub.dll
  • vdkbhook64.dll

通用 USB 虚拟通道

通用 USB 虚拟通道实现使用两个内核模式驱动程序以及虚拟通道驱动程序 vdgusbn.dll:

  • ctxusbm.sys
  • ctxusbr.sys

ICA 虚拟通道的工作原理

虚拟通道以多种方式加载。Shell(服务器的 WfShell 和工作站的 PicaShell)加载一些虚拟通道。有些虚拟通道作为 Windows 服务托管。

由 Shell 加载的虚拟通道模块,例如:

  • 最终用户体验监控
  • 特文
  • 剪贴板
  • 多媒体
  • 无缝会话共享
  • Time Zone

有些以内核模式加载,例如:

  • CtxDvcs.sys – Dynamic virtual channel
  • Icausbb.sys – 通用串行总线重定向
  • Picadm.sys – 客户端驱动器映射
  • Picaser.sys – 串行通信端口重定向
  • Picapar.sys – 并行端口重定向

服务器端的图形虚拟通道

ctxgfx.exe 为工作站和终端服务器会话托管图形虚拟通道。Ctxgfx 托管与相应驱动程序交互的平台特定模块(RDSH 使用 Icardd.dll,工作站使用 vdod.dllvidd.dll)。

对于 XenDesktop® 3D Pro 部署,会在 VDA 上为相应的 GPU 安装 OEM 图形驱动程序。Ctxgfx 加载专用适配器模块以与 OEM 图形驱动程序交互。

在 Windows 服务中托管专用通道

在 Citrix Virtual Apps and Desktops 服务器上,各种通道作为 Windows 服务托管。这种托管为会话中的多个应用程序和服务器上的多个会话提供了“一对多”的语义。此类服务的示例包括:

  • Citrix 设备重定向器服务
  • Citrix 动态虚拟通道服务
  • Citrix 最终用户体验监控服务
  • Citrix 位置和传感器虚拟通道服务
  • Citrix 多点触控重定向服务
  • Citrix 打印管理器服务
  • Citrix 智能卡服务
  • Citrix Audio Redirection Service (Citrix Virtual Desktops™ only)
  • Citrix ICA 状态通道服务

Citrix Virtual Apps 上的音频虚拟通道使用 Windows 音频服务托管。

在服务器端,所有客户端虚拟通道都通过 WinStation 驱动程序 Wdica.sys 路由。在客户端,内置于 wfica32.exe 中的相应 WinStation 驱动程序轮询客户端虚拟通道。此图像说明了虚拟通道客户端-服务器连接。

虚拟通道连接

本概述包含使用虚拟通道的客户端-服务器数据交换。

  1. 客户端连接到 Citrix Virtual Apps and Desktops 服务器。客户端将其支持的虚拟通道信息传递给服务器。
  2. 服务器端应用程序启动,获取虚拟通道的句柄,并可选择查询有关该通道的附加信息。
  3. 客户端虚拟驱动程序和服务器端应用程序使用以下两种方法传递数据:

    • 如果服务器应用程序有数据要发送到客户端,则数据会立即发送到客户端。当客户端接收到数据时,WinStation 驱动程序会从 ICA 流中解复用虚拟通道数据,并立即将其传递给客户端虚拟驱动程序。
    • 如果客户端虚拟驱动程序有数据要发送到服务器,则数据会在 WinStation 驱动程序下次轮询时发送。当服务器接收到数据时,数据会排队,直到虚拟通道应用程序读取它。无法通知服务器虚拟通道应用程序已接收到数据。
  4. 当服务器虚拟通道应用程序完成时,它会关闭虚拟通道并释放所有已分配的资源。

使用虚拟通道 SDK 创建您自己的虚拟通道

注意:

Citrix 开发工具包在 Citrix 开发者门户网站 https://developer.cloud.com 提供。

使用虚拟通道 SDK 创建虚拟通道需要中级编程知识。使用此方法可在客户端和服务器之间提供主要的通信路径。例如,如果您正在客户端实现设备(例如扫描仪)的使用,以便在会话中与某个进程一起使用。

注意:

  • 虚拟通道 SDK 需要 WFAPI SDK 来编写虚拟通道的服务器端。

  • 由于 Citrix Virtual Apps and Desktops 的安全性增强,您必须指定允许在 ICA 会话中打开哪些虚拟通道。有关详细信息,请参阅虚拟通道允许列表策略设置

使用 ICA 客户端对象 SDK 创建您自己的虚拟通道

使用 ICA 客户端对象 (ICO) 创建虚拟通道比使用虚拟通道 SDK 更简单。通过在程序中使用 CreateChannels 方法创建命名对象来使用 ICO。

重要提示:

由于从 10.00 版及更高版本的 Citrix Receiver for Windows(以及 Citrix Workspace apps for Windows)开始增强了安全性,因此在创建 ICO 虚拟通道时必须采取额外的步骤。

虚拟通道的直通功能特性概述

当您在 ICA 会话(也称为直通会话)中使用 Citrix Workspace app for Windows 时,Citrix 提供的大多数虚拟通道均可保持不变地运行。在额外跳数中使用客户端时需要考虑一些事项。

以下功能在单跳或多跳中以相同方式运行:

  • 客户端 COM 端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 客户端 UPD
  • 最终用户体验监控
  • 通用 USB
  • 凯柏罗斯
  • 多媒体支持
  • 智能卡支持
  • 透明的按键透传功能
  • 特文

由于延迟的固有性质以及在每个跃点执行的压缩、解压缩和渲染等因素,客户端每增加一个跃点,性能可能会受到影响。受影响的区域包括:

  • 双向音频传输功能
  • 文件传输
  • 通用 USB 重定向
  • 无缝
  • 精简显示

重要提示:

默认情况下,在直通会话中运行的客户端实例映射的客户端驱动器仅限于连接客户端的客户端驱动器。

一个思杰虚拟桌面会话与一个思杰虚拟应用会话之间虚拟通道的直通功能

当您在 Citrix Virtual Desktops 服务器上的 ICA 会话(也称为直通会话)中使用适用于 Windows 的 Citrix Workspace 应用程序时,Citrix 提供的大多数虚拟通道均可保持不变地运行。

具体来说,在 Citrix Virtual Desktops 服务器上,有一个 VDA 挂钩,它运行 picaPassthruHook。此挂钩使客户端认为它正在 CPS 服务器上运行,并将客户端置于其传统的直通模式。

我们支持以下传统虚拟通道以及它们的功能:

  • 客户端
  • 客户端 COM 端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 通用 USB(受性能限制)
  • 多媒体支持
  • 智能卡支持
  • 单点登录
  • 透明键盘按键直通

安全与 ICA 虚拟通道

确保虚拟通道的使用安全,是规划、开发和实施虚拟通道的重要环节。本文档中,关于特定安全领域的内容散布在多处。

最佳实践

连接重新连接时打开虚拟通道。在注销和断开连接时关闭虚拟通道。

在创建使用虚拟通道功能的脚本时,请务必牢记以下各项准则。

虚拟通道命名:

您最多可以创建 32 个虚拟通道。其中 17 个通道保留用于特殊目的。

  • 虚拟通道名称的长度不得超过七个字符。

  • 前三个字符保留用于供应商名称,后四个字符用于通道类型。例如,CTXAUD 代表 Citrix 音频虚拟通道。

虚拟通道通过七个字符(或更短)的 ASCII 名称来引用。在 ICA 协议的某些早期版本中,虚拟通道是编号的。现在,这些编号根据 ASCII 名称动态分配,从而简化了实施。仅为内部使用而开发虚拟通道代码的用户可以使用任何不与现有虚拟通道冲突的七个字符名称。仅使用数字以及大写和小写 ASCII 字符。添加自己的虚拟通道时,请遵循现有的命名约定。有几个预定义通道。预定义通道以 OEM 标识符 CTX 开头,仅供 Citrix 使用。

双跳支持:

虚拟通道 是否支持双跳?
音频
浏览器内容重定向
CDM
客户体验改善计划
剪贴板
连续性 (MRVC)
控制 VC
HTML5 视频重定向 (v1)
键盘、鼠标
多点触控
恩萨普维西
打印
森斯维西
智能卡
特外恩
USB 虚拟通道
WAYCOM 设备 -K2M 使用 USB 虚拟通道
网络摄像头视频压缩
视窗媒体重定向

另请参阅

  • ICA 虚拟通道 软件开发工具包
  • Citrix 开发者网络 是所有涉及使用 Citrix SDK 的技术资源和讨论的中心。在此网络中,您可以找到 SDK、示例代码和脚本、扩展和插件以及 SDK 文档。此外,还包括 Citrix 开发者网络论坛,其中围绕每个 Citrix SDK 展开技术讨论。