为什么会这样:
GetFileAttributes(L"D:");
返回0x00002010
,但以下内容完全相同:
GetFileAttributes(L"\\\\?\\D:");
返回INVALID_FILE_ATTRIBUTES
和错误代码ERROR_INVALID_PARAMETER
?
答案 0 :(得分:6)
您在问题和评论中提供的三个示例都涉及不同的事情。
\\?\D:
指的是不存在文件属性的卷。 \\?\D:\
是具有属性的驱动器的根目录。 D:
有点难以定义。我相信系统使用GetFullPathName
或等价物来扩展此路径。因此,如果进程当前目录在D
上,则使用该目录。或者,如果为此驱动器定义了特殊的per-drive working directory environment variable,则使用该目录。否则D:\
,使用根目录。您希望在此处使用D:\
或\\?\D:\
。