Yo no le veo nada raro al código para que de un error con nombres largos. La Constante MAX_PATH debe valer 260. Los nombres más largos admitidos por NTFS es de 256 incluido todo el PATH, quizás el error viene por este lado.
Yo suelo usar sin problemas funciones recursivas para listar archivos como la que publiqué
aquí hace unos años.
Saludos.