UsbViewer in C# Get some USB device information via C#. The project is a clone of the Microsoft usbview that is written in C. Usb hubs not supported. The Project is under the The GNU Lesser General Public License version 2.1 (LGPLv2.1).
....and this is how you fix it on x64 bit platforms. Change this line:- "deviceInterfaceDetailData.cbSize = 4 + Marshal.SystemDefaultCharSize; // trust me :)" to this:- "if (UIntPtr.Size == 8) deviceInterfaceDetailData.cbSize = 8; else deviceInterfaceDetailData.cbSize = (int)(4 + (uint)Marshal.SystemDefaultCharSize);" And this:- "public IntPtr DevInst;" To this:- "public Int32 DevInst;"
Works as advertised for x86 32bit platforms, but fails to find devices on x64. This is simply because the calls to the OS are not configured to account for size of pointers vs ints and the effect on structure size, etc. If you make a few patches, it works fine on x64.
Great code. It helped me a lot. If you compare the result with the usbview of Microsoft there you can encounter different USB controller order because Microsoft uses the DosDevice name order HCD # to enumerate the controllers but USBSharp uses symlink devicepath order.