<p>Is there any way to determine a removable drive speed in Windows without actually reading in a file.  And if I do have to read in a file, how much needs to be read to get a semi accurate speed (e.g. determine whether a device is USB2 or USB1)?</p>

<p><strong>EDIT</strong>: Just to clarify, USB2 and USB1 were an example.  These could be Compact Flash, could be SSD, could be a removable drive.  And I am trying to determine this as fast as possible as it has a real effect on the responsiveness of the application.</p>

<p><strong>EDIT</strong>:  Should also clarify, this has to be done programatically.  It will probably be done in C++.</p>

<p><strong>EDIT</strong>: Boost answer is kind of what I was looking for (though I haven't written any WMI in C++).  But I need to know what properties I have to check to determine relative speed.  I don't need exact speed (like I said about the difference in speed between USB1 and USB2), but I need to know if it is going to be SLLOOOOWWW.</p>

Several megabytes, I'd say. Transfer speeds can start out slow, and then speed up as the transfer progresses. There are also variations because of file sizes (a single 1GB file will transfer much faster than 1GB of smaller files).
Best way to do that would be to copy a file to/from the device, and time how long it takes with your code. USB1 speed is 11Mb/s (I think), and USB2 is 480Mb/s (note those are numbers for the whole bus, not each port, so multiple devices on the same bus will change the actual numbers).