Why does the following:
GetFileAttributes(L"D:");
return 0x00002010, but the following on the exact same machine:
GetFileAttributes(L"\\\\?\\D:");
returns INVALID_FILE_ATTRIBUTES and error code ERROR_INVALID_PARAMETER?
The three examples you give in the question and comments all refer to different things.
\\?\D: refers to a volume, for which file attributes do not exist. \\?\D:\ is the root directory of the drive which does have attributes. D: is a little harder to define. I believe that the system uses GetFullPathName, or equivalent, to expand this path. So, if the process current directory is on D, then that directory is used. Or, if a special per-drive working directory environment variable is defined for this drive, that directory is used. Otherwise D:\, the root directory is used.You want to be using D:\ or \\?\D:\ here.
User contributions licensed under CC BY-SA 3.0