Enumerating all available drive letters in Windows

前端 未结 7 2420
忘掉有多难
忘掉有多难 2020-11-29 09:15

I want to enumerate all available drive letters (which aren\'t already taken) in Windows using VC++.

How can I do this?

7条回答
  •  情书的邮戳
    2020-11-29 09:58

    std::vector getListOfDrives() {
        std::vector arrayOfDrives;
        char* szDrives = new char[MAX_PATH]();
        if (GetLogicalDriveStringsA(MAX_PATH, szDrives));
        for (int i = 0; i < 100; i += 4)
            if (szDrives[i] != (char)0) 
                arrayOfDrives.push_back(std::string{szDrives[i],szDrives[i+1],szDrives[i+2]});
        delete[] szDrives;
        return arrayOfDrives;
    }
    

    returns a vector of drives e.g. C:\D:\E:\F:\

    std::vector drives = getListOfDrives();
    
    for (std::string currentDrive : drives) {
        std::cout << currentDrive << std::endl;
    }
    

    enumerateing over them

提交回复
热议问题