USB Design by Example: A Practical Guide to Building I/O Devices, Second Edition

USB was designed to move a lot of data very fast, and this chapter has shown you how to accomplish this. We wrote a simple BlockIO device driver ( simple is a relative term, I know; it was much harder than the HID example but is much simpler than an NDIS network connection) that can be used as is or may be modified, with the help of Walter Oney s book, to meet your needs. We also wandered around the depths of the kernel world for a while, and realized the power that it offers (and some of the dangers). It may be safer to force-fit your BlockIO application into a Mass Storage Driver; this is easier on the PC host side, since Microsoft supplies the driver, but is more difficult at the I/O device side, since a range of predefined commands must be implemented. My example, or the one from Cypress Semiconductor, should get you up and running.
Once a driver is in place, it is as easy for a PC host application program to transfer large blocks of data as it is to transfer single bytes using a HID interface.