Techniques are disclosed to provide I/O handling in generic USB drivers.
More particularly, a generic USB device driver architecture is described
which enables development through a user-mode USB library that accesses a
generic kernel-mode driver. The architecture may be utilized to provide
efficient development for I/O handling. In a described implementation, a
method includes defining a data structure utilized to access a plugged-in
device. A pipe policy of the data structure is defined and utilizing to
access the plugged-in device through a plurality of routines provided by
a generic user-mode library (e.g., a dynamic link library (DLL)). The
generic user-mode library is communicatively coupled to a kernel-mode
generic device driver. In another described implementation, a separate
generic device driver is loaded for each plugged-in device or for each
functionality supported by the device.