我正在使用libusb,我需要为我正在处理的硬件获取特定于设备类的描述符。
我没有找到任何可以帮助我的功能,有没有人知道如何做到这一点?
感谢。
答案 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描述符都是通过控制传输获取的,因此您可以使用该功能进行适当的控制传输。