1

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;                       
}

前もって感謝します。

4

0 に答える 0