我想从ftp目录下载所有文件,我想用于那个FtpFindFirstFile和FtpGetFile;
LPWIN32_FIND_DATA FileData;
TCHAR* APP_NAME = TEXT("ftpcli");
TCHAR* PATH_FTP = TEXT("ftp://127.0.01");
TCHAR* ADR_FTP = TEXT("127.0.0.1");
TCHAR* LC_FILE = TEXT("C:\\!");
TCHAR* PATH_FILE = TEXT("/Soft/DVD_Players/WinDVD6");
UINT a;
HINTERNET opn;
HINTERNET conn;
a = InternetAttemptConnect(0);
if (a == ERROR_SUCCESS ) {
if(InternetCheckConnection(PATH_FTP,FLAG_ICC_FORCE_CONNECTION, NULL)) {
opn = InternetOpen(APP_NAME, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
conn = InternetConnect(opn, ADR_FTP, INTERNET_DEFAULT_FTP_PORT, NULL, NULL, INTERNET_SERVICE_FTP, NULL, NULL);
FtpSetCurrentDirectory(conn, PATH_FILE);
FtpFindFirstFile(conn, NULL, &FileData, INTERNET_FLAG_NEED_FILE, NULL);
FtpGetFile(conn, FileData->cFileName, LC_FILE, FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, NULL);
}
}
该代码返回错误我知道因为我没有在LPWIN32_FIND_DATA上识别内存。但我不知道怎么做。
答案 0 :(得分:3)
您已经声明了一个指向WIN32_FIND_DATA的指针,您需要该结构的具体实例。修正:
WIN32_FIND_DATA FileData; // NOTE: not LP
答案 1 :(得分:0)
至少:
FileData->cFileName
应该是
FileData.cFileName
击> <击> 撞击>
我把LPWIN32_FIND_DATA误读为WIN32_FIND_DATA; nobugs是正确的,这只是一个指针(如果使用指针,我的建议在这里是错误的,但那时没有分配结构。)