USB interrupt pipe data loss on Win2000

Discussion in 'Windows Vista Drivers' started by Alan, Jul 29, 2003.

  1. Alan

    Alan Guest

    I wrote a USB driver under Windows 2000. I retrieve data from a interrupt
    pipe. The interval defined in my device is 1ms. The datarate from my device
    is 384kbps. However, I always loss data on PC. If I make my device send data
    at 200kbps. I can receive data from PC properly, no data loss. The most
    strange thing is, when I used my driver on Windows XP, it actually can
    recieve data properly at 384kbps. Anybody can tell me that, why my driver
    can only work on winxp.
     
    Alan, Jul 29, 2003
    #1
    1. Advertisements

  2. What does a CATC trace show? Do you see dropped interrupt transfers on the
    bus?

    Thanks,
    Martin Borve
    Windows DDK Support

    This posting is provided "AS IS" with no warranties, and confers no rights.
     
    Martin Borve [MSFT], Jul 30, 2003
    #2
    1. Advertisements

  3. Alan

    Dieter Fauth Guest

    Hi Alan,
    that is a known effect. HID is not made for higher speed input.
    You can improve the behaviour by adding more buffers to the HID.
    In user moder HID drivers I use this snippet:
    ULONG CurrentBuffers;
    ::HidD_GetNumInputBuffers(m_DevHandle, &CurrentBuffers); // Win2000 uses
    8 buffers by default
    ::HidD_SetNumInputBuffers(m_DevHandle,
    CurrentBuffers+m_NumAdditionalBuffers); // add more buffers to avoid
    loosing packets

    (I edited the above example from my code) to make it more generic.

    Dieter :)
     
    Dieter Fauth, Aug 16, 2003
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.