Ваш for
цикл неправильный.Вы предполагаете, что GetLogicalDriveStrings()
возвращает только отдельные буквы дисков, но это не так (если вы хотите, используйте GetLogicalDrives()
вместо этого).Он возвращает пути к корневым папкам диска, и поэтому вам нужно изменить цикл for
следующим образом:
const DWORD buffer_length = 104; // can return drive paths A:\ - Z:\
WCHAR buffer[buffer_length+1] = {0}; // room for null terminator
GetLogicalDriveStrings(buffer_length, buffer);
std::set<wchar_t> drives_letters;
for(wchar_t *drive = buffer; *drive != 0; drive += 4)
{
drives_letters.insert(*drive);
}