После вызова FtpOpenFile я использую следующий код:
error=GetLastError();
if(error!=0)
{
if(error==ERROR_INTERNET_EXTENDED_ERROR)
{
InternetGetLastResponseInfo(&error,NULL,&bufferLength);
buffer=malloc(bufferLength);
InternetGetLastResponseInfo(&error,buffer,NULL);
printf("FtpOpenFile error : %s.\n",buffer);
}
else
{
printf("FtpOpenFile error : %d.\n",(int)error);
}
}
Я подтвердил, что ошибка = ERROR_INTERNET_EXTENDED_ERROR, но вместо того, чтобы печатать что-то вроде
Ошибка FtpOpenFile: сервер отклонил запрос из-за того, что у него есть личная неприязнь или, другими словами, тонкая ненависть к вам.
Это дает мне
Ошибка FtpOpenFile: x?.
Благодарю.
Ваш второй вызов IntergetGetLastResponseInfo
неверен; вы не передаете длину буфера по мере необходимости. Первый вызов, который вы делаете, извлекает размер необходимого буфера, но вы все равно должны сказать функции, насколько большой буфер, когда вы вызываете его во второй раз. (Также обратите внимание, что в документации указано, что значение, возвращаемое в первом вызове, не включает пробел для оканчивающегося нуля.)
InternetGetLastResponseInfo(&error, NULL, &bufferLength);
buffer = malloc(bufferLength + 1);
InternetGetLastResponseInfo(&error, buffer, &bufferLength);
Дополнительную информацию см. В документации по InternetGetLastReponseInfo
.