FtpSetCurrentDirectory liefert GetLastError 997 ???
-
Hi nochmal

Mein Code:if(hInternetOpen = InternetOpen(_T("TestAgent"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC)) { if(hFtpConnect=InternetConnect (hInternetOpen, _T("10.64.1.22"), INTERNET_DEFAULT_FTP_PORT, _T("Mobile"), _T("Device"), INTERNET_SERVICE_FTP, NULL, NULL)) { if(FtpSetCurrentDirectory(hFtpConnect, _T("\/FtpVerladen"))) { FtpGetCurrentDirectory(hFtpConnect,cs_remotefile.GetBuffer(256),0); cs_remotefile.ReleaseBuffer(); cs_remotefile += cs_ladeliste + "_verladen.txt"; } else { DWORD dw_error = GetLastError(); MessageBox(_T("Das Zielverzeichnis auf dem FTP wurde nicht gefunden"),_T("Fehler"),MB_OK); } if (FtpPutFile(hFtpConnect, cs_localfile, cs_remotefile, INTERNET_FLAG_TRANSFER_BINARY, NULL)) { MessageBox(_T("Die Buchung wurde erfolgreich übertragen"),_T("Fertig"),MB_OK); } else {MessageBox(_T("Es gab einen Fehler beim Abschliessen der Buchung!"),_T("Fehler!"),MB_OK);} InternetCloseHandle(hInternetOpen); InternetCloseHandle(hFtpConnect);Mein Problem: Der Debugger liefert:
hFtpConnect = 0x00cc0008
hInternetOpen = 0x00cc0004
Soweit so gut. Nun bringt er aber bei FtpSetCurrentDirectory den System_Error-Code 997 über GetLastError:[quote]
ERROR_IO_PENDING Overlapped I/O operation is in progress.
997
[/qote]
Ich verstehe aber nicht warum. Ich habe den Ordner in den es wechseln soll bereit ohne Slashs, mit "\\bla" und "\/bla" angegeben und er existiert auch wirklich. Die rechte sind für "/" und alle Unterordner freigegeben bis auf execute. Das Stammverzeichnis des FTP-Users ist "C:\FTP", ist aber nicht darauf beschränkt, aber der User hat nur in diesem Ordner und dessen Unterordner Rechte.
Ich weis echt nicht mehr wo das Problem liegen könnte. Die FTP-Verbindung wird ja erfolgreich aufgebaut und alles...
Weis jemadn Rat?
Schöne Grüße
Basti
-
Keiner eine Idee?
Gruß Basti
-
Okay, für die die es interessiert/dasselbe Problem haben:
FtpSetCurrentDirectory kann zwar den Errorcode "977" ausgeben, was aber nicht heist, dass es nicht erfolgreich ist. Dieser fehler besagt (auch wenn das nicht ersichtlich ist), dass im Moment ein anderer I/O Prozess läuft, und dass FtpSetCurrentDirectory hintangestellt wird, also trotzdem noch ausgeführt wird.
Das gestaltet aber meiner Meinung nach die Fehlerbehandlung etwas komplexer. Entweder man filtert dw_error 977 raus und beachtet es nicht, oder man prüft mittels FtpGetCurrentDirectory ob am Ende irgendwo das Verzeichnis enthalten ist, in das das Programm wechseln sollte.Gruß Basti
-
Au weia.
Man könnte natürlich auch einfach INTERNET_FLAG_ASYNC weglassen, wenn man mit asynchronen Funktionen nicht klarkommt.
-
hab ich gemacht --> selber fehler