Я пытаюсь загрузить файл с http-сервера, используя вызовы библиотеки WinINet. Он отлично работает на моем локальном веб-сервере. но когда я пытаюсь загрузить что-то из Интернета, InternetReadFile читает только ~ 10 КБ любого файла (текстового или двоичного). TRANSFER_SIZE = 4096 в примере ниже, таким образом, есть два чтения на 4 КБ и одно на 2 КБ. Каждый следующий InternetReadFile возвращает true и читает 0 байтов.
hInternet = InternetOpen(L"Agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
DWORD options = INTERNET_FLAG_NEED_FILE|INTERNET_FLAG_HYPERLINK|INTERNET_FLAG_RESYNCHRONIZE|INTERNET_FLAG_RELOAD;
HINTERNET hSession = InternetOpenUrl(hInternet, URL, NULL, NULL, options, 0);
hFile = CreateFile(...);
...
do {
DWORD dwWriteSize, dwNumWritten;
BOOL bRead = InternetReadFile(hSession, pBuf, TRANSFER_SIZE, &dwReadSizeOut);
dwWriteSize = dwReadSizeOut;
if (bRead && dwReadSizeOut > 0) {
dwTotalReadSize += dwReadSizeOut;
WriteFile(hFile, pBuf, dwWriteSize, &dwNumWritten, NULL);
// File write error
if (dwWriteSize != dwNumWritten) {
CloseHandle(hFile);
return false;
}
}
else {
if (!bRead)
{
// Error
CloseHandle(hFile);
return false;
}
break;
}
} while(1);
Как я могу загрузить весь файл с помощью библиотеки WinINet?