Para aumentar la velocidad deberíais llamar a FindFirstFileEx() usando estos flags:
hFind = FindFirstFileEx(path, FindExInfoBasic, pCurrent, FindExSearchLimitToDirectories, NULL, FIND_FIRST_EX_LARGE_FETCH);
Aunque
FindExInfoBasic y
FIND_FIRST_EX_LARGE_FETCH sólo sirven de W$>Vista aumentarán mucho la velocidad en llamadas recurrentes. Y con
FindExSearchLimitToDirectories también aunque tiene que ser cierta versión de NTFS...
Yo hice una vez algo similar en C++ pero no he conseguido encontrar el código