Virtual drive detector


I need to differentiate my physical DVD burner drive from a virtual CD drive. Can someone help me with this please?

Background info:
My Win32 application uses Nero APIs to burn DVDs. When I plug in a U3 Smart Drive (Sandisk Titanium Cruzer), Windows Explorer lists an additional emulated CD drive. This freaks out Nero as well as my application. As you may know, U3 drives are known to cause trouble to Nero and other CD burning softwares ( So in my application’s code (VC++), just before calling NeroGetAvailableDrivesEx, I want to find this fake CD drive and unmount it. I wouldn’t know the drive letter of this fake drive beforehand. Since the number of network drives connected to the system would vary, U3’s CD drive doesn’t get the same drive letter each time.

Thanks a ton for any help!

bounce! any help please??


You should have a look at GetDriveType. I think it will do what you are asking. You might first need to call GetLogicalDriveStrings so you can find out what all drive letters are being used on the system. Then cycle through them with GetDriveType to find out what type of drive it is.

Hope this helps


Hi RM,

Thanks for replying. You’re right - GetLogicalDriveStrings gives the list of all the drive letters assigned. GetDriveType returns DRIVE_CDROM for the physical DVD burner drive as well as the virtual (simulated) drive… And there starts my problem.

Let me know if I should try with something else.

Thanks again!