思杰 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,且为必需项。
- 客户端驱动器
- 客户端打印机队列
- 客户端打印机端口
- 剪贴板
- 客户端通信
- 客户端音频
- 许可证处理程序 (必需)
- TWI (必需)
- 智能卡
- ICA 控制器 (必需)
- 安全支持提供程序接口
- 特温读取器
- 用户体验
- Vd3d
注意:
您可以通过从注册表项中删除一个或多个这些值来禁用特定的客户端功能。例如,如果要删除客户端剪贴板,请删除单词 Clipboard。
此列表包含客户端虚拟驱动程序文件及其各自的功能。Citrix Virtual Apps 和适用于 Windows 的 Citrix Workspace 应用程序使用这些文件。它们采用动态链接库(用户模式)的形式,而不是 Windows 驱动程序(内核模式),通用 USB 虚拟通道中描述的通用 USB 除外。
- vd3dn.dll – 用于桌面合成重定向的 Direct3D 虚拟通道
- vdcamN.dll – 用于实现双向音频功能
- vdcdm30n.dll – 客户端驱动器映射
- vdcom30N.dll - 客户端串行通信端口映射
- vdcpm30N.dll – 客户端打印机映射
- vdctln.dll – ICA 控制功能与数据传输通道
- vddvc0n.dll – 动态虚拟通道
- vdeuemn.dll - 最终用户体验监控
- vdgusbn.dll – 用于实现通用 USB 虚拟通道功能
- vdkbhook.dll – 透明键盘按键透传
- vdlfpn.dll – 弗雷姆霍克显示通道,通过类似 UDP 的传输方式
- vdmmn.dll – 多媒体功能的支持
- vdmrvc.dll – 移动接收器虚拟通道
- vdmtchn.dll - 多点触控功能的支持
- vdscardn.dll – 提供智能卡功能支持
- vdsens.dll – 传感器虚拟通道
- vdspl30n.dll – 客户端用户配置文件数据
- vdsspin.dll,用于科尔贝罗斯
- vdtuin.dll – 透明 用户界面
- vdtw30n.dll – Client Thinwire
- vdtwin.dll – 无缝应用程序
- vdtwn.dll – 图像采集功能
某些虚拟通道被编译到其他文件中。例如,剪贴板映射在 wfica32.exe 中可用。
64 位兼容性
适用于 Windows 的 Citrix Workspace 应用程序与 64 位兼容。与大多数为 32 位编译的二进制文件一样,这些客户端文件具有 64 位编译的等效项:
- brapi64.dll
- confmgr.dll
- ctxlogging.dll
- ctxmui.dll
- icaconf.exe
- 艾卡康菲斯.dll
- 艾卡菲尔.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 – Generic USB redirection
- Picadm.sys – 客户端驱动器映射
- Picaser.sys – COM port redirection
- Picapar.sys — 并行端口重定向
服务器端的图形虚拟通道
ctxgfx.exe 托管适用于工作站和终端服务器会话的图形虚拟通道。Ctxgfx 托管与相应驱动程序交互的平台特定模块(Icardd.dll 适用于 RDSH,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 ICA 状态通道服务
Citrix Virtual Apps 上的音频虚拟通道使用 Windows 音频服务托管。
在服务器端,所有客户端虚拟通道都通过 WinStation 驱动程序 Wdica.sys 路由。在客户端,内置于 wfica32.exe 中的相应 WinStation 驱动程序轮询客户端虚拟通道。此图像说明了虚拟通道客户端-服务器连接。

本概述包含使用虚拟通道的客户端-服务器数据交换。
- 客户端连接到 Citrix Virtual Apps and Desktops 服务器。客户端将其支持的虚拟通道信息传递给服务器。
- 服务器端应用程序启动,获取虚拟通道的句柄,并可选择查询有关该通道的附加信息。
-
客户端虚拟驱动程序和服务器端应用程序使用以下两种方法传递数据:
- 如果服务器应用程序有数据要发送到客户端,则数据会立即发送到客户端。当客户端收到数据时,WinStation 驱动程序会从 ICA 流中解复用虚拟通道数据,并立即将其传递给客户端虚拟驱动程序。
- 如果客户端虚拟驱动程序有数据要发送到服务器,则数据会在 WinStation 驱动程序下次轮询时发送。当服务器收到数据时,数据会排队,直到虚拟通道应用程序读取它。无法提醒服务器虚拟通道应用程序已收到数据。
- 当服务器虚拟通道应用程序完成时,它会关闭虚拟通道并释放所有已分配的资源。
使用虚拟通道 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 会话(也称为直通会话)中使用适用于 Windows 的 Citrix Workspace 应用程序时,Citrix 提供的大多数虚拟通道都可未经修改地运行。在额外跳转中使用客户端时,需要考虑一些事项。
以下功能在单跳或多跳中以相同方式运行:
- 客户端 COM 端口映射
- 客户端驱动器映射
- 客户端打印机映射
- 客户端 UPD
- 最终用户体验监控
- 通用 USB
- 刻耳柏洛斯
- 多媒体支持
- 智能卡支持
- 透明的密钥直通功能
- 特文
由于延迟的固有性质以及在每个跃点执行的压缩、解压缩和渲染等因素,客户端每增加一个跃点,性能可能会受到影响。受影响的区域包括:
- 双向音频功能
- 文件传输
- 通用 USB 重定向
- 无缝
- 思睿
重要提示:
默认情况下,在直通会话中运行的客户端实例映射的客户端驱动器仅限于连接客户端的客户端驱动器。
Citrix 虚拟桌面会话与 Citrix 虚拟应用会话之间虚拟通道的直通功能
在 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 | 是 |
| 客户体验改善计划 | 否 |
| 剪贴板 | 是 |
| 连续性 (多流接收器虚拟通道) | 否 |
| 控制 VC | 是 |
| HTML5 视频重定向 (v1) | 是 |
| 键盘、鼠标 | 是 |
| 多点触控 | 否 |
| 恩萨普维西 | 否 |
| 打印 | 是 |
| 森斯维西 | 否 |
| 智能卡 | 是 |
| 特温 | 是 |
| USB 虚拟通道 | 是 |
| 使用 USB 虚拟通道的 WAYCOM 设备 -K2M | 是 |
| 网络摄像头视频压缩 | 是 |
| Windows 媒体重定向 | 是 |
另请参阅
- ICA 虚拟通道 软件开发工具包
- Citrix Developer Network 是所有技术资源和讨论的中心,这些资源和讨论涉及 Citrix SDK 的使用。在此网络中,您可以找到对 SDK、示例代码和脚本、扩展和插件以及 SDK 文档的访问权限。其中还包括 Citrix Developer Network 论坛,其中围绕每个 Citrix SDK 展开技术讨论。