Citrix Virtual Apps and Desktops

Citrix ICA® 虚拟通道

警告:

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

什么是 ICA 虚拟通道

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

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

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

虚拟通道

虚拟通道由一个客户端虚拟驱动程序组成,该驱动程序与服务器端应用程序通信。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 (必需)
  • ClientDrive
  • ClentPrinterQueue
  • ClentPrinterPort
  • Clipboard
  • ClientComm
  • ClientAudio
  • LicenseHandler (必需)
  • TWI (必需)
  • SmartCard
  • ICACTL (必需)
  • SSPI
  • TwainRdr
  • UserEXperience
  • Vd3d

注意:

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

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

  • vd3dn.dll – 用于桌面合成重定向的 Direct3D 虚拟通道
  • vdcamN.dll – 双向音频
  • vdcdm30n.dll – 客户端驱动器映射
  • vdcom30N.dll - 客户端 COM 端口映射
  • vdcpm30N.dll – 客户端打印机映射
  • vdctln.dll – ICA 控制通道
  • vddvc0n.dll – 动态虚拟通道
  • vdeuemn.dll - 最终用户体验监控
  • vdgusbn.dll – 通用 USB 虚拟通道
  • vdkbhook.dll – 透明按键直通
  • vdlfpn.dll – 基于 UDP 类似传输的 Framehawk 显示通道
  • vdmmn.dll – 多媒体支持
  • vdmrvc.dll – 移动接收器虚拟通道
  • vdmtchn.dll - 多点触控支持
  • vdscardn.dll – 智能卡支持
  • vdsens.dll – 传感器虚拟通道
  • vdspl30n.dll – 客户端 UPD
  • vdsspin.dll – Kerberos
  • vdtuin.dll – 透明 UI
  • vdtw30n.dll – 客户端 Thinwire
  • vdtwin.dll – 无缝
  • vdtwn.dll – Twain

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

64 位兼容性

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

  • brapi64.dll
  • confmgr.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 加载的虚拟通道模块,例如:

  • EUEM
  • Twain
  • 剪贴板
  • 多媒体
  • 无缝会话共享
  • 时区

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

  • CtxDvcs.sys – 动态虚拟通道
  • Icausbb.sys – 通用 USB 重定向
  • Picadm.sys – 客户端驱动器映射
  • Picaser.sys – COM 端口重定向
  • Picapar.sys – LPT 端口重定向

服务器端的图形虚拟通道

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

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

在 Windows 服务中托管专用通道

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

  • Citrix 设备重定向器服务
  • Citrix 动态虚拟通道服务
  • Citrix 最终用户体验监控服务
  • Citrix 位置和传感器虚拟通道服务
  • Citrix 多点触控重定向服务
  • Citrix 打印管理器服务
  • Citrix 智能卡服务
  • Citrix 音频重定向服务 (仅限 Citrix Virtual Desktops™)
  • 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 SDK 可在 Citrix Developer 门户网站 https://developer.cloud.com 上获取。

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

注意:

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

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

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

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

重要:

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

虚拟通道的直通功能

当您在 ICA 会话(也称为直通会话)中使用适用于 Windows 的 Citrix Workspace 应用程序时,Citrix 提供的大多数虚拟通道都可以未经修改地运行。在客户端进行额外跳转时,需要考虑一些事项。

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

  • 客户端 COM 端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 客户端 UPD
  • 最终用户体验监控
  • 通用 USB
  • Kerberos
  • 多媒体支持
  • 智能卡支持
  • 透明密钥直通
  • Twain

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

  • 双向音频
  • 文件传输
  • 通用 USB 重定向
  • 无缝
  • Thinwire

重要:

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

Citrix Virtual Desktop 会话与 Citrix Virtual App 会话之间虚拟通道的直通功能

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

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

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

  • 客户端
  • 客户端 COM 端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 通用 USB(受性能限制)
  • 多媒体支持
  • 智能卡支持
  • SSON
  • 透明密钥直通

安全性和 ICA 虚拟通道

确保使用安全是规划、开发和实施虚拟通道的重要组成部分。本文档中有多处提及特定的安全领域。

最佳实践

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

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

命名虚拟通道

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

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

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

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

双跳支持

虚拟通道 是否支持双跳?
音频
浏览器内容重定向
CDM
CEIP
剪贴板
Continuum (MRVC)
Control VC
HTML5 视频重定向 (v1)
键盘、鼠标
MultiTouch
NSAPVC
打印
SensVC
智能卡
Twain
USB VC
WAYCOM 设备 -K2M 使用 USB VC
摄像头视频压缩
Windows Media 重定向

另请参阅

  • ICA 虚拟通道 SDK
  • Citrix Developer Network 是所有涉及使用 Citrix SDK 的技术资源和讨论的中心。在此网络中,您可以找到对 SDK、示例代码和脚本、扩展和插件以及 SDK 文档的访问权限。其中还包括 Citrix Developer Network 论坛,其中围绕每个 Citrix SDK 进行技术讨论。