amz*_*mza 3 c++ winapi file-management
这是我的代码段:
char existingTarget[MAX_PATH];
HANDLE hFile = CreateFile(linkPath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
GetFinalPathNameByHandle(hFile, existingTarget, MAX_PATH, FILE_NAME_OPENED);
CloseHandle(hFile);
}
Run Code Online (Sandbox Code Playgroud)
但是,existingTarget即将出来\\?\C:\mydir\etc。我怎样才能让它返回C:\mydir\etc呢?
注:我不想来检查字符串\\?\和公正的memmove,它有点太hackish的这个程序的解决方案。
我怎样才能让它只返回C:\ mydir \ etc
你不能。 VOLUME_NAME_DOS并VOLUME_NAME_GUID 始终使用该格式,并记录如下:
此函数返回的字符串使用
\\?\语法。
请参阅文档 “社区添加”部分中的示例结果。
注意:我不想检查字符串,
\\?\而只是记忆它,这对于该程序的解决方案来说有点过于简单。
那是最简单的解决方案。否则,您必须使用其他API将返回的路径转换为更易于理解的路径。例如使用VOLUME_NAME_NTwith 的结果QueryDosDevice(),或使用VOLUME_NAME_GUIDwith 的结果GetVolumePathNamesForVolumeName()。