Hi. I'm trying to search all drives for files and have such code:
Code:
int main()
{
TCHAR szCurrDrive[] = L"C:\\";
TCHAR szPath[MAX_PATH+1];
DWORD i, dwDisksMask = GetLogicalDrives();
for(i = 0; i < 26; i++) {
if(dwDisksMask & 1) {
lstrcpy(szPath, szCurrDrive);
RecursiveSearch(szPath);
}
dwDisksMask >>= 1;
szCurrDrive[0]++;
}
/////
Code:
VOID RecursiveSearch(LPWSTR szPath) {
WIN32_FIND_DATA fdFindData;
HANDLE hFind;
PCWSTR ext1 = L".xls";
PCWSTR ext2 = L".xlsx";
TCHAR * CONST lpLastChar = szPath + lstrlen(szPath);
lstrcat(szPath, L"*");
hFind = FindFirstFile(szPath, &fdFindData);
if(INVALID_HANDLE_VALUE == hFind) {
DWORD lastError = GetLastError();
std::cout << lastError;
system("pause");
return;
}
do {
if ((0 == lstrcmp((LPCWSTR)fdFindData.cFileName, L".")) ||
(0 == lstrcmp((LPCWSTR)fdFindData.cFileName, L".."))) {
continue;
}
lstrcat(szPath, (LPCWSTR)fdFindData.cFileName);
if(fdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
lstrcat(szPath, L"\\");
RecursiveSearch(szPath);
} else {
if (NULL != StrStr((LPCWSTR)fdFindData.cFileName, ext1) || StrStr((LPCWSTR)fdFindData.cFileName, ext2)
{
std::wcout<<fdFindData.cFileName<<std::endl;
FoundFile(fdFindData.cFileName);
}
}
} while(FindNextFile(hFind, &fdFindData));
FindClose(hFind);
}
But receive ERROR_INVALID_NAME error. Where's the problem?