博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USB重定向
阅读量:5094 次
发布时间:2019-06-13

本文共 1151 字,大约阅读时间需要 3 分钟。

  第一期中,我们一起简要的看了下传统PC和桌面云下USB重定向和USB设备重定向方式的差异,了解了桌面云下外设兼容性问题来源的根源-USB设备本身驱动不规范/不支持,

  或者虚拟机驱动实现上与USB设备对接存在疏漏。

  本期我们来详细的了解下传统PC和桌面云的外设工作原理

  目前,在通用操作系统上,USB外设占主流,下面就以USB摄像头举例说明其两种重定向技术的区别。

 传统PC

  先认识一下传统(PC机模式)USB外设工作的原理

                        

  从上图可以了解到,所有USB外设正常工作,在软件层面依赖的是USB总线驱动。一个应用需要使用USB外设必须与USB设备驱动进行交互,而设备驱动的工作

  完全依赖USB总线驱动来交互设备数据,与硬件交互都是由总线驱动来代理完成。

  桌面云

    在桌面云环境下实现对USB外设的支持,可以有两种方式,一种是基于USB总线的虚拟化重定向,称之为USB端口重定向,即替换掉USB总线驱动;另外一种

  是USB设备驱动的重定向,称之为设备重定向,即替换掉USB设备驱动。

                    

  上图所示,即为USB端口重定向方式,它通过在虚拟机和客户端各内置一个虚拟USB总线驱动,实现原物理下USB总线驱动的拉远。而设备对应的真实USB设备驱动安装

  并运行在虚拟机中,与虚拟机USB总线驱动进行交互,这样对虚拟机中的USB设备驱动来说,并不会感知到所控制的设备实际上在TC远端,同样应用程序也不会感知到

  这个差异。因为USB端口重定向与具体的设备和应用无关,直接将USB端口重定向到桌面虚拟机中,所以USB端口重定向具有良好的设备兼容性。但同时,也正是因为这个原因,USB端口重定向也有一定的局限性,由于没有经过设备驱动层的压缩和预处理,对于某些扫描仪和摄像头等图像类应用,可能会导致带宽过大,网络时延敏感等问题。在这种情况下,需要使用设备重定向技术。                                                                         

  桌面云下USB重定向各模块作用(如上图)

  USB客户端:负责发现和断开客户端设备,接收服务端总线数据转发到设备,以及获取设备的总线数据转发到服务端

  虚拟USB驱动:作为一个虚拟的功能驱动,负责双向透传总线数据包

  USB服务端:负责获取服务端的总线数据包转发到客户端,以及接受客户端回应的总线数据包转发到虚拟总线驱动

  虚拟USB总线驱动:作为一个虚拟的总线驱动,向上和真实的各类USB功能驱动交互,负责转发各类USB设备的总线数据包,以及将USB 服务传递进来的数据包

  透传到上层功能驱动。

 

转载于:https://www.cnblogs.com/aaronax/p/5723407.html

你可能感兴趣的文章
Java语言概述
查看>>
关于BOM知识的整理
查看>>
android中自定义下拉框(转)
查看>>
Android设计模式源码解析之外观模式(Facade)
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
Hmailserver搭建邮件服务器
查看>>
django之多表查询-2
查看>>
BULK INSERT, 实战手记:让百万级数据瞬间导入SQL Server
查看>>
快速幂
查看>>
改善C#公共程序类库质量的10种方法
查看>>
AIO 开始不定时的抛异常: java.io.IOException: 指定的网络名不再可用
查看>>
MyBaits动态sql语句
查看>>
[苦逼程序员的成长之路]1、飞扬小鸟
查看>>
零基础自学用Python 3开发网络爬虫(二): 用到的数据结构简介以及爬虫Ver1.0 alpha...
查看>>