Enumerating all available drive letters in Windows

GetLogicalDriveStrings can get you just the list of currently used drive letters.

GetVolumeInformation can be used to get more information about a specific drive.


::GetLogicalDrives() returns a list of available (read: used) drives as bits in a mask. This should include mapped network drives. Thus, you can simply walk the bits to find bits that are zero, meaning no drive is present. If in doubt, you can always call ::GetDriveType() with the drive letter + ":\" (":\\" in C code, or _T(":\\") in Unicode-aware terminology, of course), and that should return DRIVE_UNKNOWN or DRIVE_NO_ROOT_DIR if the drive is available.

Tags:

C++

Winapi

Drives