Как проверить, подключен ли драйвер ядра к libusb-0.1?

В libusb-1.0 для этого можно использовать libusb_kernel_driver_active:

if (libusb_kernel_driver_active(dev_handle, 0) == 1) { //find out if kernel driver is attached
        cout<<"Kernel Driver Active"<<endl;
        if(libusb_detach_kernel_driver(dev_handle, 0) == 0) //detach it
            cout<<"Kernel Driver Detached!"<<endl;
    }

Как это проверить с помощью libusb-0.1?


person 4ntoine    schedule 31.07.2013    source источник


Ответы (1)


для libusb-compat вы можете использовать usb_get_driver_np:

API_EXPORTED int usb_get_driver_np(usb_dev_handle *dev, int interface,
    char *name, unsigned int namelen)
{
    int r = libusb_kernel_driver_active(dev->handle, interface);
    if (r == 1) {
        /* libusb-1.0 doesn't expose driver name, so fill in a dummy value */
        snprintf(name, namelen, "dummy");
        return 0;
    } else if (r == 0) {
        return -(errno=ENODATA);
    } else {
        return compat_err(r);
    }
}
person 4ntoine    schedule 31.07.2013
comment
И, я полагаю, вы всегда должны проверять [это][1]libusb.sourceforge.net/doc /functions.html, прежде чем ломать голову над тем, что касается libusb-0.1. Всегда хорошо попробовать все, что можно, а потом отправиться в такие места, как SO. Это поможет вам в решении ваших проблем самостоятельно. Несмотря на то, что вы пробовали то, что вы знаете, если вы не можете пройти, добро пожаловать в SO! - person ; 02.08.2013