2013-10-19 56 views
1

读取配置数据(与在0x200 wValue GET_DESCRIPTOR操作)的信息我与描述符类型为0x22描述符块。我不知道它是什么。凡从USB设备找到定制USB描述符类型

描述块(紧跟接口描述符):14,22,00,01,13,81,1d,00,17,01,02,08,13,01,0c,00,0c,01,02,08

因此,任何人可以请让我知道它是什么,但更重要的是,我应该在哪里通常去寻找信息的自定义类型的描述,我将真的来临跨越其他一些描述符类型?

+0

的问题是真实的,信息是不是很知道有用。 –

+0

之前曾经低调提出过这个问题的人,要么是不了解USB,或者会造成滋扰。 –

回答

2

我想我已经记录究竟如何,我偶然发现了这样的解释,因为我花了相当长一段时间,并@KuldeepSinghDhaka帮助重新追查我的脚步的搜索路径。 USB规范有点偷偷摸摸,因为它有点不明显。

我使用USB 2.0 Spec供参考,在以后的版本中的部分数字可能不一致。

USB 2.0 Spec,仲9.4.3的为0x200 wValue装置请求是针对标准(或第一,0低字节),配置描述符(高字节0×2)

USB 2.0 Spec,仲9.5

如果类别或供应商特定描述符独立于配置信息或使用非标准格式,则可以使用指定类别或供应商特定描述符类型和索引的GetDescriptor()请求来检索描述符来自 设备。类或供应商规范将定义检索这些描述符的适当方式。

USB Common Class Specification says,秒3.11:

的bDescriptorType领域的最显著位保留供未来使用。 ... 接下来的两个bDescriptorType领域的最显著位被用来表示标准,阶级或 供应商特定的描述符。这些位使用与USB设备请求设置数据包的bmRequestType.Type字段相同的编码。因为bDescriptorType字段的高3位被用作如上所述 ,其可以为任何类别 (标准,类或设备特定的)来定义的唯一描述符的最大数目是32

下面是如何我解释了上述情况,并将其应用于我所看到的(某些M $)设备。

描述符类型具有定义的结构:

  • 位7:保留0
  • 位6 ..5:
    • 0:标准
    • 1:类
    • 2:供应商
    • 3:保留
  • 比特4..0:描述符ID

所以,描述符类型0x22表示:类特定描述符ID 2.

因此,一旦您看到非标准描述符类型,请检查它是否基于供应商,然后您将需要查找供应商文档。如果它是基于类的,那么检查接口(*)描述符的类。如果接口描述符使用标准类(例如HID),则查找相应的标准文档。如果接口描述符使用供应商类,那么需要供应商文档来了解描述符的内容。 (*)描述符可适用于设备或接口。我的理解是,如果描述符类型是基于类的,则它适用于基于其位置的设备或接口的类。

+0

您可以引用信息的来源(特别是描述符类型的位布局)。 –

+0

我很乐意阅读原始规格。请在答案中提及文件和相关部分的链接。 –

+0

如果文档和规格说明是真的,我会很惊讶。我从来没有读过任何描述描述符类型的位布局的文档。即时通讯等待... :)(即时通讯怀疑也..) –

0

尝试一些USB分析仪像USBVIEW,Ellysis视觉USB分析仪,它会为你清晰的疑虑