Ajouter un commentaire

fredericmazue

Salut k-lo

Je reviens sur ta question:

- ça ne me regarde pas, mais je me suis demandé: std::wstring str1 = convertionConstCharToWChar(ret); pourqoi diable convertit-il en WCHAR là ?

- d'ou tu sors ça:

if(FtpGetSize(hFile) == 0 ){ 
           std::cout<<"fichier de taille 0"; 
        } 

Moi je ne connais pas de fonction FtpGetSize prenant un seul argument.
Je connais FtpGetFileSize qui prend d'ailleurs deux arguments. D'ou diable sors tu FtpGetSize. C'est une fonction à toi de derrière les fagots ?

Bon regardons ton affaire de plus près. Je pars du principe que ce FtpGetSize appelle FtpGetFileSize. Là tu fais une opération réseau. Donc tu es dans un contexte asynchrone.
Regarde bien ce que dis la doc de InternetCloseHandle:

Quote:
If asynchronous requests are pending for the handle or any of its child handles, the handle cannot be closed immediately, but it will be invalidated. etc etc

Bref ce qui se passe apparement c'est que quand tu regardes la taille du fichier, le protcole Ftp n'a pas encore fini de travailler que toi tu cherches à fermer le Handle et ça fout la m.... Comme dit dans la MSDN tu devrais tester avec getLastError s'il y a une opération "pendante" avant de fermer. (bienvenue et bon courage dans le domaine de la programmation des E/S asynchrone sous Windows :twisted: :lol:)

Maintenant pourquoi ça marche sur un Windws et pas sur un autre Parce que dans l'un il s'arrange pour ne pas laisser une opération pendante, et pas dans l'autre. mais c'est de ta faute dans les deux cas. Tu devrais tester systématiquement s'il y a une E/S pendante avant d'appeler InternetCloseHandle, parce que c'est ce qui se déduit des "Remarks" de la MSDN, Remarks qu'il faut toujours, comme tu le sais, lire entièrement et extrêmement attentivement :(

Oui oui ça alourdit énormément la programmation de faire ce test :(

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  AA   DDD   FFFF   GGG    CCC 
A A D D F G C
AAAA D D FFF G GG C
A A D D F G G C
A A DDD F GGG CCC