Я пытался выяснить, почему это приводит к переполнению стека в течение нескольких часов, возможно, чего-то простого, чего мне просто не хватает, он работал раньше, пока я не испортил его, чтобы попытаться очистить его.В любом случае, некоторые свежие глаза будут высоко оценены.
int scan(LPSTR szPath, LPSTR pattern) {
WIN32_FIND_DATA WFD;
HANDLE hSearch;
CHAR szFullPath [MAX_PATH+1] = "";
PVOID OldValue = NULL;
if( Wow64DisableWow64FsRedirection(&OldValue) )
{
PathCombine(szFullPath, szPath, "*");
hSearch = FindFirstFile(szFullPath, &WFD);
if ( hSearch != INVALID_HANDLE_VALUE ) {
while(FindNextFile(hSearch,&WFD)) {
if(strcmp(WFD.cFileName,"..") || strcmp(WFD.cFileName,".")){
FindNextFile(hSearch,&WFD);
}
if(WFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
PathCombine(szFullPath, szPath, WFD.cFileName);
scan(szFullPath, pattern);
}
}
FindClose(hSearch);
}
PathCombine(szFullPath, szPath, pattern);
hSearch = FindFirstFile(szFullPath, &WFD);
if( hSearch != INVALID_HANDLE_VALUE ) {
while( FindNextFile(hSearch, &WFD) ) {
if(!(WFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
PathCombine(szFullPath, szPath, WFD.cFileName);
int index = SendDlgItemMessage(ghWnd, IDLIST, LB_ADDSTRING, 0, (LPARAM)szFullPath);
}
}
FindClose(hSearch);
if ( FALSE == Wow64RevertWow64FsRedirection(OldValue) )
{
return 0;
}
}
return 0;
}