Как сканировать и возвращать список внешних дисков на Mac OSX? Эквивалентный код для Windows включен

Я сделал функцию резервного копирования usb для своего кроссплатформенного приложения, она отлично работает для Windows, но у меня возникают проблемы с поиском способа поиска меток тома и пути в Mac OSX IE «F: / USB123». Как мне лучше всего / легче всего добиться эквивалентности приведенного ниже кода для Mac? — Я знаю, что не могу использовать Win API, поэтому у меня вопрос о том, чем его заменить.

Я включил структуру для кода ниже.

Функция возвращает количество найденных внешних USB-накопителей и заполняет два вектора меткой и путем к каждому USB-устройству соответственно.

struct ESDriveDescription
{
std::string path;
std::string label;

ESDriveDescription() = default;
ESDriveDescription(const std::string &path, const std::string &label)
: path(path), label(label)
{}
};int ESFileUtils::getExternalStorageDevicePaths(vector<ESDriveDescription> &paths){
// Letters in alphabet * 3 characters per drive path, + nul term + final nul
// NOTE: constexpr not supported in vs2013
static const DWORD DRIVE_BUFFER_SIZE = 26 * 4 + 1;
static const DWORD VOLUME_LABEL_MAX = 32;

const char* removableDriveNames[26] = { 0 };
char allDrives[DRIVE_BUFFER_SIZE] = { 0 };
int numRemovableDrives = 0;

DWORD n = GetLogicalDriveStringsA(DRIVE_BUFFER_SIZE, allDrives);
for (DWORD i = 0; i < n; i += 4) {
const char* driveName = &allDrives[i];

UINT type = GetDriveTypeA(driveName);
if (type == DRIVE_REMOVABLE)
removableDriveNames[numRemovableDrives++] = driveName;
}

char label[VOLUME_LABEL_MAX] = { 0 };
for (int i = 0; i < numRemovableDrives; i++) {
const char* driveName = removableDriveNames[i];
GetVolumeInformationA(driveName, label, VOLUME_LABEL_MAX, 0, 0, 0, 0, 0);
paths.emplace_back(driveName, label);
}

return numRemovableDrives;
}

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы [email protected]