Сбой FindFirstFile в корневом пути

Я использую следующий код для получения информации о каталоге файловой системы:

LPCTSTR pStrPath = L"D:\\1";
WIN32_FIND_DATA wfd;
HANDLE hDummy = ::FindFirstFile(pStrPath, &wfd);
if(hDummy != INVALID_HANDLE_VALUE)
{
//Use 'wfd' info
//...

::FindClose(hDummy);
}
else
{
int error = ::GetLastError();
}

Код работает просто отлично, если я не укажу корневой путь:

  • D:\ — код ошибки ERROR_FILE_NOT_FOUND
  • D: — код ошибки ERROR_FILE_NOT_FOUND
  • \\SRVR-1\share — код ошибки ERROR_BAD_NET_NAME
  • \\SRVR-1\share\ — код ошибки ERROR_BAD_NET_NAME
  • \\SRVR-1\HiddenShare$ — код ошибки ERROR_BAD_NET_NAME

Но это работает в следующих случаях:

  • D:\1 — Нет ошибок
  • \\SRVR-1\share\1 — Нет ошибок
  • \\SRVR-1\HiddenShare$\1 — Нет ошибок

Есть идеи почему?

3

Решение

FindFirstFile() предназначен для использования для перечисления содержимого каталога. Как таковой, он предназначен для использования с шаблоном файла, таким как D:\*,

Когда вы используете D:\1 вы просто используете очень строгий шаблон файла (1) для фильтрации файлов в D:\, но когда вы используете только D:\ или же D: нет никакого шаблона вообще!

И то же самое верно для общих ресурсов. Обратите внимание, что \\SRV-1\share не считается шаблоном, потому что \\SRV-1 не может считаться каталогом.

4

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

Других решений пока нет …

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