From: bmshirey on
I'm trying to do a file enumeration on an ftp server using wininet
library functions. My code is:


//------------------------------------------------------------------------------------------------------------

hINET = InternetOpen(
TEXT("An Ftp program"),
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
INTERNET_FLAG_ASYNC
);
if (hINET == NULL)
{
Label1->Caption = "Connect error 1";
return;
}

AnsiString sFTPIp = // my ip removed for example
AnsiString sFTPUsername = //
AnsiString sFTPPassword = //

hFTP = InternetConnect(
hINET,
sFTPIp.c_str(),
INTERNET_DEFAULT_FTP_PORT,
sFTPUsername.c_str(),
sFTPPassword.c_str(),
INTERNET_SERVICE_FTP,
0,
0
);

if(hFTP == NULL)
{

Label1->Caption = "Connect error 2";
InternetCloseHandle(hINET);
hINET = NULL;
return;
}

Label1->Caption = "Connected to ftp server";


WIN32_FIND_DATA results;
AnsiString sSearchDir = (AnsiString)"\\*.*";
HINTERNET hFind = FtpFindFirstFile(hFTP,sSearchDir.c_str(),&results,
0,0);

if(hFind == NULL)
{
ListBox1->Items->Add("No files found");

return;
}

ListBox1->Items->Add(AnsiString(results.cFileName));
bool ret = true;

while(ret )
{
ret = InternetFindNextFile(hFind,&results);
if(!ret)
{
DWORD err = GetLastError();
ListBox1->Items->Add("Error: " + AnsiString(err));
}
else
ListBox1->Items->Add(AnsiString(results.cFileName));
}

InternetCloseHandle(hFind);

//------------------------------------------------------------------------------------------------------------

The connect works fine, the FtpFindFirstFile finds the first file
succesfully but InernetFindNextFile always fails and GetLastError is
2455: NERR_NetlogonNotStarted - The Netlogon service has not been
started.

Does anyone know what this error means and where I went wrong?

Thanks in advance.
From: bmshirey on
Looks like I found my own solution- needed to use
WININET_API_FLAG_SYNC flag in the InternetOpen call. Anyone know
exactly what these flags mean? Works like a charm now.