如何使用libusb获取特定于设备类的描述符

时间:2014-10-16 12:44:58

标签: c usb libusb

我正在使用libusb,我需要为我正在处理的硬件获取特定于设备类的描述符。

我没有找到任何可以帮助我的功能,有没有人知道如何做到这一点?

感谢。

2 个答案:

答案 0 :(得分:2)

我在检查获取类特定描述符的方法时遇到了同样的情况,并且看到这个问题没有得到解答。

libusb没有任何API或数据结构来检索特定于类的描述符。这可能是因为libusb仅用于解决基本的USB规范。要使用libusb获取特定于类的描述符详细信息,每个描述符中添加的字段很少。

字段:从libusb.h复制

/** Extra descriptors. If libusb encounters unknown endpoint descriptors,
 * it will store them here, should you wish to parse them. */
const unsigned char *extra;

/** Length of the extra descriptors, in bytes. */
int extra_length;

两者"额外"和" extra_length"添加在libusb_endpoint_descriptor,libusb_interface_descriptor,libusb_config_descriptor中。您必须根据类代码手动解码此内容(在配置级别或接口级别描述符)。

您可以参考usbutils包中的lsusb.c以更好地理解解码。

答案 1 :(得分:0)

如果libusb没有用于获取所需数据的专用函数,则应该能够使用libusb_control_transfer函数(或该函数的异步版本)来获取它。 USB描述符都是通过控制传输获取的,因此您可以使用该功能进行适当的控制传输。