http://blog.csdn.net/njuitjf/article/details/6292218

前面有篇文章,说到了如何获取USB设备的Descriptor。其中有一个步,通过调用CHcd类的成员变量m_pCRootHub(CRootHub)的GetDeviceList函数,来获取Root Hub上设备列表。此处的Root Hub是在什么地方被初始化的呢?

1、搜索代码发现,类CHcd中有一个成员函数SetRootHub,会给m_pCRootHub赋值。

2、类CEhcd的成员函数DeviceInitialize,会创建一个CRootHub类的对象,并将该对象作为参数,调用函数SetRootHub。

SetRootHub( new CRootHub( deviceInfo, FALSE,TRUE, usbHubDescriptor,this ));

类的继承关系:CEhcd -> CHW -> CHcd。

3、函数DeviceInitialize在HcdMdd_CreateHcdObject函数中被调用。HcdMdd_CreateHcdObject函数,首先调用CreateHCDObject函数创建HCD对象,然后调用该HCD对象的DeviceInitialize函数。

4、函数InitializeEHCI中调用了函数HcdMdd_CreateHcdObject。

5、函数HcdPdd_Init调用了函数InitializeEHCI。

6、函数HCD_Init调用了函数HcdPdd_Init。

7、函数OTG_Init中调用了函数HCD_Init。

HCD中Root Hub对象的初始化相关推荐

  1. C++中对string对象的初始化及赋值方式总结

    C++中对string对象的初始化及赋值方式总结 C++中的string对象是最常用的几种数据类型之一. 初始化string对象的方式有以下几种: string s1; //默认初始化,s1是一个空串 ...

  2. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  3. python中构造方法的名字,【填空题】Python提供了名称为 的构造方法,实现让类的对象完成初始化。...

    [填空题]Python提供了名称为 的构造方法,实现让类的对象完成初始化. 更多相关问题 如图是2012年元宵节灯展中一款五角星灯连续旋转闪烁所成的三个图形,照此规律闪烁,下一个呈现出来的图形是( 在 ...

  4. Spring中对象的初始化和销毁

    1.对象的初始化 public void init(){System.out.println("----User的初始化方法----");} 2.对象的销毁 public void ...

  5. 微信小程序js数组初始化_微信小程序开发之改变data中数组或对象的某一属性值...

    前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: {{item.we ...

  6. usb root hub的启用和设备的识别(1)

    usb root hub的启用和设备的识别(1) usb root hub的注册 如下顺序图所示: 这个过程中形成的数据结构如下图绿色圈中是usb_enumerate_device函数形成的数据结构. ...

  7. linux usb root hub,Linux下的USB HUB驱动

    Linux下的USB HUB驱动 [日期:2012-07-29] 来源:Linux社区 作者:zhengmeifu [字体:大 中 小] 接下来,就要对设备进行配置了,首先,将设备唤醒.回忆一下我们在 ...

  8. 【C++】利用构造函数对类对象进行初始化

    运行环境:VS2017 一.对象的初始化 每一个对象都应当在它建立之时就有就有确定的内容,否则就会失去对象的意义. class Time {int hour = 0;int min = 0;int s ...

  9. 深入分析ADO.NET中的DataSet对象

    ADO.NET是.net Framework SDK中用以操作数据库的类库的总称.而DataSet类则是ADO.NET中最核心的成员之一,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触 ...

最新文章

  1. C#中IList与List区别
  2. android 区分wifi是5G还是2.4G(转)
  3. Hyperledger fabric 1.0Beta网络组成及构建流程
  4. SSM-水果商城-导入项目-学习-2
  5. 查看电脑的s/n序列号信息方式
  6. String.getBytes()方法中的中文编码问题(转)
  7. swustoj堆排序算法(1015)
  8. 永久关闭WPS热点,防止自启动
  9. LM75AD温度传感器读写
  10. 计算机系统概论备考,《计算机系统导论》复习题3.doc
  11. H5手机搜索框的简单实现
  12. [讨论]日本地震对中国软件服务外包行业的影响分析(宏观)
  13. fork函数与vfork函数的区别
  14. 《游戏改变世界》改变了对游戏的认知
  15. 普通内存、ECC内存和REG ECC内存有什么不同?
  16. git merge 之后文件被删除
  17. iReport 设计介绍
  18. 如何用python获取和保存B站历史播放记录
  19. 深度学习二 —— 手撕激活函数(阶跃函数、sigmoid、tanh、ReLu、Leaky ReLu)
  20. 微信公众号jssdk 分享/App原生应用接入分享开发及应用场景

热门文章

  1. Python小辣鸡的逆袭第六章之字典
  2. 钉钉机器人JS代码实现
  3. 微信支付申请测试号 -- 填写接口配置信息提示配置失败
  4. 市场掀起新猜度:当代置业也要暴雷?
  5. codeforces 630K - Indivisibility
  6. vue3 - 获取QQ公开信息(头像,昵称,性别)
  7. Android激光投影3d效果,激光那些事③:影院看3D大片其实被坑?
  8. 微信摇一摇之获取设备与用户信息
  9. 留言板:简单的留言功能实现
  10. vue-vue2.0源码分析