Virtual Channel的定制开发_第1页
Virtual Channel的定制开发_第2页
Virtual Channel的定制开发_第3页
Virtual Channel的定制开发_第4页
Virtual Channel的定制开发_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Virtual Channel的定制与开发,Michael Zhang, Citrix Solution Architect Greater China,运营商营业厅遇到的问题,网络问题: 虚拟桌面非常依赖网络 运营商已有网络复杂 很多营业厅分散在各地,远程访问,更容易因网络问题影响体验 外设: 营业厅外设复杂 (Ex. 各种卡,各种非标准设备) 有些外设没考虑过虚拟桌面场景,网络成为瓶颈 (带宽,延迟,丢包),Virtual Channel Overview,An ICA virtual channel is a bidirectional error-free c

2、onnection for the exchange of generalized packet data between a client and a server running Citrix XenApp or XenDesktop. Each implementation of an ICA virtual channel consists of two components: Server-side: NT service or normal process Client-side: A dynamically loadable module (.DLL) load by recei

3、ver Socket?,Architecture,WinStation: Demultiplexing the virtual channel data Gathering and sending virtual channel data,process occurs when a user starts the client,Client reads the Configuration Storage in registry. Client engine loads the virtual channel driver DLLs. For each virtual channel, the

4、WinStation driver calls the DriverOpen function, pass callback function ICADataArrival to WinStation driver, WinStation driver give a function pointer of QueueVirtualWrite When virtual channel data arrives from the server, the WinStation driver calls the ICADataArrival function for that virtual driv

5、er. WinStation driver calls DriverPoll, use QueueVirtualWrite to poll for data to send to the server,Client-Side Functions Overview,DriverOpen: Performs all initialization for the virtual driver. Called once when the client loads the virtual driver (at startup). DriverClose: Called before unloading

6、a virtual driver DriverPoll: Called periodically to see if the virtual driver has any data to write DriverInfo: Retrieves information about the virtual driver ICADataArrival: Indicates that data was delivered. Called when data arrives on the virtual channel. QueueVirtualWrite: To send a packet of ch

7、annel protocol to the server VdCallWd: Used to query and set information from the WinStation driver,Server-Side Functions Overview,WFVirtualChannelOpen: Opens a handle to a specific virtual channel. WFVirtualChannelClose: Closes an open virtual channel handle WFVirtualChannelQuery: Returns data rela

8、ted to a virtual channel, set in DriverInfo function WFVirtualChannelWrite: Writes data to a virtual channel WFVirtualChannelRead: Reads data from a virtual channel,Function Relationship between Client & Server,client-server data exchange overview,The client connects to the server running XenApp or

9、XenDesktop. The client passes information about the virtual channels it supports to the server. The server-side application starts, obtains a handle to the virtual channel, and optionally queries for additional information about the channel. The client-side virtual driver and server-side application

10、 pass data using the following two methods: If the server application has data to send to the client, the data is sent to the client immediately. When the client receives the data, the WinStation driver demultiplexes the virtual channel data from the ICA stream and passes it immediately to the clien

11、t virtual driver. If the client virtual driver has data to send to the server, the data may be sent immediately, or it may be sent the next time the WinStation driver polls the virtual driver. When the data is received by the server, it is queued until the virtual channel application reads it. There

12、 is no way to alert the server virtual channel application that data was received. When the server virtual channel application is finished, it closes the virtual channel and frees any allocated resources.,Some limitations,Virtual Channel Name: not exceeds 7 bytes Packet length: not exceeds 4996 byte

13、s,How to deploy Virtual Channel Driver,Copy xxx.dll to C:Program Files (x86)CitrixICA Client Registry settings: HKEY_LOCAL_MACHINESOFTWAREWow6432NodeCitrixICA ClientEngineConfigurationAdvancedModulesICA 3.0 VirtualDriverEx = HomaUSB HKEY_LOCAL_MACHINESOFTWAREWow6432NodeCitrixICA ClientEngineConfigur

14、ationAdvancedModulesHomaUSB Copy xxx.exe to any location of the server.,How to debug Virtual Channel,Client: Use procexp.exe to find the process ID of wfcrun32.exe, VS2010 attach to wfcrun32.exe process Server: WinDBG,Example 1: HomaUSB,Example 2: Another way to authenticate,Clients certificate pass

15、 the authentication of AGEE/WI WI list the VM User click one VM. Launch receiver, load virtual channel driver. Virtual channel driver load clients certificate in in DriverInfo A NT service in VM wait on session create event (WFWaitSystemEvent) Get logon name and certificate, check if equal If not eq

16、ual, close session (WFDisconnectSession),Architect of Customized Virtual Channel,开发实例 之一:高拍仪,特点: 预览时图像分辨率高,1-2M 帧数高,每秒20帧以上 预览时图像不会被压缩 拍照后的图像会被压缩,只有100K不到 实际有用的数据就是拍照后的那个照片 带来后果: 带宽无法满足需求,预览图像几乎黑屏 解决方案: 预览图像在本地物理机进行,拍摄图像后才使用虚拟通道传输到服务端,开发实例 之二:指纹仪,特点: 数据量很小,一个指纹总共几K数据 采集一次指纹,会有几十次的USB Command的交互 现场环境网络延迟较大 (平均8ms) 带来后果: 原设备的驱动程序图像拼接算法无法适应这种高延迟的环境,导致指纹图像采集失败或严重变形 解决方案: 修改指纹采集程序的流程,采集完指纹后,通过虚拟通道发送完整指纹数据到服务端,服务端应用程序接收到完整指纹才进行验证,Best Practice in Customized Virtual Channel Dev.,Dont block in any u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论