Patent ID: 7650436

Claim:
A method comprising: defining a data structure for a plurality of different universal serial bus (USB) devices coupled to a computer system, said data structure defining a behavior of a kernel-mode generic device driver, wherein a separate kernel-mode generic device driver is loaded for each of the plurality of different USB devices or for each functionality supported by the plurality of different USB devices in response to a plug-in event of a USB device, said defining a data structure including: defining a pipe policy for each USB device, and defining a FIFO policy for each USB device; invoking, from a user-mode environment, a user-mode software component on the computer system to access one of the plurality of different USB devices by requesting a data transfer; utilizing, by the user-mode software component, the defined data structure through a plurality of routines provided by a generic USB user-mode library to respond to the data transfer, the plurality of routines being generic to and supporting the plurality of different USB devices, the generic USB user-mode library being communicatively coupled to the loaded kernel-mode generic device driver; and increasing, by the kernel-mode generic device driver, a length of the data transfer if the length of the data transfer is insufficient to handle all possible data transfer sizes by splitting the data transfer into two or more data transfers if the length of said data transfer exceeds a value defined by a host controller, each of said two or more data transfers having corresponding data lengths that are equal to or less than said value.