função do Windows SearchPath
-
21-08-2019 - |
Pergunta
Estou usando o seguinte para procurar um arquivo definido como um DB_CONFIG_FILE_PATH_1 macro.
wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);
Se o arquivo está no diretório C: \, se verificar. Mas, se o arquivo está em um dos seus sub-diretórios a função não encontrá-lo.
Pode algum explicar como pesquisar todas as unidades, incluindo subdiretórios para um arquivo com a função acima.
Eu não estou usando a função FindFirstFile porque, eu sou incapaz de recuperar o caminho para o arquivo mesmo que a função retorna identificador para o arquivo.
Para colocá-lo, quero nome de caminho completo de um arquivo. Eu sei o nome do arquivo, mas não sei onde ele está no comp.
Solução
Para pesquisar subdiretórios em código nativo no Win32, você precisa fazê-lo sozinho, usando FindFirstFile e depois recursão em subdiretórios.
O valor de retorno de FindFirstFile não é um identificador de arquivo - as informações do arquivo está contido na estrutura WIN32_FIND_DATA retornado. O identificador é usado em chamadas para FindNextFile para continuar a busca. Para obter um nome de caminho completo durante a sua pesquisa, você vai precisar para manter o controle de qual diretório você está atualmente em e acrescentar os nomes de diretório descobertos ao caminho.
SearchPath apenas pesquisas na variável de ambiente PATH ou o primeiro parâmetro se estiver presente e não pesquisa subdiretórios.
Outras dicas
GetCurrentDirectory()
deve dizer-lhe o caminho:
http://msdn.microsoft.com/ en-us / library / aa364934 (VS.85) .aspx
e o segundo argumento do FindFirstFile()
:
http://msdn.microsoft.com/ en-us / library / aa364418 (VS.85) .aspx
que é uma estrutura WIN32_FIND_DATA
deve dizer-lhe o nome do arquivo:
http://msdn.microsoft.com/ en-us / library / aa365740 (VS.85) .aspx