ptival a raison, met des returns true a la fin de tes fonctions.
quand tu capte une erreur affiche un message, ca peut t´aider a comprendre
apres, je ne suispsa convaincu sur la politique: " quitte sur une erreur". Tu pourrais ne pas avoir les droits d´acces sur un repertoire, mais l´avoir sur les autres...
Deplus, tu appeles deux fois deleteallfiles pour chaque repertoire:
un quand tu rentre dans cleardirectory et une fois quand tu viens de le trouver ( ligne 49 et 61)
apres, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getdrivetype.asp
ne specifie pas que c´est une valeur de retour de 3 si c´est une partion. prefere l´emploi des valeurs de MSDN.
Pour lister les volumes tu as d´ailleurs une bien meilleur solution qui existe: FindFirstVolume
as tu tracé l´exécution, afficher le nom des repertoir dans lequel il rentrait.
ajouter un printf("%s\n", zWayDirectoryClear); au debut de cleardirectory pourrait t´aider a y voir plus clair.
si tu as une erreur en cours de lecture de fichier, tu ne fais pas de find close.