Несоответствие GetFileAttributes — почему?

Почему следующее:

GetFileAttributes(L"D:");

вернуть 0x00002010, но следующее на той же машине:

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

возвращается INVALID_FILE_ATTRIBUTES и код ошибки ERROR_INVALID_PARAMETER?

1

Решение

Три примера, которые вы приводите в вопросе и комментариях, относятся к разным вещам.

  • \\?\D: ссылается на том, для которого атрибуты файла не существуют.
  • \\?\D:\ является корневым каталогом диска, который имеет атрибуты.
  • D: это немного сложнее определить. Я считаю, что система использует GetFullPathNameили эквивалент, чтобы расширить этот путь. Итак, если текущий каталог процесса включен D, то этот каталог используется. Или, если специальный переменная среды рабочего каталога для каждого диска определяется для этого диска, этот каталог используется. Иначе D:\, корневой каталог используется.

Вы хотите использовать D:\ или же \\?\D:\ Вот.

6

Другие решения


По вопросам рекламы [email protected]