Hi,

I wanted to use libusb-win32 as driver for libusb-1.0 so I used Zadig
to change the driver for the device from WinUSB to libusb-win32.
However doing just this would fail. For instance xusb was not able to
read the description strings. The logs were saying something like:

libusbx: debug [libusb_open] open 2.6
libusbx: debug [libusb_claim_interface] interface 0
libusbx: error [winusbx_claim_interface] failed to Initialize at line
2685 [message added by Tormod]
libusbx: error [winusbx_claim_interface] could not access interface 0:
[0] The operation completed successfully.
libusbx: debug [libusb_claim_interface] interface 1
libusbx: warning [winusbx_claim_interface] auto-claimed interface 0
(required to claim 1 with WinUSB)
libusbx: error [winusbx_claim_interface] could not claim interface 1:
[6] The handle is invalid.
libusbx: debug [libusb_claim_interface] interface 2
libusbx: warning [winusbx_claim_interface] auto-claimed interface 0
(required to claim 2 with WinUSB)
libusbx: error [winusbx_claim_interface] could not claim interface 2:
[6] The handle is invalid.
...
[and so on counting interfaces up to 31]
...
libusbx: error [auto_claim] could not auto-claim any interface

So I looked through the claim_interface and auto-claim code, and I
could narrow it down to the Initialize call at
libusb/os/windows_usb.c:2685 but did not get much further.

Now after reading the fine print in the commit message
https://github.com/libusbx/libusbx/commit/f2b19e4a32c1445f4fea06beca61e8c7e7757950
"Both libusbk and libusb0.sys rely on libusbk.dll being installed to
provides a WinUSB-like API for driver access." I figured I should try
again making sure libusbk.dll is installed. So I used Zadig to install
libusbK for the device, then switched back to libusb-win32 again. And
now it worked. So

1) I think it should be better documented that the libusb-win32 driver
backend either uses the libusbK or WinUSB driver and does not function
with libusb-win32 alone. Although I am not sure I understand this
correctly, libusb-win32 is also a "driver" that can access devices
without the help of libusbK or WinUSB, right?

2) The same commit message says "In case libusbk.dll is not present,
fall back to WinUSB". Apparently, this path did not work in my case.
Have I found a bug or am I missing something?

Anyway, avoiding the limitations of WinUSB (in particular the
inability to send a reset command) is my motivation for using
libusb-win32 so I am not directly concerned about (2). But just to
understand this better, what is the possible advantage of using the
libusb-win32 driver backend going via the WinUSB driver as opposed to
using the WinUSB driver backend directly? The "filter" facility? Is
the libusb-win32 driver accessing the device through WinUSB or does it
just need some "help" from WinUSB? Of course, a nice graphical
presentation of the Windows driver layering would be very welcome :)

Best regards,
Tormod

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
libusbx-devel mailing list
libusbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusbx-devel

Reply via email to