0

そのFtpFindFirstFileとFtpGetFileに使用したいftpディレクトリからすべてのファイルをダウンロードしたい。

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 でメモリを識別していないためです。しかし、私はそれを行う方法がわかりません。

4

2 に答える 2

3

WIN32_FIND_DATA へのポインターを宣言しました。その構造体の具体的なインスタンスが必要です。修理:

WIN32_FIND_DATA FileData;   // NOTE: not LP
于 2010-03-18T13:03:57.283 に答える
0

最低でも:

FileData->cFileName

する必要があります

FileData.cFileName

LPWIN32_FIND_DATAをWIN32_FIND_DATAと読み間違えました。nobugsは、これが単なるポインターであることは正しいです(ポインターを使用する場合、ここでの私のアドバイスは間違っていますが、構造体が割り当てられていません)。

于 2010-03-18T11:41:29.060 に答える