Как я могу получить имя тома из GUID?

У меня есть COM-компонент для управления задачами, связанными с диском. Получая некоторые критерии информации о диске, у меня есть один или несколько исходных дисков и один целевой диск. Когда я получаю имя исходного диска, COM дает мне что-то вроде {e42c3d59-e32c-11e1-9aa5-806e6f6e6963}, Как я могу преобразовать это в имя тома?

1

Решение

Это действительно зависит от того, что вы подразумеваете под «именем тома». Если вы имеете в виду фактическое имя тома, вы можете создать его на основе строкового представления GUID, возвращаемого COM-объектом. Название тома имеет вид \\?\Volume{GUID} где GUID это идентификатор тома.

Если вы имеете в виду объем этикетка вы можете получить его по телефону GetVolumeInformation() используя имя тома, описанное выше.

// Just so we have something a bit clearer than calling a member function
// of the COM object.
const std::wstring& volumeGuid = L"{e42c3d59-e32c-11e1-9aa5-806e6f6e6963}";

// We have the GUID now get the volume label
std::wstring volumeName = L"\\\\?\\Volume" + volumeGuid + L"\\";
std::wstring::value_type volumeLabelBuffer[MAX_PATH];

BOOL result = ::GetVolumeInformation(
volumeName.c_str(),
volumeLabelBuffer,
sizeof(volumeLabelBuffer) / sizeof(volumeLabelBuffer[0]),
nullptr,
nullptr,
nullptr,
nullptr,
0);
2

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

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

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