Citrix Virtual Apps and Desktops 7 2203 LTSR

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 应用程序产品发布新的虚拟通道,以提供更多功能。

虚拟通道

虚拟通道由一个客户端虚拟驱动程序组成,该驱动程序与服务器端应用程序通信。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 控制(必需)
  • 安全支持提供程序接口
  • TWAIN 重定向器
  • 用户体验
  • Vd3d

注意:

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

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

  • vd3dn.dll – 用于桌面合成重定向的 Direct3D 虚拟通道
  • vdcamN.dll – 用于实现双向音频
  • vdcdm30n.dll – 客户端驱动器映射
  • vdcom30N.dll - 客户端串行端口的映射
  • vdcpm30N.dll – 客户端打印机映射
  • vdctln.dll – 独立计算架构控制通道
  • vddvc0n.dll – 动态虚拟通道
  • vdeuemn.dll - 最终用户体验监控
  • vdgusbn.dll – Generic USB virtual channel
  • vdkbhook.dll:透明按键直通功能
  • vdlfpn.dll – Framehawk 显示通道,该通道通过类似 UDP 的传输协议进行数据传输。
  • vdmmn.dll – 用于提供多媒体功能支持
  • vdmrvc.dll – 移动接收器虚拟通道
  • vdmtchn.dll - 提供对多点触控功能的支持
  • vdscardn.dll – 智能卡功能的支持
  • vdsens.dll – 传感器虚拟通道
  • vdspl30n.dll – 客户端用户配置文件磁盘
  • vdsspin.dll – Kerberos
  • vdtuin.dll – 透明用户界面
  • 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 加载的虚拟通道模块,例如:

  • 最终用户体验监控
  • 特文
  • 剪贴板
  • 多媒体
  • 无缝会话共享
  • 时区设置

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

  • CtxDvcs.sys – Dynamic virtual channel
  • Icausbb.sys – Generic USB redirection
  • Picadm.sys – 客户端驱动器映射
  • Picaser.sys – COM port redirection
  • Picapar.sys – LPT port redirection

服务器端的图形虚拟通道

从 XenApp 7.0 和 XenDesktop 7.0 开始,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 Virtual Apps 上的音频虚拟通道使用 Windows 音频服务托管。

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

虚拟通道连接(/zh-cn/citrix-virtual-apps-desktops/2203-ltsr/media/virtual-channel-connection.png)

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

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

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

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

注意:

思杰 SDK 可在 https://developer.cloud.com 上的思杰开发者门户中获取。

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

注意:

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

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

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

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

重要提示:

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

虚拟通道所提供的直通功能

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

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

  • 客户端 COM 端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 客户端 UPD
  • 最终用户体验监控
  • 通用 USB
  • 科尔贝罗斯
  • 多媒体支持
  • 智能卡支持
  • 透明按键直通功能
  • 特温

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

  • 双向音频功能
  • 文件传输
  • 通用 USB 重定向
  • 无缝
  • 思睿

重要提示:

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

Pass-through functionality of virtual channels between a Citrix Virtual Desktop session and a Citrix Virtual App session

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

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

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

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

安全性和 ICA 虚拟通道

确保虚拟通道的使用安全是规划、开发和实施虚拟通道过程中一个重要的环节。本文档中多处提及了具体的安全方面。

最佳实践

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

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

虚拟通道命名:

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

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

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

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

双跳支持:

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

另请参阅

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