在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎

本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程

usb硬件只将数据交给usb总线驱动,而应用程序只会把请求提交给本usb设备驱动处理,在usb设备驱动提交usb总线驱动处理

从上图可以看出,能够被虚拟化的只有USB设备驱动和USB总线驱动两个对象

这也是目前业界对USB设备虚拟化的两大主流方式

一.  虚拟USB总线驱动的方案

又叫做USB端口重定向,工作流程如下图

TC上所插USB设备数据通过TC的USB总线提交给虚拟USB驱动,虚拟USB驱动负责在TC总线和USB客户端之间双向传输数据,如实传输USB硬件的一切细节,对虚拟机来说,相当于在虚拟USB总线上插了一个USB硬件,假如在TC上插了一个闪迪的U盘,那在虚拟机看来就是有一个闪迪U盘插上来了,这时候虚拟机的系统会自动打相应的设备驱动

实质上,端口映射只是相当于将PC上USB工作流程里的USB设备驱动到USB总线驱动之间的这段进行了拉长,通过中间加入几个代理,最终还是将TC上USB外设的细节原原本本向虚拟机上的USB应用呈现,只是隐瞒了设备实际上是在远端TC的事实,这样应用根本感知不到和使用本地外设的差异,和运行在PC上是一样的,因此,USB端口重定向具有良好的设备兼容性。

端口重定向也有一定局限性,由于没有经过设备驱动层的压缩和预处理,对于某些扫描仪和摄像头等图像类应用,可能会导致带宽过大,网络时延敏感等问题

二.  虚拟USB设备驱动的方案

又称为USB设备重定向,工作流程如下图

USB设备重定向是在应用层的实现,通过在虚拟机上创建一个虚拟的USB外设驱动(对操作系统来说,一个驱动意味着一个设备),来使应用程序获得数据,对于整个系统来说,虚拟USB外设驱动和TC上的USB设备驱动本质上是两个不同的USB设备,而USB服务端和USB客户端负责维护两个驱动之间的数据通道(类似于在两个U盘之间互相拷贝数据)

显而易见,设备重定向工作流程中的代理环节少了很多,因而数据传输速率更高,延时更低,更适合像USB摄像头等数据流量比较大,同时对延时也比较敏感的外设

事实上,目前主流的远程桌面协议如HDX,Spice等,都为每一类外设提供从客户端到虚拟机的映射,并在应用层提供专门的通道,将不同的流量隔离开来,如摄像头、打印机、扫描类设备、智能卡设备等,甚至针对不同外设应用场景的需求,提供不同的传输Qos

设备重定向的问题主要在TC上的USB设备驱动和外设通道协议的USB客户端之间,如果外设厂家提供的不是遵循外设协议标准的驱动,那么USB客户端可能会不能很好的将其识别到

usb禁止重定向_谈USB重定向的方式相关推荐

  1. 如何阻止ajax自动重定向_重发和重定向有什么区别与重定向应用

    重发和重定向有什么区别 重发 方式1: request.getRequestDispatcher("new.jsp").forward(request, response);//转 ...

  2. node 后台重定向_登录后重定向到用户原本要访问的页面《 Node.js 应用:重构与改进 #3 》...

    现在我是未登录的状态 ... 可以先试着打开一个内容的编辑界面 ... 会被重定向到登录页面 ... 输入用户名 ... 密码 .. 确认登录 ... 成功以后会把用户重定向到这个用户页面上 ... ...

  3. java httpclient重定向_处理HttpClient重定向

    我正在将一些数据发布到正在回答302移动临时的服务器上. 我希望HttpClient遵循重定向并自动获取新位置,因为我相信这是HttpClient的默认行为.但是,我得到一个例外,而不是按照重定向:( ...

  4. java usb小票打印机_通过USB从Android设备向热敏打印机发送数据

    我正在处理从我的应用程序向热敏打印机发送数据 . 我已经让它在网络上正常工作,我的数据打印正确 . 现在有一个额外的要求,我们也必须能够通过USB打印 . 这是我尝试过的: private UsbMa ...

  5. usb禁止重定向_一种USB重定向处理方法和系统与流程

    本发明涉及桌面虚拟化的USB重定向处理技术领域,具体而言,涉及一种USB重定向处理方法和系统. 背景技术: 随着科学技术的不断进步,网络技术日益发达,虚拟化的应用逐渐普及.桌面虚拟化是指在数据中心的服 ...

  6. usb禁止重定向_USB设备重定向问题的智能诊断方法与流程

    本发明属于桌面虚拟化技术领域,具体涉及一种USB设备重定向问题的智能诊断方法. 背景技术: USB设备重定向是云桌面系统的基本功能.用户在云桌面客户端插上USB设备时,云桌面系统通过重定向技术,自动把 ...

  7. USB虚拟化和虚拟桌面USB重定向

    USB:通用串行总线,是一种外部总线的标准,用于规范主机与外设之间的连接与通讯,其数据传输速度快,支持热插拔,并具有兼容性和透明性,已成为当今个人电脑和大量智能设 备必配的接口.随着虚拟化技术的盛行和 ...

  8. linux串口重定向到usb串口,基于Linux的USB设备重定向研究

    第27卷第4期2008年12月武 汉 工 业 学 院 学 报 Journal of W uhan Polytechnic University Vol 127No 14Dec 12008 收稿日期:2 ...

  9. usb接口驱动_乾坤合一~Linux设备驱动之USB主机和设备驱动

    这一章从主机侧角度看到的USB 主机控制器驱动和设备驱动从主机侧的角度而言,需要编写的USB 驱动程序包括主机控制器驱动和设备驱动两类,USB 主机控制器驱动程序控制插入其中的USB 设备,而USB ...

最新文章

  1. 使用PCAST检测散度以比较GPU和CPU结果
  2. 为了爱情,吃掉150瓶“老干妈”的程序员
  3. webgl值得重视的基础构建
  4. 用户界面设计的技巧与技术 (作者Scott W.Ambler)
  5. git中常用命令小结
  6. flash和linux文件系统,面向大容量Flash的高效Linux文件系统改进和实现
  7. STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz
  8. 计算机运行卡英语怎么说,“芯片卡”英语怎么说
  9. 腾讯云数据库Redis助力百万企业远程办公
  10. SSH 协议端口号 22 背后的故事
  11. Rsync结合Inotify 实时同步配置
  12. ArGIS Engine专题(8)之利用GP监督分类最大似然法实现根据矢量样本和影像提取植被类型
  13. 大白菜超级U盘启动制作工具V2.0(网络增强版)
  14. 关于/var/run/docker.sock那些事儿
  15. 在CentOS7虚拟机中安装mysql5.7
  16. 微信小程序新版本提示更新
  17. Win系统 - 如何彻底删除文件 / 文件夹?
  18. 计算 某一天据今天有多少天
  19. C语言编程编制职工档案管理程序,c语言人事档案管理程序
  20. 计算机无法开机如何读u盘启动,电脑无法识别U盘启动盘怎么办?

热门文章

  1. 智能图像识别产品开发流程 OCR 图像识别
  2. 博途v17与winCC安装流程与踩坑记录
  3. 博客搭建十:hugo博客添加友链
  4. JavaScript实现拖拽上传 解析 APK 信息
  5. 1064:奥运奖牌计数
  6. 浅谈视觉外观检测系统中存在哪几大技术难点?
  7. Linux 通过uinput机制实现蜂鸣器驱动
  8. java 自定义json解析注解 复杂json解析 工具类
  9. 任务二:Crypto学习
  10. Java入门基础(十四)Maven仓库的安装