Как я могу перечислить общие ресурсы на хосте, если API FindXxxFile не может их перечислить? - PullRequest
2 голосов
/ 08 июня 2011

В моем приложении есть часть, где мне нужно перечислить подкаталоги и файлы по заданному пути.Он работает нормально (или, кажется, так :)) для локальных путей, но действует странно, когда пользователь вводит общие пути в сети.

Если я задаю общий сетевой путь \\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; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...