Функция FindFirstFile ожидает адрес структуры WIN32_FIND_DATA.Вы просто передавали значение непосвященного указателя.Должно быть:
WIN32_FIND_DATA data;
HANDLE handle = FindFirstFile(name, &data);
Обязательно удалите и строку free(data);
(так как data
не выделено в куче).
Кроме того, ваш токовый циклпропустит первый файл.Вы должны использовать что-то вроде:
do
{
if (handle == INVALID_HANDLE_VALUE) break;
result.push_back(data.cFileName);
}
while (FindNextFile(handle, &data);