В моем приложении есть часть, где мне нужно перечислить подкаталоги и файлы по заданному пути.Он работает нормально (или, кажется, так :)) для локальных путей, но действует странно, когда пользователь вводит общие пути в сети.
Если я задаю общий сетевой путь \\host_name\shared_dir\*
, мое приложение может перечислить все подкаталоги и файлы в \\host_name\shared_dir\
, но если пользователь указывает только \\host_name\*
, тогда FindFirstFile завершается ошибкой.!!!<Но пользователь может получить доступ к пути <code>\\host_name\ в проводнике Windows, поэтому проблема с правами доступа отсутствует как таковая !!!>
Вот фрагмент кода, показывающий, как я использую FindFirstFile
#include <stdio.h>
#include <Windows.h>
int main()
{
char l_host_name[64] = "\\\\host_name\\*";
WIN32_FIND_DATA search_data = { 0 };
HANDLE search_handle;
BOOL next_ret_val = 1;
search_handle = FindFirstFile(l_host_name, &search_data);
if(INVALID_HANDLE_VALUE != search_handle)
{
printf("Name = %s\n", search_data.cFileName);
do
{
next_ret_val = FindNextFile(search_handle, &search_data);
printf("Name = %s\n", search_data.cFileName);
} while(next_ret_val != 0);
FindClose(search_handle);
}
else
{
printf("failed to get search handle\n");
}
return 0;
}