Сообщение об ошибке «Интерфейс не заявлен» от libusb

Я пытаюсь использовать libusb, но получаю следующее сообщение об ошибке:

usbfs: процесс 24665 (моя программа) не заявлял интерфейс 0 перед использованием

Я не очень понимаю почему, потому что, насколько я могу судить, я делаю это по описанию, найденному в библиотеке. Вот мой код:

#include 
#include 
#include 

#include 

int main(void)
{
    int result;
    struct libusb_device_descriptor desc;
    libusb_device **list;
    libusb_device *my_device = NULL;

    result = libusb_init(NULL);
    libusb_set_debug(NULL, 3);

    ssize_t count = libusb_get_device_list(NULL, &list);
    for (int i = 0; i < count; i++) {
        libusb_device *device = list[i];
        result = libusb_get_device_descriptor(device, &desc);
        if((desc.idVendor == 0x03f0) && (desc.idProduct == 0x241d)) {
            my_device = device;
            break;
         }
    }

    if(my_device != NULL) {
        libusb_device_handle *handle;
        result = libusb_open(my_device, &handle);
        int kernelActive = libusb_kernel_driver_active(handle, 0);
        if(kernelActive == 1) {
            result = libusb_detach_kernel_driver(handle, 0);
        }
        result = libusb_claim_interface (handle, 0);
        result = libusb_control_transfer(handle,0x21,34,0x0003,0,NULL,0,0);
        result = libusb_release_interface (handle, 0);

        if(kernelActive == 1) {
          result = libusb_attach_kernel_driver(handle, 0);
        }
        libusb_close(handle);
    }
    libusb_free_device_list(list, 1);
    libusb_exit(NULL);
    return EXIT_SUCCESS;
}

Как видите, я запрашиваю интерфейс перед передачей. (Я попробовал тот же код и с другими USB-устройствами, на всякий случай, если это как-то связано с этим.)

Я использую libusb-1.0.9, последнюю версию, которую мне удалось найти. Я запускаю эту штуку на Ubuntu12.04_64 (Precise Pangolin).

9
задан Peter Mortensen 16 June 2013 в 21:12
поделиться