"type name is not allowed" przy próbie wykorzystania funkcji "FtpFindFirstFileA"

0

Witam. Chcę zrobić w moim projekcie wyświetlanie listy plików na serwerze ftp i chcąc wykonać funkcję FtpFindFirstFileA muszę jako trzeci argument wpisać wskaźnik do struktury i w tym momencie pojawia się problem bo czego nie wpiszę to dostaję taki błąd:

type name is not allowed

A o to wyrywek kodu:

	typedef struct lpFindFileData {
		DWORD    dwFileAttributes;
		FILETIME ftCreationTime;
		FILETIME ftLastAccessTime;
		FILETIME ftLastWriteTime;
		DWORD    nFileSizeHigh;
		DWORD    nFileSizeLow;
		DWORD    dwReserved0;
		DWORD    dwReserved1;
		CHAR     cFileName[MAX_PATH];
		CHAR     cAlternateFileName[14];
		DWORD    dwFileType;
		DWORD    dwCreatorType;
		WORD     wFinderFlags;
	}WIN32_FIND_DATAA, * PWIN32_FIND_DATAA, * LPWIN32_FIND_DATAA;

	FtpFindFirstFileA(Int, game3.c_str(), WIN32_FIND_DATAA, INTERNET_FLAG_NEED_FILE, FALSE);
2

Musisz utworzyć zmienną o typie tej struktury i przekazać wskaźnik do tej zmiennej.

0

Próbowałem zrobić coś takiego ale tak średnio ogarniam wskaźniki

typedef struct lpFindFileData {
		DWORD    dwFileAttributes;
		FILETIME ftCreationTime;
		FILETIME ftLastAccessTime;
		FILETIME ftLastWriteTime;
		DWORD    nFileSizeHigh;
		DWORD    nFileSizeLow;
		DWORD    dwReserved0;
		DWORD    dwReserved1;
		CHAR     cFileName[MAX_PATH];
		CHAR     cAlternateFileName[14];
		DWORD    dwFileType;
		DWORD    dwCreatorType;
		WORD     wFinderFlags;
	}WIN32_FIND_DATAA, * PWIN32_FIND_DATAA, * LPWIN32_FIND_DATAA;

	lpFindFileData hon, *hon2;

	hon2 = &hon;

	FtpFindFirstFileA(Int, game3.c_str(), hon2, INTERNET_FLAG_NEED_FILE, FALSE);

taki błąd otrzymywałem:

argument of type "lpFindFileData *" is incompatible with parameter of type "LPWIN32_FIND_DATAA"

1

Czemu definiujesz strukturę która jest już zdefiniowana w odpowiednim nagłówku? Tak samo typy. Nie robi się tego.

Czytałeś to https://docs.microsoft.com/en-us/windows/desktop/api/wininet/nf-wininet-ftpfindfirstfilea chociaż?
Według dokumentacji trzecim parametrem jest po prostu:

lpFindFileData

Pointer to a WIN32_FIND_DATA structure that receives information about the found file or directory.

Czyli po prostu deklarujesz strukturę WIN32_FIND_DATA oraz przekazujesz wskaźnik do niej:

WIN32_FIND_DATA FileData;
// uzupelnij co i jak trzeba
FtpFindFirstFile(Int,game3.c_str(), &FileData, INTERNET_FLAG_NEED_FILE, NULL);
0

Dzięki, już działa wszystko. Ogólnie to czytałem dokumentacje tylko na tym argumencie się zatrzymałem bo nie za bardzo rozumiałem o co w nim chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1