winapi — получи место на дополнительном жестком диске

С помощью ссылки ниже я могу получить место на жестком диске.

Получить место на жестком диске

Но если я подключу дополнительный жесткий диск, он не будет отображать подробности.

Как я могу зациклить количество жестких дисков и получить их места?

Я хотел бы получить это в секторе петли. Получить счетчик жесткого диска и цикл для дисков в harddisk1, а затем цикл для дисков в harddisk2, как это.

0

Решение

Используйте Windows API GetLogicalDriveStrings функция.

std::vector< std::basic_string<TCHAR> > drives;

TCHAR szBuffer[1024];
::GetLogicalDriveStrings(1024, szBuffer);
TCHAR *pCurrentDrive = szBuffer;
while (*pCurrentDrive)
{
drives.push_back( pCurrentDrive );
pCurrentDrive = &pCurrentDrive[_tcslen(pCurrentDrive) + 1];
}

Тогда позвони GetDiskFreeSpaceEx для каждого элемента в drives вектор.

Вы также можете использовать GetLogicalDrives вместо этого функция, которая возвращает диски в виде битовой маски. Тем не менее, я думаю, GetLogicalDriveStrings в этом случае проще, потому что он возвращает диски в виде строк, которые вы можете передать GetDiskFreeSpaceEx непосредственно.

1

Другие решения

Как насчет:

for (char drive = 'a'; drive <= 'z'; drive++)
{
// Get for amount for `drive`
}

А для тех, кому интересно … Да, это очень наивно и, вероятно, отнимает много времени.

0