Very simply. The APIs you need are GetLogicalDriveStrings and GetDriveType. The code below is a command line program which enumerates all the drives on the host machine and lists them together with their types.
#include "stdafx.h" #include "windows.h" int _tmain (int argc, _TCHAR* argv[]) { TCHAR atchDrives [150]; TCHAR atchResult [50]; TCHAR * ptchDrive = NULL; if (GetLogicalDriveStrings (sizeof (atchDrives), atchDrives)) { if (strlen (atchDrives) > 0) { ptchDrive = atchDrives; do { switch (GetDriveType (ptchDrive)) { case DRIVE_UNKNOWN: wsprintf (atchResult, "%s : Unknown type", ptchDrive); break; case DRIVE_NO_ROOT_DIR: wsprintf (atchResult, "%s : No root directory", ptchDrive); break; case DRIVE_REMOVABLE: wsprintf (atchResult, "%s : Removable", ptchDrive); break; case DRIVE_FIXED: wsprintf (atchResult, "%s : Hard Disk", ptchDrive); break; case DRIVE_REMOTE: wsprintf (atchResult, "%s : Remote (network) drive", ptchDrive); break; case DRIVE_CDROM: wsprintf (atchResult, "%s : CD/DVD", ptchDrive); break; case DRIVE_RAMDISK: wsprintf (atchResult, "%s : RAMDrive", ptchDrive); break; default: wsprintf (atchResult, "%s : ERROR", ptchDrive); break; } printf (atchResult); printf ("\n"); do ++ptchDrive; while (*ptchDrive); ++ptchDrive; } while (strlen (ptchDrive)); } } return 0; }Download