gpt4 book ai didi

c++ - 如何从 GUID 获取卷名?

转载 作者:行者123 更新时间:2023-11-30 04:17:23 25 4
gpt4 key购买 nike

我有一个用于管理磁盘相关任务的 COM 组件。在获取一些磁盘信息标准时,我有一个或多个源驱动器和一个目标驱动器。当我检索源驱动器名称时,COM 会给我类似 {e42c3d59-e32c-11e1-9aa5-806e6f6e6963} 的内容。如何将其取消引用为卷名?

最佳答案

这实际上取决于您所说的“卷名”是什么意思。如果您指的是卷的实际名称,则可以根据 COM 对象返回的 GUID 的字符串表示形式来创建它。卷名称的格式为 \\?\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);

关于c++ - 如何从 GUID 获取卷名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17101355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com