Вы не должны использовать поля вывода в FindData
без предварительной проверки, что hFind
допустимо.Из документов MSDN :
Если функция не может или не может найти файлы из строки поиска в параметре lpFileName, возвращаемое значение равно INVALID_HANDLE_VALUE, а содержимое lpFindFileData неопределенно.
Таким образом, вы должны иметь (после устранения других проблем в вызове API, описанных в ответах здесь):
hFind = FindFirstFileEx( szPath, /* replace FindExInfoMaxInfoLevel here */,
&FindData, FindExSearchNameMatch, NULL , 0);
if (hFind != INVALID_HANDLE_VALUE)
{
strncpy_s( pszFileName, 280, FindData.cFileName, strlen(FindData.cFileName));
}