PORTS Forum
Ports and Interfaces => USB => Topic started by: EddieSW on January 15, 2020, 01:40:03 am
-
Hi Jan,
May I learn the concept about libusb? After I search and study some articles about USB. I have several noob questions, please guide me.
1). Currently the hierarchy of USB system is listed as below, is it correct?
GUI application <-->WinUSB userspace driver(winusb.dll) <-->winusb kernel driver(winusb.sys) <--> usb interface <--> device usb driver
If we use the LibUSB ,
GUI application <-->LibUsb userspace driver <-->winusb kernel driver(winusb.sys) <--> usb interface <--> device usb driver
2). For LibUsb , there are 2 versions, one is LibUsb , another is LibUsbDotNet
I have downloaded the LibUsb source code from Github and it could be compiled successful and it's fine to run them in windows console. If we want to develop the application tool ( GUI tools or others) by using the Visual Studio C# , should I use the LibUsbDotNet?
thank you in advance
Eddie
-
Yes, that is the purpose of LibUsbDotNet.
-
Hi Jan,
Thanks, May I learn another question? The LibUsb calls the kernel code (winusb.sys)? Is it correct? Thanks
-
Yes, the documentation says
Currently it supports the WinUSB and HID drivers for generic USB device access as well as the libusb-win32 and libusbK drivers.
https://github.com/libusb/libusb/wiki/Windows
-
Hi Jan,
Thanks again. We are evaluating to capture the data from the USB audio device. It should use isochronous transfers, right?
After I checked the winusb wiki, there a sentence "Doesn't support isochronous transfers prior to Windows 8.1".
So if I want to use ischronous transfer on windows 7. Do we have another solution? It is possible to use the LibUsb and winusb.sys is able to solve this issue?
According to your experience, have you ever handled any projects which need to implement the windows USB driver of the user and kernel space?
thank you in advance,
Eddie
-
Yes, you will need a different solution to support isochronous previous to Windows 8.1. I would suggest looking into using the USB audio drivers.
https://docs.microsoft.com/en-us/windows/win32/directshow/audio-capture
https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/rendering-and-capturing-audio-content-by-using-the-usbaudio-driver
-
Hi Jan,
Thank you again. I will study your suggestion. May I learn another question?
There are 3 GUIDs , I google them from web and try to identify them,
1st: 4d1e55b2-f16f-11cf-88cb-001111000030 for USB HID interface, correct?
2nd: 745A17A0-74D3-11D0-B6FE-00A0C90F57DA for USB HID Device, correct?
3rd: F72FE0D4-CBCB-407d-8814-9ED673D0DD6B it looks like a interface GUID, what difference between 1st and 3rd ?
Note: I use your winusb_cs application tool to find my device, the ClassGUID of device information shows 745A17A0-74D3-11D0-B6FE-00A0C90F57DA , so my device is HID device , correct?
Note2: I think the winusb_cs uses the VID and PID to find the device, the setting of GUID interface won't effect the searching, correct?
thank you in advance,
Eddie
-
F72FE0D4-CBCB-407d-8814-9ED673D0DD6B it looks like a interface GUID, what difference between 1st and 3rd ?
https://github.com/pbatard/libwdi/issues/17
Also see
https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setup-classes-versus-interface-classes
yes to the others