Does the "respect the API and you'll be fine" approach applies to drivers and Windows services as well? Would it be safe to use, say Windows Vista drivers, with Windows 8.1 and any upcoming Windows release?
Also, it would be awesome if we could see a live demo on how to make "Metal Marines" (as a fine example of compatibility issue) to work on Windows 8.1 (how to troubleshoot, which tools to use, which shims to apply, etc).
What you would need to find out is what process prevents you from removing the drive. You could use Process Explorer to do that. Start Process Explorer, click Find -> Find Handle or DLL -> enter your USB stick drive letter (like G:) and click Search. This will list processes that reference the USB drive.
Note that although it is possible to close a handle using Process Explorer ("freeing" the USB drive for Safe Removal) it is not recommended in most cases. It's better to simply exit the program that is using the drive.
@Dax1792:Still occurs for me (all the latest updates installed).
Specifically this might occur on a system that is (say) not shutdown daily but put to sleep/hibernation. Looking at the stack of the thread that is supposed to be waiting (according to "Analyze Wait Chain") - there are no Flash Player functions on it (there are some Winsock functions, though). And that's pretty as much as I can make out of it
This seems to occur on Windows 8 as well (seen on two different laptops with different configuration/add-ons except for Flash).
According to "Analyze Wait Chain" from Task Explorer the "child" iexplore.exe waits to finish network I/O but according to Process Explorer there are no open connctions. Once the "child" iexplore.exe is killed, the parent exits as well.
Mostly this seems to happen when many tabs are open with Flash content.