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

C 如何使用libusb获取特定于设备类的描述符,c,usb,libusb,C,Usb,Libusb,我正在使用libusb,我需要为我正在使用的硬件获取特定于设备类的描述符 我没有找到任何可以帮助我的函数,有人知道怎么做吗 谢谢。我在检查获取特定于类的描述符的方法时遇到了同样的情况,发现这个问题没有答案 libusb没有任何API或数据结构来检索特定于类的描述符。这可能是因为libusb的设计只是为了满足基本的USB规范。要使用libusb获取特定于类的描述符详细信息,每个描述符中添加的额外字段很少 字段:从libusb.h复制 /** Extra descriptors. If libusb

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

我没有找到任何可以帮助我的函数,有人知道怎么做吗


谢谢。

我在检查获取特定于类的描述符的方法时遇到了同样的情况,发现这个问题没有答案

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;
在libusb_端点_描述符、libusb_接口_描述符、libusb_配置_描述符中添加了“extra”和“extra_length”。您必须根据类代码(在配置级别或接口级别描述符)手动解码此内容


您可以参考usbutils软件包以更好地理解解码。

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

您是否参考了这里的libusb文档->?我认为有一个函数
int libusb\u get\u device\u descriptor(libusb\u device*dev,struct libusb\u device\u descriptor*desc)
可以解决您的问题。预期的输出是什么?我也看到了该函数,但它返回一个表示标准USB设备描述符的结构,它没有与我正在处理的硬件相关的信息。请阅读此->您能更具体一点吗?我已经读过很多次了。