Как libusb обнаруживает USB-устройство через горячее подключение в Windows?

Для исследования я заглянул в Libusb, чтобы увидеть, как делается хотлукинг. Для Linux я нашел соответствующий источник в libusb\os\linux_udev.c, где запускается поток, который выполняет poll() на udev. Однако, проведя часы в исходниках Libusb, я не могу понять, как делается горячее подключение в Windows.

В libusb\os\windows_winusb.c очевидно, что драйвер winusb используется для получения списка устройств (static int winusb_get_device_list(..)), но это не обязательно горячее подключение . Может ли кто-нибудь указать мне в правильном направлении?

Я использую usb4java (оболочку libusb Java) в своем проекте и могу отлично обнаружить событие присоединения/отсоединения, но я хочу знать, как это работает.


person mazi    schedule 06.02.2019    source источник


Ответы (1)


На всякий случай, если это кому-то понадобится. Я узнал, что, согласно форуму разработчиков libusb, это невозможно. В моем случае это было сделано с помощью оболочки java4usb, которая поддерживает горячее подключение благодаря API JavaX javax.usb.

person mazi    schedule 14.02.2019