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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top