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_NT
with 的结果QueryDosDevice()
,或使用VOLUME_NAME_GUID
with 的结果GetVolumePathNamesForVolumeName()
。