Windows SearchPath 기능
-
21-08-2019 - |
문제
다음을 사용하여 매크로 DB_CONFIG_FILE_PATH_1로 정의 된 파일을 검색하고 있습니다.
wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);
파일이 c : directory에 있으면 발견됩니다. 그러나 파일이 하위 디렉토리 중 하나에 있으면 함수는 찾을 수 없습니다.
일부는 위 함수가있는 파일의 하위 디렉터를 포함한 모든 드라이브를 검색하는 방법을 설명 할 수 있습니다.
FindFirstFile 함수를 사용하지 않습니다. 함수가 파일로 핸들을 반환하더라도 파일의 경로를 검색 할 수 없기 때문에 파일의 경로를 검색 할 수 없기 때문입니다.
그것을 말하면 파일의 전체 경로 이름을 원합니다. 나는 파일의 이름을 알고 있지만 그 파일의 이름은 어디에 있는지 모릅니다.
해결책
Win32의 기본 코드에서 하위 디렉토리를 검색하려면 FindFirstFile을 사용하여 직접 수행 한 다음 하위 디렉터로 재발해야합니다.
FindFirstFile의 반환 값은 파일 핸들이 아닙니다. 파일 정보는 Win32_FIND_DATA 구조에 포함되어 있습니다. 핸들은 검색을 계속하기 위해 FindNextFile으로 호출에 사용됩니다. 검색 중에 전체 경로 이름을 얻으려면 현재 어떤 디렉토리를 추적하고 발견 된 디렉토리 이름을 경로에 추가해야합니다.
SearchPath는 경로 환경 변수 또는 하위 디렉토리를 검색하지 않는 경우 첫 번째 매개 변수에서만 검색합니다.
다른 팁
GetCurrentDirectory()
길을 말해야합니다.
http://msdn.microsoft.com/en-us/library/aa364934(vs.85).aspx
그리고 두 번째 논쟁 FindFirstFile()
:
http://msdn.microsoft.com/en-us/library/aa364418(vs.85).aspx
그것은 a입니다 WIN32_FIND_DATA
구조는 파일 이름을 알려야합니다.
http://msdn.microsoft.com/en-us/library/aa365740(vs.85).aspx