1、CLDMIND云思创想桌面云 USB 重定向特性设计文档CLDMIND Tech (Beijing) LTD.2013/1/26Revision SummaryDate Revision HistoryComments01/26/2013 1.0 Initial Available12/22/2014 2.0 More SupportContentsContents .21 引言 .31.1 编写目的 .31.2 背景 .31.3 定义 .31.4 参考资料 .32 特性总体设计 .32.1 需求规定 .32.1.1 功能需求 .32.1.2 性能需求 .42.2 基本设计概念和处理流程 .4
2、2.3 软件结构图 .42.4 模块变更概述 .53 客户端设计(新增模块) .53.1 模块描述 .53.2 功能 .53.3 性能 .63.4 设计方法(算法) .63.4.1 USB 设备抽象层 .63.4.2 USB 设备屏蔽层 .73.5 流程逻辑 .73.6 关键数据结构 .73.7 关键函数 .73.8 存储分配 .74 服务端设计(新增模块) .74.1 模块描述 .74.2 功能 .74.3 性能 .74.4 设计方法(算法) .84.5 流程逻辑 .84.6 关键数据结构 .84.7 关键函数 .84.8 存储分配 .81 引言1.1 编写目的USB 重定向技术为云思创想桌
3、面云支持 USB 外设,用户在桌面云环境能正常使用USB 盘,手机,打印机等各类 USB 设备1.2 背景1.3 定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 CLDMIND 云思创想科技(北京)有限公司的注册商标1.4 参考资料2 特性总体设计2.1 需求规定2.1.1 功能需求1. 支持 U 盘,移动硬盘等大存储设备2. 支持 USB 打印机3. 支持安卓手机,主要支持以下厂商序列号 安卓手机厂商1 LG 2 华为3 联想4 HTC5 小米6 魅族7 中兴8 三星9 谷歌4. 支持苹果手机序列号 苹果手机型号1 IPhone42 Iphone4s3 Iphone54 Ip
4、hone5s5 IPhone66 IPhone6s5. 支持 USB 摄像头6. 支持扫描仪7. 支持热插拔8. 支持扫描枪2.1.2 性能需求1. USB2.0 的 U 盘,拷贝速率不低于 2M2. USB3.0 的移动硬盘, 拷贝速率不低于 30M2.2 基本设计概念和处理流程通用串行总线(Universal Serial Bus,简称 USB)是 Intel、IBM、Microsoft 等七家公司于1994 年推出的主机与设备间的通信协议,被广泛地应用于计算机主机与外围设备上。USB协议支持热插拔,设备与主机间的交互简单易用。目前,已有数百种设备使用 USB 接口与主机通信,例如:移动硬
5、盘、打印机、U 盾、条形码扫描仪、触摸屏、手机等。USB 协议的版本主要有 1.1(1998) ,2.0(2000)和 3.0(2008) 。随着虚拟化技术的发展,越来越多的企业使用云桌面技术搭建信息系统。在云桌面的场景下,主机运行在一个虚拟的硬件环境下,用户通过轻量级的客户端与主机交互。因此,用户不能像在 PC 机上一样操作 USB 设备。这也成为限制云桌面技术推广的一个重要因素。云思创想的 USB 重定向程序很好地解决了这个问题。2.3 软件结构图云思创想 USB 重定向使用 Windows 的虚拟总线枚举技术,将客户端接入的 USB 重定向到远程主机中。其体系结构如图所示目前,该程序与云
6、思创想远程交互协议客户端 POND 集成在一起。当客户端 POND 向远程主机发起连接请求后,调用重定向程序的接口,启动 USB 重定向的功能。USB 重定向启动后,首先初始化 USB 设备重定向权限控制表,并扫描本地的 USB 设备,如果设备允许被重定向到远程主机,则读取 USB 设备的信息,向远程主机(windows xp 或 win 7)中的cldusbd 程序发起重定向 USB 设备的请求。cldusbd 接收到重定向请求后,将 USB 设备的信息(VendorID、 ProductIDl)发送给 cld 虚拟总线枚举器。 cld 虚拟总线枚举器根据 USB 设备的信息创建相应的 US
7、B 设备,并通知 Windows 的设备管理器有新的设备接入。设备管理器首先会根据 USB 的设备 VendorID 和 ProductID 查找驱动,如 U 盘(class: 0x8, subclass:0x6 ,protocol:0x50)加载大容量存储的驱动(usbstorage) 。如果USB 设备是 composite 设备,则加载 usbccgp 驱动,usbccgp 驱动枚举 composite 设备的所有的接口设备。至此,远程主机上的用户或程序就可以操作在客户端接入的 USB 设备了。用户或程序对 USB 设备的请求都经过 cld 虚拟总线枚举器和 cldusbd 通过网络传递
8、到客户端的 USB 设备上。2.4 模块变更概述3 客户端设计(新增模块)3.1 模块描述USB 重定向客户端,是云思创想桌面云之 USB 重定向的组成部分。3.2 功能1. 识别各类 USB 设备2. 向服务端发起连接3.3 性能3.4 设计方法(算法)USB 设备抽象层,屏蔽 USB 设备的差异性。 USB 设备屏蔽层决定一个 USB 设备是否可以被重定向。重定向主线程与远程主机交互,接收和转发 URB 请求。热插拔事件处理发现 USB 设备,并创建重定向主线程。3.4.1 USB 设备抽象层云思创想的 USB 重定向程序在客户端抽象了一个虚拟的 USB 设备来解决不同的 USB 设备在实
9、现上的差异性问题typedef structunsigned int ven_prod ; /key, vendorID 16 | productIDint (* control)(void* private, char * setup);int (* post_callback)(void * private, int status); cld_usb_op_t;当一个 USB 设备经过检查,被确认可以被重定向远程主机后,则向远程主机发起连接3.4.2 USB 设备屏蔽层3.5 流程逻辑3.6 关键数据结构3.7 关键函数3.8 存储分配4 服务端设计(新增模块)4.1 模块描述USB 重定向服务端,是云思创想桌面云之 USB 重定向的组成部分。4.2 功能1. 接收客户端请求2. 驱动4.3 性能4.4 设计方法(算法)4.5 流程逻辑4.6 关键数据结构4.7 关键函数4.8 存储分配