USB Driver stack

Hi Suja

From the DDK :

"USB Driver Stack for Windows 2000

  1. The host controller driver is at the bottom of the Windows 2000 USB
    driver stack. It consists of a class/miniclass driver pair. The host
    controller class driver, usbd.sys, is paired either with the openhci.sys
    (Open Host Controller Interface) minidriver or with the uhcd.sys (Universal
    Host Controller Driver) minidriver, depending on which USB protocol the
    system is configured to use. The host controller class driver handles those
    aspects of the port driver’s duties that are independent of the specific

  2. Immediately above the host controller class driver is the USB bus
    driver, usbhub.sys, also known as the hub driver. This is the device driver
    for each hub on the system.

  3. Above the hub driver sits the client device driver. This might be a
    vendor-supplied device driver or it might be a system-supplied driver or
    driver stack. For a definition and example of a client driver, see
    mk:htm> USB Client Drivers. In the case of composite devices, the hub driver
    not only drives the hub, but also provides a generic parent facility between
    the hub and the various interfaces of the device. For an example of the
    device stack for a composite device in Windows 2000, see USB
    mk:htm> Device Stack for Windows 2000. "

    I don’t know if this is pertinant to your situation but …
    From Walter Oney’s book Second Edition :

    “The USB driver stack, for example, uses a back door to let USBHUB
    communicate efficiently with the host controller driver without sending IRPs
    through all the intermediate hub drivers that might be present. A USB bus
    filter uses USBD_RegisterHcFilter in the parent device stack for the host
    controller to make sure that it sees this backdoor traffic.”

    Hope this helps

    Naseh Alvi

    -----Original Message-----
    [] On Behalf Of SUJA JAMES
    Sent: Thursday, February 19, 2004 4:58 PM
    To: Windows System Software Devs Interest List
    Subject: [ntdev] USB Driver stack

    Hi All,
    Does any one describe the USB driver stack in Windows 2000. Is this correct

    If so what this uhcd.sys and usbd.sys do?
    Actaully I wrote a lower filter driver for my USB device driver. In that
    filter driver I am geeting the IRP_MN_QUERY_CAPABILITIES request and I can
    view the values. Now I wrote a lower filter driver for the USB Hub.But the
    IRP_MN_QUERY_CAPABILITIES request is not getting there. So I think some
    other driver is completing this IRP. may be uhcd.sys or usbd.sys. ? Who is
    completing this IRP. In my Hub Filter driver I am getting all the
    IOCTL_INTERNAL_USB_SUBMIT_URB request. No PNP related request when I plug by

    Thanks in advance

    http: — Questions? First
    check the Kernel Driver FAQ at
    You are currently subscribed to ntdev as: To unsubscribe
    send a blank email to</http:></mk:></mk:>