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


Anmelden zum Antworten