libusb无法在某些设备上获取字符串描述符

时间:2016-12-02 19:07:31

标签: c++ libusb

我正在尝试获取有关所有连接设备的信息。

这是我的代码:

libusb_device_descriptor desc;
libusb_config_descriptor *conDesc;
char szBuffer[256] = { 0 };
unsigned char strDesc[256];
libusb_device_handle *devHandle = NULL;
int retVal = 0;
__int64 i64Temp;
DWORD dwProdId;
DWORD dwProdId1;
i64Temp = 13888;
dwProdId = (DWORD)i64Temp;

retVal = libusb_open(dev, &devHandle);


int r = libusb_get_device_descriptor(dev, &desc);
if (r < 0)
{
    cout << "failed to get device descriptor" << endl;
    return;
}
r = libusb_get_config_descriptor(dev, 0, &conDesc);
printf("Interface Class = %d\n", conDesc->interface->altsetting->bInterfaceClass);
cout << "Number of possible configurations: " << (int)desc.bNumConfigurations << "" << endl;
cout << "Device Class: " << desc.bDeviceClass << endl;
cout << "Device Class: " << desc.bDeviceSubClass << endl;
printf("Class = %d\n", desc.bDeviceClass);
cout << "VendorID: " << desc.idVendor << endl;
cout << "ProductID: " << desc.idProduct << endl;
if (retVal == LIBUSB_SUCCESS)
{
    retVal = libusb_get_string_descriptor_ascii(devHandle, desc.iManufacturer, strDesc, 256);
    printf("Manufacturer: %s\n", strDesc);
    retVal = libusb_get_string_descriptor_ascii(devHandle, desc.iSerialNumber, strDesc, 256);
    printf("SerialNumber: %s\n", strDesc);
    retVal = libusb_get_string_descriptor_ascii(devHandle, desc.iProduct, strDesc, 256);
    printf("Product: %s\n", strDesc);
    printf("\n\n");
}
else if (retVal != LIBUSB_SUCCESS)
{
    printf("retVal failed");
    printf("\n\n");
}

我的代码知道有8台设备已连接,但只有两台设备才能获得制造商或序列号。我想获取所有连接设备的这些信息。

0 个答案:

没有答案