Usa direttamente le API di Windows allora. Più in basso di così non si può andare.
codice:
//path del file di destinazione
string destinationFile="\\\\cartella_di_rete\\file.dati";
//file di destinazione
// ofstream outfile(destinationFile, ios::binary | ios::out | ios::trunc);
HANDLE hfile = CreateFile(
destinationFile.c_str(),
(GENERIC_READ | GENERIC_WRITE),
(FILE_SHARE_READ | FILE_SHARE_WRITE),
nullptr,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
nullptr
);
if (hfile == INVALID_HANDLE_VALUE)
/* Errore */
return;
DWORD wbytes = 0;
//crea il buffer di lettura
mybuffer = new uint8[20480*512];
//cicla per leggere il file diviso in diversi chunk
for (int i = 1; i <= chunk; i++) // perché da 1? E' voluto?
{
//funzione che legge il file originale e lo copia nel buffer(in realtà è molto più complessa,
// in quanto si tratta di una funzione di terzi ma non ci interessa in questa sede)
bool ckok= ReadFile( mybuffer, i);
if (ckok)
WriteFile(hfile, mybuffer, bufSize, &wbytes, nullptr);
}
delete[] mybuffer;
CloseHandle(hfile);