Citrix DaaS

思杰ICA虚拟通道

警告:

错误地编辑注册表可能会导致严重的问题,可能需要重新安装操作系统。Citrix不能保证由于不正确使用注册表编辑器而导致的问题能够得到解决。使用注册表编辑器风险自负。在编辑注册表之前,请务必备份注册表。

什么是ICA虚拟通道?

Citrix Workspace应用程序和Citrix DaaS(以前称为Citrix Virtual Apps and台式机服务)服务器之间的大部分功能和通信都是通过虚拟通道进行的。虚拟通道是使用Citrix DaaS服务器进行远程计算体验的必要部分。虚拟通道用于:

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

新的虚拟通道有时会随Citrix DaaS和Citrix Workspace应用产品一起发布,以提供更多的功能。

虚拟通道

虚拟通道由与服务器端应用程序通信的客户端虚拟驱动程序组成。Citrix DaaS附带了各种虚拟通道。它们的设计目的是允许客户和第三方供应商使用提供的软件开发工具包(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\ Modules\ICA 3.0(64位)

  • Thinwire3.0(必需)
  • ClientDrive
  • ClentPrinterQueue
  • ClentPrinterPort
  • 剪贴板
  • ClientComm
  • ClientAudio
  • LicenseHandler(必需)
  • 双胞胎(必需)
  • 智能卡
  • ICACTL(必需)
  • SSPI
  • TwainRdr
  • 用户体验
  • Vd3d

注意:

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

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

  • vd3dn.dll - Direct3D虚拟通道用于桌面合成重定向
  • vdcam .dll -双向音频
  • vdcdm30 .dll -客户端驱动器映射
  • vdcom30N.dll -客户端COM端口映射
  • vdcpm30 .dll -客户端打印机映射
  • vdctln.dll - ICA控制通道
  • vddvc0 .dll -动态虚拟通道
  • vdeuemn.dll -最终用户体验监控
  • vdgusbn.dll -通用USB虚拟通道
  • vdkbhook.dll -透明的密钥传递
  • vdlfpn.dll -帧显示通道在UDP类似的传输
  • vdmmn.dll -多媒体支持
  • vdmrvc.dll -移动接收器虚拟信道
  • vdmtchn.dll -多点触摸支持
  • vdscardn.dll -智能卡支持
  • vdsens.dll -传感器虚拟通道
  • vdspl30 .dll -客户端UPD
  • vdsspin.dll—Kerberos
  • 透明的UI
  • vdtw30 .dll -客户端Thinwire
  • vdtwin.dll -无缝
  • vdtwn.dll -吐温

一些虚拟通道被编译成其他文件。例如,“剪贴板映射”在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
  • 吐温
  • 剪贴板
  • 多媒体
  • 无缝会话共享
  • 时区

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

  • CtxDvcs。sys -动态虚拟通道
  • Icausbb。sys -通用USB重定向
  • Picadm。sys -客户端驱动器映射
  • 异食癖。sys - COM端口重定向
  • Picapar。sys - LPT端口重定向

图形虚拟通道在服务器端

从XenApp 7.0和XenDesktop7.0开始,ctxgfx.exe主机图形虚拟通道工作站和终端服务器基于会话。Ctxgfx承载与相应驱动程序交互的平台特定模块(Icardd.dll为RDSH和vdod.dllvidd.dll工作站)。

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

在windows服务中托管专用通道

在Citrix DaaS服务器上,各种通道作为windows服务托管。这种托管为会话中的多个应用程序和服务器上的多个会话提供了一对多语义。此类服务的例子包括:

  • Citrix设备重定向服务
  • Citrix动态虚拟通道服务
  • 思杰终端用户体验监控服务
  • 思杰定位和传感器虚拟通道服务
  • Citrix MultiTouch重定向服务
  • Citrix打印管理器服务
  • 思杰智能卡服务
  • Citrix音频重定向服务(仅限Citrix虚拟桌面)

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

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

虚拟通道连接

这个概述包含一个使用虚拟通道的客户机-服务器数据交换。

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

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

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

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

注意:

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

  • 由于Citrix DaaS的安全性得到了增强,因此必须指定允许在ICA会话中打开哪些虚拟通道。有关更多信息,请参见虚拟通道允许列表策略设置

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

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

重要的是:

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

有关更多信息,请参见客户端对象API规范程序员指南

虚拟通道的直通功能

当您在ICA会话(也称为pass-through会话)中使用Windows的Citrix Workspace应用程序时,Citrix提供的大多数虚拟通道都是未经修改的。在额外跳数中使用客户机时需要考虑一些问题。

以下函数在单跳或多跳中以相同的方式运行:

  • 客户端COM端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 客户端乌利希期刊指南
  • 终端用户体验监控
  • 通用USB
  • Kerberos
  • 多媒体支持
  • 智能卡的支持
  • 透明的密钥传递
  • 吐温

由于延迟的固有性质以及在每一跳上执行的压缩、解压缩和呈现等因素,性能可能会随着客户端经历的每一个额外跳而受到影响。受影响的地区包括:

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

重要的是:

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

Citrix虚拟桌面会话和Citrix虚拟应用会话之间的虚拟通道的传递功能

当您在Citrix虚拟桌面服务器(也称为直通会话)上的ICA会话中使用Citrix Workspace应用程序时,Citrix提供的大多数虚拟通道都是未经修改的。

具体来说,在Citrix虚拟桌面服务器上,有一个运行的VDA钩子picaPassthruHook。这个钩子使客户机认为它在CPS服务器上运行,并将客户机置于其传统的直通模式。

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

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

安全和ICA虚拟通道

保护使用是规划、开发和实现虚拟通道的重要组成部分。在整个文档中有几个关于特定安全领域的引用。

最佳实践

打开虚拟频道,当你连接重新连接。关闭虚拟通道时,注销和断开连接

在创建使用虚拟通道函数的脚本时,请牢记以下指导原则。

命名虚拟通道:

最多可以创建32个虚拟通道。32个频道中有17个是预留给特殊用途的。

  • 虚拟通道名的长度不能超过7个字符。

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

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

双跳转支持:

虚拟通道 是否支持双跳?
音频 没有
浏览器内容重定向 没有
清洁发展机制 是的
CEIP 没有
剪贴板 是的
连续(MRVC) 没有
控制风险 是的
HTML5视频重定向(v1) 是的
键盘、鼠标 是的
多点触控 没有
NSAPVC 没有
印刷 是的
SensVC 没有
智能卡 是的
吐温 是的
USB VC 是的
WAYCOM设备-K2M使用USB VC 是的
网络摄像头视频压缩 是的
Windows Media重定向 是的

另请参阅

  • ICA虚拟通道SDK
  • 思杰开发人员网络是所有涉及使用Citrix sdk的技术资源和讨论的主页。在这个网络中,您可以找到对SDK、示例代码和脚本、扩展和插件以及SDK文档的访问。还包括Citrix开发人员网络论坛,在那里围绕每个Citrix sdk进行技术讨论。