usb鼠标枚举过程深度解析(下)

转载 2012年03月22日 10:29:29

转载自:

http://blog.csdn.net/woshixingaaa/archive/2011/05/03/6387626.aspx

Transfer5,Transfer6,Transfer7是获得字符串描述符的传输过程。Transfer5是为了获得0号字符串描述符,Transfer6是为了获得2号字符串描述符,Transfer7是为了获得1号字符串描述符。

Transfer5:

现在来分析Transfer5的SETUP Transaction的DATA包的Data域,80表示传输方向从device到host,06表示请求为GET_DESCRIPTOR,03表示描述符的类型为STRING,由于不知道描述符的长度是多少所以用了长度256字节。Transaction24的DATA包中0x04表示0号描述符的长度为4个字节,0x03表示的是描述符的类型,即STRING,0x0409表示的是Language ID,Transaction25一个状态阶段结束了对0号描述符的获取。

Transfer6:

Transfer6作用是获取2号描述符,80表示传输方向从device到host,06表示请求为GET_DESCRIPTOR,USB spec Table 9-2 Format of Setup Data中,wValue由两部分组成,wValue的高位字节表示描述符的类型,低位字节表示描述符的序号。所以03表示STRING,02表示index为2的字符串描述符。wIndex对应字符串描述符应该设置使用的语言ID,所以这里为0x0409,就是在Transfer5中获得的那个。然后是0xff,因为不知道描述符的长度所以用256字节。Transaction27,28,29,30,31的作用就是device向host发送字符串描述符。如下两张图,0号字符串描述符和其他非0号的字符串描述符的格式是不一样的。0号描述符包括了设备所支持的所有语言的ID。

 

非0号的字符串描述符的第一个字节和第二个字节分别表示这个描述符的长度和描述符的类型。Transaction27的DATA包的Data域的第一个字节为0x24,十进制36,所以index为2的描述符长度是36个字节,大家可以数一下,从Transaction27~Transaction31中一共有36个字节的。

Transfer7:

同理,Transfer7获得了index为1的字符串描述符。

Transfer8:

Transfer8主要的作用是设置配置,使USB从Address状态进入Configured状态。00表示从host到device,09表示SET_CONFIGURATION,在Address时bConfigurationValue的值为0,所以这里设为大于0,则USB进入Configured状态,如果SET_CONFIGURATION传得参数是0则仍然是Address状态。这里为01。

Transfer9:

Transfer9好像也没干成什么事,这个废物,哈哈。

Transfer10是获得HID描述符。

Transfer11,12是枚举成功后,两次host与device之间传输数据。这里只截了部分图。Host每个bInterval这么多时间就对device查询一下,看有没有数据要传,比如有没有键子被按下。每次都是,host向device发送一个IN令牌包,如果没有数据,device就回一个NAK。

Transfer11:

Transfer12:


实例抓包分析USB鼠标枚举数据流 .

USB Monitor的高版本太复杂了,都不会用,这里还是使用2.5的老版本. 新建session,选择新插入的HID鼠标开始抓包,拔掉鼠标,清空记录,再次插入鼠标,现在就抓到了USB鼠标枚举数据流...
  • Luohsh1
  • Luohsh1
  • 2013年07月18日 23:03
  • 5073

SetUpDi系列函数获取系统设备信息

1  SetupDiGetClassDevs函数 The SetupDiGetClassDevs function returns a handle to a device information ...

usb鼠标枚举过程深度解析(中)

转载自: http://blog.csdn.net/woshixingaaa/archive/2011/05/03/6387488.aspx Transfer3:     Tra...
  • sun_x_t
  • sun_x_t
  • 2012年03月22日 10:25
  • 1267

USB枚举过程介绍.pdf

  • 2010年05月26日 21:42
  • 107KB
  • 下载

USB枚举过程详细分析

  • 2017年02月10日 17:14
  • 214KB
  • 下载

usb枚举过程 enumeration 流程说明

先转载一篇关于usb enumeration不错的文章。 USB枚举过程 USB Enumeration     USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interr...
  • a_jige
  • a_jige
  • 2013年10月14日 15:48
  • 1531

USB枚举过程图解

  • 2014年07月17日 23:09
  • 1.2MB
  • 下载

USB枚举过程

  • 2013年11月21日 17:32
  • 962KB
  • 下载

linux usb枚举过程分析

usb hub 枚举
  • taosera
  • taosera
  • 2016年01月15日 10:34
  • 696

实例讲解USB的枚举(配置)过程

  • 2013年07月10日 13:31
  • 1.09MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:usb鼠标枚举过程深度解析(下)
举报原因:
原因补充:

(最多只允许输入30个字)