Bonjour, je souhaite lister tous les fichiers du disque dur, et j'ai un probleme dans ce code la :
void list_hd(char *szHD)
{
WIN32_FIND_DATA wfd;
DWORD dwLen, dwLenHD, dwNB = 0;
BOOL bTemp;
HANDLE hFile = FindFirstFileA(szHD, (LPWIN32_FIND_DATAA)&wfd);
dwLenHD = strlen(szHD) + 10;
if(hFile == INVALID_HANDLE_VALUE) {
fprintf(stderr, "GetLasError! %d\n\n", GetLastError());
return;
}
do {
if(dwNB <= 2) dwNB++;
if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && dwNB > 2 ) {
dwLen = WideCharToMultiByte(CP_ACP, 0, wfd.cFileName, -1, NULL, 0, NULL, &bTemp);
LPSTR lpDir = new CHAR[dwLen];
LPSTR lpPath = new CHAR[dwLen+dwLenHD];
ZeroMemory(lpDir, dwLen);
ZeroMemory(lpPath, dwLen+dwLenHD);
WideCharToMultiByte(CP_ACP, 0, wfd.cFileName, -1, lpDir, dwLen, NULL, &bTemp);
sprintf(lpPath, "%s\b\b\b%s\\*.*", szHD, lpDir);
fprintf(stdout, "PATH: %s\n", lpPath);
list_hd(lpPath);
delete []lpDir;
delete []lpPath;
}
} while(FindNextFile(hFile, &wfd));
FindClose(hFile);
}
int main(int argc, char *argv[])
{
list_hd("C:\\");
return 0;
}
En effet, lorsque je trouve un dossier (& FILE_ATTRIBUTE_DIRECTORY), je reconstruit le path pour ensuite le renvoyer à la même fonction, faire de la récusivirté quoi... mais après avoir appelé cette fonction, la fonction FindFirstFile me renvoie un INVALID_HANDLE_VALUE avec le code erreur 123 (mauvais path), ce que je ne comprends pas...
Si vous pouviez m'indiquer d'ou pourrait provenir l'erreur... merci beaucoup