Вопрос

Я использую следующее для поиска файла, определенного как макрос DB_CONFIG_FILE_PATH_1.

wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);

Если файл находится в каталоге C:\, он найден.Но, если файл находится в одном из его подкаталогов, функция его не находит.

Кто-нибудь может объяснить, как выполнить поиск файла с помощью вышеуказанной функции по всем дискам, включая подкаталоги.

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

Иными словами, мне нужен полный путь к файлу.Я знаю имя файла, но не знаю, где он находится на компьютере.

Это было полезно?

Решение

Для поиска подкаталогов в машинном коде Win32 вам нужно сделать это самостоятельно, используя FindFirstFile, а затем выполнить рекурсию в подкаталоги.

Возвращаемое значение FindFirstFile не является дескриптором файла - информация о файле содержится в возвращаемой структуре WIN32_FIND_DATA.Дескриптор используется в вызовах FindNextFile для продолжения поиска.Чтобы получить полное имя пути во время поиска, вам нужно будет отслеживать, в каком каталоге вы находитесь в данный момент, и добавлять найденные имена каталогов к пути.

SearchPath выполняет поиск только в переменной окружения PATH или первом параметре, если он присутствует, и не выполняет поиск в подкаталогах.

Другие советы

GetCurrentDirectory() должен указать вам путь:

http://msdn.microsoft.com/en-us/library/aa364934 (ПРОТИВ 85).aspx

и второй аргумент из FindFirstFile():

http://msdn.microsoft.com/en-us/library/aa364418 (ПРОТИВ 85).aspx

который является WIN32_FIND_DATA Структура должна сообщить вам имя файла:

http://msdn.microsoft.com/en-us/library/aa365740 (ПРОТИВ 85).aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top