Вы передаете FindFirstFileW()
и FindNextFileW()
указатель на указатель на WIN32_FIND_DATA
, но это не то, что они ожидают, отсюда и ошибки компилятора. Вместо этого им нужен указатель на WIN32_FIND_DATAW
.
Вы также неправильно используете printf()
и wprintf()
.
Попробуйте следующее:
bool FmListDirectoryContents(LPWSTR arg_path_dir)
{
WIN32_FIND_DATAW wfd_Data; // <-- not LPWIN32_FIND_DATA!
wchar_t c_Path[2048];
swprintf(c_Path, L"%s\\*", arg_path_dir); // <-- not wprintf!
HANDLE h_Find = FindFirstFileW(c_Path, &wfd_Data);
if (h_Find != INVALID_HANDLE_VALUE) {
PrintColorful(5, L"\n\t%s\t\t\t%s", "-----------", "-----------");
PrintColorful(5, L"\n\t%s\t\t\t%s", "File Size", "File Name");
PrintColorful(5, L"\n\t%s\t\t\t%s\n", "-----------", "-----------");
do {
ULARGE_INTEGER FileSize;
FileSize.HighPart = wfd_Data->nFileSizeHigh;
FileSize.LowPart = wfd_Data->nFileSizeLow;
wprintf(L"\n\t%llu\t\t\t\t%s", FileSize.QuadPart, wfd_Data->cFileName); // <-- not printf!
}
while (FindNextFileW(h_Find, &wfd_Data));
FindClose(h_Find);
wprintf(L"\n\n");
}
return true;
}