FtpGetFile und InternetSetStatusCallback?
-
Hi,
ich sitze jetzt sage und schreibe 3 Stunden bald an diesem Problem, hab auf Russischen, Japanischen ja sogar Indischen Seiten rumgesucht nach einem Samplecode der mein Problem löst und nun ringe ich mich mal dazu durch zu posten, denn ich hab bald echt keine Lust mehr.
Ich benutze die WinInet für ein FTP Protokoll, Funktioniert, Datei runterladen mit FtpGetFile sowie alles andere. Aber bei InternetSetStatusCallback ist ende.
Wenn ich die Callback mit IntersetSetStatusCallback setze und initialisiere eine FTP Connection wird die nicht aufgerufen!
Wenn ich mit FtpGetFile etwas runter laden will das selbe spiel. Es kommt nichts! In dem letzten Parameter muss man einen DWORD angeben für die Callback. Aus der MSDN werde ich an diesem Punkt echt nicht schlau im gegenteil, diesmal wirft meine geliebte MSDN mir noch mehr Fragen auf!
Was muss ich machen damit FtpGetFile die Callback aufruft? was muss ich da als letzten Parameter angeben? Wenn jemand ein Verborgenes Beispiel hat/Kennt bitte bitte posten!

Schonmal ein mega großes wirklich dickes danke im voraus!
-
auch das schon probiert, ist doch ziemloich ausrreichend beschrieben
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/creating_status_callback_functions.asp
-
Hi,
hab es probiert doch wieder selbiges Ergebnis: Callback wird nicht man ansatzweise aufgerufen

-
Poste mal wie du es versucht hast, dann kann man damit rumspielen. hab jetzt keine Lust den ganzen WinInet kram selber abzutippen um das Problem nachvollziehen zu können.
-
Hab es geschafft!
Jedoch muss ich mich nun mit folgender Warnung rumschlagen die ich gerne weg hätte.
warning C4311: 'type cast' : pointer truncation from 'void (__stdcall *)(HINTERNET,DWORD,DWORD,LPVOID,DWORD)' to 'DWORD'Weil ich die Funktion auf einen DWORD caste geht es, aber ich bekomm diese warning einfach nicht weg!
FtpGetFile( ftp, "/bank.zip", "c:\\bank.zip", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, (DWORD)&MyStatusCallbackFunction);Jemand ne Idee?
-
besser wäre nach DWORD_PTR zu casten
-
Das macht irgendwie keinen Sinn dort die Callback-Funktion zu übergeben. Dort kann man einen Parameter übergeben der dann in der Callback-Funktion verfügbar ist.
void CALLBACK InternetStatusCallback( HINTERNET hInternet, DWORD_PTR dwContext, // <---- DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength );
-
WIE komme ich denn dann an diesen Parameter zur benutzung, damit ich ihn an FtpGetFile geben kann?
-
Ich verstehe deine Frage nicht aber wenn du nicht weißt was du übergeben sollst dann nimm 0.
-
WITZKNUBBEL! nehme ich 0 wird die callback nicht aufgerufen. denk doch mal nach
-
da kann ich nachdenken soviel ich will das bleibt für mich unlogisch

sorry ich mische mich nicht mehr ein.
-
Um ehrlich zu sein steh ich gerade aufm schlauch. das was du da übergibst ist doch ein parameter für die callback funktion und du übergibst einen zeiger auf eine funktion die deine callback funktion darstellen soll?

-
das ist ja grade das komplizierte!