RNDIS设备开发

RNDIS是基于NDIS实现的远程共享网络设备,通过USB接口实现数据通信、网络连接。
USB协议规定,一个USB设备只能有一个设备描述符,一个设备描述符可以有多个配置描述符,一个配置下可以有多个接口,一个接口下可以有多个端点。
通过对描述符进行配置,可实现复合设备和组合设备这些复杂功能,复合设备指多个设备枚举为一台设备,组合设备指一个设备枚举为多台设备
接下来正文
本人最近主要研究组合设备,先写组合设备设计。

  1. 一个配置,两个接口,第一个接口前使用IAD描述符表明该配置有几个接口,以便接口间关联;
  2. 第一个接口配置一个中断端点,类-子类-协议(E0 01 03),表示Remote NDIS设备
  3. 第二个接口配置一对通信端点,类-子类-协议(0A 00 00)
  4. 如此配置,USB设备运行后,在电脑已经可以识别出来RNDIS设备了,但这只是披了张皮。通过usb抓包工具观察枚举过程可以发现,在主机下发0x21类型的控制消息之后枚举过程就停止了,设备也将被主机标记为问题设备。
  5. 之后,需要在0x21的控制数据包中解析出长度,此长度代表接下来主机OUT的长度,根据此长度使用控制端点(OUT)接收数据,并通过控制端点(IN)回应心跳包(0x01,0x00,0x00x00,0x00,0x00,0x00,0x00)。
  6. 现在开始,我们进行的数据交互都要符合RNDIS协议,将刚接收到的长度为0x18的数据按照RNDIS初始化协议进行解析。
  7. 在接收到0xA1类型的控制信息后,将主机请求的信息按照RNDIS协议定义的数据格式通过控制端点(IN)进行回复,至此完成第一次交互。
  8. 还是移植一个RNDIS协议栈吧(这部分工作是同事完成的)

RNDIS设备开发手记相关推荐

  1. w ndows连接USB不正常,Raspberry Pi Zero W 连接电脑 – 针对Windows 10 缺少RNDIS驱动

    在网上有很多关于Raspberry Pi Zero连接电脑的帖子,但是发现在windows 10 系统上发现没有发现RNDIS 驱动,这个驱动在其他系统上会自动安装,但是在windows 10 上显示 ...

  2. AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同

    X86汇编语言学习手记(3) 2004年12月 在X86汇编语言学习手记(1)(2)中,可以看到栈(Stack)作为进程执行过程中数据的临时存储区域,通常包含如下几类数据: 局部变量 函数调用的返回地 ...

  3. 结巴分词和自然语言处理HanLP处理手记

    手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...

  4. 大叔手记(17):大叔2011年读过的书及2012年即将要读的书

    前言 2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读 ...

  5. webpack入门学习手记(一)

    本人微信公众号:前端修炼之路,欢迎关注. 之前用过gulp.grunt,但是一直没有学习过webpack.这两天刚好有时间,学习了下webpack.webpack要想深入研究,配置的东西比较多,网上的 ...

  6. 【手记】解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题

    [手记]解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题 参考文章: (1)[手记]解决启动S ...

  7. ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决

    ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决 参考文章: (1)ELK菜鸟手记 (三) - X-Pack权 ...

  8. Cheat Engine Tutorial 闯关手记

    Cheat Engine Tutorial 闯关手记 第一关 Cheat Engine 能做什么?修改游戏的数值,就象<金山游侠V>,但它能胜任动态地址的查找:制作游戏专用的修改器,补丁, ...

  9. 前台提示_住哲随手记:前台工作备忘录,记你想记的所有事

    酒店前台每天需要手写记录大量的代办事项,如上午10点101房间叫早,3号提醒客人续住等.但是由于前台工作琐碎,交接班的时候会发生交接事项遗漏的情况,导致对客服务疏忽,很容易造成客人差评. 请收下小哲的 ...

最新文章

  1. Spring Boot + thymeleaf 实现文件上传下载
  2. IE8下submit表单没反应
  3. mysql 存储过程cursor_MySQL 的存储过程写法和Cursor的使用
  4. python mysqldb 查询不到最新记录_python – MySQLdb是否缓存SELECT结果?
  5. php默认语法,php语法基本规则
  6. IT人不要一辈子靠技术生存(转)
  7. java 调用枚举种方法_Java中枚举类型的一种使用方式
  8. CSS3 制作魔方 - 相关立体样式
  9. python通用编码_python2.7的编码的常见解决方案.md
  10. C语言之避免编译警告:unused用法(七)
  11. springmvc07 Json处理
  12. c语言函数调用费波那楔数列,【算法】费波那契数列算法
  13. SqlDataReader 之指定转换无效
  14. android 之手机客户端登陆
  15. 休闲零食生产企业如何做好供应链管理?
  16. contains( )方法
  17. 手机共享电脑网络上网
  18. 零基础入门MATLAB(一篇十分钟)
  19. Android APP架构设计——MVP的使用示例
  20. easyexcel 复杂表头、动态表头、复杂数据导出(非注解方式)

热门文章

  1. 都2020年了,你还没有用过这款文字转语音软件吗?
  2. 【源码】渐开线齿轮的MATLAB几何计算程序gearsInMesh
  3. SAP付款并清账F-51 或 F-53
  4. android 隐私伪装原理,加锁、隐藏和伪装!三招严防私密App被偷看
  5. 数值分析期末复习(定积分)
  6. 利用requests库爬取搜狗图片并存入文件夹下
  7. 清新淡雅几何简约工作汇报PPT模板-优页文档
  8. 正定县2008年下半年投资73亿新开工项目
  9. vue项目引入容联七陌客服系统(qimoChatClick点击事件的使用)
  10. 解题1953 World Cup Noise