RNDIS设备开发手记
RNDIS设备开发
RNDIS是基于NDIS实现的远程共享网络设备,通过USB接口实现数据通信、网络连接。
USB协议规定,一个USB设备只能有一个设备描述符,一个设备描述符可以有多个配置描述符,一个配置下可以有多个接口,一个接口下可以有多个端点。
通过对描述符进行配置,可实现复合设备和组合设备这些复杂功能,复合设备指多个设备枚举为一台设备,组合设备指一个设备枚举为多台设备
接下来正文
本人最近主要研究组合设备,先写组合设备设计。
- 一个配置,两个接口,第一个接口前使用IAD描述符表明该配置有几个接口,以便接口间关联;
- 第一个接口配置一个中断端点,类-子类-协议(E0 01 03),表示Remote NDIS设备
- 第二个接口配置一对通信端点,类-子类-协议(0A 00 00)
- 如此配置,USB设备运行后,在电脑已经可以识别出来RNDIS设备了,但这只是披了张皮。通过usb抓包工具观察枚举过程可以发现,在主机下发0x21类型的控制消息之后枚举过程就停止了,设备也将被主机标记为问题设备。
- 之后,需要在0x21的控制数据包中解析出长度,此长度代表接下来主机OUT的长度,根据此长度使用控制端点(OUT)接收数据,并通过控制端点(IN)回应心跳包(0x01,0x00,0x00x00,0x00,0x00,0x00,0x00)。
- 现在开始,我们进行的数据交互都要符合RNDIS协议,将刚接收到的长度为0x18的数据按照RNDIS初始化协议进行解析。
- 在接收到0xA1类型的控制信息后,将主机请求的信息按照RNDIS协议定义的数据格式通过控制端点(IN)进行回复,至此完成第一次交互。
- 还是移植一个RNDIS协议栈吧(这部分工作是同事完成的)
RNDIS设备开发手记相关推荐
- w ndows连接USB不正常,Raspberry Pi Zero W 连接电脑 – 针对Windows 10 缺少RNDIS驱动
在网上有很多关于Raspberry Pi Zero连接电脑的帖子,但是发现在windows 10 系统上发现没有发现RNDIS 驱动,这个驱动在其他系统上会自动安装,但是在windows 10 上显示 ...
- AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同
X86汇编语言学习手记(3) 2004年12月 在X86汇编语言学习手记(1)(2)中,可以看到栈(Stack)作为进程执行过程中数据的临时存储区域,通常包含如下几类数据: 局部变量 函数调用的返回地 ...
- 结巴分词和自然语言处理HanLP处理手记
手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...
- 大叔手记(17):大叔2011年读过的书及2012年即将要读的书
前言 2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读 ...
- webpack入门学习手记(一)
本人微信公众号:前端修炼之路,欢迎关注. 之前用过gulp.grunt,但是一直没有学习过webpack.这两天刚好有时间,学习了下webpack.webpack要想深入研究,配置的东西比较多,网上的 ...
- 【手记】解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题
[手记]解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题 参考文章: (1)[手记]解决启动S ...
- ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决
ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决 参考文章: (1)ELK菜鸟手记 (三) - X-Pack权 ...
- Cheat Engine Tutorial 闯关手记
Cheat Engine Tutorial 闯关手记 第一关 Cheat Engine 能做什么?修改游戏的数值,就象<金山游侠V>,但它能胜任动态地址的查找:制作游戏专用的修改器,补丁, ...
- 前台提示_住哲随手记:前台工作备忘录,记你想记的所有事
酒店前台每天需要手写记录大量的代办事项,如上午10点101房间叫早,3号提醒客人续住等.但是由于前台工作琐碎,交接班的时候会发生交接事项遗漏的情况,导致对客服务疏忽,很容易造成客人差评. 请收下小哲的 ...
最新文章
- Spring Boot + thymeleaf 实现文件上传下载
- IE8下submit表单没反应
- mysql 存储过程cursor_MySQL 的存储过程写法和Cursor的使用
- python mysqldb 查询不到最新记录_python – MySQLdb是否缓存SELECT结果?
- php默认语法,php语法基本规则
- IT人不要一辈子靠技术生存(转)
- java 调用枚举种方法_Java中枚举类型的一种使用方式
- CSS3 制作魔方 - 相关立体样式
- python通用编码_python2.7的编码的常见解决方案.md
- C语言之避免编译警告:unused用法(七)
- springmvc07 Json处理
- c语言函数调用费波那楔数列,【算法】费波那契数列算法
- SqlDataReader 之指定转换无效
- android 之手机客户端登陆
- 休闲零食生产企业如何做好供应链管理?
- contains( )方法
- 手机共享电脑网络上网
- 零基础入门MATLAB(一篇十分钟)
- Android APP架构设计——MVP的使用示例
- easyexcel 复杂表头、动态表头、复杂数据导出(非注解方式)