版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东省济宁市重点学校初一入学语文分班考试试题及答案
- 2026年四川小升初英语真题及参考答案
- 2026年四川南充市中小学教师招聘考试卷附答案
- 2026年新疆(中考)地生会考考试真题附答案
- 2026年西藏高考(数学)真题带答案
- 2026年四川(小升初)数学考试试卷真题答案解析
- 木瓜农业综合开发项目可行性研究报告
- 菏泽市二模试题及答案
- 单招二类语文试题及答案
- 山交大汽车保险学课件04保险原则
- 2026年临床水平测试题库及答案全套试题及答案
- 2026年四川省县级干部任职资格考试综合练习题及答案
- YY 0017-2026骨接合植入器械金属接骨板
- 吸收塔专项施工方案
- 公关公司考勤及奖惩制度
- 2026春季江苏省国信集团集中招聘46人备考题库附答案详解(完整版)
- 2026年国家药品监督管理局药品和医疗器械审评检查京津冀分中心、华中分中心、西南分中心公开招聘编外人员122名(第一批)考试参考试题及答案解析
- (2025年)广西玉林职业技术学院使用教职人员招聘笔试真题带答案详解
- 2026年及未来5年市场数据中国尼龙聚酰胺6(PA6)行业市场调研分析及投资战略规划报告
- 工程项目创新技术应用与实施方案
- 电商客服礼仪培训
评论
0/150
提交评论