I'm new to USB driver development and would like to create or modify a Windows driver. What are some useful resources I should refer to when getting started?
There are many resources available for new USB driver developers. The following are just a few:
'USB Complete: Everything You Need to Develop Custom USB Peripherals (Complete Guides series),' by Jan Axelson
This book provides a great understanding of USB in general for both the peripheral (firmware) and the host (driver), but does not provide in-depth specifics of driver development. It's a good all-around USB resource to have available to help answer any general USB questions that may arise during the driver development.
'Developing Drivers with the Windows Driver Foundation,' by Penny Orwick and Guy Smith
This book addresses general driver development using the Windows Driver Development Kit (WinDDK), but uses a USB driver as its example. The driver the book uses as its example is available with the WinDDK under \srcusb. An example board that implements the this driver's matching hardware and firmware is called the OSR USB FX2 Learning Kit and is available in the OSR store at http://www.osronline.com/. Together with this hardware module, this book can help a beginner driver developer to modify the driver source code and learn how the driver works.
Microsoft's MSDN Library
The MSDN Library contains lots of information to help driver developers, from function and event descriptions to forums. This resource is invaluable for any driver developer.
The MSDN Guide to starting USB Driver Development can be found here: http://blogs.msdn.com/b/usbcoreblog/archive/2009/10/10/getting-started-with-usb-driver-development.aspx.