Consider the following scenario:
You have a Windows 7 machine.
You have a serial USB device, while the device reads data in a loop from a USB Serial device; you encounter a Bugcheck 0x000000D1.
The bugcheck occurs due to a synchronization problem in a code path where it completes a IRP while another is trying to process it.
1. Do not use COMMTIMEOUTS in your device, but Application level timeouts.
2. Move to WinUsb/UMDF.
3. Use the UsbSer source code which is released in the Windows Driver Kit (WDK). http://msdn.microsoft.com/en-us/library/windows/hardware/gg487428.aspx
for other considerations.