Chuck Gannon | 23 Apr 19:01 2014

Problem using LibUsnDotNet C# USB Library

If I disconnect our USB device and then quickly reconnect, then wait a few seconds, I get an exception in OverlappedTransferContext on line 97:

 

bSuccess = EndpointBase.mUsbApi.GetOverlappedResult(EndpointBase.Handle, Overlapped.GlobalOverlapped, out transferredCount, true);

 

It is always for the UsbEndPointWriter and the EndPointBaseHandle is already closed.  I have attempted this with r113 and I get the same results.

So I am suspecting I am not using this interface correctly.

Our code does the following to open our device:

      private bool OpenDevice()

      {

         int usbDeviceIndex = -1;

         bool usbDeviceFound = false;

         bool bRtn = false;

 

         _mRegDevices = UsbDevice.AllDevices;

 

         foreach (UsbRegistry regDevice in _mRegDevices)

         {

            usbDeviceIndex++;

 

            if ((regDevice.Vid == _bandVid) && (regDevice.Pid == _bandPid))

            {

               usbDeviceFound = true;

               break;

            }

         }

 

         if (usbDeviceFound)

         {

            if (_mRegDevices[usbDeviceIndex].Open(out _mUsbDevice))

            {

               IUsbDevice wholeUsbDevice = _mUsbDevice as IUsbDevice;

               if (!ReferenceEquals(wholeUsbDevice, null))

               {

                  wholeUsbDevice.SetConfiguration(1);

 

                  wholeUsbDevice.ClaimInterface(0);

               }

 

               _mEpReader = _mUsbDevice.OpenEndpointReader((ReadEndpointID)(_readEndpointID));

               _mEpWriter = _mUsbDevice.OpenEndpointWriter((WriteEndpointID)(_writeEndpointID));

 

               _mEpReader.Flush();

               bRtn = true;

            }

         }

 

         return bRtn;

      }

 

Then we use the Write method (on the UsbEndPointWriter) to send a request for data followed by a Read (on the UsbEndPointReader) to read back data

(there are 3 different data messages we can read back)

 

      private ErrRtn PollForData(out ErrorCode usbErr)

      {

         ErrRtn error = ErrRtn.ERROK;

         int bytesReadCount;

         int uiTransmitted;

 

         byte[] bytesRead = new byte[structsize];

 

         usbErr = _mEpWriter.Write(_usbGetJamCmd, _usbWriteTimeOutMs, out uiTransmitted);

         if (usbErr == ErrorCode.None)

         {

            usbErr = _mEpReader.Read(bytesRead, _usbReadTimeOutMs, out bytesReadCount);

            if (usbErr == ErrorCode.None)

            {

               // process data

            }

            else if (usbErr == ErrorCode.IoTimedOut)

            {

               DoCommFailed(usbErr);

            }

            else if (usbErr == ErrorCode.Win32Error)

            {

               UsbDisconnected();

            }

            else

            {

              UsbError(usbErr);

            }

         }

         else if (usbErr == ErrorCode.IoTimedOut)

         {

            DoCommFailed(usbErr);

         }

         else if (usbErr == ErrorCode.Win32Error)

         {

            UsbDisconnected();

         }

         else

         {

            UsbError(usbErr);

         }

         return error;

      }

 

This code is running on timer and continues to send Write/Read requests as long as the USB device is connected.

 

If a disconnect is detected, the device is closed and the timer then keeps checking (~every second) to see if the device has
become available again.

So, should we be using Write followed by Read, or is there any other cleanup that should occur when we
detect that the USB device is no longer connected. Thanks.

------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
Pradeepa Senanayake | 22 Apr 11:27 2014
Picon

libusb0.sys driver signing clarification

Hello all,

I'm using libusb-win32 for one of the projects that I'm currently involved in. I'm working on Windows 7 machine as well as on Windows 8.1 machine. 

I used the 'inf-wizard' to generate the inf file for the driver. I used the inf file to try installing the driver in both Win7 and Win8.1. 

In Windows 7 machine I can install the driver by ignoring the warning the operating system gives. But in Windows 8.1 I cannot install the driver at all, it fails telling that the driver is not signed. 

Then I used Zadig to generate the related files. I noticed that a '.cat' file is also generated through Zadig. I tried this on Win8.1 and I extracted the driver files and installed the driver manually and flawlessly, without the driver signature error as well. 

But when I used those files (with cat file) on windows 7 machine it still gave the unsigned driver issue. 

Then I generated the cat file in windows 7 and istalled the driver use that package and i did not get the driver signature error. But those files do not work in Win8.1 environment or any other machine with Win7 installed.

The questions I have is,

1). Is there any way to avoid driver unsigned warning?
2). Is the '.cat' file generated through Zadig for only one machine?
3). Is there any way to install the libusb-win32 driver on more than one machines, using same set of files (In windows 7 and windows 8.1)?
4). If we want to use this driver for our clients do we need to sign it as well?

Thank you,

Best Regards,
Pradeepa Senanayake.
------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
Ken Schultz | 21 Apr 21:37 2014

Libusbdotnet driver installer executable

I have built an inf file with the inf wizard that comes with libusbdotnet. 
This works great when I install a new device to a system, I just point to
the inf file which just installs the libusb.sys and dll.  (I an not
installing any other dlls).  But I am getting ready to install this on 50
machines and would just like to run an exe or run a batch file on the
machine when its built which would install the dlls in the inf file and the
setup all of the links so that when a user plugs in the usb device, the
windows 7 (32 bit) machine automatically knows what the dlls are and where
to find them.  How do I do this?

Ken

--
View this message in context: http://libusb.6.n5.nabble.com/Libusbdotnet-driver-installer-executable-tp5713187.html
Sent from the LibUSB Dev - Win32 mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
Ekkehard | 17 Apr 12:22 2014

libusbK 64bit OS struct size

We are upon to use libusK with native 64 Delphi application, thus updating
the pascal "bindings".
My question is about the sizes of the structs
in libusbk.h is defined
typedef struct _KUSB_DRIVER_API
{
[...]

	//! fixed structure padding.
	UCHAR z_F_i_x_e_d[512 - sizeof(KUSB_DRIVER_API_INFO) -  sizeof(UINT_PTR) *
KUSB_FNID_COUNT];

} KUSB_DRIVER_API;
typedef KUSB_DRIVER_API* PKUSB_DRIVER_API;
C_ASSERT(sizeof(KUSB_DRIVER_API) == 512);

My question is 
- does the 512 bytes overall size is the same in 32bit and 64bit version
- is UCHAR 8bit or 16bit
- is sizeof(UINT_PTR) 8 bytes or 4 bytes

I am asking sinze the struct size differs, while compiled with 64 bit Delphi
compiler.

Greetings Ekkehard

--
View this message in context: http://libusb.6.n5.nabble.com/libusbK-64bit-OS-struct-size-tp5713177.html
Sent from the LibUSB Dev - Win32 mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
Travis | 16 Apr 15:42 2014
Picon

KMCS Donations complete

Greetings,

I happy to announce that the donation drive is over; we have exceeded 
our goal. Donations are officially closed.

I'll tally up the results and post them in the next few days.  We have 
purchased a 3 year certificate from DigiCert.

Thanks for all your support!

Regards,
Travis

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
Travis | 14 Apr 03:43 2014
Picon

libusbK 3.0.6.15 Released

Greetings,

A new libusbK release candidate is available here:
https://sourceforge.net/projects/libusbk/files/libusbK-beta/3.0.6.15/

Please test and report any problems.  I would like to push an official 
release sometime before the 20th (4/20/14).

Regards,
Travis

V3.0.6.15 RC15 (04/13/2014)
==============================================
- Fixed hot-plug init issue which caused a failure after re-loading
   libusbK.dll dynamically. (Reported By Stefan Battmer)

- Fixed BSOD if a device is removed while changing an interfaces alternate
   Setting. (Reported By Matt Liberty)

- Fixed GetCurrentAlternateSetting issues which caused the device to close
   upon return.

Regards,
Travis

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
Ed Pataky | 14 Apr 00:06 2014
Picon

msp430 5529

hi, i was trying to use libusb with the mspgcc and eclipse toolset .. i had many issues over a few days .. all compiled, but would not work .. i installed IAR, worked instantly .. i am going to use IAR .. .the issue is, the board is dead .. i cannot uninstall the libusb driver .. when i try, it says timeout ... can someone help me please uninstall this driver ... windows 8.1

here is before uninstall:  http://prntscr.com/39qqj7

when it fails it says operation timed out

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
Matt Liberty | 12 Apr 19:30 2014

libusbk WDF_Violation (BSoD) if device removed during UsbK_SetCurrentAlternateSetting

Travis,

I pulled together a minimal example which demonstrates this issue with my device.  You can find the project at https://github.com/mliberty1/libusbk_examples.  I also published a 0.1.0 release that is already built using Visual Studio 2013 for x64.  

Thanks for your recommendation to isolate ISO streaming from SetCurrentAlternateSetting.  Using this libusbk_examples altsetting.exe, I have found that the WDF_Violation/BSoD occurs when just calling SetCurrentAlternateSetting without starting any ISO streaming, and it does not even need to be switching from an alternate setting that contains an ISO IN endpoint.  I am able to replicate this fault very easily on my Windows 8.1 x64 machine and on another Windows 7 x64 machine.  You can view my device descriptor at:

The windbg output for the faults on the two machines are under:

By default, running altsetting.exe will find the first alternate setting with an isochronous IN endpoint and repeatedly switch between that alternate setting and 0.  You can also explicitly specify a different alternate setting like so:
altsetting.exe --altsetting 1

Hopefully you are able to replicate this result easily using another device.  Please let me know if you have any questions or run into any issues with the libusbk_examples project.  I likely will not have another chance to spend significant time on this until Tuesday.  Unless you have other recommendations, my next step will be to create a really stripped down device with just two empty altsettings and see if I can still repeat this failure.

Thanks and have a great weekend!

   - Matt


------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
Matt Liberty | 11 Apr 23:31 2014

libusbk WDF_Violation (BSoD) if device removed during UsbK_SetCurrentAlternateSetting

Greetings,

First, thanks for creating the excellent libusbk driver and library.  I have been successfully using libusbk to convey bulk and isochronous data, and it works great!  The fact that I have gone from nothing to a working USB device without joining this list earlier is a testament to the solid design, good documentation and great examples.

I think that I may have stumbled onto a corner case when the alternate interface setting is changing while the device is being removed.  I have noticed that my PC can take up to 500 milliseconds to perform UsbK_SetCurrentAlternateSetting just after stopping isochronous data streaming.  Some PCs are much faster, like 20 milliseconds.  If the device is removed during the user-space call to UsbK_SetCurrentAlternateSetting, I usually get a WDF_violation on Windows 8 & 8.1, and a Blue Screen of Death on Windows 7.  The output from WinDbg is attached below.  

Should libusbk.sys be validating the handle before calling imp_WdfIoTargetStart?  This seems like a dangerous race condition that should be handled by Windows, but I have never done Windows driver development before.  Any recommendations on how I can address this issue?  

Thanks!  I also saw your request for donations, and I am happy to add $100 to support libusbk.

   - Matt


*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 10D, {5, 1ffff49bafd8, 1200, ffffe0000b253e20}

Probably caused by : libusbK.sys ( libusbK!Pipe_InitContext+cb )

Followup: MachineOwner
---------

2: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

WDF_VIOLATION (10d)
The Kernel-Mode Driver Framework was notified that Windows detected an error
in a framework-based driver. In general, the dump file will yield additional
information about the driver that caused this bug check.
Arguments:
Arg1: 0000000000000005, A framework object handle of the incorrect type was passed to
a framework object method.
Arg2: 00001ffff49bafd8, The handle value passed in.
Arg3: 0000000000001200, Reserved.
Arg4: ffffe0000b253e20, Reserved.

Debugging Details:
------------------


BUGCHECK_STR:  0x10D_5

CUSTOMER_CRASH_COUNT:  1

DEFAULT_BUCKET_ID:  WIN8_DRIVER_FAULT

PROCESS_NAME:  stream.exe

CURRENT_IRQL:  0

ANALYSIS_VERSION: 6.3.9600.17029 (debuggers(dbg).140219-1702) amd64fre

LAST_CONTROL_TRANSFER:  from fffff80000358caa to fffff802eeb52ca0

STACK_TEXT:  
ffffd000`3a4d91b8 fffff800`00358caa : 00000000`0000010d 00000000`00000005 00001fff`f49bafd8 00000000`00001200 : nt!KeBugCheckEx
ffffd000`3a4d91c0 fffff800`0032b673 : ffffe000`0b645020 ffffe000`0ba742f0 00001fff`f49bafd8 fffff800`0036f8d5 : Wdf01000!FxVerifierBugCheck+0x1e
ffffd000`3a4d9200 fffff800`00361039 : 00001fff`f49bafd8 00001fff`ff560458 00000000`7562696c fffff800`00366aef : Wdf01000!FxObjectHandleGetPtrQI+0x3c927
ffffd000`3a4d9270 fffff800`041c310b : ffffd000`3a4d9350 ffffe000`0b250000 00000000`00000000 00000000`00000001 : Wdf01000!imp_WdfIoTargetStart+0x6a
ffffd000`3a4d92b0 fffff800`041c1d47 : 00000000`c0000000 00000000`00000000 ffffe000`0ba74b30 ffffe000`0ba742f0 : libusbK!Pipe_InitContext+0xcb [z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_pipe.c <at> 432]
ffffd000`3a4d92e0 fffff800`041c213a : 00000000`c000000e ffffe000`0ba742f0 ffffe000`0ba742f0 ffffd000`3a4d93f0 : libusbK!Interface_Start+0x37 [z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_interface.c <at> 86]
ffffd000`3a4d9310 fffff800`041c689b : 00000000`00000000 ffffe000`0ba742f0 00000000`00000000 00001fff`f458bff8 : libusbK!Interface_SetAltSetting+0x24e [z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_interface.c <at> 232]
ffffd000`3a4d93b0 fffff800`002e59ce : ffffe000`0b2c3cd0 ffffe000`00b55c20 00000000`00000018 00001fff`f4d3c328 : libusbK!DefaultQueue_OnIoControl+0x13a3 [z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_queue_default.c <at> 376]
ffffd000`3a4d9460 fffff800`002e5123 : ffffc000`1b3f2800 ffffe000`0ba69880 00000000`00000300 00000000`00000001 : Wdf01000!FxIoQueue::DispatchRequestToDriver+0x1be
ffffd000`3a4d9530 fffff800`002ec2f2 : ffffe000`00b55c20 ffffd000`3a4d9600 00000000`00000000 ffffe000`00b55c01 : Wdf01000!FxIoQueue::DispatchEvents+0x363
ffffd000`3a4d95f0 fffff800`002ec658 : 00000000`00000001 ffffe000`04ed5660 00000000`00000000 ffffe000`0b4e0000 : Wdf01000!FxPkgIo::EnqueueRequest+0x252
ffffd000`3a4d96c0 fffff800`041c2c30 : ffffe000`0b2c3e70 ffffe000`0ba74000 00000000`00000000 ffffe000`0b2c3cd0 : Wdf01000!imp_WdfDeviceEnqueueRequest+0xc9
ffffd000`3a4d9720 fffff800`002e99bd : 00000000`00000001 00001fff`f4d3c328 ffffe000`046aa240 00000000`00000018 : libusbK!Request_PreIoInitialize+0x130 [z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_request.c <at> 304]
ffffd000`3a4d9790 fffff802`eedb03e5 : 00000000`00000000 ffffd000`3a4d9b01 ffffe000`0ba74001 fffff802`00000001 : Wdf01000!FxDevice::DispatchWithLock+0x77d
ffffd000`3a4d9870 fffff802`eedb0d7a : ffffd000`3a4d9a38 00000000`0000005f 00000000`00000000 000000f7`2fe0ec88 : nt!IopXxxControlFile+0x845
ffffd000`3a4d9a20 fffff802`eeb5e4b3 : ffffe000`0ba69880 00000000`001f0003 000000f7`2fe0eb48 00000000`00000000 : nt!NtDeviceIoControlFile+0x56
ffffd000`3a4d9a90 00007ffb`182665ea : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
000000f7`2fe0eab8 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffb`182665ea


STACK_COMMAND:  kb

FOLLOWUP_IP: 
libusbK!Pipe_InitContext+cb [z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_pipe.c <at> 432]
fffff800`041c310b 8bf8            mov     edi,eax

FAULTING_SOURCE_LINE:  z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_pipe.c

FAULTING_SOURCE_FILE:  z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_pipe.c

FAULTING_SOURCE_LINE_NUMBER:  432

FAULTING_SOURCE_CODE:  
No source found for 'z:\svnmain\googlecode\usb-travis\trunk\libusbk\src\sys\drv_pipe.c'


SYMBOL_STACK_INDEX:  4

SYMBOL_NAME:  libusbK!Pipe_InitContext+cb

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: libusbK

IMAGE_NAME:  libusbK.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  5207c443

IMAGE_VERSION:  3.0.6.0

BUCKET_ID_FUNC_OFFSET:  cb

FAILURE_BUCKET_ID:  0x10D_5_libusbK!Pipe_InitContext

BUCKET_ID:  0x10D_5_libusbK!Pipe_InitContext

ANALYSIS_SOURCE:  KM

FAILURE_ID_HASH_STRING:  km:0x10d_5_libusbk!pipe_initcontext

FAILURE_ID_HASH:  {fbb003e7-b70a-0bc3-4274-781915951631}

Followup: MachineOwner
---------

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
Børge Strand-Bergesen | 10 Apr 10:32 2014
Picon

Feedback endpoint poll rate

Hi guys,

I'm maintaining an audio ASIO driver for USB Audio Class 2 (i.e.
Hi-Speed).  It uses libusbK. Descriptor dump from tdd.exe attached.
Code: https://github.com/nikkov/Win-Widget/tree/exp_asio It builds
with VC++08.

Most of it works quite well, but I have trouble setting the poll rate
for a feedback endpoint. This ep lets the Device tell the Host if the
latter needs to adjust the audio sample rate. That's at the core of
asynchronous USB audio.

In line 220 bInterval = 0x04. The Device uses 250us microframes.
Regardless of what I set this bInterval to, the Windows driver polls
the endpoint at a 1ms rate. OS X and Linux support it in built-in
class drivers. OS X polls the ep at quite a different rate. (4 or 8ms
if I remember correctly.) The 0x04 value is a compromize where both
libusbK and OS X are functional. In Linux I haven't yet correlated
bInterval to the actual poll rate.

I'd like to significantly slow down the poll rate. A 32 or 64ms
interval will probably work just fine in the application and reduce
the load on both Host and Device.

I don't know if there is a bug in the descriptor.

Question: What part of the chain (OS, low-level USB driver,
libusbK.sys, libusbk.dll, user mode application) does the actual ep
poll timing? When parsing this value from the descriptor, how is the
poll timing set up?

I have control over the user mode application and Device firmware. And
in both I see that correct feedback data is received and generated,
respectively. I just don't know how to trace it through the Host and
back to the Device.

Thanks,

Borge
Information for device QNKTC USB DAC AB-1.2 (VID=0x16D0 PID=0x075D): 

Connection Information:
------------------------------
Connection status: Device connected
Device actual bus speed: High
Device is hub: No
Device adress: 0x0002
Current configuration value: 0x01
Number of open pipes: 4

Device Descriptor:
------------------------------
0x12	bLength
0x01	bDescriptorType
0x0200	bcdUSB
0xEF	bDeviceClass   (Miscellaneous device)
0x02	bDeviceSubClass   
0x01	bDeviceProtocol   
0x40	bMaxPacketSize0   (64 Bytes)
0x16D0	idVendor
0x075D	idProduct
0x1000	bcdDevice
0x01	iManufacturer   "Audio-Widget"
0x02	iProduct   "QNKTC USB DAC AB-1.2"
0x03	iSerialNumber   "1.0.0.0.0.0.A"
0x01	bNumConfigurations

Device Qualifier Descriptor:
------------------------------
0x0A	bLength
0x06	bDescriptorType
0x0200	bcdUSB
0xEF	bDeviceClass   (Miscellaneous device)
0x02	bDeviceSubClass   
0x01	bDeviceProtocol   
0x40	bMaxPacketSize0   (64 Bytes)
0x01	bNumConfigurations 
0x00	bReserved 

Configuration Descriptor:
------------------------------
0x09	bLength
0x02	bDescriptorType
0x00C1	wTotalLength
0x04	bNumInterfaces
0x01	bConfigurationValue
0x00	iConfiguration
0x80	bmAttributes   (Bus-powered Device)
0xFA	bMaxPower   (500 mA)

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x00	bInterfaceNumber
0x00	bAlternateSetting
0x00	bNumEndPoints
0x00	bInterfaceClass   
0x00	bInterfaceSubClass   
0x00	bInterfaceProtocol   
0x00	iInterface

Interface Association Descriptor:
------------------------------
0x08	bLength
0x0B	bDescriptorType
0x01	bFirstInterface
0x02	bInterfaceCount
0x01	bFunctionClass   (Audio Device Class)
0x00	bFunctionSubClass   
0x20	bFunctionProtocol   
0x00	iFunction

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x01	bInterfaceNumber
0x00	bAlternateSetting
0x00	bNumEndPoints
0x01	bInterfaceClass   (Audio Device Class)
0x01	bInterfaceSubClass   (Audio Control Interface)
0x20	bInterfaceProtocol   
0x07	iInterface   "QNKTC USB DAC AB-1.2"

AC Interface Header Descriptor:
------------------------------
0x09	bLength
0x24	bDescriptorType
0x01	bDescriptorSubtype
0x0200	bcdADC
0x04	bCategory
0x0040	wTotalLength
0x00	bmControls

AC Clock Source Descriptor:
------------------------------
0x08	bLength
0x24	bDescriptorType
0x0A	bDescriptorSubtype
0x05	bClockID
0x01	bmAttributes
0x07	bmControls
0x03	bAssocTerminal
0x05	iClockSource   "Clock 2"

AC Input Terminal Descriptor:
------------------------------
0x11	bLength
0x24	bDescriptorType
0x02	bDescriptorSubtype
0x11	bTerminalID
0x0101	wTerminalType   (USB Streaming)
0x00	bAssocTerminal
0x05	bCSourceID
0x02	bNrChannels
0x00000003	bmChannelConfig
0x00	iChannelNames
0x00	bmControls
0x08	iTerminal   "Audio-widget"

AC Feature Unit Descriptor:
------------------------------
0x12	bLength
0x24	bDescriptorType
0x06	bDescriptorSubtype
0x12	bUnitID
0x11	bSourceID
0x00000003	bmaControls(0)
0x00000003	bmaControls(1)
0x00000003	bmaControls(2)
0x00	iFeature

AC Output Terminal Descriptor:
------------------------------
0x0C	bLength
0x24	bDescriptorType
0x03	bDescriptorSubtype
0x13	bTerminalID
0x0302	wTerminalType   (Headphones)
0x00	bAssocTerminal
0x12	bSourceID
0x05	bCSourceID
0x0000	bmControls
0x00	iTerminal

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x02	bInterfaceNumber
0x00	bAlternateSetting
0x00	bNumEndPoints
0x01	bInterfaceClass   (Audio Device Class)
0x02	bInterfaceSubClass   (Audio Streaming Interface)
0x20	bInterfaceProtocol   
0x00	iInterface

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x02	bInterfaceNumber
0x01	bAlternateSetting
0x02	bNumEndPoints
0x01	bInterfaceClass   (Audio Device Class)
0x02	bInterfaceSubClass   (Audio Streaming Interface)
0x20	bInterfaceProtocol   
0x00	iInterface

AS Interface Descriptor:
------------------------------
0x10	bLength
0x24	bDescriptorType
0x01	bDescriptorSubtype
0x11	bTerminalLink
0x07	bmControls
0x01	bFormatType
0x00000001	bmFormats
0x02	bNrChannels
0x00000003	bmChannelConfig
0x00	iChannelNames

AS Format Type 1 Descriptor:
------------------------------
0x06	bLength
0x24	bDescriptorType
0x02	bDescriptorSubtype
0x01	bFormatType
0x04	bSubslotSize
0x18	bBitResolution   (24 Bits/sample)

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x02	bEndpointAddress   (OUT Endpoint)
0x05	bmAttributes	(Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x0188	wMaxPacketSize   (392 Bytes) 
0x02	bInterval

AS Isochronous Data Endpoint Descriptor:
------------------------------
0x08	bLength
0x25	bDescriptorType
0x01	bDescriptorSubtype
0x00	bmAttributes
0x00	bmControls
0x00	bLockDelayUnits   (Undefined)
0x0000	wLockDelay

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x81	bEndpointAddress   (IN Endpoint)
0x11	bmAttributes	(Transfer: Isochronous / Synch: None / Usage: Feedback)
0x0004	wMaxPacketSize   (4 Bytes) 
0x04	bInterval

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x03	bInterfaceNumber
0x00	bAlternateSetting
0x02	bNumEndPoints
0x03	bInterfaceClass   (Human Interface Device Class)
0x00	bInterfaceSubClass   
0x00	bInterfaceProtocol   
0x00	iInterface

HID Descriptor:
------------------------------
0x09	bLength
0x21	bDescriptorType
0x0111	bcdHID
0x00	bCountryCode
0x01	bNumDescriptors
0x22	bDescriptorType   (Report descriptor)
0x0043	bDescriptorLength

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x84	bEndpointAddress   (IN Endpoint)
0x03	bmAttributes	(Transfer: Interrupt / Synch: None / Usage: Data)
0x0008	wMaxPacketSize   (8 Bytes) 
0x05	bInterval

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x05	bEndpointAddress   (OUT Endpoint)
0x03	bmAttributes	(Transfer: Interrupt / Synch: None / Usage: Data)
0x0008	wMaxPacketSize   (8 Bytes) 
0x05	bInterval

Other Speed Configuration Descriptor:
------------------------------
0x09	bLength
0x07	bDescriptorType
0x00C1	wTotalLength
0x04	bNumInterfaces
0x01	bConfigurationValue
0x00	iConfiguration
0x80	bmAttributes   (Bus-powered Device)
0xFA	bMaxPower   (500 mA)

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x00	bInterfaceNumber
0x00	bAlternateSetting
0x00	bNumEndPoints
0x00	bInterfaceClass   
0x00	bInterfaceSubClass   
0x00	bInterfaceProtocol   
0x00	iInterface

Interface Association Descriptor:
------------------------------
0x08	bLength
0x0B	bDescriptorType
0x01	bFirstInterface
0x02	bInterfaceCount
0x01	bFunctionClass   (Audio Device Class)
0x01	bFunctionSubClass   (Audio Control Interface)
0x20	bFunctionProtocol   
0x07	iFunction   "QNKTC USB DAC AB-1.2"

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x01	bInterfaceNumber
0x00	bAlternateSetting
0x00	bNumEndPoints
0x01	bInterfaceClass   (Audio Device Class)
0x01	bInterfaceSubClass   (Audio Control Interface)
0x20	bInterfaceProtocol   
0x07	iInterface   "QNKTC USB DAC AB-1.2"

AC Interface Header Descriptor:
------------------------------
0x09	bLength
0x24	bDescriptorType
0x01	bDescriptorSubtype
0x0200	bcdADC
0x04	bCategory
0x0040	wTotalLength
0x00	bmControls

AC Clock Source Descriptor:
------------------------------
0x08	bLength
0x24	bDescriptorType
0x0A	bDescriptorSubtype
0x05	bClockID
0x01	bmAttributes
0x07	bmControls
0x01	bAssocTerminal
0x00	iClockSource

AC Input Terminal Descriptor:
------------------------------
0x11	bLength
0x24	bDescriptorType
0x02	bDescriptorSubtype
0x11	bTerminalID
0x0101	wTerminalType   (USB Streaming)
0x00	bAssocTerminal
0x05	bCSourceID
0x02	bNrChannels
0x00000003	bmChannelConfig
0x00	iChannelNames
0x00	bmControls
0x00	iTerminal

AC Feature Unit Descriptor:
------------------------------
0x12	bLength
0x24	bDescriptorType
0x06	bDescriptorSubtype
0x12	bUnitID
0x11	bSourceID
0x00000003	bmaControls(0)
0x00000003	bmaControls(1)
0x00000003	bmaControls(2)
0x00	iFeature

AC Output Terminal Descriptor:
------------------------------
0x0C	bLength
0x24	bDescriptorType
0x03	bDescriptorSubtype
0x13	bTerminalID
0x0302	wTerminalType   (Headphones)
0x00	bAssocTerminal
0x12	bSourceID
0x05	bCSourceID
0x0000	bmControls
0x00	iTerminal

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x02	bInterfaceNumber
0x00	bAlternateSetting
0x00	bNumEndPoints
0x01	bInterfaceClass   (Audio Device Class)
0x02	bInterfaceSubClass   (Audio Streaming Interface)
0x20	bInterfaceProtocol   
0x00	iInterface

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x02	bInterfaceNumber
0x01	bAlternateSetting
0x02	bNumEndPoints
0x01	bInterfaceClass   (Audio Device Class)
0x02	bInterfaceSubClass   (Audio Streaming Interface)
0x20	bInterfaceProtocol   
0x00	iInterface

AS Interface Descriptor:
------------------------------
0x10	bLength
0x24	bDescriptorType
0x01	bDescriptorSubtype
0x11	bTerminalLink
0x07	bmControls
0x01	bFormatType
0x00000001	bmFormats
0x02	bNrChannels
0x00000003	bmChannelConfig
0x00	iChannelNames

AS Format Type 1 Descriptor:
------------------------------
0x06	bLength
0x24	bDescriptorType
0x02	bDescriptorSubtype
0x01	bFormatType
0x04	bSubslotSize
0x18	bBitResolution   (24 Bits/sample)

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x02	bEndpointAddress   (OUT Endpoint)
0x05	bmAttributes	(Transfer: Isochronous / Synch: Asynchronous / Usage: Data)
0x0188	wMaxPacketSize   (392 Bytes) 
0x01	bInterval

AS Isochronous Data Endpoint Descriptor:
------------------------------
0x08	bLength
0x25	bDescriptorType
0x01	bDescriptorSubtype
0x00	bmAttributes
0x00	bmControls
0x00	bLockDelayUnits   (Undefined)
0x0000	wLockDelay

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x81	bEndpointAddress   (IN Endpoint)
0x11	bmAttributes	(Transfer: Isochronous / Synch: None / Usage: Feedback)
0x0004	wMaxPacketSize   (4 Bytes) 
0x01	bInterval

Interface Descriptor:
------------------------------
0x09	bLength
0x04	bDescriptorType
0x03	bInterfaceNumber
0x00	bAlternateSetting
0x02	bNumEndPoints
0x03	bInterfaceClass   (Human Interface Device Class)
0x00	bInterfaceSubClass   
0x00	bInterfaceProtocol   
0x00	iInterface

HID Descriptor:
------------------------------
0x09	bLength
0x21	bDescriptorType
0x0111	bcdHID
0x00	bCountryCode
0x01	bNumDescriptors
0x22	bDescriptorType   (Report descriptor)
0x0043	bDescriptorLength

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x84	bEndpointAddress   (IN Endpoint)
0x03	bmAttributes	(Transfer: Interrupt / Synch: None / Usage: Data)
0x0008	wMaxPacketSize   (8 Bytes) 
0x05	bInterval

Endpoint Descriptor:
------------------------------
0x07	bLength
0x05	bDescriptorType
0x05	bEndpointAddress   (OUT Endpoint)
0x03	bmAttributes	(Transfer: Interrupt / Synch: None / Usage: Data)
0x0008	wMaxPacketSize   (8 Bytes) 
0x05	bInterval

String Descriptor Table
--------------------------------
Index  LANGID  String
0x00   0x0000  0x0409 
0x01   0x0409  "Audio-Widget"
0x02   0x0409  "QNKTC USB DAC AB-1.2"
0x03   0x0409  "1.0.0.0.0.0.A"
0x07   0x0409  "QNKTC USB DAC AB-1.2"
0x05   0x0409  "Clock 2"
0x08   0x0409  "Audio-widget"
0xEE   0x0000  Request failed with 0x0000001F

------------------------------

Connection path for device: 
Intel(R) 82801G (ICH7 Family) USB2 Enhanced Host Controller - 27CC
Root Hub
Generic USB Hub
QNKTC USB DAC AB-1.2 (VID=0x16D0 PID=0x075D)

Brought to you by TDD v1.83.0, Mar  7 2014, 14:22:05
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
Xiaofan Chen | 10 Apr 03:03 2014
Picon

Donation for a new Kernel Mode Code Signing Certificate

3 years back, we had a successful donation drive.
http://libusb.6.n5.nabble.com/A-final-thanks-for-the-contributions-td3929270.html

Now it is time to get another Kernel Mode Code Signing Certificate.

Donation link (to Travis)
http://sourceforge.net/donate/?user_id=1850769

Since June 1, 2013 GlobalSign will no longer be offering Code Signing
Certificates for Individuals. So we need to get a different certificate
this time.

Possible code signing vendors:
http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx

One possibility:
https://www.globalsign.com/code-signing/
US$229 for 1 year
US$422 for 2 years
US$563 for 3 years

--

-- 
Xiaofan

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees

Gmane