Device Stacks for USB Keyboard, Mouse, and Joystick Devices

The following figure shows the system-supplied device stacks for USB keyboard, mouse, and joystick devices.

Diagram illustrating the system-supplied device stacks for USB keyboard, mouse, and joystick devices

The system-supplied drivers create the following required device objects:

  • The lower-level USB driver stack creates a physical device object (PDO) for each USB HID device attached to a USB hub.

    For more information about the lower-level USB driver and device stacks, see USB Driver Stack Architecture.

  • The HID class driver creates functional device objects (FDO) for each USB HID device attached to a USB hub.

    The HID class driver creates a PDO for each keyboard, mouse, and joystick collection that the FDO supports.

    An FDO can have more than one HID collection associated with it. For example, a keyboard with an integrated mouse might have one collection for the standard keyboard controls and a different collection for the mouse.

  • The HID mapper drivers create FDOs for keyboard, mouse, and joystick collections.

    The non-USB keyboard, mouse, and joystick class drivers can access USB HID devices through the HID mapper drivers.

  • The non-HIDClass class drivers create required filter DOs for the keyboard, mouse, and joystick devices.

Note   Vendor drivers are not required for USB keyboard, mouse, or joystick devices. The system opens keyboard and mouse devices for its exclusive use. USB joysticks are shared devices. User-mode system components directly access joysticks by opening their PDOs and using the HID support routines. User-mode vendor applications can also operate game port collections in the same manner.

 

 

Send comments about this topic to Microsoft

Build date: 4/28/2012