Я пытаюсь написать приложение Asyncronous Wininet. Я прочитал данные в моей функции обратного вызова в случае INTERNET_STATUS_REQUEST_COMPLETE, и я также обрабатываю ошибки ERROR_IO_PENDING. Но после некоторых данных, прочитанных из Интернета, функция InternetReadFileEx дает мне 10035 = WSAEWOULDBLOCK (немедленная незавершенная операция сокета не может быть завершена). После этой ошибки я снова вызываю InternetReadFileEx, и на этот раз он дает мне 1008 = ERROR_NO_TOKEN (попытка была сделана для ссылки на токен, который не существует.). Я думаю, что мой дизайн неправильный, и я получаю эту ошибку из-за этого.InternetReadFileEx дает 10035 и 1008 ошибок
Вот отрывок из моего кода:
case INTERNET_STATUS_REQUEST_COMPLETE:
{
BOOL bAllDone= FALSE;
DWORD lastError;
do
{
//Create INTERNET_BUFFERS
char m_pbReadBuffer[4096];
INTERNET_BUFFERS BuffersIn;
ZeroMemory(&BuffersIn, sizeof(INTERNET_BUFFERS));
BuffersIn.dwStructSize = sizeof(INTERNET_BUFFERS);
BuffersIn.lpvBuffer = m_pbReadBuffer;
BuffersIn.dwBufferLength = 4096;
InternetReadFileEx(ReqContext->File, &BuffersIn, IRF_ASYNC, 1);
//HERE I GOT THOSE 10035 and 1008 ERRORS
lastError = GetLastError();
if(lastError == 997) // handling ERROR_IO_PENDING
break;//break the while loop
//append it to my ISTREAM
(ReqContext->savedStream)->Write(BuffersIn.lpvBuffer, BuffersIn.dwBufferLength, NULL);
if (BuffersIn.dwBufferLength == 0)
bAllDone = TRUE;
}while(bAllDone == FALSE);
//delete[] m_pbReadBuffer;
if(bAllDone == TRUE && lastError== 0)
{
//these are for passing the ISTREAM to the function which calls "InternetOpenUrl"
LARGE_INTEGER loc;
loc.HighPart = 0;
loc.LowPart = 0;
ReqContext->savedStream->Seek(loc, STREAM_SEEK_SET, NULL);
ReqContext->savedCallback->OnUrlDownloaded(S_OK, ReqContext->savedStream); //Tell silverlight ISTREAM is ready
ReqContext->savedStream->Release();
ReqContext->savedCallback->Release();
InternetCloseHandle(ReqContext->File);
InternetSetStatusCallback(ReqContext->Connection, NULL);
InternetCloseHandle(ReqContext->Connection);
delete[] ReqContext;
}
}
break;
Может кто-нибудь дать мне руку, чтобы исправить это? Спасибо всем, кто помог ...
Благодарим вас за советы. Я решил свою проблему. –