gpt4 book ai didi

c - 如何获得 USB iManufacturer 编号?

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:18 25 4
gpt4 key购买 nike

这是我的 C 代码:

int main()
{
struct usb_bus *busses, *bus;
usb_init();
usb_find_busses();
usb_find_devices();

busses = usb_get_busses();

for (bus = busses; bus; bus = bus->next)
{
struct usb_device *dev;

for (dev = bus->devices; dev; dev = dev->next)
{
struct usb_device_descriptor *desc;

desc = &(dev->descriptor);
printf("idVendor/idProduct ID: %2.2x : %2.2x\n",desc->idVendor,desc->idProduct);

if ((desc->idVendor == 0x2232) && (desc->idProduct == 0x6001))
{
printf("iManafacturer/iProduct ID: %04x :%04x \n",desc->iManufacturer,desc->iProduct);
//return dev;
}
}
}
system("pause");
return NULL;
}

编译代码(编译结果)后,我无法像USBView结果一样获取iManufacturer编号。我不知道如何像USBView显示的那样获取iManufacturer(例如NMGAAI00010200144W11111)。

我该怎么做?

Compile result USBView result

最佳答案

设备描述符的iManufacturer 字段是制造商的索引 string descriptor .该字符串是可选的,索引为 0 表示没有字符串。

如果你想要字符串,你可以使用static int libusb_get_string_descriptor()以任何可用语言或便捷方法获取 unicode 字符串 int libusb_get_string_descriptor_ascii()为您提供第一种可用语言的 C“字符串”。您首先需要一个 libusb_device_handle

没有任何错误检查的快速丑陋示例:

libusb_open(dev, &dev_handle);
unsigned char manufacturer[200];
libusb_get_string_descriptor_ascii(dev_handle, desc->iManufacturer,
manufacturer,200);
printf("%s \n", manufacturer);

在 0.1 中,there are similar methods usb_get_string() and usb_get_string_simple() .

关于c - 如何获得 USB iManufacturer 编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com