USB设备驱动开发之远程访问USB设备( 三 虚拟USB控制器和根集线器)

By Fanxiushu 2016-05-25 转载或引用请注明原始作者

接上文,
通过应用层程序发送 CreatePDO IOCTL命令到总线驱动,让总线驱动直接创建一个虚拟USB设备的PDO,所有发送到
这个PDO的URB请求最终被转发到应用层程序,由应用层程序通过网络转发到真正的USB设备端进行数据处理,
并且最终把处理的数据结果回传给总线驱动。
采用这样的工作模式的虚拟USB设备,因为缺少USB控制器和根集线器的支持,某些软件尤其是工作在底层的软件,
比如USBLyzer这样的USB抓包工具,再比如vmware虚拟机程序等是无法识别出我们的虚拟USB设备的。
而我实现远程访问USB设备的初衷就是为了能让vmware虚拟机识别出虚拟USB设备,
并且再次把虚拟USB设备成功转向到vmware的虚拟机系统里边去。
因此目标尚未没达到,还需继续努力,得让USB虚拟系统是个完善的USB设备栈。

于是通过Google全世界范围内搜索关于windows平台下USB设备栈的相关资料
(感谢Google强大的搜寻能力,尤其是对这些比较难查询的技术资料,国内的搜索引擎就显得捉襟见肘了)
通过查询资料,查看源代码,尤其是ReactOS的关于USB设备栈实现的源代码(也得感谢ReactOS提供的接近windows内核的源代码),
慢慢的理解了windows平台下USB设备栈的层次结构。
基本的层次结构其实在第一章介绍数据采集端的时候已经介绍过了。

电脑中存在基本的PCI总线,USB控制器(也即是某个芯片)通过PCI总线接入电脑。
电脑启动时候,PCI总线驱动会枚举到USB控制器,并且加载USB

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值