InternetReadFile を使用してファイルをダウンロードします。
ただし、大きなファイル(1GBを超える)をダウンロードすると、ダウンロードが停止します。
dwBytesRead が予期せずゼロになることがわかりましたが、InternetReadFile は TRUE を返します。
READ_BUFFER_SIZEを 4K または 16Kに設定しても問題ありません。
以下は私のコードです:
while(1)
{
memset(tszReadBuffer, 0, READ_BUFFER_SIZE); //clear the buffer
bReadFile = InternetReadFile(hInternetOpenURL, tszReadBuffer, READ_BUFFER_SIZE, &dwBytesRead);
if(!bReadFile)
return 0;
llNowSize += dwBytesRead; //calculate progress
if (dwBytesRead == 0)
break; //finish download
bWriteFile = WriteFile(hCreateFile, tszReadBuffer, dwBytesRead, &dwBytesWrite, NULL);
if(!bWriteFile)
return 0;
}
前もって感謝します。