GetFileAttributes不一致 - 为什么?

时间:2014-06-23 04:08:46

标签: c++ winapi ntfs

为什么会这样:

GetFileAttributes(L"D:");

返回0x00002010,但以下内容完全相同:

GetFileAttributes(L"\\\\?\\D:");

返回INVALID_FILE_ATTRIBUTES和错误代码ERROR_INVALID_PARAMETER

1 个答案:

答案 0 :(得分:6)

您在问题和评论中提供的三个示例都涉及不同的事情。

  • \\?\D:指的是不存在文件属性的卷。
  • \\?\D:\是具有属性的驱动器的根目录。
  • D:有点难以定义。我相信系统使用GetFullPathName或等价物来扩展此路径。因此,如果进程当前目录在D上,则使用该目录。或者,如果为此驱动器定义了特殊的per-drive working directory environment variable,则使用该目录。否则D:\,使用根目录。

您希望在此处使用D:\\\?\D:\